package org.projectusus.ui.dependencygraph.common;
import java.util.Set;
import org.projectusus.ui.dependencygraph.nodes.GraphNode;
public abstract class DependencyGraphModel {
private Set<? extends GraphNode> nodes;
private boolean changed = false;
public boolean isChanged() {
return nodes == null || changed;
}
public void resetChanged() {
this.changed = false;
}
public Set<? extends GraphNode> getGraphNodes() {
if( nodes == null ) {
nodes = getRefreshedNodes();
}
return nodes;
}
protected abstract Set<? extends GraphNode> getRefreshedNodes();
public void invalidate() {
Set<? extends GraphNode> freshNodes = getRefreshedNodes();
if( nodes != null ) {
if( !freshNodes.equals( nodes ) ) {
nodes = freshNodes;
changed = true;
}
}
}
}