X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FTreePanel.java;h=e07984ffabc665e2ed4d9b54e87094d94f420ee7;hb=f96e6a945e2df8a844f428c08cfc08210d937fc0;hp=ee070a981d21990b5af44077ed62be213402acd4;hpb=b2f9a8d7bce642ff4011bc6d49e02bb0569fbb11;p=jalview.git diff --git a/src/jalview/appletgui/TreePanel.java b/src/jalview/appletgui/TreePanel.java index ee070a9..e07984f 100644 --- a/src/jalview/appletgui/TreePanel.java +++ b/src/jalview/appletgui/TreePanel.java @@ -1,33 +1,52 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.1) - * Copyright (C) 2014 The Jalview Authors + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors * * This file is part of Jalview. * * Jalview is free software: you can redistribute it and/or * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. * * Jalview is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License along with Jalview. If not, see . + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . * The Jalview Authors are detailed in the 'AUTHORS' file. */ package jalview.appletgui; -import java.awt.*; -import java.awt.event.*; - -import jalview.analysis.*; -import jalview.datamodel.*; -import jalview.io.*; +import jalview.analysis.AverageDistanceTree; +import jalview.analysis.NJTree; +import jalview.analysis.TreeBuilder; +import jalview.analysis.TreeModel; +import jalview.analysis.scoremodels.ScoreModels; +import jalview.analysis.scoremodels.SimilarityParams; +import jalview.api.analysis.ScoreModelI; +import jalview.datamodel.Alignment; +import jalview.datamodel.HiddenColumns; +import jalview.datamodel.SequenceI; +import jalview.io.NewickFile; import jalview.util.MessageManager; -public class TreePanel extends EmbmenuFrame implements ActionListener, - ItemListener +import java.awt.BorderLayout; +import java.awt.CheckboxMenuItem; +import java.awt.Color; +import java.awt.Menu; +import java.awt.MenuBar; +import java.awt.MenuItem; +import java.awt.ScrollPane; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; + +public class TreePanel extends EmbmenuFrame + implements ActionListener, ItemListener, AutoCloseable { SequenceI[] seq; @@ -41,41 +60,29 @@ public class TreePanel extends EmbmenuFrame implements ActionListener, TreeCanvas treeCanvas; - NJTree tree; + TreeModel tree; AlignmentPanel ap; AlignViewport av; - public NJTree getTree() + public TreeModel getTree() { return tree; } - public void finalize() throws Throwable + @Override + public void close() { ap = null; av = null; - super.finalize(); + super.close(); } /** * Creates a new TreePanel object. - * - * @param av - * DOCUMENT ME! - * @param seqVector - * DOCUMENT ME! - * @param type - * DOCUMENT ME! - * @param pwtype - * DOCUMENT ME! - * @param s - * DOCUMENT ME! - * @param e - * DOCUMENT ME! */ - public TreePanel(AlignmentPanel ap, String type, String pwtype) + public TreePanel(AlignmentPanel alignPanel, String type, String pwtype) { try { @@ -86,22 +93,12 @@ public class TreePanel extends EmbmenuFrame implements ActionListener, ex.printStackTrace(); } - initTreePanel(ap, type, pwtype, null); + initTreePanel(alignPanel, type, pwtype, null); } /** * Creates a new TreePanel object. * - * @param av - * DOCUMENT ME! - * @param seqVector - * DOCUMENT ME! - * @param newtree - * DOCUMENT ME! - * @param type - * DOCUMENT ME! - * @param pwtype - * DOCUMENT ME! */ public TreePanel(AlignmentPanel ap, String type, String pwtype, NewickFile newtree) @@ -142,7 +139,7 @@ public class TreePanel extends EmbmenuFrame implements ActionListener, // yields unaligned seqs) // or create a selection box around columns in alignment view // test Alignment(SeqCigar[]) - if (tree.seqData != null) + if (tree.getOriginalData() != null) { char gc = '-'; try @@ -153,9 +150,9 @@ public class TreePanel extends EmbmenuFrame implements ActionListener, } catch (Exception ex) { } - ; - Object[] alAndColsel = tree.seqData - .getAlignmentAndColumnSelection(gc); + + Object[] alAndColsel = tree.getOriginalData() + .getAlignmentAndHiddenColumns(gc); if (alAndColsel != null && alAndColsel[0] != null) { @@ -163,7 +160,8 @@ public class TreePanel extends EmbmenuFrame implements ActionListener, AlignFrame af = new AlignFrame(al, av.applet, "Original Data for Tree", false); - af.viewport.setHiddenColumns((ColumnSelection) alAndColsel[1]); + af.viewport.getAlignment() + .setHiddenColumns((HiddenColumns) alAndColsel[1]); } } else @@ -183,43 +181,23 @@ public class TreePanel extends EmbmenuFrame implements ActionListener, this.newtree = newtree; } + @Override public void run() { if (newtree != null) { - if (odata == null) - { - tree = new NJTree(av.getAlignment().getSequencesArray(), newtree); - } - else - { - tree = new NJTree(av.getAlignment().getSequencesArray(), odata, - newtree); - } - + tree = new TreeModel(av.getAlignment().getSequencesArray(), odata, + newtree); } else { - int start, end; - SequenceI[] seqs; - boolean selview = (av.getSelectionGroup() != null) - && (av.getSelectionGroup().getSize() > 1); - AlignmentView seqStrings = av.getAlignmentView(selview); - if (!selview) - { - start = 0; - end = av.getAlignment().getWidth(); - seqs = av.getAlignment().getSequencesArray(); - } - else - { - start = av.getSelectionGroup().getStartRes(); - end = av.getSelectionGroup().getEndRes() + 1; - seqs = av.getSelectionGroup().getSequencesInOrder( - av.getAlignment()); - } - - tree = new NJTree(seqs, seqStrings, type, pwtype, start, end); + ScoreModelI sm1 = ScoreModels.getInstance().getScoreModel(pwtype, + treeCanvas.ap); + ScoreModelI sm = sm1; + TreeBuilder njtree = type.equals(TreeBuilder.NEIGHBOUR_JOINING) + ? new NJTree(av, sm, SimilarityParams.Jalview) + : new AverageDistanceTree(av, sm, SimilarityParams.Jalview); + tree = new TreeModel(njtree); } tree.reCount(tree.getTopNode()); @@ -229,18 +207,18 @@ public class TreePanel extends EmbmenuFrame implements ActionListener, { // Set default view, paying lip service to any overriding tree view // parameter settings - boolean showDist = newtree.HasDistances() + boolean showDist = newtree.hasDistances() && av.applet.getDefaultParameter("showTreeDistances", - newtree.HasDistances()); - boolean showBoots = newtree.HasBootstrap() + newtree.hasDistances()); + boolean showBoots = newtree.hasBootstrap() && av.applet.getDefaultParameter("showTreeBootstraps", - newtree.HasBootstrap()); + newtree.hasBootstrap()); distanceMenu.setState(showDist); bootstrapMenu.setState(showBoots); treeCanvas.setShowBootstrap(showBoots); treeCanvas.setShowDistances(showDist); - treeCanvas.setMarkPlaceholders(av.applet.getDefaultParameter( - "showUnlinkedTreeNodes", false)); + treeCanvas.setMarkPlaceholders(av.applet + .getDefaultParameter("showUnlinkedTreeNodes", false)); } treeCanvas.repaint(); @@ -250,6 +228,7 @@ public class TreePanel extends EmbmenuFrame implements ActionListener, } } + @Override public void actionPerformed(ActionEvent evt) { if (evt.getSource() == newickOutput) @@ -266,6 +245,7 @@ public class TreePanel extends EmbmenuFrame implements ActionListener, } } + @Override public void itemStateChanged(ItemEvent evt) { if (evt.getSource() == fitToWindow) @@ -356,11 +336,13 @@ public class TreePanel extends EmbmenuFrame implements ActionListener, jMenu2.setLabel(MessageManager.getString("action.view")); fontSize.setLabel(MessageManager.getString("action.font")); fontSize.addActionListener(this); - bootstrapMenu.setLabel(MessageManager.getString("label.show_bootstrap_values")); + bootstrapMenu.setLabel( + MessageManager.getString("label.show_bootstrap_values")); bootstrapMenu.addItemListener(this); distanceMenu.setLabel(MessageManager.getString("label.show_distances")); distanceMenu.addItemListener(this); - placeholdersMenu.setLabel(MessageManager.getString("label.mark_unassociated_leaves")); + placeholdersMenu.setLabel( + MessageManager.getString("label.mark_unassociated_leaves")); placeholdersMenu.addItemListener(this); fitToWindow.setState(true); fitToWindow.setLabel(MessageManager.getString("label.fit_to_window"));