Broke out PLE, PLJ, GpENI into separate tabs. For now, make as few assumptions as...
[sfa-gui.git] / PlanetLab.py
index 50407c7..027ae14 100644 (file)
@@ -1,31 +1,49 @@
 from Sink import Sink, SinkInfo
+from pyjamas.ui.TabPanel import TabPanel
 from pyjamas.ui.VerticalPanel import VerticalPanel
 from pyjamas.ui.TextArea import TextArea
 from pyjamas.ui.HTML import HTML
 from SfaData import PlanetLabData
+from NodePanel import NodePanel
+from LinkPanel import LinkPanel
+from SliverPanel import SliverPanel
+from SubmitPanel import SubmitPanel
+from HelpPanel import PlanetLabHelpPanel
 
-class PlanetLab(Sink):
+class PlTabs(TabPanel):
+    def __init__(self, data):
+        TabPanel.__init__(self)
+
+        self.data = data
+        self.data.refreshRSpec()
+
+        nodetab = NodePanel(self.data)
+        slivertab = SliverPanel(self.data)
+        submittab = SubmitPanel(self.data)
+        helptab = PlanetLabHelpPanel()
+
+        self.add(nodetab, "Nodes")
+        self.add(slivertab, "Slivers")
+        self.add(submittab, "Submit")
+        self.add(HTML("force tabs to right"), None)
+        self.add(helptab, "Help")
+        self.selectTab(0)
+
+    def onTabSelected(self, sender, index):
+        tab = self.getWidget(index)
+        tab.refresh()
+        TabPanel.onTabSelected(self, sender, index)
+
+class PLC(Sink):
     def __init__(self):
 
         Sink.__init__(self)
-        self.panel = VerticalPanel()
-        self.panel.setSize("100%", "100%")
-        self.data = PlanetLabData()
-        self.rspec = self.data.getRSpec()
-
-        # Just to show that we can retrieve the RSpec
-        ta = TextArea()
-        ta.setSize("100%", "100%")
-        ta.setText(self.rspec)
-        self.panel.add(ta)
-
-        self.initWidget(self.panel)
-
-    def onShow(self):
-        # Do we want to refresh the RSpec?
-        pass
         
+        self.tabs = PlTabs(PlanetLabData())
 
+        self.tabs.setWidth("100%")
+        self.tabs.setHeight("100%")
+        self.initWidget(self.tabs)
 
 def init():
-    return SinkInfo("PlanetLab", "Specify PlanetLab Resources", PlanetLab)
+    return SinkInfo("PLC", "Specify PlanetLab Central Resources", PLC)