from pyjamas.ui.TextBox import TextBox
from pyjamas.ui.HTML import HTML
from pyjamas.ui import HasAlignment
+from SfaData import ViniData
import re
def faster_clear(self):
ListBox.clear = faster_clear
class NodePanel(DockPanel):
- def __init__(self, sfadata, rspec):
+ def __init__(self, sfadata):
DockPanel.__init__(self)
- self.data = sfadata
- self.rspec = rspec
+ self.sfadata = sfadata
self.setSize("100%", "100%")
self.setHorizontalAlignment(HasAlignment.ALIGN_CENTER)
self.setVerticalAlignment(HasAlignment.ALIGN_MIDDLE)
- self.regex = None
+ self.availableRegex = None
+ self.selectedRegex = None
leftpanel = VerticalPanel()
leftcap = CaptionPanel("Available nodes")
leftpanel.add(leftcap)
hp1 = HorizontalPanel()
- filterButton = Button("Filter", self.filter)
- self.regExBox = TextBox()
+ filterButton = Button("Filter", self.filterLeft)
+ self.leftRegExBox = TextBox()
hp1.add(filterButton)
- hp1.add(self.regExBox)
+ hp1.add(self.leftRegExBox)
leftpanel.add(hp1)
rightpanel = VerticalPanel()
rightpanel.add(rightcap)
hp2 = HorizontalPanel()
- applyButton = Button("Apply", self.apply)
- resetButton = Button("Reset", self.reset)
- hp2.add(applyButton)
- hp2.add(resetButton)
+ filterButton = Button("Filter", self.filterRight)
+ self.rightRegExBox = TextBox()
+ hp2.add(filterButton)
+ hp2.add(self.rightRegExBox)
rightpanel.add(hp2)
addButton = Button(">>", self.addNodes)
self.refresh()
def refresh(self):
- slivers = self.sortNodes(self.rspec.get_sliver_list())
- all = self.rspec.get_node_list()
+ rspec = self.sfadata.getRSpec()
+
+ slivers = self.sortNodes(rspec.get_sliver_list())
+ all = rspec.get_node_list()
available = self.sortNodes(filter(lambda x:x not in slivers,all))
- if self.regex:
- pattern = re.compile(self.regex)
+
+ if self.availableRegex:
+ pattern = re.compile(self.availableRegex)
available = filter(pattern.search, available)
+
+ if self.selectedRegex:
+ pattern = re.compile(self.selectedRegex)
+ slivers = filter(pattern.search, slivers)
+
self.leftlist.clear()
for i in available:
self.leftlist.addItem(i)
return got
def addNodes(self, sender):
+ rspec = self.sfadata.getRSpec()
nodes = self.getSelected(self.leftlist)
for node in nodes:
- self.rspec.add_sliver(node)
+ rspec.add_sliver(node)
self.refresh()
def removeNodes(self, sender):
+ rspec = self.sfadata.getRSpec()
nodes = self.getSelected(self.rightlist)
for node in nodes:
- self.rspec.remove_sliver(node)
+ rspec.remove_sliver(node)
self.refresh()
- def apply(self, sender):
- self.data.applyRSpec(self.rspec)
-
- def reset(self, sender):
- self.rspec = self.data.getRSpec()
+ def filterLeft(self, sender):
+ self.availableRegex = self.leftRegExBox.getText()
self.refresh()
- def filter(self, sender):
- self.regex = self.regExBox.getText()
+ def filterRight(self, sender):
+ self.selectedRegex = self.rightRegExBox.getText()
self.refresh()