Merge branch 'develop' into features/JAL-2360colourSchemeApplicability
[jalview.git] / src / jalview / gui / PCAPanel.java
index 288ef1f..58ed008 100644 (file)
@@ -47,6 +47,8 @@ import javax.swing.JCheckBoxMenuItem;
 import javax.swing.JColorChooser;
 import javax.swing.JMenuItem;
 import javax.swing.JRadioButtonMenuItem;
+import javax.swing.event.InternalFrameAdapter;
+import javax.swing.event.InternalFrameEvent;
 
 /**
  * DOCUMENT ME!
@@ -80,6 +82,7 @@ public class PCAPanel extends GPCAPanel implements Runnable,
    */
   public PCAPanel(AlignmentPanel ap)
   {
+    super();
     this.av = ap.av;
     this.ap = ap;
 
@@ -120,6 +123,16 @@ public class PCAPanel extends GPCAPanel implements Runnable,
 
       return;
     }
+
+    addInternalFrameListener(new InternalFrameAdapter()
+    {
+      @Override
+      public void internalFrameClosed(InternalFrameEvent e)
+      {
+        close_actionPerformed();
+      }
+    });
+
     pcaModel = new PCAModel(seqstrings, seqs, nucleotide);
     PaintRefresher.Register(this, av.getSequenceSetId());
 
@@ -129,6 +142,15 @@ public class PCAPanel extends GPCAPanel implements Runnable,
     worker.start();
   }
 
+  /**
+   * Ensure references to potentially very large objects (the PCA matrices) are
+   * nulled when the frame is closed
+   */
+  protected void close_actionPerformed()
+  {
+    pcaModel = null;
+  }
+
   @Override
   protected void scoreMatrix_menuSelected()
   {