sequence place holder reveal menu item.
authorjprocter <Jim Procter>
Fri, 20 May 2005 14:54:29 +0000 (14:54 +0000)
committerjprocter <Jim Procter>
Fri, 20 May 2005 14:54:29 +0000 (14:54 +0000)
src/jalview/gui/TreeCanvas.java
src/jalview/gui/TreePanel.java

index d4c88de..f9cb39c 100755 (executable)
@@ -16,13 +16,14 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable, Print
   NJTree tree;\r
   JScrollPane scrollPane;\r
   AlignViewport av;\r
-\r
+  public static final String PLACEHOLDER=" * ";\r
   Font font;\r
   int  fontSize = 12;\r
 \r
   boolean fitToWindow = true;\r
   boolean showDistances = false;\r
   boolean showBootstrap = false;\r
+  boolean markPlaceholders = false;\r
 \r
   int offx = 20;\r
   int offy = 20;\r
@@ -122,10 +123,9 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable, Print
       g.drawString(nodeLabel,xstart,ypos - 10);\r
       }\r
 \r
-      // Colour selected leaves differently\r
-      String name    = node.getName();\r
+      String name    = (markPlaceholders && node.isPlaceholder()) ? (PLACEHOLDER+node.getName()) : node.getName();\r
       FontMetrics fm = g.getFontMetrics(font);\r
-      int charWidth  = fm.stringWidth(node.getName()) + 3;\r
+      int charWidth  = fm.stringWidth(name) + 3;\r
       int charHeight = fm.getHeight();\r
 \r
       Rectangle rect = new Rectangle(xend+20,ypos-charHeight,\r
@@ -133,6 +133,7 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable, Print
 \r
       nameHash.put((SequenceI)node.element(),rect);\r
 \r
+      // Colour selected leaves differently\r
       SequenceGroup selected = av.getSelectionGroup();\r
       if (selected!=null && selected.sequences.contains((SequenceI)node.element())) {\r
         g.setColor(Color.gray);\r
@@ -140,7 +141,7 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable, Print
         g.fillRect(xend + 10, ypos - charHeight + 3,charWidth,charHeight);\r
         g.setColor(Color.white);\r
       }\r
-      g.drawString(node.getName(),xend+10,ypos);\r
+      g.drawString(name,xend+10,ypos);\r
       g.setColor(Color.black);\r
     } else {\r
       drawNode(g,(SequenceNode)node.left(), chunk,scale,width,offx,offy);\r
@@ -496,6 +497,10 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable, Print
       this.showBootstrap = state;\r
       repaint();\r
     }\r
+    public void setMarkPlaceholders(boolean state) {\r
+            this.markPlaceholders = state;\r
+            repaint();\r
+    }\r
 \r
 }\r
 \r
index c458638..3c571f8 100755 (executable)
@@ -78,11 +78,15 @@ public class TreePanel extends GTreePanel
       for (int i=0;i < seqVector.size();i++)\r
       {\r
         seq[i] = (Sequence) seqVector.elementAt(i);\r
-        if(seq[i].getName().length()>longestName.length())\r
-          longestName = seq[i].getName();\r
       }\r
       // This constructor matches sequence names to treenodes and sets up the tree layouts.\r
       tree = new NJTree(seq, newtree);\r
+      // Now have to calculate longest name based on the leaves\r
+      Vector leaves = tree.findLeaves(tree.getTopNode(),new Vector());\r
+\r
+      for (int i=0;i < leaves.size();i++)\r
+        if (longestName.length()<((Sequence) ((SequenceNode) leaves.elementAt(i)).element()).getName().length())\r
+          longestName = TreeCanvas.PLACEHOLDER+((Sequence) ((SequenceNode) leaves.elementAt(i)).element()).getName();\r
 \r
       tree.reCount(tree.getTopNode());\r
       tree.findHeight(tree.getTopNode());\r
@@ -91,6 +95,10 @@ public class TreePanel extends GTreePanel
       treeCanvas.setShowBootstrap(newtree.HasBootstrap());\r
       treeCanvas.setShowDistances(newtree.HasDistances());\r
       scrollPane.setViewportView(treeCanvas);\r
+      distanceMenu.setSelected(newtree.HasDistances());\r
+      bootstrapMenu.setSelected(newtree.HasBootstrap());\r
+      if (true) // JBPNote TODO: preference for always marking placeholders in new associated tree\r
+        placeholdersMenu.setSelected(treeCanvas.markPlaceholders);\r
 \r
     }\r
 \r
@@ -172,6 +180,10 @@ public class TreePanel extends GTreePanel
     treeCanvas.setShowBootstrap(bootstrapMenu.isSelected());\r
   }\r
 \r
+  protected void placeholdersMenu_actionPerformed(ActionEvent e)\r
+    {\r
+      treeCanvas.setMarkPlaceholders(placeholdersMenu.isSelected());\r
+  }\r
 \r
   protected void epsTree_actionPerformed(ActionEvent e)\r
   {\r