1 from Sink import Sink, SinkInfo
2 from pyjamas.ui.Composite import Composite
3 from pyjamas.ui.RootPanel import RootPanel
4 from pyjamas.ui.VerticalPanel import VerticalPanel
5 from pyjamas.ui.HorizontalPanel import HorizontalPanel
6 from pyjamas.ui.CaptionPanel import CaptionPanel
7 from pyjamas.ui.TextBox import TextBox
8 from pyjamas.ui.Button import Button
9 from pyjamas.ui.HTML import HTML
10 from pyjamas.ui.Grid import Grid
11 from pyjamas.ui import HasAlignment
12 from SfaData import SfaData
14 class TopPanel(Composite):
19 Composite.__init__(self)
22 self.outer = HorizontalPanel()
23 self.inner = VerticalPanel()
25 self.outer.setHorizontalAlignment(HasAlignment.ALIGN_RIGHT)
26 self.inner.setHorizontalAlignment(HasAlignment.ALIGN_RIGHT)
28 # No links right now...
29 self.links = HorizontalPanel()
30 self.links.setSpacing(4)
32 self.outer.add(self.inner)
35 self.initWidget(self.outer)
37 def onClick(self, sender):
42 self.inner.add(HTML("<b>User: %s</b>" % self.data.getUser()))
43 self.inner.add(HTML("<b>Slice: %s</b>" % self.data.getSlice()))
44 self.inner.add(self.links)
47 def __init__(self, label, initialText):
48 self.hp = CaptionPanel(label)
50 self.tb.setWidth("100%")
51 self.tb.setText(initialText)
55 return self.tb.getText()
60 class Configure(Sink):
65 panel = VerticalPanel()
66 panel.setWidth("100%")
67 panel.setWidth("100%")
69 self.userBox = LabeledTextBox("User HRN:", self.data.getUser())
70 panel.add(self.userBox.getWidget())
71 self.sliceBox = LabeledTextBox("Slice HRN:", self.data.getSlice())
72 panel.add(self.sliceBox.getWidget())
74 hp = HorizontalPanel()
75 applyButton = Button("Apply", self.apply)
78 panel.setStyleName("infoProse")
80 self.initWidget(panel)
82 def apply(self, sender):
83 self.data.setUser(self.userBox.getText())
84 self.data.setSlice(self.sliceBox.getText())
85 TopPanel.panel.refresh()
91 return SinkInfo("Configure", "Configure the PlanetLab Federation GUI", Configure)