X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FTreePanel.java;h=6bb96f1472321efd3beb1b47f72411b99b25e153;hb=0eca27bca577e774acd5aefb165e7c6396a1995e;hp=e770a1688c1031eac22a9b20b7e4938b611944ab;hpb=0c0f58648af5512096275b634158c37c87989eaa;p=jalview.git diff --git a/src/jalview/appletgui/TreePanel.java b/src/jalview/appletgui/TreePanel.java index e770a16..6bb96f1 100755 --- a/src/jalview/appletgui/TreePanel.java +++ b/src/jalview/appletgui/TreePanel.java @@ -1,6 +1,6 @@ /* * Jalview - A Sequence Alignment Editor and Viewer - * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle + * Copyright (C) 2007 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -19,16 +19,15 @@ package jalview.appletgui; -import java.util.*; - -import java.awt.event.*; import java.awt.*; +import java.awt.event.*; import jalview.analysis.*; import jalview.datamodel.*; import jalview.io.*; -public class TreePanel extends Frame implements ActionListener, ItemListener +public class TreePanel + extends Frame implements ActionListener, ItemListener { SequenceI[] seq; String type; @@ -96,7 +95,6 @@ public class TreePanel extends Frame implements ActionListener, ItemListener initTreePanel(av, type, pwtype, newtree); } - void initTreePanel(AlignViewport av, String type, String pwtype, @@ -110,15 +108,44 @@ public class TreePanel extends Frame implements ActionListener, ItemListener treeCanvas = new TreeCanvas(av, scrollPane); scrollPane.add(treeCanvas); - TreeLoader tl = new TreeLoader(newTree); tl.start(); } - class TreeLoader extends Thread + void showOriginalData() + { + // decide if av alignment is sufficiently different to original data to warrant a new window to be created + // create new alignmnt window with hidden regions (unhiding hidden regions yields unaligned seqs) + // or create a selection box around columns in alignment view + // test Alignment(SeqCigar[]) + if (tree.seqData != null) + { + Object[] alAndColsel = tree.seqData.getAlignmentAndColumnSelection(av. + getGapCharacter()); + + if (alAndColsel != null && alAndColsel[0] != null) + { + Alignment al = new Alignment( (SequenceI[]) alAndColsel[0]); + AlignFrame af = new AlignFrame(al, + av.applet, + "Original Data for Tree", + false); + + af.viewport.setHiddenColumns( (ColumnSelection) alAndColsel[1]); + } + } + else + { + System.out.println("Original Tree Data not available"); + } + } + + class TreeLoader + extends Thread { NewickFile newtree; + jalview.datamodel.AlignmentView odata = null; public TreeLoader(NewickFile newtree) { @@ -128,38 +155,43 @@ public class TreePanel extends Frame implements ActionListener, ItemListener public void run() { if (newtree != null) - tree = new NJTree(av.alignment.getSequencesArray(), - newtree); + { + if (odata == null) + { + tree = new NJTree(av.alignment.getSequencesArray(), + newtree); + } + else + { + tree = new NJTree(av.alignment.getSequencesArray(), odata, newtree); + } + + } else + { + int start, end; + SequenceI[] seqs; + AlignmentView seqStrings = av.getAlignmentView(av.getSelectionGroup() != null); + if (av.getSelectionGroup() == null) + { + start = 0; + end = av.alignment.getWidth(); + seqs = av.alignment.getSequencesArray(); + } + else { - int start, end; - SequenceI [] seqs; - String [] seqStrings = null; - // if (av.hasHiddenColumns) - { - // seqStrings = av.getSelectionAsString(); - } - - if(av.getSelectionGroup()==null) - { - start = 0; - end = av.alignment.getWidth(); - seqs = av.alignment.getSequencesArray(); - } - else - { - start = av.getSelectionGroup().getStartRes(); - end = av.getSelectionGroup().getEndRes()+1; - seqs = av.getSelectionGroup().getSequencesInOrder(av.alignment); - } - - tree = new NJTree(seqs, seqStrings, type, pwtype, start, end); + start = av.getSelectionGroup().getStartRes(); + end = av.getSelectionGroup().getEndRes() + 1; + seqs = av.getSelectionGroup().getSequencesInOrder(av.alignment); } + tree = new NJTree(seqs, seqStrings, type, pwtype, start, end); + } + tree.reCount(tree.getTopNode()); tree.findHeight(tree.getTopNode()); treeCanvas.setTree(tree); - if(newtree!=null) + if (newtree != null) { distanceMenu.setState(newtree.HasDistances()); bootstrapMenu.setState(newtree.HasBootstrap()); @@ -167,7 +199,6 @@ public class TreePanel extends Frame implements ActionListener, ItemListener treeCanvas.setShowDistances(newtree.HasDistances()); } - treeCanvas.repaint(); av.setCurrentTree(tree); @@ -177,30 +208,45 @@ public class TreePanel extends Frame implements ActionListener, ItemListener public void actionPerformed(ActionEvent evt) { - if(evt.getSource()==newickOutput) + if (evt.getSource() == newickOutput) + { newickOutput_actionPerformed(); - else if(evt.getSource()==fontSize) + } + else if (evt.getSource() == fontSize) + { fontSize_actionPerformed(); + } + else if (evt.getSource() == inputData) + { + showOriginalData(); + } } public void itemStateChanged(ItemEvent evt) { - if(evt.getSource()==fitToWindow) + if (evt.getSource() == fitToWindow) + { treeCanvas.fitToWindow = fitToWindow.getState(); + } - else if(evt.getSource()==distanceMenu) + else if (evt.getSource() == distanceMenu) + { treeCanvas.setShowDistances(distanceMenu.getState()); + } - else if(evt.getSource()==bootstrapMenu) + else if (evt.getSource() == bootstrapMenu) + { treeCanvas.setShowBootstrap(bootstrapMenu.getState()); + } - else if(evt.getSource()==placeholdersMenu) + else if (evt.getSource() == placeholdersMenu) + { treeCanvas.setMarkPlaceholders(placeholdersMenu.getState()); + } treeCanvas.repaint(); } - public void newickOutput_actionPerformed() { jalview.io.NewickFile fout = new jalview.io.NewickFile(tree.getTopNode()); @@ -225,15 +271,14 @@ public class TreePanel extends Frame implements ActionListener, ItemListener protected void fontSize_actionPerformed() { - if( treeCanvas==null ) - return; + if (treeCanvas == null) + { + return; + } new FontChooser(this); } - - - BorderLayout borderLayout1 = new BorderLayout(); protected ScrollPane scrollPane = new ScrollPane(); MenuBar jMenuBar1 = new MenuBar(); @@ -245,36 +290,42 @@ public class TreePanel extends Frame implements ActionListener, ItemListener protected CheckboxMenuItem fitToWindow = new CheckboxMenuItem(); Menu fileMenu = new Menu(); MenuItem newickOutput = new MenuItem(); + MenuItem inputData = new MenuItem(); - private void jbInit() throws Exception { - setLayout(borderLayout1); - this.setBackground(Color.white); - this.setFont(new java.awt.Font("Verdana", 0, 12)); - jMenu2.setLabel("View"); - fontSize.setLabel("Font..."); - fontSize.addActionListener(this); - bootstrapMenu.setLabel("Show Bootstrap Values"); - bootstrapMenu.addItemListener(this); - distanceMenu.setLabel("Show Distances"); - distanceMenu.addItemListener(this); - placeholdersMenu.setLabel("Mark Unassociated Leaves"); - placeholdersMenu.addItemListener(this); - fitToWindow.setState(true); - fitToWindow.setLabel("Fit To Window"); - fitToWindow.addItemListener(this); - fileMenu.setLabel("File"); - newickOutput.setLabel("Newick Format"); - newickOutput.addActionListener(this); + private void jbInit() + throws Exception + { + setLayout(borderLayout1); + this.setBackground(Color.white); + this.setFont(new java.awt.Font("Verdana", 0, 12)); + jMenu2.setLabel("View"); + fontSize.setLabel("Font..."); + fontSize.addActionListener(this); + bootstrapMenu.setLabel("Show Bootstrap Values"); + bootstrapMenu.addItemListener(this); + distanceMenu.setLabel("Show Distances"); + distanceMenu.addItemListener(this); + placeholdersMenu.setLabel("Mark Unassociated Leaves"); + placeholdersMenu.addItemListener(this); + fitToWindow.setState(true); + fitToWindow.setLabel("Fit To Window"); + fitToWindow.addItemListener(this); + fileMenu.setLabel("File"); + newickOutput.setLabel("Newick Format"); + newickOutput.addActionListener(this); + inputData.setLabel("Input Data..."); add(scrollPane, BorderLayout.CENTER); - jMenuBar1.add(fileMenu); - jMenuBar1.add(jMenu2); - jMenu2.add(fitToWindow); - jMenu2.add(fontSize); - jMenu2.add(distanceMenu); - jMenu2.add(bootstrapMenu); - jMenu2.add(placeholdersMenu); + jMenuBar1.add(fileMenu); + jMenuBar1.add(jMenu2); + jMenu2.add(fitToWindow); + jMenu2.add(fontSize); + jMenu2.add(distanceMenu); + jMenu2.add(bootstrapMenu); + jMenu2.add(placeholdersMenu); fileMenu.add(newickOutput); + fileMenu.add(inputData); + inputData.addActionListener(this); } }