package org.projectusus.ui.dependencygraph.filters; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import org.projectusus.ui.dependencygraph.nodes.GraphNode; import com.google.common.base.Joiner; public class DirectNeighboursFilter extends NodeAndEdgeFilter { private Set<GraphNode> directNeighbours = new HashSet<GraphNode>(); private List<String> selectedNodeNames = new ArrayList<String>(); public DirectNeighboursFilter( Set<GraphNode> selectedNodes ) { selectedNodeNames = new ArrayList<String>(); directNeighbours = new HashSet<GraphNode>(); for( GraphNode selectedNode : selectedNodes ) { directNeighbours.add( selectedNode ); directNeighbours.addAll( selectedNode.getChildren() ); directNeighbours.addAll( selectedNode.getParents() ); selectedNodeNames.add( selectedNode.getDisplayText() ); } } @Override public String getDescription() { return "Direct neighbours of " + Joiner.on( ", " ).join( selectedNodeNames ); } @Override protected boolean select( GraphNode node, Set<GraphNode> others ) { return directNeighbours.contains( node ); } }