/** * 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); } } }
/** @generated */ public void activateEditor(IWorkbenchPage aPage, IStructuredSelection aSelection) { if (aSelection == null || aSelection.isEmpty()) { return; } if (false == aSelection.getFirstElement() instanceof MIDAbstractNavigatorItem) { return; } MIDAbstractNavigatorItem abstractNavigatorItem = (MIDAbstractNavigatorItem) aSelection.getFirstElement(); View navigatorView = null; if (abstractNavigatorItem instanceof MIDNavigatorItem) { navigatorView = ((MIDNavigatorItem) abstractNavigatorItem).getView(); } else if (abstractNavigatorItem instanceof MIDNavigatorGroup) { MIDNavigatorGroup navigatorGroup = (MIDNavigatorGroup) abstractNavigatorItem; if (navigatorGroup.getParent() instanceof MIDNavigatorItem) { navigatorView = ((MIDNavigatorItem) navigatorGroup.getParent()).getView(); } else if (navigatorGroup.getParent() instanceof IAdaptable) { navigatorView = (View) ((IAdaptable) navigatorGroup.getParent()).getAdapter(View.class); } } if (navigatorView == null) { return; } IEditorInput editorInput = getEditorInput(navigatorView.getDiagram()); IEditorPart editor = aPage.findEditor(editorInput); if (editor == null) { return; } aPage.bringToTop(editor); if (editor instanceof DiagramEditor) { DiagramEditor diagramEditor = (DiagramEditor) editor; ResourceSet diagramEditorResourceSet = diagramEditor.getEditingDomain().getResourceSet(); EObject selectedView = diagramEditorResourceSet.getEObject(EcoreUtil.getURI(navigatorView), true); if (selectedView == null) { return; } GraphicalViewer graphicalViewer = (GraphicalViewer) diagramEditor.getAdapter(GraphicalViewer.class); EditPart selectedEditPart = (EditPart) graphicalViewer.getEditPartRegistry().get(selectedView); if (selectedEditPart != null) { graphicalViewer.select(selectedEditPart); } } }