sequences are private in SequenceGroup
[jalview.git] / src / jalview / gui / RotatableCanvas.java
index 460a99f..8af3d65 100755 (executable)
@@ -40,8 +40,6 @@ import javax.swing.*;
  */\r
 public class RotatableCanvas extends JPanel implements MouseListener,\r
     MouseMotionListener, KeyListener\r
-//RubberbandListener,\r
-//SequenceSelectionListener\r
 {\r
     RotatableMatrix idmat = new RotatableMatrix(3, 3);\r
     RotatableMatrix objmat = new RotatableMatrix(3, 3);\r
@@ -76,13 +74,25 @@ public class RotatableCanvas extends JPanel implements MouseListener,
     int recty2;\r
     float scalefactor = 1;\r
     AlignViewport av;\r
+    boolean showLabels = false;\r
+    Color bgColour = Color.black;\r
 \r
     //  Controller    controller;\r
-    public RotatableCanvas(AlignViewport av, Vector points, int npoint)\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
         ToolTipManager.sharedInstance().registerComponent(this);\r
         ToolTipManager.sharedInstance().setInitialDelay(0);\r
         ToolTipManager.sharedInstance().setDismissDelay(10000);\r
@@ -129,31 +139,13 @@ public class RotatableCanvas extends JPanel implements MouseListener,
 \r
         scale = findScale();\r
 \r
-        //    System.out.println("Scale factor = " + scale);\r
         addMouseListener(this);\r
         addKeyListener(this);\r
 \r
-        // if (getParent() != null) {\r
-        //   getParent().addKeyListener(this);\r
-        //}\r
         addMouseMotionListener(this);\r
 \r
-        // Add rubberband\r
-        //   rubberband  = new RubberbandRectangle(this);\r
-        //  rubberband.setActive(true);\r
-        //   rubberband.addListener(this);\r
     }\r
 \r
-    /* public boolean handleSequenceSelectionEvent(SequenceSelectionEvent evt) {\r
-       redrawneeded = true;\r
-       repaint();\r
-       return true;\r
-     }\r
-\r
-     public void removeNotify() {\r
-       controller.removeListener(this);\r
-       super.removeNotify();\r
-     }*/\r
     public void initAxes()\r
     {\r
         for (int i = 0; i < 3; i++)\r
@@ -311,31 +303,45 @@ public class RotatableCanvas extends JPanel implements MouseListener,
      *\r
      * @param g DOCUMENT ME!\r
      */\r
-    public void paintComponent(Graphics g)\r
+    public void paintComponent(Graphics g1)\r
     {\r
+\r
+      Graphics2D g = (Graphics2D) g1;\r
+\r
+      g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,\r
+                         RenderingHints.VALUE_ANTIALIAS_ON);\r
+      if(points==null)\r
+      {\r
+        g.setFont(new Font("Verdana", Font.PLAIN, 18));\r
+        g.drawString("Calculating PCA....", 20, getHeight()/2);\r
+      }\r
+      else\r
+      {\r
         //Only create the image at the beginning -\r
-        if ((img == null) || (prefsize.width != getWidth()) ||\r
-                (prefsize.height != getHeight()))\r
+        if ( (img == null) || (prefsize.width != getWidth()) ||\r
+            (prefsize.height != getHeight()))\r
         {\r
-            prefsize.width = getWidth();\r
-            prefsize.height = getHeight();\r
+          prefsize.width = getWidth();\r
+          prefsize.height = getHeight();\r
 \r
-            scale = findScale();\r
+          scale = findScale();\r
 \r
-            //      System.out.println("New scale = " + scale);\r
-            img = createImage(getWidth(), getHeight());\r
-            ig = img.getGraphics();\r
+          //      System.out.println("New scale = " + scale);\r
+          img = createImage(getWidth(), getHeight());\r
+          ig = img.getGraphics();\r
         }\r
 \r
-        drawBackground(ig, Color.black);\r
+\r
+        drawBackground(ig, bgColour);\r
         drawScene(ig);\r
 \r
         if (drawAxes == true)\r
         {\r
-            drawAxes(ig);\r
+          drawAxes(ig);\r
         }\r
 \r
         g.drawImage(img, 0, 0, this);\r
+      }\r
     }\r
 \r
     /**\r
@@ -345,6 +351,7 @@ public class RotatableCanvas extends JPanel implements MouseListener,
      */\r
     public void drawAxes(Graphics g)\r
     {\r
+\r
         g.setColor(Color.yellow);\r
 \r
         for (int i = 0; i < 3; i++)\r
@@ -372,9 +379,14 @@ public class RotatableCanvas extends JPanel implements MouseListener,
      *\r
      * @param g DOCUMENT ME!\r
      */\r
-    public void drawScene(Graphics g)\r
+    public void drawScene(Graphics g1)\r
     {\r
-        boolean darker = false;\r
+\r
+      Graphics2D g = (Graphics2D) g1;\r
+\r
+      g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,\r
+                         RenderingHints.VALUE_ANTIALIAS_ON);\r
+\r
 \r
         int halfwidth = getWidth() / 2;\r
         int halfheight = getHeight() / 2;\r
@@ -399,7 +411,7 @@ public class RotatableCanvas extends JPanel implements MouseListener,
 \r
             if (av.getSelectionGroup() != null)\r
             {\r
-                if (av.getSelectionGroup().sequences.contains(\r
+                if (av.getSelectionGroup().getSequences(false).contains(\r
                             ((SequencePoint) points.elementAt(i)).sequence))\r
                 {\r
                     g.setColor(Color.gray);\r
@@ -412,7 +424,13 @@ public class RotatableCanvas extends JPanel implements MouseListener,
             }\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
@@ -468,8 +486,6 @@ public class RotatableCanvas extends JPanel implements MouseListener,
      */\r
     public void keyPressed(KeyEvent evt)\r
     {\r
-        requestFocus();\r
-\r
         if (evt.getKeyCode() == KeyEvent.VK_UP)\r
         {\r
             scalefactor = (float) (scalefactor * 1.1);\r
@@ -493,24 +509,6 @@ public class RotatableCanvas extends JPanel implements MouseListener,
         repaint();\r
     }\r
 \r
-    /**\r
-     * DOCUMENT ME!\r
-     */\r
-    public void printPoints()\r
-    {\r
-        for (int i = 0; i < npoint; i++)\r
-        {\r
-            SequencePoint sp = (SequencePoint) points.elementAt(i);\r
-            Format.print(System.out, "%5d ", i);\r
-\r
-            for (int j = 0; j < 3; j++)\r
-            {\r
-                Format.print(System.out, "%13.3f  ", sp.coord[j]);\r
-            }\r
-\r
-            System.out.println();\r
-        }\r
-    }\r
 \r
     /**\r
      * DOCUMENT ME!\r
@@ -671,8 +669,6 @@ public class RotatableCanvas extends JPanel implements MouseListener,
      */\r
     public void rectSelect(int x1, int y1, int x2, int y2)\r
     {\r
-        boolean changedSel = false;\r
-\r
         for (int i = 0; i < npoint; i++)\r
         {\r
             SequencePoint sp = (SequencePoint) points.elementAt(i);\r
@@ -685,9 +681,8 @@ public class RotatableCanvas extends JPanel implements MouseListener,
             {\r
                 if (av != null)\r
                 {\r
-                    if (!av.getSelectionGroup().sequences.contains(sp.sequence))\r
+                    if (!av.getSelectionGroup().getSequences(false).contains(sp.sequence))\r
                     {\r
-                        changedSel = true;\r
                         av.getSelectionGroup().addSequence(sp.sequence, true);\r
                     }\r
                 }\r