JAL-1033, JAL-1013 - ensure pca window shown only after calculation completes, and...
authorjprocter <jprocter@compbio.dundee.ac.uk>
Wed, 14 Dec 2011 11:14:48 +0000 (11:14 +0000)
committerjprocter <jprocter@compbio.dundee.ac.uk>
Wed, 14 Dec 2011 11:14:48 +0000 (11:14 +0000)
src/jalview/gui/PCAPanel.java
src/jalview/gui/RotatableCanvas.java

index e3959ea..0941c7d 100755 (executable)
@@ -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)
index 713f9b1..e40852a 100755 (executable)
@@ -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()