package org.limewire.mojito.visual.helper; import java.awt.event.InputEvent; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.util.Set; import org.limewire.mojito.visual.RouteTableUICallback; import org.limewire.mojito.visual.components.BucketVertex; import org.limewire.mojito.visual.components.InteriorNodeVertex; import edu.uci.ics.jung.graph.Vertex; import edu.uci.ics.jung.graph.impl.SparseTree; import edu.uci.ics.jung.visualization.PickedState; import edu.uci.ics.jung.visualization.VisualizationViewer; import edu.uci.ics.jung.visualization.control.AbstractGraphMousePlugin; public class RouteTableGraphMousePlugin extends AbstractGraphMousePlugin implements MouseListener{ private RouteTableUICallback callback; public RouteTableGraphMousePlugin(RouteTableUICallback callback) { super(InputEvent.BUTTON1_DOWN_MASK); this.callback = callback; } public void mouseClicked(MouseEvent e) { //we only want double clicks if(e.getClickCount() < 2) { return; } VisualizationViewer vv = (VisualizationViewer)e.getSource(); PickedState pickedState = vv.getPickedState(); if(pickedState == null ) { return; } Set vSet = pickedState.getPickedVertices(); if(vSet.isEmpty()) { return; } Object o = vSet.iterator().next(); if(o == null) { return; } if(o instanceof InteriorNodeVertex) { SparseTree tree = (SparseTree)vv.getGraphLayout().getGraph(); Vertex root = tree.getRoot(); if(o.equals(root)) { callback.handleNodeGraphRootSelected(); return; } } if(o instanceof BucketVertex) { BucketVertex bucketVertex = (BucketVertex)o; callback.handleBucketSelected(bucketVertex.getNode()); return; } } public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} }