package org.projectusus.ui.dependencygraph.filters;
import java.util.Set;
import org.eclipse.zest.core.viewers.EntityConnectionData;
import org.projectusus.ui.dependencygraph.nodes.GraphNode;
public class LimitNodeFilter extends NodeAndEdgeFilter {
private final IRestrictNodesFilterProvider limitProvider;
public LimitNodeFilter( IRestrictNodesFilterProvider limitProvider ) {
this.limitProvider = limitProvider;
}
@Override
protected boolean select( GraphNode node, Set<GraphNode> others ) {
return node.isVisibleForLimitWithOtherNodes( limit(), others );
}
@Override
protected boolean select( EntityConnectionData edge, Set<GraphNode> others ) {
if( !limit() ) {
return true;
}
GraphNode source = (GraphNode)edge.source;
GraphNode destination = (GraphNode)edge.dest;
return select( source, others ) && select( destination, others ) && source.isInDifferentPackageThan( destination );
}
@Override
public String getDescription() {
return "Only nodes visible for limit " + limit();
}
private boolean limit() {
return limitProvider.isRestricting();
}
}