Sequence colour in viewport
[jalview.git] / src / jalview / gui / TreeCanvas.java
index 70aeb60..57e652c 100755 (executable)
@@ -49,6 +49,7 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
     NJTree tree;\r
     JScrollPane scrollPane;\r
     AlignViewport av;\r
+    AlignmentPanel ap;\r
     Font font;\r
     FontMetrics fm;\r
     boolean fitToWindow = true;\r
@@ -73,14 +74,16 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
      * @param scroller DOCUMENT ME!\r
      * @param label DOCUMENT ME!\r
      */\r
-    public TreeCanvas(AlignViewport av, JScrollPane scroller)\r
+    public TreeCanvas(AlignmentPanel ap, JScrollPane scroller)\r
     {\r
-        this.av = av;\r
+        this.av = ap.av;\r
+        this.ap = ap;\r
         font = av.getFont();\r
         scrollPane = scroller;\r
         addMouseListener(this);\r
         addMouseMotionListener(this);\r
-        PaintRefresher.Register(this, av.alignment);\r
+        PaintRefresher.Register(this, ap.av.getSequenceSetId());\r
+        ToolTipManager.sharedInstance().registerComponent(this);\r
     }\r
 \r
 \r
@@ -170,14 +173,15 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
 \r
             if (node.element() instanceof SequenceI)\r
             {\r
-                if (((SequenceI) ((SequenceNode) node).element()).getColor() == Color.white)\r
+              SequenceI seq = (SequenceI)((SequenceNode) node).element();\r
+\r
+                if (av.getSequenceColour(seq) == Color.white)\r
                 {\r
                     g.setColor(Color.black);\r
                 }\r
                 else\r
                 {\r
-                    g.setColor(((SequenceI) ((SequenceNode) node).element()).getColor()\r
-                                .darker());\r
+                    g.setColor(av.getSequenceColour(seq).darker());\r
                 }\r
             }\r
             else\r
@@ -416,7 +420,7 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
 \r
             if (node.element() instanceof SequenceI)\r
             {\r
-                ((SequenceI) node.element()).setColor(c);\r
+              av.setSequenceColour((SequenceI) node.element(), c);\r
             }\r
         }\r
         else\r
@@ -661,6 +665,14 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
     {\r
       if(highlightNode!=null)\r
       {\r
+        if (SwingUtilities.isRightMouseButton(evt))\r
+        {\r
+          Color col = JColorChooser.showDialog(this, "Select Background Colour",\r
+                                               highlightNode.color);\r
+\r
+          setColor(highlightNode, col);\r
+        }\r
+        else\r
         if(evt.getClickCount()>1)\r
         {\r
           tree.swapNodes(highlightNode);\r
@@ -680,7 +692,7 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
           }\r
         }\r
 \r
-        PaintRefresher.Refresh(this, av.alignment);\r
+        PaintRefresher.Refresh(this, av.getSequenceSetId());\r
         repaint();\r
       }\r
     }\r
@@ -696,13 +708,19 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
       if (ob instanceof SequenceNode)\r
       {\r
         highlightNode = (SequenceNode) ob;\r
+        this.setToolTipText(\r
+            "<html>Left click to select leaves"\r
+            + "<br>Double-click to invert leaves"\r
+            + "<br>Right click to change colour");\r
         repaint();\r
+\r
       }\r
       else\r
       {\r
         if (highlightNode != null)\r
         {\r
           highlightNode = null;\r
+          setToolTipText(null);\r
           repaint();\r
         }\r
       }\r
@@ -728,7 +746,7 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
         if (ob instanceof SequenceI)\r
         {\r
           treeSelectionChanged( (Sequence) ob);\r
-          PaintRefresher.Refresh(this, av.alignment);\r
+          PaintRefresher.Refresh(this, ap.av.getSequenceSetId());\r
           repaint();\r
           return;\r
         }\r
@@ -746,11 +764,12 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
 \r
                 av.setSelectionGroup(null);\r
                 av.alignment.deleteAllGroups();\r
+                av.sequenceColours.clear();\r
 \r
                 colourGroups();\r
               }\r
 \r
-              PaintRefresher.Refresh(this, av.alignment);\r
+              PaintRefresher.Refresh(this, ap.av.getSequenceSetId());\r
               repaint();\r
         }\r
 \r