X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FTreePanel.java;h=b730df46207d5c38c689c0fd379283f3b9190d83;hb=9d2408483e451285fd555c3cd6e0273977acbaa7;hp=545010246d84e13f34a3f6111688f34ce0443958;hpb=f9f0b83445a2da848d21614d94a909888484e25e;p=jalview.git diff --git a/src/jalview/gui/TreePanel.java b/src/jalview/gui/TreePanel.java index 5450102..b730df4 100755 --- a/src/jalview/gui/TreePanel.java +++ b/src/jalview/gui/TreePanel.java @@ -20,6 +20,8 @@ */ package jalview.gui; +import java.util.Locale; + import jalview.analysis.AlignmentSorter; import jalview.analysis.AverageDistanceTree; import jalview.analysis.NJTree; @@ -84,11 +86,11 @@ public class TreePanel extends GTreePanel SimilarityParamsI similarityParams; - TreeCanvas treeCanvas; + private TreeCanvas treeCanvas; TreeModel tree; - AlignViewport av; + private AlignViewport av; /** * Creates a new TreePanel object. @@ -120,12 +122,13 @@ public class TreePanel extends GTreePanel public AlignmentI getAlignment() { - return treeCanvas.av.getAlignment(); + return getTreeCanvas().getViewport().getAlignment(); } public AlignmentViewport getViewPort() { - return treeCanvas.av; + // @Mungo - Why don't we return our own viewport ??? + return getTreeCanvas().getViewport(); } void initTreePanel(AlignmentPanel ap, String type, String modelName, @@ -158,6 +161,7 @@ public class TreePanel extends GTreePanel { av.removePropertyChangeListener(listener); } + releaseReferences(); } }); @@ -167,6 +171,17 @@ public class TreePanel extends GTreePanel } /** + * Ensure any potentially large object references are nulled + */ + public void releaseReferences() + { + this.tree = null; + this.treeCanvas.tree = null; + this.treeCanvas.nodeHash = null; + this.treeCanvas.nameHash = null; + } + + /** * @return */ protected PropertyChangeListener addAlignmentListener() @@ -213,7 +228,7 @@ public class TreePanel extends GTreePanel { AlignmentPanel[] aps = PaintRefresher .getAssociatedPanels(av.getSequenceSetId()); - if (aps.length == 1 && treeCanvas.ap == aps[0]) + if (aps.length == 1 && getTreeCanvas().getAssociatedPanel() == aps[0]) { associateLeavesMenu.setVisible(false); return; @@ -236,7 +251,8 @@ public class TreePanel extends GTreePanel for (i = 0; i < iSize; i++) { final AlignmentPanel ap = aps[i]; - item = new JRadioButtonMenuItem(ap.av.viewName, ap == treeCanvas.ap); + item = new JRadioButtonMenuItem(ap.av.getViewName(), + ap == treeCanvas.getAssociatedPanel()); buttonGroup.add(item); item.addActionListener(new ActionListener() { @@ -244,8 +260,8 @@ public class TreePanel extends GTreePanel public void actionPerformed(ActionEvent evt) { treeCanvas.applyToAllViews = false; - treeCanvas.ap = ap; - treeCanvas.av = ap.av; + treeCanvas.setAssociatedPanel(ap); + treeCanvas.setViewport(ap.av); PaintRefresher.Register(thisTreePanel, ap.av.getSequenceSetId()); } }); @@ -305,7 +321,8 @@ public class TreePanel extends GTreePanel else { ScoreModelI sm = ScoreModels.getInstance() - .getScoreModel(scoreModelName, treeCanvas.ap); + .getScoreModel(scoreModelName, + treeCanvas.getAssociatedPanel()); TreeBuilder njtree = treeType.equals(TreeBuilder.NEIGHBOUR_JOINING) ? new NJTree(av, sm, similarityParams) : new AverageDistanceTree(av, sm, similarityParams); @@ -571,8 +588,9 @@ public class TreePanel extends GTreePanel } else { - treeCanvas.ap.alignFrame - .addHistoryItem(sortAlignmentIn(treeCanvas.ap)); + treeCanvas.getAssociatedPanel().alignFrame + .addHistoryItem( + sortAlignmentIn(treeCanvas.getAssociatedPanel())); } } @@ -677,7 +695,7 @@ public class TreePanel extends GTreePanel String tree = MessageManager.getString("label.tree"); ImageExporter exporter = new ImageExporter(writer, null, imageFormat, tree); - exporter.doExport(null, this, width, height, tree.toLowerCase()); + exporter.doExport(null, this, width, height, tree.toLowerCase(Locale.ROOT)); } /** @@ -705,20 +723,20 @@ public class TreePanel extends GTreePanel if (sq != null) { // search dbrefs, features and annotation - DBRefEntry[] refs = jalview.util.DBRefUtils + List refs = jalview.util.DBRefUtils .selectRefs(sq.getDBRefs(), new String[] - { labelClass.toUpperCase() }); + { labelClass.toUpperCase(Locale.ROOT) }); if (refs != null) { - for (int i = 0; i < refs.length; i++) + for (int i = 0, ni = refs.size(); i < ni; i++) { if (newname == null) { - newname = new String(refs[i].getAccessionId()); + newname = new String(refs.get(i).getAccessionId()); } else { - newname = newname + "; " + refs[i].getAccessionId(); + newname += "; " + refs.get(i).getAccessionId(); } } } @@ -770,7 +788,7 @@ public class TreePanel extends GTreePanel * i18n description of Neighbour Joining or Average Distance method */ String treecalcnm = MessageManager - .getString("label.tree_calc_" + treeType.toLowerCase()); + .getString("label.tree_calc_" + treeType.toLowerCase(Locale.ROOT)); /* * short score model name (long description can be too long) @@ -780,7 +798,7 @@ public class TreePanel extends GTreePanel /* * put them together as Using */ - final String ttl = MessageManager.formatMessage("label.treecalc_title", + final String ttl = MessageManager.formatMessage("label.calc_title", treecalcnm, smn); return ttl; } @@ -814,4 +832,19 @@ public class TreePanel extends GTreePanel ex.printStackTrace(); } } + + public AlignViewport getViewport() + { + return av; + } + + public void setViewport(AlignViewport av) + { + this.av = av; + } + + public TreeCanvas getTreeCanvas() + { + return treeCanvas; + } }