From: jprocter Date: Mon, 8 Jun 2009 11:08:06 +0000 (+0000) Subject: ensure listeners are deregistered when panel is closed. Fix a scrolling bug and apply... X-Git-Tag: Release_2_5~289 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=0bc7bf031e9a20267bdc1e38fea24ebb64f4cca4;p=jalview.git ensure listeners are deregistered when panel is closed. Fix a scrolling bug and apply gpl development license --- diff --git a/src/jalview/gui/AlignmentPanel.java b/src/jalview/gui/AlignmentPanel.java index bbd9f72..608d29f 100755 --- a/src/jalview/gui/AlignmentPanel.java +++ b/src/jalview/gui/AlignmentPanel.java @@ -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 @@ -26,6 +26,7 @@ import java.awt.event.*; import java.awt.print.*; import javax.swing.*; +import jalview.bin.Cache; import jalview.datamodel.*; import jalview.jbgui.*; import jalview.schemes.*; @@ -249,7 +250,8 @@ public class AlignmentPanel extends GAlignmentPanel implements public boolean scrollToPosition(SearchResults results, boolean redrawOverview) { // TODO: properly locate search results in view when large numbers of hidden columns exist before highlighted region // do we need to scroll the panel? - if (results != null && results.getSize()>0) + // TODO: tons of nullpointereexceptions raised here. + if (results != null && results.getSize()>0 && av!=null && av.alignment!=null) { int seqIndex = av.alignment.findIndex(results); if (seqIndex==-1) @@ -258,7 +260,7 @@ public class AlignmentPanel extends GAlignmentPanel implements } SequenceI seq = av.alignment.getSequenceAt(seqIndex); - int [] r = results.getResults(seq, seq.getStart(), seq.getEnd()); + int [] r = results.getResults(seq, 0, av.alignment.getWidth()); // results.getResults(seq, seq.getStart(), seq.getEnd()); if (r==null) { return false; @@ -1260,4 +1262,27 @@ public class AlignmentPanel extends GAlignmentPanel implements return height; } + + /** + * close the panel - deregisters all listeners and nulls any references to alignment data. + */ + public void closePanel() + { + jalview.structure.StructureSelectionManager ssm = + jalview.structure.StructureSelectionManager + .getStructureSelectionManager(); + ssm.removeStructureViewerListener(seqPanel, null); + ssm.removeSelectionListener(seqPanel); + PaintRefresher.RemoveComponent(seqPanel.seqCanvas); + PaintRefresher.RemoveComponent(idPanel.idCanvas); + PaintRefresher.RemoveComponent(this); + if (av!=null) { + av.alignment = null; + av = null; + } else { + if (Cache.log.isDebugEnabled()) { + Cache.log.warn("Closing alignment panel which is already closed."); + } + } + } }