Applet frame name
[jalview.git] / src / jalview / appletgui / RotatableCanvas.java
index 7d32b86..82207a2 100755 (executable)
@@ -32,8 +32,6 @@ public class RotatableCanvas
     extends Panel implements MouseListener,\r
     MouseMotionListener,\r
     KeyListener\r
-//RubberbandListener,\r
-//SequenceSelectionListener\r
 {\r
   RotatableMatrix idmat = new RotatableMatrix(3, 3);\r
   RotatableMatrix objmat = new RotatableMatrix(3, 3);\r
@@ -82,17 +80,26 @@ public class RotatableCanvas
   float scalefactor = 1;\r
 \r
   AlignViewport av;\r
-//  Controller    controller;\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 RotatableCanvas(AlignViewport av,\r
-                         Vector points, int npoint)\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);\r
-//\r
+    PaintRefresher.Register(this, av.alignment);\r
+\r
     prefsize = getPreferredSize();\r
     orig = new float[npoint][3];\r
 \r
@@ -287,29 +294,38 @@ public class RotatableCanvas
 \r
   public void paint(Graphics g)\r
   {\r
-    //Only create the image at the beginning -\r
-    if ( (img == null) || (prefsize.width != getSize().width) ||\r
-        (prefsize.height != getSize().height))\r
+    if (points == null)\r
+    {\r
+      g.setFont(new Font("Verdana", Font.PLAIN, 18));\r
+      g.drawString("Calculating PCA....", 20, getSize().height / 2);\r
+    }\r
+    else\r
     {\r
-      prefsize.width = getSize().width;\r
-      prefsize.height = getSize().height;\r
 \r
-      scale = findScale();\r
+      //Only create the image at the beginning -\r
+      if ( (img == null) || (prefsize.width != getSize().width) ||\r
+          (prefsize.height != getSize().height))\r
+      {\r
+        prefsize.width = getSize().width;\r
+        prefsize.height = getSize().height;\r
 \r
-      //      System.out.println("New scale = " + scale);\r
-      img = createImage(getSize().width, getSize().height);\r
-      ig = img.getGraphics();\r
+        scale = findScale();\r
 \r
-    }\r
+        //      System.out.println("New scale = " + scale);\r
+        img = createImage(getSize().width, getSize().height);\r
+        ig = img.getGraphics();\r
 \r
-    drawBackground(ig, Color.black);\r
-    drawScene(ig);\r
-    if (drawAxes == true)\r
-    {\r
-      drawAxes(ig);\r
-    }\r
+      }\r
+\r
+      drawBackground(ig, Color.black);\r
+      drawScene(ig);\r
+      if (drawAxes == true)\r
+      {\r
+        drawAxes(ig);\r
+      }\r
 \r
-    g.drawImage(img, 0, 0, this);\r
+      g.drawImage(img, 0, 0, this);\r
+    }\r
   }\r
 \r
   public void drawAxes(Graphics g)\r
@@ -367,7 +383,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
     }\r
 //    //Now the rectangle\r
 //    if (rectx2 != -1 && recty2 != -1) {\r
@@ -470,14 +493,15 @@ public class RotatableCanvas
     {\r
       if (av.getSelectionGroup() != null)\r
       {\r
-        av.getSelectionGroup().addOrRemove(found);\r
-        PaintRefresher.Refresh(this);\r
+        av.getSelectionGroup().addOrRemove(found, true);\r
+        av.getSelectionGroup().setEndRes(av.alignment.getWidth()-1);\r
+        PaintRefresher.Refresh(this, av.alignment);\r
       }\r
       else\r
       {\r
         av.setSelectionGroup(new SequenceGroup());\r
-        av.getSelectionGroup().addOrRemove(found);\r
-        av.getSelectionGroup().setEndRes(av.alignment.getWidth());\r
+        av.getSelectionGroup().addOrRemove(found, true);\r
+        av.getSelectionGroup().setEndRes(av.alignment.getWidth()-1);\r
 \r
       }\r
     }\r
@@ -555,15 +579,11 @@ public class RotatableCanvas
         {\r
           if (!av.getSelectionGroup().sequences.contains(sp.sequence))\r
           {\r
-            changedSel = true;\r
-            av.getSelectionGroup().addSequence(sp.sequence);\r
+            av.getSelectionGroup().addSequence(sp.sequence, true);\r
           }\r
         }\r
       }\r
     }\r
-    // if (changedSel) {\r
-    //    fireSequenceSelectionEvent(av.getSelection());\r
-    // }\r
   }\r
 \r
   public SequenceI findPoint(int x, int y)\r