update author list in license for (JAL-826)
[jalview.git] / src / jalview / gui / RotatableCanvas.java
index 14cd425..eda4d35 100755 (executable)
@@ -1,20 +1,19 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.4)
- * Copyright (C) 2008 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
+ * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle
  * 
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
+ * This file is part of Jalview.
  * 
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
  * 
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+ * Jalview is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty 
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+ * PURPOSE.  See the GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
  */
 package jalview.gui;
 
@@ -350,7 +349,7 @@ public class RotatableCanvas extends JPanel implements MouseListener,
    * DOCUMENT ME!
    * 
    * @param g
-   *                DOCUMENT ME!
+   *          DOCUMENT ME!
    */
   public void paintComponent(Graphics g1)
   {
@@ -396,7 +395,7 @@ public class RotatableCanvas extends JPanel implements MouseListener,
    * DOCUMENT ME!
    * 
    * @param g
-   *                DOCUMENT ME!
+   *          DOCUMENT ME!
    */
   public void drawAxes(Graphics g)
   {
@@ -415,9 +414,9 @@ public class RotatableCanvas extends JPanel implements MouseListener,
    * DOCUMENT ME!
    * 
    * @param g
-   *                DOCUMENT ME!
+   *          DOCUMENT ME!
    * @param col
-   *                DOCUMENT ME!
+   *          DOCUMENT ME!
    */
   public void drawBackground(Graphics g, Color col)
   {
@@ -429,7 +428,7 @@ public class RotatableCanvas extends JPanel implements MouseListener,
    * DOCUMENT ME!
    * 
    * @param g
-   *                DOCUMENT ME!
+   *          DOCUMENT ME!
    */
   public void drawScene(Graphics g1)
   {
@@ -461,8 +460,8 @@ public class RotatableCanvas extends JPanel implements MouseListener,
 
       if (av.getSelectionGroup() != null)
       {
-        if (av.getSelectionGroup().getSequences(null).contains(
-                ((SequencePoint) points.elementAt(i)).sequence))
+        if (av.getSelectionGroup().getSequences(null)
+                .contains(((SequencePoint) points.elementAt(i)).sequence))
         {
           g.setColor(Color.gray);
         }
@@ -477,8 +476,9 @@ public class RotatableCanvas extends JPanel implements MouseListener,
       if (showLabels)
       {
         g.setColor(Color.red);
-        g.drawString(((SequencePoint) points.elementAt(i)).sequence
-                .getName(), x - 3, y - 4);
+        g.drawString(
+                ((SequencePoint) points.elementAt(i)).sequence.getName(),
+                x - 3, y - 4);
       }
     }
 
@@ -514,7 +514,7 @@ public class RotatableCanvas extends JPanel implements MouseListener,
    * DOCUMENT ME!
    * 
    * @param evt
-   *                DOCUMENT ME!
+   *          DOCUMENT ME!
    */
   public void keyTyped(KeyEvent evt)
   {
@@ -524,7 +524,7 @@ public class RotatableCanvas extends JPanel implements MouseListener,
    * DOCUMENT ME!
    * 
    * @param evt
-   *                DOCUMENT ME!
+   *          DOCUMENT ME!
    */
   public void keyReleased(KeyEvent evt)
   {
@@ -534,7 +534,7 @@ public class RotatableCanvas extends JPanel implements MouseListener,
    * DOCUMENT ME!
    * 
    * @param evt
-   *                DOCUMENT ME!
+   *          DOCUMENT ME!
    */
   public void keyPressed(KeyEvent evt)
   {
@@ -565,7 +565,7 @@ public class RotatableCanvas extends JPanel implements MouseListener,
    * DOCUMENT ME!
    * 
    * @param evt
-   *                DOCUMENT ME!
+   *          DOCUMENT ME!
    */
   public void mouseClicked(MouseEvent evt)
   {
@@ -575,7 +575,7 @@ public class RotatableCanvas extends JPanel implements MouseListener,
    * DOCUMENT ME!
    * 
    * @param evt
-   *                DOCUMENT ME!
+   *          DOCUMENT ME!
    */
   public void mouseEntered(MouseEvent evt)
   {
@@ -585,7 +585,7 @@ public class RotatableCanvas extends JPanel implements MouseListener,
    * DOCUMENT ME!
    * 
    * @param evt
-   *                DOCUMENT ME!
+   *          DOCUMENT ME!
    */
   public void mouseExited(MouseEvent evt)
   {
@@ -595,7 +595,7 @@ public class RotatableCanvas extends JPanel implements MouseListener,
    * DOCUMENT ME!
    * 
    * @param evt
-   *                DOCUMENT ME!
+   *          DOCUMENT ME!
    */
   public void mouseReleased(MouseEvent evt)
   {
@@ -605,7 +605,7 @@ public class RotatableCanvas extends JPanel implements MouseListener,
    * DOCUMENT ME!
    * 
    * @param evt
-   *                DOCUMENT ME!
+   *          DOCUMENT ME!
    */
   public void mousePressed(MouseEvent evt)
   {
@@ -647,8 +647,9 @@ public class RotatableCanvas extends JPanel implements MouseListener,
                   aps[a].av.alignment.getWidth() - 1);
         }
       }
-
       PaintRefresher.Refresh(this, av.getSequenceSetId());
+      // canonical selection is sent to other listeners
+      av.sendSelection();
     }
 
     repaint();
@@ -676,7 +677,7 @@ public class RotatableCanvas extends JPanel implements MouseListener,
    * DOCUMENT ME!
    * 
    * @param evt
-   *                DOCUMENT ME!
+   *          DOCUMENT ME!
    */
   public void mouseDragged(MouseEvent evt)
   {
@@ -728,13 +729,13 @@ public class RotatableCanvas extends JPanel implements MouseListener,
    * DOCUMENT ME!
    * 
    * @param x1
-   *                DOCUMENT ME!
+   *          DOCUMENT ME!
    * @param y1
-   *                DOCUMENT ME!
+   *          DOCUMENT ME!
    * @param x2
-   *                DOCUMENT ME!
+   *          DOCUMENT ME!
    * @param y2
-   *                DOCUMENT ME!
+   *          DOCUMENT ME!
    */
   public void rectSelect(int x1, int y1, int x2, int y2)
   {
@@ -748,8 +749,8 @@ public class RotatableCanvas extends JPanel implements MouseListener,
       {
         if (av != null)
         {
-          if (!av.getSelectionGroup().getSequences(null).contains(
-                  sp.sequence))
+          if (!av.getSelectionGroup().getSequences(null)
+                  .contains(sp.sequence))
           {
             av.getSelectionGroup().addSequence(sp.sequence, true);
           }
@@ -766,9 +767,9 @@ public class RotatableCanvas extends JPanel implements MouseListener,
    * DOCUMENT ME!
    * 
    * @param x
-   *                DOCUMENT ME!
+   *          DOCUMENT ME!
    * @param y
-   *                DOCUMENT ME!
+   *          DOCUMENT ME!
    * 
    * @return DOCUMENT ME!
    */
@@ -815,4 +816,20 @@ public class RotatableCanvas extends JPanel implements MouseListener,
       { ap };
     }
   }
+
+  /**
+   * 
+   * @return x,y,z positions of point s (index into points) under current
+   *         transform.
+   */
+  public double[] getPointPosition(int s)
+  {
+    double pts[] = new double[3];
+    float[] p = ((SequencePoint) points.elementAt(s)).coord;
+    pts[0] = p[0];
+    pts[1] = p[1];
+    pts[2] = p[2];
+    return pts;
+  }
+
 }