From c9cb2ef932ff18d9f0b7318df8b622e7d665f9ef Mon Sep 17 00:00:00 2001 From: jprocter Date: Wed, 14 Dec 2011 11:14:48 +0000 Subject: [PATCH] JAL-1033, JAL-1013 - ensure pca window shown only after calculation completes, and no GUI initialization code is executed after subsequent recalculation. --- src/jalview/gui/PCAPanel.java | 14 ++++++++------ src/jalview/gui/RotatableCanvas.java | 10 +++++++--- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/jalview/gui/PCAPanel.java b/src/jalview/gui/PCAPanel.java index e3959ea..0941c7d 100755 --- a/src/jalview/gui/PCAPanel.java +++ b/src/jalview/gui/PCAPanel.java @@ -106,8 +106,6 @@ public class PCAPanel extends GPCAPanel implements Runnable return; } - Desktop.addInternalFrame(this, "Principal component analysis", 400, 400); - PaintRefresher.Register(this, av.getSequenceSetId()); rc = new RotatableCanvas(ap); @@ -174,18 +172,22 @@ public class PCAPanel extends GPCAPanel implements Runnable } rc.setPoints(points, pca.getM().rows); - rc.repaint(); - - addKeyListener(rc); + // rc.invalidate(); nuclSetting.setSelected(nucleotide); protSetting.setSelected(!nucleotide); } catch (OutOfMemoryError er) { new OOMWarning("calculating PCA", er); - + return; } calcSettings.setEnabled(true); + repaint(); + if (getParent()==null) + { + addKeyListener(rc); + Desktop.addInternalFrame(this, "Principal component analysis", 400, 400); + } } @Override protected void nuclSetting_actionPerfomed(ActionEvent arg0) diff --git a/src/jalview/gui/RotatableCanvas.java b/src/jalview/gui/RotatableCanvas.java index 713f9b1..e40852a 100755 --- a/src/jalview/gui/RotatableCanvas.java +++ b/src/jalview/gui/RotatableCanvas.java @@ -138,14 +138,16 @@ public class RotatableCanvas extends JPanel implements MouseListener, repaint(); } + boolean first=true; public void setPoints(Vector points, int npoint) { this.points = points; this.npoint = npoint; + if (first) { ToolTipManager.sharedInstance().registerComponent(this); ToolTipManager.sharedInstance().setInitialDelay(0); ToolTipManager.sharedInstance().setDismissDelay(10000); - + } prefsize = getPreferredSize(); orig = new float[npoint][3]; @@ -186,11 +188,13 @@ public class RotatableCanvas extends JPanel implements MouseListener, findWidth(); scale = findScale(); - + if (first) { + addMouseListener(this); addMouseMotionListener(this); - + } + first=false; } public void initAxes() -- 1.7.10.2