import java import javax.swing import com class pathslider(com.hp.hpl.guess.ui.DockableAdapter): execfile("simpleDiameter.py") pathfinder = diameter() testSlider = JSlider() # keep the label and slider hideButton = JButton("Hide Disconnected Nodes") label = JLabel("Path Length (0) ") showButton = JButton("Show All Nodes") def __init__(self): # set up the slider limits self.testSlider.setMinimum(0) print(self.pathfinder.getDiameter()) self.testSlider.setMaximum(self.pathfinder.getDiameter()) # set up the slider visual properties self.testSlider.setMajorTickSpacing(1) self.testSlider.setMinorTickSpacing(0) self.testSlider.setPaintTicks(true) self.testSlider.setPaintLabels(true) self.testSlider.setValue(longest.min) # default value # every time the mouse is released call the "sc" method self.testSlider.mouseReleased = self.sc # add the label, buttons and slider to the UI self.add(self.hideButton) self.add(self.showButton) self.add(self.label) self.add(self.testSlider) # dock the new panel into the UI ui.dock(self) # Actions for button clicks self.hideButton.actionPerformed = self.hideDisconnectedNodes self.showButton.actionPerformed = self.showAll # call the event function once so that the # display matches the slider value self.sc(None) def getTitle(self): return("Path Slider") # redisplay nodes and appropriate edges def showAll(self, evt): val = self.testSlider.getValue() # show all the nodes g.nodes.visible = 1 g.edges.visible = 0 paths = self.pathfinder.getPaths(val) for path in paths: path.visible = 1 def sc(self,evt): # get the value val = self.testSlider.getValue() # show all the nodes g.nodes.visible = 1 g.edges.visible = 0 paths = self.pathfinder.getPaths(val) for path in paths: path.visible = 1 # set the label text self.label.setText("Path Length ("+str(val)+")") def hideDisconnectedNodes(self, evt): # keep a list of nodes to hide, java doesn’t # like us to modify objects as we iterate over them toHide = [] for nod in g.nodes: # for all nodes vis = 0 # default to invisble # for all edges connected to this node # if there is any visible edge # keep this node visible for ed in nod.getOutEdges(): if (ed.visible == 1): vis = 1 break if (vis == 0): # should we hide the node? toHide += [nod] # hide all the nodes we put in our list toHide.visible = 0