Associate PCA with multiple views
[jalview.git] / src / jalview / gui / RotatableCanvas.java
index 458d971..be1d3f5 100755 (executable)
@@ -72,13 +72,35 @@ public class RotatableCanvas extends JPanel implements MouseListener,
     int recty2;\r
     float scalefactor = 1;\r
     AlignViewport av;\r
+    AlignmentPanel ap;\r
     boolean showLabels = false;\r
     Color bgColour = Color.black;\r
+    boolean applyToAllViews = false;\r
 \r
     //  Controller    controller;\r
-    public RotatableCanvas(AlignViewport av)\r
+    public RotatableCanvas(AlignmentPanel ap)\r
     {\r
-      this.av = av;\r
+      this.av = ap.av;\r
+      this.ap = ap;\r
+\r
+      addMouseWheelListener(new MouseWheelListener()\r
+      {\r
+        public void mouseWheelMoved(MouseWheelEvent e)\r
+        {\r
+          if (e.getWheelRotation() > 0)\r
+          {\r
+            scale = (float) (scale * 1.1);\r
+            repaint();\r
+          }\r
+\r
+          else\r
+          {\r
+            scale = (float) (scale * 0.9);\r
+            repaint();\r
+          }\r
+        }\r
+      });\r
+\r
     }\r
 \r
     public void showLabels(boolean b)\r
@@ -94,7 +116,6 @@ public class RotatableCanvas extends JPanel implements MouseListener,
         ToolTipManager.sharedInstance().registerComponent(this);\r
         ToolTipManager.sharedInstance().setInitialDelay(0);\r
         ToolTipManager.sharedInstance().setDismissDelay(10000);\r
-        PaintRefresher.Register(this, av.getSequenceSetId());\r
 \r
         prefsize = getPreferredSize();\r
         orig = new float[npoint][3];\r
@@ -397,13 +418,13 @@ public class RotatableCanvas extends JPanel implements MouseListener,
                 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
@@ -572,17 +593,24 @@ public class RotatableCanvas extends JPanel implements MouseListener,
 \r
         if (found != null)\r
         {\r
-            if (av.getSelectionGroup() != null)\r
+          AlignmentPanel[] aps = getAssociatedPanels();\r
+\r
+          for (int a = 0; a < aps.length; a++)\r
+          {\r
+            if (aps[a].av.getSelectionGroup() != null)\r
             {\r
-                av.getSelectionGroup().addOrRemove(found, true);\r
-                PaintRefresher.Refresh(this, av.getSequenceSetId());\r
+              aps[a].av.getSelectionGroup().addOrRemove(found, true);\r
             }\r
             else\r
             {\r
-                av.setSelectionGroup(new SequenceGroup());\r
-                av.getSelectionGroup().addOrRemove(found, true);\r
-                av.getSelectionGroup().setEndRes(av.alignment.getWidth()-1);\r
+              aps[a].av.setSelectionGroup(new SequenceGroup());\r
+              aps[a].av.getSelectionGroup().addOrRemove(found, true);\r
+              aps[a].av.getSelectionGroup().setEndRes(\r
+                  aps[a].av.alignment.getWidth() - 1);\r
             }\r
+          }\r
+\r
+          PaintRefresher.Refresh(this, av.getSequenceSetId());\r
         }\r
 \r
         repaint();\r
@@ -730,25 +758,14 @@ public class RotatableCanvas extends JPanel implements MouseListener,
         }\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
+    AlignmentPanel[] getAssociatedPanels()\r
+    {\r
+      if (applyToAllViews)\r
+      {\r
+        return PaintRefresher.getAssociatedPanels(av.getSequenceSetId());\r
+      }\r
+      else\r
+        return new AlignmentPanel[]\r
+            { ap };\r
+    }\r
 }\r