JAL-1075 tweak layout and test display for tree based sequence source browser
authorjprocter <jprocter@compbio.dundee.ac.uk>
Tue, 1 May 2012 16:09:06 +0000 (17:09 +0100)
committerjprocter <jprocter@compbio.dundee.ac.uk>
Tue, 1 May 2012 16:09:06 +0000 (17:09 +0100)
src/jalview/gui/JDatabaseTree.java

index 6b18e84..385d1bd 100644 (file)
@@ -1,10 +1,12 @@
 package jalview.gui;
 
+import jalview.bin.Cache;
 import jalview.ws.seqfetcher.DbSourceProxy;
 
 import java.awt.BorderLayout;
 import java.awt.Component;
 import java.awt.Container;
+import java.awt.Dimension;
 import java.awt.FlowLayout;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
@@ -48,7 +50,7 @@ public class JDatabaseTree extends JalviewDialog
     return viewdbs;
   }
 
-  JScrollPane svp = new JScrollPane();
+  JScrollPane svp;
 
   JTree dbviews;
 
@@ -65,8 +67,9 @@ public class JDatabaseTree extends JalviewDialog
     DefaultMutableTreeNode tn = null, root = new DefaultMutableTreeNode();
     Hashtable<DbSourceProxy, DefaultMutableTreeNode> tns = new Hashtable<DbSourceProxy, DefaultMutableTreeNode>();
     Hashtable<String, DefaultMutableTreeNode> source = new Hashtable<String, DefaultMutableTreeNode>();
-    sfetcher=sfetch;
-    String dbs[] = sfetch.getOrderedSupportedSources();
+    sfetcher = sfetch;
+    String dbs[] = sfetch.getSupportedDb();
+    Hashtable ht = new Hashtable();
     for (int i = 0; i < dbs.length; i++)
     {
       tn = source.get(dbs[i]);
@@ -74,17 +77,25 @@ public class JDatabaseTree extends JalviewDialog
       if (tn == null)
       {
         source.put(dbs[i], tn = new DefaultMutableTreeNode(dbs[i], true));
-
       }
       for (DbSourceProxy dbp : srcs)
       {
-        tn.add(new DefaultMutableTreeNode(dbp, false));
+        if (ht.get(dbp.getDbName()) == null)
+        {
+          tn.add(new DefaultMutableTreeNode(dbp, false));
+          ht.put(dbp.getDbName(), dbp.getDbName());
+        } else {
+          System.err.println("dupe ig for : "+dbs[i]+" \t"+dbp.getDbName());
+        }
       }
-
     }
     for (int i = 0; i < dbs.length; i++)
     {
       tn = source.get(dbs[i]);
+      if (tn == null)
+      {
+        continue;
+      }
       if (tn.getChildCount() == 1)
       {
         // remove nodes with only one child
@@ -94,20 +105,31 @@ public class JDatabaseTree extends JalviewDialog
     }
     initDialogFrame(this, true, false, "Select Database Retrieval Source",
             400, 300);
-
+    svp = new JScrollPane();
+    //svp.setAutoscrolls(true);
     dbviews = new JTree(new DefaultTreeModel(root, false));
     dbviews.setCellRenderer(new DbTreeRenderer(this));
+
+    dbviews.getSelectionModel().setSelectionMode(
+            TreeSelectionModel.SINGLE_TREE_SELECTION);
+    svp.getViewport().setView(dbviews);
+    svp.getViewport().setMinimumSize(new Dimension(300,250));
+    //svp.setSize(300,250);
+//    JPanel panel=new JPanel();
+//    panel.setSize(new Dimension(350,220));
+//    panel.add(svp);
     
-    dbviews.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
-    add(svp, BorderLayout.CENTER);
-    JPanel j=new JPanel(new FlowLayout());
+    add(svp, BorderLayout.NORTH);
+    JPanel j = new JPanel(new FlowLayout());
+    j.setPreferredSize(new Dimension(300,50));
     j.add(ok);
     j.add(cancel);
-    add(j,BorderLayout.SOUTH);
-    svp.getViewport().setView(dbviews);
+    add(j, BorderLayout.CENTER);
+    validate();
   }
 
-  private class DbTreeRenderer extends DefaultTreeCellRenderer implements TreeCellRenderer
+  private class DbTreeRenderer extends DefaultTreeCellRenderer implements
+          TreeCellRenderer
   {
     JDatabaseTree us;
 
@@ -128,20 +150,20 @@ public class JDatabaseTree extends JalviewDialog
             boolean selected, boolean expanded, boolean leaf, int row,
             boolean hasFocus)
     {
-      String val="";
+      String val = "";
       if (value != null && value instanceof DefaultMutableTreeNode)
       {
         DefaultMutableTreeNode vl = (DefaultMutableTreeNode) value;
         value = vl.getUserObject();
         if (value instanceof DbSourceProxy)
         {
-          val=(((DbSourceProxy) value).getDbName());
+          val = (((DbSourceProxy) value).getDbName());
         }
         else
         {
           if (value instanceof String)
           {
-            val=((String) value);
+            val = ((String) value);
           }
         }
       }
@@ -149,8 +171,9 @@ public class JDatabaseTree extends JalviewDialog
       {
         val = ("");
       }
-      return super.getTreeCellRendererComponent(tree, val, selected, expanded, leaf, row, hasFocus);
-      
+      return super.getTreeCellRendererComponent(tree, val, selected,
+              expanded, leaf, row, hasFocus);
+
     }
   }
 
@@ -180,6 +203,7 @@ public class JDatabaseTree extends JalviewDialog
 
   private void showDialog(Container parent)
   {
+    validate();
     waitForInput();
   }
 
@@ -204,14 +228,16 @@ public class JDatabaseTree extends JalviewDialog
     {
       DefaultMutableTreeNode dmt = (DefaultMutableTreeNode) tp
               .getLastPathComponent();
-      if (dmt.getUserObject()!=null) {
-        if (dmt.getUserObject() instanceof DbSourceProxy) {
-        srcs.add((DbSourceProxy) dmt.getUserObject());
-      }
-      else
+      if (dmt.getUserObject() != null)
       {
-        srcs.addAll(sfetcher.getSourceProxy((String) dmt.getUserObject()));
-      }
+        if (dmt.getUserObject() instanceof DbSourceProxy)
+        {
+          srcs.add((DbSourceProxy) dmt.getUserObject());
+        }
+        else
+        {
+          srcs.addAll(sfetcher.getSourceProxy((String) dmt.getUserObject()));
+        }
       }
     }
     selection = srcs;
@@ -258,6 +284,7 @@ public class JDatabaseTree extends JalviewDialog
 
   public static void main(String args[])
   {
+    Cache.getDasSourceRegistry();
     JDatabaseTree jdt = new JDatabaseTree(new jalview.ws.SequenceFetcher());
     JFrame foo = new JFrame();
     foo.setLayout(new BorderLayout());