Example #1
0
  /**
   * 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);
      }
    }
  }