X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FTreePanel.java;h=940305797afff589482fbbd1c2f77fd4edb8dff0;hb=106a3890f956e2aa7780b2985f4326655912a558;hp=d4c6009acdd70d964de8b8d5d5546d3139374c70;hpb=2ff143c5a47bd7bde7409ce1457bf84e332660a8;p=jalview.git diff --git a/src/jalview/gui/TreePanel.java b/src/jalview/gui/TreePanel.java index d4c6009..9403057 100755 --- a/src/jalview/gui/TreePanel.java +++ b/src/jalview/gui/TreePanel.java @@ -25,9 +25,9 @@ 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.api.analysis.ViewBasedAnalysisI; import jalview.bin.Cache; import jalview.commands.CommandI; import jalview.commands.OrderCommand; @@ -35,8 +35,8 @@ import jalview.datamodel.Alignment; import jalview.datamodel.AlignmentI; import jalview.datamodel.AlignmentView; import jalview.datamodel.BinaryNode; -import jalview.datamodel.ColumnSelection; import jalview.datamodel.DBRefEntry; +import jalview.datamodel.HiddenColumns; import jalview.datamodel.NodeTransformI; import jalview.datamodel.SequenceFeature; import jalview.datamodel.SequenceI; @@ -76,7 +76,7 @@ public class TreePanel extends GTreePanel { String treeType; - ScoreModelI scoreModel; // if tree computed + String scoreModelName; // if tree computed String treeTitle; // if tree loaded @@ -93,15 +93,15 @@ public class TreePanel extends GTreePanel * * @param ap * @param type - * @param sm + * @param modelName * @param options */ - public TreePanel(AlignmentPanel ap, String type, ScoreModelI sm, + public TreePanel(AlignmentPanel ap, String type, String modelName, SimilarityParamsI options) { super(); this.similarityParams = options; - initTreePanel(ap, type, sm, null, null); + initTreePanel(ap, type, modelName, null, null); // We know this tree has distances. JBPNote TODO: prolly should add this as // a userdefined default @@ -126,13 +126,13 @@ public class TreePanel extends GTreePanel return treeCanvas.av; } - void initTreePanel(AlignmentPanel ap, String type, ScoreModelI sm, + void initTreePanel(AlignmentPanel ap, String type, String modelName, NewickFile newTree, AlignmentView inputData) { av = ap.av; this.treeType = type; - this.scoreModel = sm; + this.scoreModelName = modelName; treeCanvas = new TreeCanvas(this, ap, scrollPane); scrollPane.setViewportView(treeCanvas); @@ -158,8 +158,8 @@ public class TreePanel extends GTreePanel } if (evt.getNewValue() == null) { - System.out - .println("new alignment sequences vector value is null"); + System.out.println( + "new alignment sequences vector value is null"); } tree.updatePlaceHolders((List) evt.getNewValue()); @@ -183,8 +183,8 @@ public class TreePanel extends GTreePanel void buildAssociatedViewMenu() { - AlignmentPanel[] aps = PaintRefresher.getAssociatedPanels(av - .getSequenceSetId()); + AlignmentPanel[] aps = PaintRefresher + .getAssociatedPanels(av.getSequenceSetId()); if (aps.length == 1 && treeCanvas.ap == aps[0]) { associateLeavesMenu.setVisible(false); @@ -193,7 +193,8 @@ public class TreePanel extends GTreePanel associateLeavesMenu.setVisible(true); - if ((viewMenu.getItem(viewMenu.getItemCount() - 2) instanceof JMenuItem)) + if ((viewMenu + .getItem(viewMenu.getItemCount() - 2) instanceof JMenuItem)) { viewMenu.insertSeparator(viewMenu.getItemCount() - 1); } @@ -275,10 +276,11 @@ public class TreePanel extends GTreePanel } else { - ScoreModelI sm = configureScoreModel(); - TreeBuilder njtree = treeType.equals(TreeBuilder.NEIGHBOUR_JOINING) ? new NJTree( - av, sm, similarityParams) : new AverageDistanceTree(av, sm, - similarityParams); + 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); } @@ -362,8 +364,8 @@ public class TreePanel extends GTreePanel JalviewFileChooser chooser = new JalviewFileChooser( jalview.bin.Cache.getProperty("LAST_DIRECTORY")); chooser.setFileView(new JalviewFileView()); - chooser.setDialogTitle(MessageManager - .getString("label.save_tree_as_newick")); + chooser.setDialogTitle( + MessageManager.getString("label.save_tree_as_newick")); chooser.setToolTipText(MessageManager.getString("action.save")); int value = chooser.showSaveDialog(null); @@ -371,15 +373,15 @@ public class TreePanel extends GTreePanel if (value == JalviewFileChooser.APPROVE_OPTION) { String choice = chooser.getSelectedFile().getPath(); - jalview.bin.Cache.setProperty("LAST_DIRECTORY", chooser - .getSelectedFile().getParent()); + jalview.bin.Cache.setProperty("LAST_DIRECTORY", + chooser.getSelectedFile().getParent()); try { jalview.io.NewickFile fout = new jalview.io.NewickFile( tree.getTopNode()); - String output = fout.print(tree.hasBootstrap(), - tree.hasDistances(), tree.hasRootDistance()); + String output = fout.print(tree.hasBootstrap(), tree.hasDistances(), + tree.hasRootDistance()); java.io.PrintWriter out = new java.io.PrintWriter( new java.io.FileWriter(choice)); out.println(output); @@ -410,8 +412,8 @@ public class TreePanel extends GTreePanel AlignmentView originalData = tree.getOriginalData(); if (originalData == null) { - jalview.bin.Cache.log - .info("Unexpected call to originalSeqData_actionPerformed - should have hidden this menu action."); + jalview.bin.Cache.log.info( + "Unexpected call to originalSeqData_actionPerformed - should have hidden this menu action."); return; } // decide if av alignment is sufficiently different to original data to @@ -431,16 +433,16 @@ public class TreePanel extends GTreePanel { } - Object[] alAndColsel = originalData - .getAlignmentAndColumnSelection(gc); + Object[] alAndColsel = originalData.getAlignmentAndHiddenColumns(gc); if (alAndColsel != null && alAndColsel[0] != null) { // AlignmentOrder origorder = new AlignmentOrder(alAndColsel[0]); AlignmentI al = new Alignment((SequenceI[]) alAndColsel[0]); - AlignmentI dataset = (av != null && av.getAlignment() != null) ? av - .getAlignment().getDataset() : null; + AlignmentI dataset = (av != null && av.getAlignment() != null) + ? av.getAlignment().getDataset() + : null; if (dataset != null) { al.setDataset(dataset); @@ -449,9 +451,8 @@ public class TreePanel extends GTreePanel if (true) { // make a new frame! - AlignFrame af = new AlignFrame(al, - (ColumnSelection) alAndColsel[1], AlignFrame.DEFAULT_WIDTH, - AlignFrame.DEFAULT_HEIGHT); + AlignFrame af = new AlignFrame(al, (HiddenColumns) alAndColsel[1], + AlignFrame.DEFAULT_WIDTH, AlignFrame.DEFAULT_HEIGHT); // >>>This is a fix for the moment, until a better solution is // found!!<<< @@ -461,8 +462,8 @@ public class TreePanel extends GTreePanel // msaorder); Desktop.addInternalFrame(af, MessageManager.formatMessage( - "label.original_data_for_params", - new Object[] { this.title }), AlignFrame.DEFAULT_WIDTH, + "label.original_data_for_params", new Object[] + { this.title }), AlignFrame.DEFAULT_WIDTH, AlignFrame.DEFAULT_HEIGHT); } } @@ -492,9 +493,9 @@ public class TreePanel extends GTreePanel if (treeCanvas.applyToAllViews) { - final ArrayList commands = new ArrayList(); - for (AlignmentPanel ap : PaintRefresher.getAssociatedPanels(av - .getSequenceSetId())) + final ArrayList commands = new ArrayList<>(); + for (AlignmentPanel ap : PaintRefresher + .getAssociatedPanels(av.getSequenceSetId())) { commands.add(sortAlignmentIn(ap.av.getAlignPanel())); } @@ -532,8 +533,8 @@ public class TreePanel extends GTreePanel } } }); - for (AlignmentPanel ap : PaintRefresher.getAssociatedPanels(av - .getSequenceSetId())) + for (AlignmentPanel ap : PaintRefresher + .getAssociatedPanels(av.getSequenceSetId())) { // ensure all the alignFrames refresh their GI after adding an undo item ap.alignFrame.updateEditMenuBar(); @@ -549,13 +550,14 @@ public class TreePanel extends GTreePanel public CommandI sortAlignmentIn(AlignmentPanel ap) { + // TODO: move to alignment view controller AlignmentViewport viewport = ap.av; SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray(); AlignmentSorter.sortByTree(viewport.getAlignment(), tree); CommandI undo; undo = new OrderCommand("Tree Sort", oldOrder, viewport.getAlignment()); - ap.paintAlignment(true); + ap.paintAlignment(true, false); return undo; } @@ -668,8 +670,8 @@ public class TreePanel extends GTreePanel JalviewFileChooser chooser = new JalviewFileChooser( ImageMaker.EPS_EXTENSION, ImageMaker.EPS_EXTENSION); chooser.setFileView(new JalviewFileView()); - chooser.setDialogTitle(MessageManager - .getString("label.create_eps_from_tree")); + chooser.setDialogTitle( + MessageManager.getString("label.create_eps_from_tree")); chooser.setToolTipText(MessageManager.getString("action.save")); int value = chooser.showSaveDialog(this); @@ -679,11 +681,13 @@ public class TreePanel extends GTreePanel return; } - Cache.setProperty("LAST_DIRECTORY", chooser.getSelectedFile() - .getParent()); + Cache.setProperty("LAST_DIRECTORY", + chooser.getSelectedFile().getParent()); - FileOutputStream out = new FileOutputStream(chooser.getSelectedFile()); - EpsGraphics2D pg = new EpsGraphics2D("Tree", out, 0, 0, width, height); + FileOutputStream out = new FileOutputStream( + chooser.getSelectedFile()); + EpsGraphics2D pg = new EpsGraphics2D("Tree", out, 0, 0, width, + height); pg.setAccurateTextMode(accurateText); @@ -715,8 +719,8 @@ public class TreePanel extends GTreePanel ImageMaker.PNG_EXTENSION, ImageMaker.PNG_DESCRIPTION); chooser.setFileView(new jalview.io.JalviewFileView()); - chooser.setDialogTitle(MessageManager - .getString("label.create_png_from_tree")); + chooser.setDialogTitle( + MessageManager.getString("label.create_png_from_tree")); chooser.setToolTipText(MessageManager.getString("action.save")); int value = chooser.showSaveDialog(this); @@ -726,10 +730,11 @@ public class TreePanel extends GTreePanel return; } - jalview.bin.Cache.setProperty("LAST_DIRECTORY", chooser - .getSelectedFile().getParent()); + jalview.bin.Cache.setProperty("LAST_DIRECTORY", + chooser.getSelectedFile().getParent()); - FileOutputStream out = new FileOutputStream(chooser.getSelectedFile()); + FileOutputStream out = new FileOutputStream( + chooser.getSelectedFile()); BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); @@ -770,9 +775,9 @@ public class TreePanel extends GTreePanel if (sq != null) { // search dbrefs, features and annotation - DBRefEntry[] refs = jalview.util.DBRefUtils.selectRefs( - sq.getDBRefs(), - new String[] { labelClass.toUpperCase() }); + DBRefEntry[] refs = jalview.util.DBRefUtils + .selectRefs(sq.getDBRefs(), new String[] + { labelClass.toUpperCase() }); if (refs != null) { for (int i = 0; i < refs.length; i++) @@ -789,19 +794,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(); } } } @@ -823,6 +826,7 @@ public class TreePanel extends GTreePanel * Neighbour Joining Using BLOSUM62 *

* For a tree loaded from file, just uses the file name + * * @return */ public String getPanelTitle() @@ -835,14 +839,13 @@ public class TreePanel extends GTreePanel /* * i18n description of Neighbour Joining or Average Distance method */ - String treecalcnm = MessageManager.getString("label.tree_calc_" - + treeType.toLowerCase()); + String treecalcnm = MessageManager + .getString("label.tree_calc_" + treeType.toLowerCase()); /* - * i18n description (if available) of score model used + * short score model name (long description can be too long) */ - String smn = MessageManager.getStringOrReturn("label.score_model_", - scoreModel.getName()); + String smn = scoreModelName; /* * put them together as Using @@ -851,28 +854,4 @@ public class TreePanel extends GTreePanel treecalcnm, smn); return ttl; } - - /** - * If the score model is one that requires to get state data from the current - * view, create and configure a new instance of it - * - * @return - */ - protected ScoreModelI configureScoreModel() - { - if (scoreModel instanceof ViewBasedAnalysisI) - { - try - { - scoreModel = scoreModel.getClass().newInstance(); - ((ViewBasedAnalysisI) scoreModel) - .configureFromAlignmentView(treeCanvas.ap); - } catch (Exception q) - { - Cache.log.error("Couldn't create a scoremodel instance for " - + scoreModel.getName()); - } - } - return scoreModel; - } }