SFA browser basic functionality
[sfa-gui.git] / Configure.py
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
13
14 class TopPanel(Composite):
15     panel = None
16
17     def __init__(self):
18         TopPanel.panel = self
19         Composite.__init__(self)
20         self.data = SfaData()
21
22         self.outer = HorizontalPanel()
23         self.inner = VerticalPanel()
24
25         self.outer.setHorizontalAlignment(HasAlignment.ALIGN_RIGHT)
26         self.inner.setHorizontalAlignment(HasAlignment.ALIGN_RIGHT)
27
28         # No links right now...
29         self.links = HorizontalPanel()
30         self.links.setSpacing(4)
31
32         self.outer.add(self.inner)
33         self.refresh()
34
35         self.initWidget(self.outer)
36
37     def onClick(self, sender):
38         pass
39
40     def refresh(self):
41         self.inner.clear()
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)
45
46 class LabeledTextBox:
47     def __init__(self, label, initialText):
48         self.hp = CaptionPanel(label)
49         self.tb = TextBox()
50         self.tb.setWidth("100%")
51         self.tb.setText(initialText)
52         self.hp.add(self.tb)
53
54     def getText(self):
55         return self.tb.getText()
56
57     def getWidget(self):
58         return self.hp
59
60 class Configure(Sink):
61     def __init__(self):
62         Sink.__init__(self)
63         self.data = SfaData()
64
65         panel = VerticalPanel()
66         panel.setWidth("100%")
67         panel.setWidth("100%")
68
69         self.userBox = LabeledTextBox("User HRN:", SfaData.user)
70         panel.add(self.userBox.getWidget())
71         self.sliceBox = LabeledTextBox("Slice HRN:", SfaData.slice)
72         panel.add(self.sliceBox.getWidget())
73
74         hp = HorizontalPanel()
75         applyButton = Button("Apply", self.apply)
76         hp.add(applyButton)
77         panel.add(hp)
78
79         self.initWidget(panel)
80
81     def apply(self, sender):
82         self.data.setUser(self.userBox.getText())
83         self.data.setSlice(self.sliceBox.getText())
84         TopPanel.panel.refresh()
85
86     def onShow(self):
87         pass
88
89 def init():
90     return SinkInfo("Configure", "Configure SFA Federation GUI", Configure)