X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FPCAPanel.java;h=58ed0080d5ebd87d0f587b04da2b19aee1c73ac8;hb=f01d759960fc7bf6d91307aac03c41870c9a5493;hp=47add28340fe8d29e98b8bd256e1dadea7be8284;hpb=e1767448d422ab26a6920bae2173804eda662e31;p=jalview.git diff --git a/src/jalview/gui/PCAPanel.java b/src/jalview/gui/PCAPanel.java index 47add28..58ed008 100644 --- a/src/jalview/gui/PCAPanel.java +++ b/src/jalview/gui/PCAPanel.java @@ -21,6 +21,7 @@ package jalview.gui; import jalview.datamodel.Alignment; +import jalview.datamodel.AlignmentI; import jalview.datamodel.AlignmentView; import jalview.datamodel.ColumnSelection; import jalview.datamodel.SeqCigar; @@ -45,8 +46,9 @@ import javax.swing.ButtonGroup; import javax.swing.JCheckBoxMenuItem; import javax.swing.JColorChooser; import javax.swing.JMenuItem; -import javax.swing.JOptionPane; 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; @@ -113,13 +116,23 @@ public class PCAPanel extends GPCAPanel implements Runnable, if (!sameLength) { - JOptionPane.showMessageDialog(Desktop.desktop, + JvOptionPane.showMessageDialog(Desktop.desktop, MessageManager.getString("label.pca_sequences_not_aligned"), MessageManager.getString("label.sequences_not_aligned"), - JOptionPane.WARNING_MESSAGE); + JvOptionPane.WARNING_MESSAGE); 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() { @@ -139,8 +161,8 @@ public class PCAPanel extends GPCAPanel implements Runnable, { // create an entry for this score matrix for use in PCA JCheckBoxMenuItem jm = new JCheckBoxMenuItem(); - jm.setText(MessageManager - .getStringOrReturn("label.score_model", sm)); + jm.setText(MessageManager.getStringOrReturn("label.score_model_", + sm)); jm.setSelected(pcaModel.getScore_matrix().equals(sm)); if ((ResidueProperties.scoreMatrices.get(sm).isDNA() && ResidueProperties.scoreMatrices .get(sm).isProtein()) @@ -171,7 +193,7 @@ public class PCAPanel extends GPCAPanel implements Runnable, public void bgcolour_actionPerformed(ActionEvent e) { Color col = JColorChooser.showDialog(this, - MessageManager.getString("label.select_backgroud_colour"), + MessageManager.getString("label.select_background_colour"), rc.bgColour); if (col != null) @@ -383,8 +405,8 @@ public class PCAPanel extends GPCAPanel implements Runnable, { // AlignmentOrder origorder = new AlignmentOrder(alAndColsel[0]); - Alignment al = new Alignment((SequenceI[]) alAndColsel[0]); - Alignment dataset = (av != null && av.getAlignment() != null) ? av + AlignmentI al = new Alignment((SequenceI[]) alAndColsel[0]); + AlignmentI dataset = (av != null && av.getAlignment() != null) ? av .getAlignment().getDataset() : null; if (dataset != null) {