Load in a thread
[jalview.git] / src / jalview / appletgui / TreeCanvas.java
index 451d663..47bebbe 100755 (executable)
@@ -59,15 +59,11 @@ public class TreeCanvas
   Hashtable nameHash = new Hashtable();\r
   Hashtable nodeHash = new Hashtable();\r
 \r
-  public TreeCanvas(AlignViewport av, NJTree tree, ScrollPane scroller,\r
-                    String label)\r
+  public TreeCanvas(AlignViewport av, ScrollPane scroller)\r
   {\r
     this.av = av;\r
-    this.tree = tree;\r
     scrollPane = scroller;\r
     addMouseListener(this);\r
-    tree.findHeight(tree.getTopNode());\r
-    longestName = label;\r
     setLayout(null);\r
 \r
     PaintRefresher.Register(this, av.alignment);\r
@@ -82,10 +78,9 @@ public class TreeCanvas
       av.setSelectionGroup(selected);\r
     }\r
 \r
-    selected.setEndRes(av.alignment.getWidth());\r
+    selected.setEndRes(av.alignment.getWidth()-1);\r
     selected.addOrRemove(sequence, true);\r
 \r
-System.out.println("called here");\r
     PaintRefresher.Refresh(this, av.alignment);\r
     repaint();\r
   }\r
@@ -94,6 +89,30 @@ System.out.println("called here");
   {\r
     this.tree = tree;\r
     tree.findHeight(tree.getTopNode());\r
+\r
+    // Now have to calculate longest name based on the leaves\r
+    Vector leaves = tree.findLeaves(tree.getTopNode(), new Vector());\r
+    boolean has_placeholders = false;\r
+    longestName = "";\r
+\r
+    for (int i = 0; i < leaves.size(); i++)\r
+    {\r
+      SequenceNode lf = (SequenceNode) leaves.elementAt(i);\r
+\r
+      if (lf.isPlaceholder())\r
+      {\r
+        has_placeholders = true;\r
+      }\r
+\r
+      if (longestName.length() < ( (Sequence) lf.element()).getName()\r
+          .length())\r
+      {\r
+        longestName = TreeCanvas.PLACEHOLDER +\r
+            ( (Sequence) lf.element()).getName();\r
+      }\r
+    }\r
+\r
+    setMarkPlaceholders(has_placeholders);\r
   }\r
 \r
   public void drawNode(Graphics g, SequenceNode node, float chunk, float scale,\r
@@ -481,13 +500,29 @@ System.out.println("called here");
               sequences.addElement(s1);\r
           }\r
 \r
-          ColourSchemeI cs = ColourSchemeProperty.getColour(sequences, av.alignment.getWidth(),\r
-              ColourSchemeProperty.getColourName(av.getGlobalColourScheme()));\r
+          ColourSchemeI cs = null;\r
 \r
+          if (av.getGlobalColourScheme() != null)\r
+          {\r
+            if (av.getGlobalColourScheme() instanceof UserColourScheme)\r
+            {\r
+              cs = new UserColourScheme(\r
+                  ( (UserColourScheme) av.getGlobalColourScheme()).getColours());\r
+\r
+            }\r
+            else\r
+              cs = ColourSchemeProperty.getColour(sequences,\r
+                                                  av.alignment.getWidth(),\r
+                                                  ColourSchemeProperty.getColourName(\r
+                                                      av.getGlobalColourScheme()));\r
+\r
+              cs.setThreshold(av.getGlobalColourScheme().getThreshold(),\r
+                                                   av.getIgnoreGapsConsensus());\r
+          }\r
 \r
           SequenceGroup sg = new SequenceGroup(sequences, "TreeGroup",\r
                                                cs, true, true,\r
-                                               false, 0, av.alignment.getWidth());\r
+                                               false, 0, av.alignment.getWidth()-1);\r
 \r
 \r
           if (  av.getGlobalColourScheme()!=null\r