protected void filterVisuals() { if (getGraphControl() == null) { return; } Object[] filtered = getFilteredChildren(getInput()); SimpleGraphComparator comparator = new SimpleGraphComparator(); TreeSet filteredElements = new TreeSet(comparator); TreeSet unfilteredElements = new TreeSet(comparator); List connections = getGraphControl().getConnections(); List nodes = getGraphControl().getNodes(); if (filtered.length == 0) { // set everything to invisible. // @tag zest.bug.156528-Filters.check : should we only filter out // the nodes? for (Iterator i = connections.iterator(); i.hasNext(); ) { GraphConnection c = (GraphConnection) i.next(); c.setVisible(false); } for (Iterator i = nodes.iterator(); i.hasNext(); ) { GraphNode n = (GraphNode) i.next(); n.setVisible(false); } return; } for (Iterator i = connections.iterator(); i.hasNext(); ) { GraphConnection c = (GraphConnection) i.next(); if (c.getExternalConnection() != null) { unfilteredElements.add(c); } } for (Iterator i = nodes.iterator(); i.hasNext(); ) { GraphNode n = (GraphNode) i.next(); if (n.getData() != null) { unfilteredElements.add(n); } } for (int i = 0; i < filtered.length; i++) { Object modelElement = connectionsMap.get(filtered[i]); if (modelElement == null) { modelElement = nodesMap.get(filtered[i]); } if (modelElement != null) { filteredElements.add(modelElement); } } unfilteredElements.removeAll(filteredElements); // set all the elements that did not pass the filters to invisible, and // all the elements that passed to visible. while (unfilteredElements.size() > 0) { GraphItem i = (GraphItem) unfilteredElements.first(); i.setVisible(false); unfilteredElements.remove(i); } while (filteredElements.size() > 0) { GraphItem i = (GraphItem) filteredElements.first(); i.setVisible(true); filteredElements.remove(i); } }