X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FTreePanel.java;h=67ac83621e9fa783224b6adeab1e2fad09e45938;hb=6a144c3b2b7f5f04d908c065a017088453bb7fc7;hp=5e14fce7d3fa1410e1ed54ae8b041c08e26941e0;hpb=be762d8d9c71a7aa3121e845c45911c7192b7827;p=jalview.git diff --git a/src/jalview/gui/TreePanel.java b/src/jalview/gui/TreePanel.java index 5e14fce..67ac836 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; @@ -41,6 +35,7 @@ import jalview.datamodel.NodeTransformI; import jalview.datamodel.SequenceFeature; import jalview.datamodel.SequenceI; import jalview.datamodel.SequenceNode; +import jalview.ext.archaeopteryx.ArchaeopteryxNewickInit; import jalview.io.JalviewFileChooser; import jalview.io.JalviewFileView; import jalview.io.NewickFile; @@ -74,14 +69,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; @@ -92,28 +85,37 @@ public class TreePanel extends GTreePanel * Creates a new TreePanel object. * * @param ap - * @param type - * @param modelName - * @param options + * @param tree */ - 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; + initNewTreePanel(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 + * @param viewport + */ public TreePanel(AlignmentPanel alignPanel, NewickFile newtree, String theTitle, AlignmentView inputData) { super(); this.treeTitle = theTitle; - initTreePanel(alignPanel, null, null, newtree, inputData); + initLoadedTreePanel(alignPanel, newtree, inputData); } public AlignmentI getAlignment() @@ -126,17 +128,30 @@ public class TreePanel extends GTreePanel return treeCanvas.av; } - void initTreePanel(AlignmentPanel ap, String type, String modelName, + void initNewTreePanel(AlignmentPanel ap, TreeModel tree) + { + buildTreeCanvas(ap); + + TreeLoader tl = new TreeLoader(null, null); + tl.start(); + + } + void initLoadedTreePanel(AlignmentPanel ap, NewickFile newTree, AlignmentView inputData) { + buildTreeCanvas(ap); - av = ap.av; - this.treeType = type; - this.scoreModelName = modelName; + TreeLoader tl = new TreeLoader(newTree, inputData); + tl.start(); + } + +public void buildTreeCanvas(AlignmentPanel ap) { + av = ap.av; treeCanvas = new TreeCanvas(this, ap, scrollPane); scrollPane.setViewportView(treeCanvas); + PaintRefresher.Register(this, ap.av.getSequenceSetId()); buildAssociatedViewMenu(); @@ -170,8 +185,8 @@ public class TreePanel extends GTreePanel } }); - TreeLoader tl = new TreeLoader(newTree, inputData); - tl.start(); + + } @@ -243,57 +258,61 @@ 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(); } + + ArchaeopteryxNewickInit archae = new ArchaeopteryxNewickInit(tree); + archae.startArchaeopteryx(); } } @@ -493,7 +512,7 @@ public class TreePanel extends GTreePanel if (treeCanvas.applyToAllViews) { - final ArrayList commands = new ArrayList(); + final ArrayList commands = new ArrayList<>(); for (AlignmentPanel ap : PaintRefresher .getAssociatedPanels(av.getSequenceSetId())) { @@ -828,29 +847,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; + } } }