Hidden representatives moved from sequence to viewport
[jalview.git] / src / jalview / appletgui / RotatableCanvas.java
index 9fa7491..36e0859 100755 (executable)
@@ -1,6 +1,6 @@
 /*\r
  * Jalview - A Sequence Alignment Editor and Viewer\r
- * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
+ * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
  *\r
  * This program is free software; you can redistribute it and/or\r
  * modify it under the terms of the GNU General Public License\r
@@ -36,6 +36,8 @@ public class RotatableCanvas
   RotatableMatrix idmat = new RotatableMatrix(3, 3);\r
   RotatableMatrix objmat = new RotatableMatrix(3, 3);\r
   RotatableMatrix rotmat = new RotatableMatrix(3, 3);\r
+  String tooltip;\r
+  int toolx, tooly;\r
 \r
   //RubberbandRectangle rubberband;\r
 \r
@@ -80,18 +82,24 @@ public class RotatableCanvas
   float scalefactor = 1;\r
 \r
   AlignViewport av;\r
+  boolean showLabels = false;\r
 \r
   public RotatableCanvas(AlignViewport av)\r
   {\r
     this.av = av;\r
   }\r
 \r
+  public void showLabels(boolean b)\r
+  {\r
+    showLabels = b;\r
+    repaint();\r
+  }\r
+\r
   public void setPoints(Vector points, int npoint)\r
   {\r
     this.points = points;\r
     this.npoint = npoint;\r
-    this.av = av;\r
-    PaintRefresher.Register(this, av.alignment);\r
+    PaintRefresher.Register(this, av.getSequenceSetId());\r
 \r
     prefsize = getPreferredSize();\r
     orig = new float[npoint][3];\r
@@ -285,6 +293,10 @@ public class RotatableCanvas
     return getPreferredSize();\r
   }\r
 \r
+  public void update(Graphics g)\r
+  {\r
+    paint(g);\r
+  }\r
   public void paint(Graphics g)\r
   {\r
     if (points == null)\r
@@ -317,6 +329,12 @@ public class RotatableCanvas
         drawAxes(ig);\r
       }\r
 \r
+      if(tooltip!=null)\r
+      {\r
+        ig.setColor(Color.red);\r
+        ig.drawString(tooltip, toolx, tooly);\r
+      }\r
+\r
       g.drawImage(img, 0, 0, this);\r
     }\r
   }\r
@@ -341,7 +359,7 @@ public class RotatableCanvas
 \r
   public void drawScene(Graphics g)\r
   {\r
-    boolean darker = false;\r
+    //boolean darker = false;\r
 \r
     int halfwidth = getSize().width / 2;\r
     int halfheight = getSize().height / 2;\r
@@ -353,18 +371,18 @@ public class RotatableCanvas
       int y = (int) ( (float) (sp.coord[1] - centre[1]) * scale) + halfheight;\r
       float z = sp.coord[1] - centre[2];\r
 \r
-      if (sp.sequence.getColor() == Color.black)\r
+      if (av.getSequenceColour(sp.sequence) == Color.black)\r
       {\r
         g.setColor(Color.white);\r
       }\r
       else\r
       {\r
-        g.setColor(sp.sequence.getColor());\r
+        g.setColor(av.getSequenceColour(sp.sequence));\r
       }\r
 \r
       if (av.getSelectionGroup() != null)\r
       {\r
-        if (av.getSelectionGroup().sequences.contains( ( (SequencePoint) points.\r
+        if (av.getSelectionGroup().getSequences(null).contains( ( (SequencePoint) points.\r
             elementAt(i)).sequence))\r
         {\r
           g.setColor(Color.gray);\r
@@ -376,14 +394,14 @@ public class RotatableCanvas
       }\r
 \r
       g.fillRect(x - 3, y - 3, 6, 6);\r
-      g.setColor(Color.red);\r
+      if (showLabels)\r
+      {\r
+        g.setColor(Color.red);\r
+        g.drawString( ( (SequencePoint) points.elementAt(i)).sequence.\r
+                     getName(),\r
+                     x - 3, y - 4);\r
+      }\r
     }\r
-//    //Now the rectangle\r
-//    if (rectx2 != -1 && recty2 != -1) {\r
-//      g.setColor(Color.white);\r
-//\r
-//      g.drawRect(rectx1,recty1,rectx2-rectx1,recty2-recty1);\r
-//    }\r
   }\r
 \r
   public Dimension minimumsize()\r
@@ -404,7 +422,6 @@ public class RotatableCanvas
 \r
   public void keyPressed(KeyEvent evt)\r
   {\r
-    requestFocus();\r
     if (evt.getKeyCode() == KeyEvent.VK_UP)\r
     {\r
       scalefactor = (float) (scalefactor * 1.1);\r
@@ -481,7 +498,7 @@ public class RotatableCanvas
       {\r
         av.getSelectionGroup().addOrRemove(found, true);\r
         av.getSelectionGroup().setEndRes(av.alignment.getWidth()-1);\r
-        PaintRefresher.Refresh(this, av.alignment);\r
+        PaintRefresher.Refresh(this, av.getSequenceSetId());\r
       }\r
       else\r
       {\r
@@ -494,27 +511,26 @@ public class RotatableCanvas
     repaint();\r
   }\r
 \r
-  // private void fireSequenceSelectionEvent(Selection sel) {\r
-  //   controller.handleSequenceSelectionEvent(new SequenceSelectionEvent(this,sel));\r
-  //}\r
 \r
   public void mouseMoved(MouseEvent evt)\r
   {\r
-    // SequenceI found = findPoint(evt.getX(), evt.getY());\r
+     SequenceI found = findPoint(evt.getX(), evt.getY());\r
+     if(found==null)\r
+       tooltip = null;\r
+     else\r
+     {\r
+       tooltip = found.getName();\r
+       toolx = evt.getX();\r
+       tooly = evt.getY();\r
+     }\r
+     repaint();\r
   }\r
 \r
   public void mouseDragged(MouseEvent evt)\r
   {\r
     mx = evt.getX();\r
     my = evt.getY();\r
-    //Check if this is a rectangle drawing drag\r
-    if ( (evt.getModifiers() & InputEvent.BUTTON2_MASK) != 0)\r
-    {\r
-//      rectx2 = evt.getX();\r
-//      recty2 = evt.getY();\r
-    }\r
-    else\r
-    {\r
+\r
       rotmat.setIdentity();\r
 \r
       rotmat.rotate( (float) (my - omy), 'x');\r
@@ -544,13 +560,11 @@ public class RotatableCanvas
       omy = my;\r
 \r
       paint(this.getGraphics());\r
-    }\r
-\r
   }\r
 \r
   public void rectSelect(int x1, int y1, int x2, int y2)\r
   {\r
-    boolean changedSel = false;\r
+    //boolean changedSel = false;\r
     for (int i = 0; i < npoint; i++)\r
     {\r
       SequencePoint sp = (SequencePoint) points.elementAt(i);\r
@@ -563,7 +577,7 @@ public class RotatableCanvas
       {\r
         if (av != null)\r
         {\r
-          if (!av.getSelectionGroup().sequences.contains(sp.sequence))\r
+          if (!av.getSelectionGroup().getSequences(null).contains(sp.sequence))\r
           {\r
             av.getSelectionGroup().addSequence(sp.sequence, true);\r
           }\r
@@ -601,26 +615,5 @@ public class RotatableCanvas
       return null;\r
     }\r
   }\r
-  /*  public boolean handleRubberbandEvent(RubberbandEvent evt) {\r
-      System.out.println("Rubberband handler called in RotatableCanvas with " +\r
-                         evt.getBounds());\r
-\r
-      Rubberband rb = (Rubberband)evt.getSource();\r
-\r
-      // Clear the current selection (instance variable)\r
-      //if ((rb.getModifiers() & Event.SHIFT_MASK) == 0) {\r
-      //   clearSelection();\r
-      //}\r
-\r
-      if (rb.getComponent() == this) {\r
-        Rectangle bounds = evt.getBounds();\r
-   rectSelect(bounds.x,bounds.y,bounds.x+bounds.width,bounds.y+bounds.height);\r
-      }\r
-\r
-      redrawneeded = true;\r
-      paint(this.getGraphics());\r
-\r
-      return true;\r
-    }*/\r
 \r
 }\r