--- /dev/null
+from pyjamas.ui.VerticalPanel import VerticalPanel
+from pyjamas.ui.HorizontalPanel import HorizontalPanel
+from pyjamas.ui.CaptionPanel import CaptionPanel
+from pyjamas.ui.ListBox import ListBox
+from pyjamas.ui.TextBox import TextBox
+from pyjamas.ui.Button import Button
+from pyjamas.ui.HTML import HTML
+from pyjamas.ui import HasAlignment
+
+class AddPanel(CaptionPanel):
+ def __init__(self, top):
+ CaptionPanel.__init__(self, "Add virtual link")
+ self.top = top
+
+ hp = HorizontalPanel()
+ self.end1 = ListBox()
+ self.end1.addItem("Endpoint 1")
+ for sliver in self.top.rspec.get_sliver_list():
+ self.end1.addItem(sliver)
+
+ self.end2 = ListBox()
+ self.end2.addItem("Endpoint 2")
+ for sliver in self.top.rspec.get_sliver_list():
+ self.end2.addItem(sliver)
+
+ self.bw = TextBox()
+ self.bw.setText("1000")
+
+ hp.add(self.end1)
+ hp.add(self.end2)
+ hp.add(self.bw)
+ hp.add(Button("Add", self.go))
+
+ self.add(hp)
+
+ def go(self, sender):
+ end1 = self.end1.getItemText(self.end1.getSelectedIndex())
+ end2 = self.end2.getItemText(self.end2.getSelectedIndex())
+ bw = self.bw.getText()
+
+ self.top.refresh()
+
+
+class VlinkPanel(HorizontalPanel):
+ def __init__(self, top, description, bw):
+ HorizontalPanel.__init__(self)
+ self.description = description
+ self.bw = bw
+ self.top = top
+
+ self.setSpacing(5)
+ self.setVerticalAlignment(HasAlignment.ALIGN_MIDDLE)
+ b = Button("X", self.delete)
+ self.add(b)
+ self.add(HTML("%s (%s kbps)" % (self.description, self.bw)))
+
+ def delete(self, sender):
+ self.top.refresh()
+
+
+class LinkPanel(VerticalPanel):
+ def __init__(self, sfadata, rspec):
+ VerticalPanel.__init__(self)
+ self.data = sfadata
+ self.rspec = rspec
+
+ self.refresh()
+
+ def refresh(self):
+ self.clear()
+ self.add(AddPanel(self))
+
+ cp = CaptionPanel("Virtual links")
+ vp = VerticalPanel()
+ vlinks = self.rspec.get_vlink_list()
+ for (desc, bw) in vlinks:
+ vp.add(VlinkPanel(self, desc, bw))
+ cp.add(vp)
+ self.add(cp)
+