package joshua.ui.hypergraph_visualizer;
import javax.swing.DefaultListModel;
import joshua.decoder.hypergraph.HyperEdge;
import edu.uci.ics.jung.algorithms.layout.StaticLayout;
import edu.uci.ics.jung.visualization.picking.MultiPickedState;
public class HyperGraphPickedState extends MultiPickedState<Vertex> {
private HyperGraphViewer viewer;
public HyperGraphPickedState(HyperGraphViewer vv) {
super();
this.viewer = vv;
}
public boolean pick(Vertex v, boolean state)
{
if (!(v instanceof NodeVertex))
return false;
NodeVertex node = (NodeVertex) v; //(NodeVertex) viewer.graph.getPredecessors(v).toArray()[0];
if (viewer.graph.picked != null)
viewer.graph.setSubTreeColor(viewer.graph.picked, 0);
viewer.graph.picked = node;
// viewer.graph.incrementHyperEdge(node);
// viewer.setGraphLayout(new StaticLayout<Vertex,Edge>(viewer.graph, new HyperGraphTransformer(viewer.graph)));
DefaultListModel edgeListModel = (DefaultListModel) viewer.edgeList.getModel();
edgeListModel.removeAllElements();
for (HyperEdge e : node.getNode().hyperedges) {
edgeListModel.addElement(e);
}
if (node.getNode().hyperedges.size() == 0)
return true;
HyperEdgeVertex currentEdge = (HyperEdgeVertex) viewer.graph.getSuccessors(v).toArray()[0];
viewer.edgeList.setSelectedValue(currentEdge.getHyperEdge(), true);
v.setColor(1);
return true;
}
}