From fd1c6fd67abdd50ff0d77410d3da9be66be315ce Mon Sep 17 00:00:00 2001 From: gmungoc Date: Mon, 15 Jun 2015 12:18:55 +0100 Subject: [PATCH] JAL-1778 deregister as a listener when panel closed --- src/jalview/gui/AppVarna.java | 57 ++++++++++++++++++++++++++++++----------- 1 file changed, 42 insertions(+), 15 deletions(-) diff --git a/src/jalview/gui/AppVarna.java b/src/jalview/gui/AppVarna.java index 5f38313..35cd3e5 100644 --- a/src/jalview/gui/AppVarna.java +++ b/src/jalview/gui/AppVarna.java @@ -20,17 +20,6 @@ */ package jalview.gui; -import jalview.bin.Cache; -import jalview.datamodel.ColumnSelection; -import jalview.datamodel.SequenceGroup; -import jalview.datamodel.SequenceI; -import jalview.structure.SecondaryStructureListener; -import jalview.structure.SelectionListener; -import jalview.structure.SelectionSource; -import jalview.structure.StructureSelectionManager; -import jalview.structure.VamsasSource; -import jalview.util.ShiftList; - import java.awt.BorderLayout; import java.awt.Color; import java.util.ArrayList; @@ -41,10 +30,8 @@ import java.util.regex.Pattern; import javax.swing.JInternalFrame; import javax.swing.JSplitPane; - -import jalview.bin.Cache; -import jalview.util.MessageManager; -import jalview.util.ShiftList; +import javax.swing.event.InternalFrameAdapter; +import javax.swing.event.InternalFrameEvent; import fr.orsay.lri.varna.VARNAPanel; import fr.orsay.lri.varna.exceptions.ExceptionFileFormatOrSyntax; @@ -57,6 +44,18 @@ import fr.orsay.lri.varna.models.annotations.HighlightRegionAnnotation; import fr.orsay.lri.varna.models.rna.ModeleBase; import fr.orsay.lri.varna.models.rna.RNA; +import jalview.bin.Cache; +import jalview.datamodel.ColumnSelection; +import jalview.datamodel.SequenceGroup; +import jalview.datamodel.SequenceI; +import jalview.structure.SecondaryStructureListener; +import jalview.structure.SelectionListener; +import jalview.structure.SelectionSource; +import jalview.structure.StructureSelectionManager; +import jalview.structure.VamsasSource; +import jalview.util.MessageManager; +import jalview.util.ShiftList; + public class AppVarna extends JInternalFrame implements InterfaceVARNAListener, SelectionListener, SecondaryStructureListener// implements @@ -134,6 +133,15 @@ public class AppVarna extends JInternalFrame implements // System.out.println(ssm.toString()); ssm.addStructureViewerListener(this); ssm.addSelectionListener(this); + addInternalFrameListener(new InternalFrameAdapter() + { + @Override + public void internalFrameClosed(InternalFrameEvent evt) + { + close(); + } + }); + } public void initVarna() @@ -447,4 +455,23 @@ public class AppVarna extends JInternalFrame implements } + /** + * Tidy up as necessary when the viewer panel is closed + */ + protected void close() + { + /* + * Deregister as a listener, to free references to this object + */ + if (ap != null) + { + StructureSelectionManager ssm = ap.getStructureSelectionManager(); + if (ssm != null) + { + ssm.removeStructureViewerListener(AppVarna.this, null); + ssm.removeSelectionListener(AppVarna.this); + } + } + } + } -- 1.7.10.2