X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FTreePanel.java;h=f1ba97b368e6316a508e749f4d8e488146d59ed9;hb=bd894ca9f2aae448653d7431ab8a170e1105e85c;hp=80f0c73c4ea80fd1b78880a858086ef7ae50f10e;hpb=3d0101179759ef157b088ea135423cd909512d9f;p=jalview.git diff --git a/src/jalview/gui/TreePanel.java b/src/jalview/gui/TreePanel.java index 80f0c73..f1ba97b 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; @@ -74,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; @@ -92,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; + 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 + */ 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); + + TreeLoader tl = new TreeLoader(newTree, inputData); + tl.start(); + } - av = ap.av; - this.treeType = type; - this.scoreModelName = modelName; +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,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(); } + } } @@ -493,7 +510,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())) { @@ -793,19 +810,17 @@ public class TreePanel extends GTreePanel } if (newname == null) { - SequenceFeature sf[] = sq.getSequenceFeatures(); - for (int i = 0; sf != null && i < sf.length; i++) + List features = sq.getFeatures() + .getPositionalFeatures(labelClass); + for (SequenceFeature feature : features) { - if (sf[i].getType().equals(labelClass)) + if (newname == null) + { + newname = feature.getDescription(); + } + else { - if (newname == null) - { - newname = new String(sf[i].getDescription()); - } - else - { - newname = newname + "; " + sf[i].getDescription(); - } + newname = newname + "; " + feature.getDescription(); } } } @@ -830,29 +845,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; + } } }