private void configureGraphicalViewer() {
   viewer.getControl().setBackground(ColorConstants.listBackground);
   viewer.getControl().setLayoutData(new GridData(GridData.FILL_BOTH));
   ((FigureCanvas) viewer.getControl()).setScrollBarVisibility(FigureCanvas.AUTOMATIC);
   DiagramEditDomain editDomain = new DiagramEditDomain(null);
   editDomain.setCommandStack(new DiagramCommandStack(editDomain));
   viewer.setEditDomain(editDomain);
 }
  /**
   * Applies all filters to the editor. If the filter is activated (or deactivated), it makes all
   * elements in the editor invisible (or visible)
   *
   * @param editor
   */
  private void applyFiltersToEditorView(DiagramEditor editor) {
    if (editor == null) return;

    Object adapter = editor.getAdapter(GraphicalViewer.class);
    if (!(adapter instanceof DiagramGraphicalViewer)) return;
    DiagramGraphicalViewer viewer = (DiagramGraphicalViewer) adapter;

    // get all EditParts of the Model
    Map<?, ?> editPartRegistry = viewer.getEditPartRegistry();
    Object editPart = null;

    Set<Object> visibleElements =
        getElementsForFilter(
            editPartRegistry, AttributeFilterController.getInstance().getAllFilters());

    // show all elements if the processed result is a non-empty set (look
    // AttributeAnalyser.getVisibleElementsForFilter())
    boolean showAll = (visibleElements != null && visibleElements.isEmpty());
    //
    boolean show = true;
    Set<EObject> visibleEObjects = new HashSet<EObject>();
    if (visibleElements != null) {
      for (Object element : visibleElements) {
        if (element instanceof EdgeImpl) visibleEObjects.add(((EdgeImpl) element).getElement());
        if (element instanceof NodeImpl) visibleEObjects.add(((NodeImpl) element).getElement());
      }
    }

    for (Object keyOfEditPartRegistry : editPartRegistry.keySet()) {
      if (keyOfEditPartRegistry instanceof NodeImpl) {
        editPart = editPartRegistry.get(keyOfEditPartRegistry);

        if (editPart instanceof GraphicalEditPart) {
          if (showAll
              || visibleEObjects.contains(((NodeImpl) keyOfEditPartRegistry).getElement())) {
            show = true;
          } else {
            show = false;
          }
          ((GraphicalEditPart) editPart).getFigure().setVisible(show);
        }
      } else if (keyOfEditPartRegistry instanceof EdgeImpl) {
        editPart = editPartRegistry.get(keyOfEditPartRegistry);
        if (showAll || visibleEObjects.contains(((EdgeImpl) keyOfEditPartRegistry).getElement())) {
          show = true;

        } else {
          show = false;
        }
        if (editPart instanceof ConnectionEditPart)
          ((ConnectionEditPart) editPartRegistry.get(keyOfEditPartRegistry))
              .getFigure()
              .setVisible(show);
      }
    }
  }
 // DS-1534
 public void showItem(List<EObject> items) {
   for (EObject item : items) {
     List<EditPart> editParts = getEditPartsForElement(item);
     if (editParts.size() > 0) {
       EditPart ep = editParts.get(0);
       viewer.select(ep);
       viewer.reveal(ep);
     } else {
       // DS-1534
       viewer.deselectAll();
     }
   }
 }
 // DS-1534
 @SuppressWarnings("unchecked")
 private List<EditPart> getEditPartsForElement(EObject item) {
   if (item == null) {
     return Collections.EMPTY_LIST;
   }
   String id = ((XMLResource) item.eResource()).getID(item);
   List<EditPart> editParts = viewer.findEditPartsForElement(id, EditPart.class);
   if (editParts.isEmpty() && item.eContainer() != null) {
     return getEditPartsForElement(item.eContainer());
   }
   return editParts;
 }
 /** @param input */
 private void setInput(Object input) {
   Diagram diagram = null;
   if (input instanceof Pageflow) {
     Pageflow pageflow = (Pageflow) input;
     diagram = fetchDiagram(pageflow.eResource());
   } else if (input instanceof Diagram) {
     diagram = (Diagram) input;
   } else if (input instanceof Resource) {
     Resource res = (Resource) input;
     diagram = fetchDiagram(res);
   } else if (input instanceof ResourceSet) {
     Resource res = ((ResourceSet) input).getResources().get(0);
     diagram = fetchDiagram(res);
   } else if (input instanceof List) {
     Resource res = (Resource) ((List<?>) input).get(0);
     diagram = fetchDiagram(res);
   }
   if (diagram != null) {
     TransactionalEditingDomain.Factory.INSTANCE.createEditingDomain(
         diagram.eResource().getResourceSet());
     RootEditPart rootEP = EditPartService.getInstance().createRootEditPart(diagram);
     if (rootEP instanceof DiagramRootEditPart) {
       ((DiagramRootEditPart) rootEP)
           .setPreferencesHint(PageflowDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
     }
     viewer.setRootEditPart(rootEP);
     viewer.setEditPartFactory(new PageflowEditPartFactory());
     viewer.setContents(diagram);
     viewer.flush();
     if (viewer.getContents() instanceof DiagramEditPart) {
       DiagramEditPart dp = (DiagramEditPart) viewer.getContents();
       dp.disableEditMode();
     }
   }
   return;
 }
 /**
  * @param composite
  * @param partSide
  */
 public PageflowContentMergeModelPart(Composite composite, int partSide) {
   this.partSide = partSide;
   viewer = new DiagramGraphicalViewer();
   viewer.createControl(composite);
   configureGraphicalViewer();
 }
 /* (non-Javadoc)
  * @see org.eclipse.emf.compare.ui.viewer.content.part.IModelContentMergeViewerTab#getSelectedElements()
  */
 public List<? extends Item> getSelectedElements() {
   return viewer.getSelectedEditParts();
 }
 /* (non-Javadoc)
  * @see org.eclipse.emf.compare.ui.viewer.content.part.IModelContentMergeViewerTab#redraw()
  */
 public void redraw() {
   viewer.getControl().redraw();
 }
 /* (non-Javadoc)
  * @see org.eclipse.emf.compare.ui.viewer.content.part.IModelContentMergeViewerTab#getControl()
  */
 public Control getControl() {
   return viewer.getControl();
 }
 /* (non-Javadoc)
  * @see org.eclipse.emf.compare.ui.viewer.content.part.IModelContentMergeViewerTab#addSelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener)
  */
 public void addSelectionChangedListener(ISelectionChangedListener selectionChangedListener) {
   viewer.addSelectionChangedListener(selectionChangedListener);
 }