X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FTreePanel.java;h=e8f78d83d546cd7006bc718769d901dc9aef0e1f;hb=91bea2a1185e438bfd52fc1848cf615068016192;hp=2727db14171e6e947b19801acb9db2e2061e7aa6;hpb=ea2cf1fb34a7630388e87c058d994d2a4017f9e3;p=jalview.git diff --git a/src/jalview/gui/TreePanel.java b/src/jalview/gui/TreePanel.java index 2727db1..e8f78d8 100755 --- a/src/jalview/gui/TreePanel.java +++ b/src/jalview/gui/TreePanel.java @@ -21,13 +21,7 @@ package jalview.gui; import jalview.analysis.AlignmentSorter; -import jalview.analysis.AverageDistanceTree; -import jalview.analysis.NJTree; -import jalview.analysis.TreeBuilder; import jalview.analysis.TreeModel; -import jalview.analysis.scoremodels.ScoreModels; -import jalview.api.analysis.ScoreModelI; -import jalview.api.analysis.SimilarityParamsI; import jalview.bin.Cache; import jalview.commands.CommandI; import jalview.commands.OrderCommand; @@ -55,7 +49,6 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; @@ -64,8 +57,6 @@ import javax.imageio.ImageIO; import javax.swing.ButtonGroup; import javax.swing.JMenuItem; import javax.swing.JRadioButtonMenuItem; -import javax.swing.event.InternalFrameAdapter; -import javax.swing.event.InternalFrameEvent; import org.jibble.epsgraphics.EpsGraphics2D; @@ -77,14 +68,12 @@ import org.jibble.epsgraphics.EpsGraphics2D; */ public class TreePanel extends GTreePanel { - String treeType; + String substitutionMatrix; - String scoreModelName; // if tree computed + String treeType; String treeTitle; // if tree loaded - SimilarityParamsI similarityParams; - TreeCanvas treeCanvas; TreeModel tree; @@ -95,28 +84,38 @@ public class TreePanel extends GTreePanel * Creates a new TreePanel object. * * @param ap - * @param type - * @param modelName - * @param options + * @param tree + * @param treeType + * @param substitutionMatrix */ - public TreePanel(AlignmentPanel ap, String type, String modelName, - SimilarityParamsI options) + public TreePanel(AlignmentPanel ap, TreeModel tree, String treeType, + String substitutionMatrix) { super(); - this.similarityParams = options; - initTreePanel(ap, type, modelName, null, null); + this.treeType = treeType; + this.substitutionMatrix = substitutionMatrix; + this.tree = tree; + initTreePanel(ap, tree); // We know this tree has distances. JBPNote TODO: prolly should add this as // a userdefined default // showDistances(true); } + /** + * Creates a new TreePanel object. + * + * @param alignPanel + * @param newtree + * @param theTitle + * @param inputData + */ public TreePanel(AlignmentPanel alignPanel, NewickFile newtree, String theTitle, AlignmentView inputData) { super(); this.treeTitle = theTitle; - initTreePanel(alignPanel, null, null, newtree, inputData); + initTreePanel(alignPanel, newtree, inputData); } public AlignmentI getAlignment() @@ -129,50 +128,49 @@ public class TreePanel extends GTreePanel return treeCanvas.av; } - void initTreePanel(AlignmentPanel ap, String type, String modelName, - NewickFile newTree, AlignmentView inputData) + /** + * Initialize a tree panel based on a calculated tree + * + * @param ap + * @param tree + */ + void initTreePanel(AlignmentPanel ap, TreeModel tree) { + buildTreeCanvas(ap); - av = ap.av; - this.treeType = type; - this.scoreModelName = modelName; + TreeLoader tl = new TreeLoader(null, null); + tl.start(); - treeCanvas = new TreeCanvas(this, ap, scrollPane); - scrollPane.setViewportView(treeCanvas); + } - PaintRefresher.Register(this, ap.av.getSequenceSetId()); + /** + * Initialize a tree panel based on a loaded in tree file. + * + * @param ap + * @param loadedTree + * @param inputData + */ + void initTreePanel(AlignmentPanel ap, + NewickFile loadedTree, AlignmentView inputData) + { + buildTreeCanvas(ap); - buildAssociatedViewMenu(); + TreeLoader tl = new TreeLoader(loadedTree, inputData); + tl.start(); + } - final PropertyChangeListener listener = addAlignmentListener(); +public void buildTreeCanvas(AlignmentPanel ap) { + av = ap.av; - /* - * remove listener when window is closed, so that this - * panel can be garbage collected - */ - addInternalFrameListener(new InternalFrameAdapter() - { - @Override - public void internalFrameClosed(InternalFrameEvent evt) - { - if (av != null) - { - av.removePropertyChangeListener(listener); - } - } - }); + treeCanvas = new TreeCanvas(this, ap, scrollPane); + scrollPane.setViewportView(treeCanvas); - TreeLoader tl = new TreeLoader(newTree, inputData); - tl.start(); - } + PaintRefresher.Register(this, ap.av.getSequenceSetId()); - /** - * @return - */ - protected PropertyChangeListener addAlignmentListener() - { - final PropertyChangeListener listener = new PropertyChangeListener() + buildAssociatedViewMenu(); + + av.addPropertyChangeListener(new java.beans.PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) @@ -199,9 +197,11 @@ public class TreePanel extends GTreePanel repaint(); } } - }; - av.addPropertyChangeListener(listener); - return listener; + }); + + + + } @Override @@ -272,57 +272,59 @@ public class TreePanel extends GTreePanel class TreeLoader extends Thread { - private NewickFile newtree; + private NewickFile newTree; private AlignmentView odata = null; public TreeLoader(NewickFile newickFile, AlignmentView inputData) { - this.newtree = newickFile; + this.newTree = newickFile; this.odata = inputData; - if (newickFile != null) + if (newTree != null) { // Must be outside run(), as Jalview2XML tries to // update distance/bootstrap visibility at the same time - showBootstrap(newickFile.HasBootstrap()); - showDistances(newickFile.HasDistances()); + showBootstrap(newTree.hasBootstrap()); + showDistances(newTree.hasDistances()); + } + } @Override public void run() { - if (newtree != null) + if (newTree != null) { tree = new TreeModel(av.getAlignment().getSequencesArray(), odata, - newtree); + newTree); if (tree.getOriginalData() == null) { originalSeqData.setVisible(false); } + + + } - else - { - ScoreModelI sm = ScoreModels.getInstance() - .getScoreModel(scoreModelName, treeCanvas.ap); - TreeBuilder njtree = treeType.equals(TreeBuilder.NEIGHBOUR_JOINING) - ? new NJTree(av, sm, similarityParams) - : new AverageDistanceTree(av, sm, similarityParams); - tree = new TreeModel(njtree); - showDistances(true); - } + showTree(tree); + } + + public void showTree(TreeModel tree) + { tree.reCount(tree.getTopNode()); tree.findHeight(tree.getTopNode()); treeCanvas.setTree(tree); treeCanvas.repaint(); + av.setCurrentTree(tree); if (av.getSortByTree()) { sortByTree_actionPerformed(); } + } } @@ -517,7 +519,7 @@ public class TreePanel extends GTreePanel * @param e */ @Override - public void sortByTree_actionPerformed() + public void sortByTree_actionPerformed()// modify for Aptx { if (treeCanvas.applyToAllViews) @@ -858,29 +860,31 @@ public class TreePanel extends GTreePanel * * @return */ - public String getPanelTitle() + public String getPanelTitle() // to be moved/fixed { if (treeTitle != null) { return treeTitle; } - - /* - * i18n description of Neighbour Joining or Average Distance method - */ - String treecalcnm = MessageManager - .getString("label.tree_calc_" + treeType.toLowerCase()); - - /* - * short score model name (long description can be too long) - */ - String smn = scoreModelName; - - /* - * put them together as Using - */ - final String ttl = MessageManager.formatMessage("label.treecalc_title", - treecalcnm, smn); - return ttl; + else + { + /* + * i18n description of Neighbour Joining or Average Distance method + */ + String treecalcnm = MessageManager + .getString("label.tree_calc_" + treeType.toLowerCase()); + + /* + * short score model name (long description can be too long) + */ + String smn = substitutionMatrix; + + /* + * put them together as Using + */ + final String ttl = MessageManager + .formatMessage("label.treecalc_title", treecalcnm, smn); + return ttl; + } } }