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)