ensure listeners are deregistered when panel is closed. apply gpl development license
authorjprocter <Jim Procter>
Mon, 8 Jun 2009 11:08:32 +0000 (11:08 +0000)
committerjprocter <Jim Procter>
Mon, 8 Jun 2009 11:08:32 +0000 (11:08 +0000)
src/jalview/gui/AlignFrame.java

index d6eab59..2ee643f 100755 (executable)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.4)
- * Copyright (C) 2008 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer (Development Version 2.4.1)
+ * Copyright (C) 2009 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
  * 
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -1083,15 +1083,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
           for (int i = 0; i < alignPanels.size(); i++)
           {
             AlignmentPanel ap = (AlignmentPanel) alignPanels.elementAt(i);
-            jalview.structure.StructureSelectionManager ssm = 
-              jalview.structure.StructureSelectionManager
-                    .getStructureSelectionManager();
-            ssm.removeStructureViewerListener(ap.seqPanel, null);
-            ssm.removeSelectionListener(ap.seqPanel);
-            PaintRefresher.RemoveComponent(ap.seqPanel.seqCanvas);
-            PaintRefresher.RemoveComponent(ap.idPanel.idCanvas);
-            PaintRefresher.RemoveComponent(ap);
-            ap.av.alignment = null;
+            ap.closePanel();
           }
         }
         else
@@ -1111,20 +1103,21 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     }
   }
 
+  /**
+   * close alignPanel2 and shuffle tabs appropriately.
+   * @param alignPanel2
+   */
   public void closeView(AlignmentPanel alignPanel2)
   {
     int index = tabbedPane.getSelectedIndex();
     int closedindex = tabbedPane.indexOfComponent(alignPanel2);
     alignPanels.removeElement(alignPanel2);
-    PaintRefresher.RemoveComponent(alignPanel2.seqPanel.seqCanvas);
-    PaintRefresher.RemoveComponent(alignPanel2.idPanel.idCanvas);
-    PaintRefresher.RemoveComponent(alignPanel2);
-    alignPanel2.av.alignment = null;
     
     if (viewport == alignPanel2.av)
     {
       viewport = null;
     }
+    alignPanel2.closePanel();
     alignPanel2 = null;
     
     tabbedPane.removeTabAt(closedindex);