Merge branch 'master' of ssh://git.onelab.eu/git/sfa-gui
[sfa-gui.git] / SfaBrowser.py
index 14e8fc0..b2053e3 100644 (file)
@@ -4,23 +4,34 @@ from pyjamas.ui.PopupPanel import PopupPanel
 from pyjamas.ui.HTML import HTML
 from SfaData import PlanetLabData
 
+def alwaysDelegateFocus(elem):
+    return True
+
 class PopupRecord(PopupPanel):
     def __init__(self, record):
         PopupPanel.__init__(self, True)
         contents = HTML("<pre>" + record + "</pre>")
         self.setWidget(contents)
-        
         self.setStyleName("ks-popups-Popup")
 
 class SfaItem(TreeItem):
-    def __init__(self, hrn, authority = False):
-        self.isAuthority = authority
+    def __init__(self, hrn, kind, truncate = True):
+        self.kind = kind
         self.hrn = hrn
-        last = hrn.split('.')[-1]
-        self.label = last
+        if truncate:
+            hrn = hrn.split('.')[-1]
+        if self.kind == "(authority)":
+            self.label = "<b>%s</b>" % hrn
+        elif self.kind == "(slice)":
+            self.label = "<u><i>%s</i></u>" % hrn
+        elif self.kind == "(user)":
+            self.label = "%s" % hrn
+        else:
+            self.label = "<b>%s</b>" % hrn
+
         TreeItem.__init__(self, self.label)
 
-        if self.isAuthority:
+        if self.kind == "(authority)":
             self.addItem(PendingItem())
 
 class PendingItem(TreeItem):
@@ -38,11 +49,21 @@ class SfaBrowser(Sink):
         self.data = PlanetLabData()
 
         self.tree = Tree()
+        self.tree.shouldTreeDelegateFocusToElement = alwaysDelegateFocus
         
-        item = SfaItem("plc", True)
+        item = SfaItem("plc", "(authority)", truncate = False)
+        self.tree.addItem(item)
+
+        item = SfaItem("plc.glc", "(authority)", truncate = False)
+        self.tree.addItem(item)
+
+        item = SfaItem("plc.vini", "(authority)", truncate = False)
+        self.tree.addItem(item)
+
+        item = SfaItem("ple", "(authority)", truncate = False)
         self.tree.addItem(item)
 
-        item = SfaItem("ple", True)
+        item = SfaItem("plj", "(authority)", truncate = False)
         self.tree.addItem(item)
 
         self.tree.addTreeListener(self)
@@ -62,9 +83,10 @@ class SfaBrowser(Sink):
         child = item.getChild(0)
         if hasattr(child, "isPendingItem"):
             item.removeItem(child)
-            hrns = self.data.listChildren(item.hrn)
+            hrns = sorted(self.data.listChildren(item.hrn), 
+                          key=lambda hrn: hrn[0])
             for (hrn, kind) in hrns:
-                item.addItem(SfaItem(hrn, (kind=="(authority)")))
+                item.addItem(SfaItem(hrn, kind))
 
     def onShow(self):
         pass