X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FRotatableCanvas.java;h=1ff78b473e7f1e31e97067a9631fc2e90097b7c4;hb=9d139ca8d1af8f0f2d78193d418ae9e9168a3e8a;hp=883a4c972ea01c9a7c3ff3a7e7ecf11db3a38e9a;hpb=d423f22792e47dbc800ae220a58677f988971d06;p=jalview.git diff --git a/src/jalview/gui/RotatableCanvas.java b/src/jalview/gui/RotatableCanvas.java index 883a4c9..1ff78b4 100755 --- a/src/jalview/gui/RotatableCanvas.java +++ b/src/jalview/gui/RotatableCanvas.java @@ -1,30 +1,35 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.5) - * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2) + * Copyright (C) 2014 The Jalview Authors * * This file is part of Jalview. * * 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. - * + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * * 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 . + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. */ package jalview.gui; import java.util.*; - import java.awt.*; import java.awt.event.*; + import javax.swing.*; +import jalview.api.RotatableCanvasI; import jalview.datamodel.*; import jalview.math.*; +import jalview.util.MessageManager; /** * DOCUMENT ME! @@ -33,7 +38,7 @@ import jalview.math.*; * @version $Revision$ */ public class RotatableCanvas extends JPanel implements MouseListener, - MouseMotionListener, KeyListener + MouseMotionListener, KeyListener, RotatableCanvasI { RotatableMatrix idmat = new RotatableMatrix(3, 3); @@ -138,14 +143,18 @@ public class RotatableCanvas extends JPanel implements MouseListener, repaint(); } + boolean first = true; + public void setPoints(Vector points, int npoint) { this.points = points; this.npoint = npoint; - ToolTipManager.sharedInstance().registerComponent(this); - ToolTipManager.sharedInstance().setInitialDelay(0); - ToolTipManager.sharedInstance().setDismissDelay(10000); - + if (first) + { + ToolTipManager.sharedInstance().registerComponent(this); + ToolTipManager.sharedInstance().setInitialDelay(0); + ToolTipManager.sharedInstance().setDismissDelay(10000); + } prefsize = getPreferredSize(); orig = new float[npoint][3]; @@ -186,11 +195,14 @@ public class RotatableCanvas extends JPanel implements MouseListener, findWidth(); scale = findScale(); + if (first) + { - addMouseListener(this); - - addMouseMotionListener(this); + addMouseListener(this); + addMouseMotionListener(this); + } + first = false; } public void initAxes() @@ -361,7 +373,8 @@ public class RotatableCanvas extends JPanel implements MouseListener, if (points == null) { g.setFont(new Font("Verdana", Font.PLAIN, 18)); - g.drawString("Calculating PCA....", 20, getHeight() / 2); + g.drawString(MessageManager.getString("label.calculating_pca") + + "....", 20, getHeight() / 2); } else { @@ -460,8 +473,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); } @@ -476,8 +489,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); } } @@ -643,7 +657,7 @@ public class RotatableCanvas extends JPanel implements MouseListener, aps[a].av.setSelectionGroup(new SequenceGroup()); aps[a].av.getSelectionGroup().addOrRemove(found, true); aps[a].av.getSelectionGroup().setEndRes( - aps[a].av.alignment.getWidth() - 1); + aps[a].av.getAlignment().getWidth() - 1); } } PaintRefresher.Refresh(this, av.getSequenceSetId()); @@ -748,8 +762,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); } @@ -815,4 +829,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; + } + }