From 3d136290d42e4f4ae2deeed8ce3b9dae7c6e2eec Mon Sep 17 00:00:00 2001 From: jprocter Date: Sat, 27 Oct 2007 13:27:58 +0000 Subject: [PATCH] enabled platform dependent embedding of menuBar with EmbmenuFrame --- src/MCview/AppletPDBViewer.java | 496 ++++++++++++------------- src/jalview/appletgui/AppletJmol.java | 50 +-- src/jalview/appletgui/PCAPanel.java | 597 ++++++++++++++--------------- src/jalview/appletgui/TreePanel.java | 661 ++++++++++++++++----------------- 4 files changed, 902 insertions(+), 902 deletions(-) diff --git a/src/MCview/AppletPDBViewer.java b/src/MCview/AppletPDBViewer.java index 2471f32..fc8478d 100755 --- a/src/MCview/AppletPDBViewer.java +++ b/src/MCview/AppletPDBViewer.java @@ -1,248 +1,248 @@ -/* - * Jalview - A Sequence Alignment Editor and Viewer - * 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 - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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 this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - */ -package MCview; - -import java.awt.*; -import java.awt.event.*; - -import jalview.appletgui.*; -import jalview.datamodel.*; -import jalview.schemes.*; - - -public class AppletPDBViewer - extends Frame implements ActionListener, ItemListener -{ - AppletPDBCanvas pdbcanvas; - - public AppletPDBViewer(PDBEntry pdbentry, - SequenceI[] seq, - String [] chains, - AlignmentPanel ap, - String protocol) - { - try - { - jbInit(); - } - catch (Exception ex) - { - ex.printStackTrace(); - } - - pdbcanvas = new AppletPDBCanvas(pdbentry, seq, chains, ap, protocol); - - - add(pdbcanvas, BorderLayout.CENTER); - - StringBuffer title = new StringBuffer(seq[0].getName() - + ":" - + pdbcanvas.pdbentry.getFile()); - - jalview.bin.JalviewLite.addFrame(this, title.toString(), 400, 400); - - } - - - - public void actionPerformed(ActionEvent evt) - { - if (evt.getSource() == mapping) - { - jalview.appletgui.CutAndPasteTransfer cap - = new jalview.appletgui.CutAndPasteTransfer(false, null); - Frame frame = new Frame(); - frame.add(cap); - jalview.bin.JalviewLite.addFrame(frame, "PDB - Sequence Mapping", 500, - 600); - cap.setText(pdbcanvas.mappingDetails.toString()); - - } - else if (evt.getSource() == charge) - { - pdbcanvas.bysequence = false; - pdbcanvas.pdb.setChargeColours(); - } - - else if (evt.getSource() == chain) - { - pdbcanvas.bysequence = false; - pdbcanvas.pdb.setChainColours(); - } - else if (evt.getSource() == seqButton) - { - pdbcanvas.bysequence = true; - pdbcanvas.colourBySequence(); - - } - else if (evt.getSource() == zappo) - { - pdbcanvas.setColours(new ZappoColourScheme()); - } - else if (evt.getSource() == taylor) - { - pdbcanvas.setColours(new TaylorColourScheme()); - } - else if (evt.getSource() == hydro) - { - pdbcanvas.setColours(new HydrophobicColourScheme()); - } - else if (evt.getSource() == helix) - { - pdbcanvas.setColours(new HelixColourScheme()); - } - else if (evt.getSource() == strand) - { - pdbcanvas.setColours(new StrandColourScheme()); - } - else if (evt.getSource() == turn) - { - pdbcanvas.setColours(new TurnColourScheme()); - } - else if (evt.getSource() == buried) - { - pdbcanvas.setColours(new BuriedColourScheme()); - } - else if (evt.getSource() == user) - { - pdbcanvas.bysequence = false; - new jalview.appletgui.UserDefinedColours(pdbcanvas); - } - - pdbcanvas.redrawneeded = true; - pdbcanvas.repaint(); - - } - - public void itemStateChanged(ItemEvent evt) - { - if (evt.getSource() == allchains) - { - pdbcanvas.setAllchainsVisible(allchains.getState()); - } - else if (evt.getSource() == wire) - { - pdbcanvas.wire = !pdbcanvas.wire; - } - else if (evt.getSource() == depth) - { - pdbcanvas.depthcue = !pdbcanvas.depthcue; - } - else if (evt.getSource() == zbuffer) - { - pdbcanvas.zbuffer = !pdbcanvas.zbuffer; - } - pdbcanvas.redrawneeded = true; - pdbcanvas.repaint(); - } - - private void jbInit() - throws Exception - { - setMenuBar(jMenuBar1); - fileMenu.setLabel("File"); - coloursMenu.setLabel("Colours"); - mapping.setLabel("View Mapping"); - mapping.addActionListener(this); - wire.setLabel("Wireframe"); - wire.addItemListener(this); - depth.setState(true); - depth.setLabel("Depthcue"); - depth.addItemListener(this); - zbuffer.setState(true); - zbuffer.setLabel("Z Buffering"); - zbuffer.addItemListener(this); - charge.setLabel("Charge & Cysteine"); - charge.addActionListener(this); - hydro.setLabel("Hydrophobicity"); - hydro.addActionListener(this); - chain.setLabel("By Chain"); - chain.addActionListener(this); - seqButton.setLabel("By Sequence"); - seqButton.addActionListener(this); - allchains.setLabel("All Chains Visible"); - allchains.addItemListener(this); - viewMenu.setLabel("View"); - zappo.setLabel("Zappo"); - zappo.addActionListener(this); - taylor.setLabel("Taylor"); - taylor.addActionListener(this); - helix.setLabel("Helix Propensity"); - helix.addActionListener(this); - strand.setLabel("Strand Propensity"); - strand.addActionListener(this); - turn.setLabel("Turn Propensity"); - turn.addActionListener(this); - buried.setLabel("Buried Index"); - buried.addActionListener(this); - user.setLabel("User Defined..."); - user.addActionListener(this); - jMenuBar1.add(fileMenu); - jMenuBar1.add(coloursMenu); - jMenuBar1.add(viewMenu); - fileMenu.add(mapping); ; - - coloursMenu.add(seqButton); - coloursMenu.add(chain); - coloursMenu.add(charge); - coloursMenu.add(zappo); - coloursMenu.add(taylor); - coloursMenu.add(hydro); - coloursMenu.add(helix); - coloursMenu.add(strand); - coloursMenu.add(turn); - coloursMenu.add(buried); - coloursMenu.add(user); - viewMenu.add(wire); - viewMenu.add(depth); - viewMenu.add(zbuffer); - viewMenu.add(allchains); - allchains.setState(true); - } - - MenuBar jMenuBar1 = new MenuBar(); - Menu fileMenu = new Menu(); - Menu coloursMenu = new Menu(); - MenuItem mapping = new MenuItem(); - CheckboxGroup bg = new CheckboxGroup(); - CheckboxMenuItem wire = new CheckboxMenuItem(); - CheckboxMenuItem depth = new CheckboxMenuItem(); - CheckboxMenuItem zbuffer = new CheckboxMenuItem(); - - MenuItem charge = new MenuItem(); - MenuItem hydro = new MenuItem(); - MenuItem chain = new MenuItem(); - MenuItem seqButton = new MenuItem(); - - CheckboxMenuItem allchains = new CheckboxMenuItem(); - Menu viewMenu = new Menu(); - MenuItem turn = new MenuItem(); - MenuItem strand = new MenuItem(); - MenuItem helix = new MenuItem(); - MenuItem taylor = new MenuItem(); - MenuItem zappo = new MenuItem(); - MenuItem buried = new MenuItem(); - MenuItem user = new MenuItem(); - - -//End StructureListener -//////////////////////////// - - -} +/* + * Jalview - A Sequence Alignment Editor and Viewer + * 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 + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ +package MCview; + +import java.awt.*; +import java.awt.event.*; + +import jalview.appletgui.*; +import jalview.datamodel.*; +import jalview.schemes.*; + + +public class AppletPDBViewer + extends EmbmenuFrame implements ActionListener, ItemListener +{ + AppletPDBCanvas pdbcanvas; + + public AppletPDBViewer(PDBEntry pdbentry, + SequenceI[] seq, + String [] chains, + AlignmentPanel ap, + String protocol) + { + try + { + jbInit(); + } + catch (Exception ex) + { + ex.printStackTrace(); + } + + pdbcanvas = new AppletPDBCanvas(pdbentry, seq, chains, ap, protocol); + + embedMenuIfNeeded(pdbcanvas); + add(pdbcanvas, BorderLayout.CENTER); + + StringBuffer title = new StringBuffer(seq[0].getName() + + ":" + + pdbcanvas.pdbentry.getFile()); + + jalview.bin.JalviewLite.addFrame(this, title.toString(), 400, 400); + + } + + + + public void actionPerformed(ActionEvent evt) + { + if (evt.getSource() == mapping) + { + jalview.appletgui.CutAndPasteTransfer cap + = new jalview.appletgui.CutAndPasteTransfer(false, null); + Frame frame = new Frame(); + frame.add(cap); + jalview.bin.JalviewLite.addFrame(frame, "PDB - Sequence Mapping", 500, + 600); + cap.setText(pdbcanvas.mappingDetails.toString()); + + } + else if (evt.getSource() == charge) + { + pdbcanvas.bysequence = false; + pdbcanvas.pdb.setChargeColours(); + } + + else if (evt.getSource() == chain) + { + pdbcanvas.bysequence = false; + pdbcanvas.pdb.setChainColours(); + } + else if (evt.getSource() == seqButton) + { + pdbcanvas.bysequence = true; + pdbcanvas.colourBySequence(); + + } + else if (evt.getSource() == zappo) + { + pdbcanvas.setColours(new ZappoColourScheme()); + } + else if (evt.getSource() == taylor) + { + pdbcanvas.setColours(new TaylorColourScheme()); + } + else if (evt.getSource() == hydro) + { + pdbcanvas.setColours(new HydrophobicColourScheme()); + } + else if (evt.getSource() == helix) + { + pdbcanvas.setColours(new HelixColourScheme()); + } + else if (evt.getSource() == strand) + { + pdbcanvas.setColours(new StrandColourScheme()); + } + else if (evt.getSource() == turn) + { + pdbcanvas.setColours(new TurnColourScheme()); + } + else if (evt.getSource() == buried) + { + pdbcanvas.setColours(new BuriedColourScheme()); + } + else if (evt.getSource() == user) + { + pdbcanvas.bysequence = false; + new jalview.appletgui.UserDefinedColours(pdbcanvas); + } + + pdbcanvas.redrawneeded = true; + pdbcanvas.repaint(); + + } + + public void itemStateChanged(ItemEvent evt) + { + if (evt.getSource() == allchains) + { + pdbcanvas.setAllchainsVisible(allchains.getState()); + } + else if (evt.getSource() == wire) + { + pdbcanvas.wire = !pdbcanvas.wire; + } + else if (evt.getSource() == depth) + { + pdbcanvas.depthcue = !pdbcanvas.depthcue; + } + else if (evt.getSource() == zbuffer) + { + pdbcanvas.zbuffer = !pdbcanvas.zbuffer; + } + pdbcanvas.redrawneeded = true; + pdbcanvas.repaint(); + } + + private void jbInit() + throws Exception + { + setMenuBar(jMenuBar1); + fileMenu.setLabel("File"); + coloursMenu.setLabel("Colours"); + mapping.setLabel("View Mapping"); + mapping.addActionListener(this); + wire.setLabel("Wireframe"); + wire.addItemListener(this); + depth.setState(true); + depth.setLabel("Depthcue"); + depth.addItemListener(this); + zbuffer.setState(true); + zbuffer.setLabel("Z Buffering"); + zbuffer.addItemListener(this); + charge.setLabel("Charge & Cysteine"); + charge.addActionListener(this); + hydro.setLabel("Hydrophobicity"); + hydro.addActionListener(this); + chain.setLabel("By Chain"); + chain.addActionListener(this); + seqButton.setLabel("By Sequence"); + seqButton.addActionListener(this); + allchains.setLabel("All Chains Visible"); + allchains.addItemListener(this); + viewMenu.setLabel("View"); + zappo.setLabel("Zappo"); + zappo.addActionListener(this); + taylor.setLabel("Taylor"); + taylor.addActionListener(this); + helix.setLabel("Helix Propensity"); + helix.addActionListener(this); + strand.setLabel("Strand Propensity"); + strand.addActionListener(this); + turn.setLabel("Turn Propensity"); + turn.addActionListener(this); + buried.setLabel("Buried Index"); + buried.addActionListener(this); + user.setLabel("User Defined..."); + user.addActionListener(this); + jMenuBar1.add(fileMenu); + jMenuBar1.add(coloursMenu); + jMenuBar1.add(viewMenu); + fileMenu.add(mapping); ; + + coloursMenu.add(seqButton); + coloursMenu.add(chain); + coloursMenu.add(charge); + coloursMenu.add(zappo); + coloursMenu.add(taylor); + coloursMenu.add(hydro); + coloursMenu.add(helix); + coloursMenu.add(strand); + coloursMenu.add(turn); + coloursMenu.add(buried); + coloursMenu.add(user); + viewMenu.add(wire); + viewMenu.add(depth); + viewMenu.add(zbuffer); + viewMenu.add(allchains); + allchains.setState(true); + } + + MenuBar jMenuBar1 = new MenuBar(); + Menu fileMenu = new Menu(); + Menu coloursMenu = new Menu(); + MenuItem mapping = new MenuItem(); + CheckboxGroup bg = new CheckboxGroup(); + CheckboxMenuItem wire = new CheckboxMenuItem(); + CheckboxMenuItem depth = new CheckboxMenuItem(); + CheckboxMenuItem zbuffer = new CheckboxMenuItem(); + + MenuItem charge = new MenuItem(); + MenuItem hydro = new MenuItem(); + MenuItem chain = new MenuItem(); + MenuItem seqButton = new MenuItem(); + + CheckboxMenuItem allchains = new CheckboxMenuItem(); + Menu viewMenu = new Menu(); + MenuItem turn = new MenuItem(); + MenuItem strand = new MenuItem(); + MenuItem helix = new MenuItem(); + MenuItem taylor = new MenuItem(); + MenuItem zappo = new MenuItem(); + MenuItem buried = new MenuItem(); + MenuItem user = new MenuItem(); + + +//End StructureListener +//////////////////////////// + + +} diff --git a/src/jalview/appletgui/AppletJmol.java b/src/jalview/appletgui/AppletJmol.java index f64014b..26fc708 100644 --- a/src/jalview/appletgui/AppletJmol.java +++ b/src/jalview/appletgui/AppletJmol.java @@ -34,7 +34,7 @@ import org.jmol.popup.*; import jalview.schemes.*; -public class AppletJmol extends Frame +public class AppletJmol extends EmbmenuFrame implements StructureListener, JmolStatusListener, KeyListener, ActionListener, ItemListener @@ -99,29 +99,6 @@ public class AppletJmol extends Frame //PROMPT USER HERE TO ADD TO NEW OR EXISTING VIEW? //FOR NOW, LETS JUST OPEN A NEW WINDOW } - - renderPanel = new RenderPanel(); - - this.add(renderPanel, BorderLayout.CENTER); - viewer = JmolViewer.allocateViewer(renderPanel, new SmarterJmolAdapter()); - - viewer.setAppletContext("jalview", - ap.av.applet.getDocumentBase(), - ap.av.applet.getCodeBase(), - null); - - viewer.setJmolStatusListener(this); - - jmolpopup = JmolPopup.newJmolPopup(viewer); - - this.addWindowListener(new WindowAdapter() - { - public void windowClosing(WindowEvent evt) - { - closeViewer(); - } - }); - MenuBar menuBar = new MenuBar(); menuBar.add(fileMenu); fileMenu.add(mappingMenuItem); @@ -159,7 +136,30 @@ public class AppletJmol extends Frame helpMenu.add(jmolHelp); - this.setMenuBar(menuBar); + setMenuBar(menuBar); + + renderPanel = new RenderPanel(); + embedMenuIfNeeded(renderPanel); + this.add(renderPanel, BorderLayout.CENTER); + viewer = JmolViewer.allocateViewer(renderPanel, new SmarterJmolAdapter()); + + viewer.setAppletContext("jalview", + ap.av.applet.getDocumentBase(), + ap.av.applet.getCodeBase(), + null); + + viewer.setJmolStatusListener(this); + + jmolpopup = JmolPopup.newJmolPopup(viewer); + + this.addWindowListener(new WindowAdapter() + { + public void windowClosing(WindowEvent evt) + { + closeViewer(); + } + }); + if(pdbentry.getFile()!=null) { diff --git a/src/jalview/appletgui/PCAPanel.java b/src/jalview/appletgui/PCAPanel.java index b121828..a5268bf 100755 --- a/src/jalview/appletgui/PCAPanel.java +++ b/src/jalview/appletgui/PCAPanel.java @@ -1,298 +1,299 @@ -/* - * Jalview - A Sequence Alignment Editor and Viewer - * 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 - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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 this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - */ - -package jalview.appletgui; - -import java.util.*; - -import java.awt.*; -import java.awt.event.*; - -import jalview.analysis.*; -import jalview.datamodel.*; - -public class PCAPanel - extends Frame implements Runnable, ActionListener, ItemListener -{ - PCA pca; - int top; - RotatableCanvas rc; - AlignViewport av; - SequenceI[] seqs; - AlignmentView seqstrings; - - public PCAPanel(AlignViewport av) - { - try - { - jbInit(); - } - catch (Exception e) - { - e.printStackTrace(); - } - - for (int i = 1; i < 8; i++) - { - xCombobox.addItem("dim " + i); - yCombobox.addItem("dim " + i); - zCombobox.addItem("dim " + i); - } - - this.av = av; - seqstrings = av.getAlignmentView(av.getSelectionGroup() != null); - if (av.getSelectionGroup() == null) - { - seqs = av.alignment.getSequencesArray(); - } - else - { - seqs = av.getSelectionGroup().getSequencesInOrder(av.alignment); - } - SeqCigar sq[] = seqstrings.getSequences(); - int length = sq[0].getWidth(); - - for (int i = 0; i < seqs.length; i++) - { - if (sq[i].getWidth() != length) - { - System.out.println("Sequences must be equal length for PCA analysis"); - return; - } - } - - rc = new RotatableCanvas(av); - add(rc, BorderLayout.CENTER); - - jalview.bin.JalviewLite.addFrame(this, "Principal component analysis", - 400, 400); - - Thread worker = new Thread(this); - worker.start(); - } - - /** - * DOCUMENT ME! - */ - public void run() - { - pca = new PCA(seqstrings.getSequenceStrings(' ')); - pca.run(); - - // Now find the component coordinates - int ii = 0; - - while ( (ii < seqs.length) && (seqs[ii] != null)) - { - ii++; - } - - double[][] comps = new double[ii][ii]; - - for (int i = 0; i < ii; i++) - { - if (pca.getEigenvalue(i) > 1e-4) - { - comps[i] = pca.component(i); - } - } - - ////////////////// - xCombobox.select(0); - yCombobox.select(1); - zCombobox.select(2); - - top = pca.getM().rows - 1; - - Vector points = new Vector(); - float[][] scores = pca.getComponents(top - 1, top - 2, top - 3, 100); - - for (int i = 0; i < pca.getM().rows; i++) - { - SequencePoint sp = new SequencePoint(seqs[i], scores[i]); - points.addElement(sp); - } - - rc.setPoints(points, pca.getM().rows); - rc.repaint(); - seqs = null; - this.repaint(); - } - - void doDimensionChange() - { - if (top == 0) - { - return; - } - - int dim1 = top - xCombobox.getSelectedIndex(); - int dim2 = top - yCombobox.getSelectedIndex(); - int dim3 = top - zCombobox.getSelectedIndex(); - - float[][] scores = pca.getComponents(dim1, dim2, dim3, 100); - for (int i = 0; i < pca.getM().rows; i++) - { - ( (SequencePoint) rc.points.elementAt(i)).coord = scores[i]; - } - - rc.img = null; - rc.rotmat.setIdentity(); - rc.initAxes(); - rc.paint(rc.getGraphics()); - } - - public void actionPerformed(ActionEvent evt) - { - if (evt.getSource() == inputData) - { - showOriginalData(); - } - else - { - values_actionPerformed(); - } - } - - public void itemStateChanged(ItemEvent evt) - { - if (evt.getSource() == xCombobox) - { - xCombobox_actionPerformed(); - } - else if (evt.getSource() == yCombobox) - { - yCombobox_actionPerformed(); - } - else if (evt.getSource() == zCombobox) - { - zCombobox_actionPerformed(); - } - } - - protected void xCombobox_actionPerformed() - { - doDimensionChange(); - } - - protected void yCombobox_actionPerformed() - { - doDimensionChange(); - } - - protected void zCombobox_actionPerformed() - { - doDimensionChange(); - } - - public void values_actionPerformed() - { - - CutAndPasteTransfer cap = new CutAndPasteTransfer(false, null); - Frame frame = new Frame(); - frame.add(cap); - jalview.bin.JalviewLite.addFrame(frame, "PCA details", 500, 500); - - cap.setText(pca.getDetails()); - } - - 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[]) - Object[] alAndColsel = seqstrings.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 PCA", - false); - - af.viewport.setHiddenColumns( (ColumnSelection) alAndColsel[1]); - } - } - - public void labels_itemStateChanged(ItemEvent itemEvent) - { - rc.showLabels(labels.getState()); - } - - Panel jPanel2 = new Panel(); - Label jLabel1 = new Label(); - Label jLabel2 = new Label(); - Label jLabel3 = new Label(); - protected Choice xCombobox = new Choice(); - protected Choice yCombobox = new Choice(); - protected Choice zCombobox = new Choice(); - FlowLayout flowLayout1 = new FlowLayout(); - BorderLayout borderLayout1 = new BorderLayout(); - MenuBar menuBar1 = new MenuBar(); - Menu menu1 = new Menu(); - Menu menu2 = new Menu(); - protected CheckboxMenuItem labels = new CheckboxMenuItem(); - MenuItem values = new MenuItem(); - MenuItem inputData = new MenuItem(); - - private void jbInit() - throws Exception - { - this.setLayout(borderLayout1); - jPanel2.setLayout(flowLayout1); - jLabel1.setFont(new java.awt.Font("Verdana", 0, 12)); - jLabel1.setText("x="); - jLabel2.setFont(new java.awt.Font("Verdana", 0, 12)); - jLabel2.setText("y="); - jLabel3.setFont(new java.awt.Font("Verdana", 0, 12)); - jLabel3.setText("z="); - jPanel2.setBackground(Color.white); - zCombobox.setFont(new java.awt.Font("Verdana", 0, 12)); - zCombobox.addItemListener(this); - yCombobox.setFont(new java.awt.Font("Verdana", 0, 12)); - yCombobox.addItemListener(this); - xCombobox.setFont(new java.awt.Font("Verdana", 0, 12)); - xCombobox.addItemListener(this); - this.setMenuBar(menuBar1); - menu1.setLabel("File"); - menu2.setLabel("View"); - labels.setLabel("Labels"); - labels.addItemListener(this); - values.setLabel("Output Values..."); - values.addActionListener(this); - inputData.setLabel("Input Data..."); - this.add(jPanel2, BorderLayout.SOUTH); - jPanel2.add(jLabel1, null); - jPanel2.add(xCombobox, null); - jPanel2.add(jLabel2, null); - jPanel2.add(yCombobox, null); - jPanel2.add(jLabel3, null); - jPanel2.add(zCombobox, null); - menuBar1.add(menu1); - menuBar1.add(menu2); - menu2.add(labels); - menu1.add(values); - menu1.add(inputData); - inputData.addActionListener(this); - } - -} +/* + * Jalview - A Sequence Alignment Editor and Viewer + * 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 + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + +package jalview.appletgui; + +import java.util.*; + +import java.awt.*; +import java.awt.event.*; + +import jalview.analysis.*; +import jalview.datamodel.*; + +public class PCAPanel + extends EmbmenuFrame implements Runnable, ActionListener, ItemListener +{ + PCA pca; + int top; + RotatableCanvas rc; + AlignViewport av; + SequenceI[] seqs; + AlignmentView seqstrings; + + public PCAPanel(AlignViewport av) + { + try + { + jbInit(); + } + catch (Exception e) + { + e.printStackTrace(); + } + + for (int i = 1; i < 8; i++) + { + xCombobox.addItem("dim " + i); + yCombobox.addItem("dim " + i); + zCombobox.addItem("dim " + i); + } + + this.av = av; + seqstrings = av.getAlignmentView(av.getSelectionGroup() != null); + if (av.getSelectionGroup() == null) + { + seqs = av.alignment.getSequencesArray(); + } + else + { + seqs = av.getSelectionGroup().getSequencesInOrder(av.alignment); + } + SeqCigar sq[] = seqstrings.getSequences(); + int length = sq[0].getWidth(); + + for (int i = 0; i < seqs.length; i++) + { + if (sq[i].getWidth() != length) + { + System.out.println("Sequences must be equal length for PCA analysis"); + return; + } + } + + rc = new RotatableCanvas(av); + embedMenuIfNeeded(rc); + add(rc, BorderLayout.CENTER); + + jalview.bin.JalviewLite.addFrame(this, "Principal component analysis", + 400, 400); + + Thread worker = new Thread(this); + worker.start(); + } + + /** + * DOCUMENT ME! + */ + public void run() + { + pca = new PCA(seqstrings.getSequenceStrings(' ')); + pca.run(); + + // Now find the component coordinates + int ii = 0; + + while ( (ii < seqs.length) && (seqs[ii] != null)) + { + ii++; + } + + double[][] comps = new double[ii][ii]; + + for (int i = 0; i < ii; i++) + { + if (pca.getEigenvalue(i) > 1e-4) + { + comps[i] = pca.component(i); + } + } + + ////////////////// + xCombobox.select(0); + yCombobox.select(1); + zCombobox.select(2); + + top = pca.getM().rows - 1; + + Vector points = new Vector(); + float[][] scores = pca.getComponents(top - 1, top - 2, top - 3, 100); + + for (int i = 0; i < pca.getM().rows; i++) + { + SequencePoint sp = new SequencePoint(seqs[i], scores[i]); + points.addElement(sp); + } + + rc.setPoints(points, pca.getM().rows); + rc.repaint(); + seqs = null; + this.repaint(); + } + + void doDimensionChange() + { + if (top == 0) + { + return; + } + + int dim1 = top - xCombobox.getSelectedIndex(); + int dim2 = top - yCombobox.getSelectedIndex(); + int dim3 = top - zCombobox.getSelectedIndex(); + + float[][] scores = pca.getComponents(dim1, dim2, dim3, 100); + for (int i = 0; i < pca.getM().rows; i++) + { + ( (SequencePoint) rc.points.elementAt(i)).coord = scores[i]; + } + + rc.img = null; + rc.rotmat.setIdentity(); + rc.initAxes(); + rc.paint(rc.getGraphics()); + } + + public void actionPerformed(ActionEvent evt) + { + if (evt.getSource() == inputData) + { + showOriginalData(); + } + else + { + values_actionPerformed(); + } + } + + public void itemStateChanged(ItemEvent evt) + { + if (evt.getSource() == xCombobox) + { + xCombobox_actionPerformed(); + } + else if (evt.getSource() == yCombobox) + { + yCombobox_actionPerformed(); + } + else if (evt.getSource() == zCombobox) + { + zCombobox_actionPerformed(); + } + } + + protected void xCombobox_actionPerformed() + { + doDimensionChange(); + } + + protected void yCombobox_actionPerformed() + { + doDimensionChange(); + } + + protected void zCombobox_actionPerformed() + { + doDimensionChange(); + } + + public void values_actionPerformed() + { + + CutAndPasteTransfer cap = new CutAndPasteTransfer(false, null); + Frame frame = new Frame(); + frame.add(cap); + jalview.bin.JalviewLite.addFrame(frame, "PCA details", 500, 500); + + cap.setText(pca.getDetails()); + } + + 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[]) + Object[] alAndColsel = seqstrings.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 PCA", + false); + + af.viewport.setHiddenColumns( (ColumnSelection) alAndColsel[1]); + } + } + + public void labels_itemStateChanged(ItemEvent itemEvent) + { + rc.showLabels(labels.getState()); + } + + Panel jPanel2 = new Panel(); + Label jLabel1 = new Label(); + Label jLabel2 = new Label(); + Label jLabel3 = new Label(); + protected Choice xCombobox = new Choice(); + protected Choice yCombobox = new Choice(); + protected Choice zCombobox = new Choice(); + FlowLayout flowLayout1 = new FlowLayout(); + BorderLayout borderLayout1 = new BorderLayout(); + MenuBar menuBar1 = new MenuBar(); + Menu menu1 = new Menu(); + Menu menu2 = new Menu(); + protected CheckboxMenuItem labels = new CheckboxMenuItem(); + MenuItem values = new MenuItem(); + MenuItem inputData = new MenuItem(); + + private void jbInit() + throws Exception + { + this.setLayout(borderLayout1); + jPanel2.setLayout(flowLayout1); + jLabel1.setFont(new java.awt.Font("Verdana", 0, 12)); + jLabel1.setText("x="); + jLabel2.setFont(new java.awt.Font("Verdana", 0, 12)); + jLabel2.setText("y="); + jLabel3.setFont(new java.awt.Font("Verdana", 0, 12)); + jLabel3.setText("z="); + jPanel2.setBackground(Color.white); + zCombobox.setFont(new java.awt.Font("Verdana", 0, 12)); + zCombobox.addItemListener(this); + yCombobox.setFont(new java.awt.Font("Verdana", 0, 12)); + yCombobox.addItemListener(this); + xCombobox.setFont(new java.awt.Font("Verdana", 0, 12)); + xCombobox.addItemListener(this); + this.setMenuBar(menuBar1); + menu1.setLabel("File"); + menu2.setLabel("View"); + labels.setLabel("Labels"); + labels.addItemListener(this); + values.setLabel("Output Values..."); + values.addActionListener(this); + inputData.setLabel("Input Data..."); + this.add(jPanel2, BorderLayout.SOUTH); + jPanel2.add(jLabel1, null); + jPanel2.add(xCombobox, null); + jPanel2.add(jLabel2, null); + jPanel2.add(yCombobox, null); + jPanel2.add(jLabel3, null); + jPanel2.add(zCombobox, null); + menuBar1.add(menu1); + menuBar1.add(menu2); + menu2.add(labels); + menu1.add(values); + menu1.add(inputData); + inputData.addActionListener(this); + } + +} diff --git a/src/jalview/appletgui/TreePanel.java b/src/jalview/appletgui/TreePanel.java index 6bb96f1..f865bbd 100755 --- a/src/jalview/appletgui/TreePanel.java +++ b/src/jalview/appletgui/TreePanel.java @@ -1,331 +1,330 @@ -/* - * Jalview - A Sequence Alignment Editor and Viewer - * 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 - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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 this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - */ - -package jalview.appletgui; - -import java.awt.*; -import java.awt.event.*; - -import jalview.analysis.*; -import jalview.datamodel.*; -import jalview.io.*; - -public class TreePanel - extends Frame implements ActionListener, ItemListener -{ - SequenceI[] seq; - String type; - String pwtype; - int start; - int end; - TreeCanvas treeCanvas; - NJTree tree; - AlignViewport av; - - public NJTree getTree() - { - return tree; - } - - /** - * 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(AlignViewport av, String type, String pwtype) - { - try - { - jbInit(); - this.setMenuBar(jMenuBar1); - } - catch (Exception ex) - { - ex.printStackTrace(); - } - - initTreePanel(av, 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(AlignViewport av, - String type, - String pwtype, - NewickFile newtree) - { - try - { - jbInit(); - this.setMenuBar(jMenuBar1); - } - catch (Exception e) - { - e.printStackTrace(); - } - - initTreePanel(av, type, pwtype, newtree); - } - - void initTreePanel(AlignViewport av, - String type, - String pwtype, - NewickFile newTree) - { - - this.av = av; - this.type = type; - this.pwtype = pwtype; - - treeCanvas = new TreeCanvas(av, scrollPane); - scrollPane.add(treeCanvas); - - TreeLoader tl = new TreeLoader(newTree); - tl.start(); - - } - - 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) - { - this.newtree = newtree; - } - - public void run() - { - if (newtree != null) - { - 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 - { - 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) - { - distanceMenu.setState(newtree.HasDistances()); - bootstrapMenu.setState(newtree.HasBootstrap()); - treeCanvas.setShowBootstrap(newtree.HasBootstrap()); - treeCanvas.setShowDistances(newtree.HasDistances()); - } - - treeCanvas.repaint(); - - av.setCurrentTree(tree); - - } - } - - public void actionPerformed(ActionEvent evt) - { - if (evt.getSource() == newickOutput) - { - newickOutput_actionPerformed(); - } - else if (evt.getSource() == fontSize) - { - fontSize_actionPerformed(); - } - else if (evt.getSource() == inputData) - { - showOriginalData(); - } - } - - public void itemStateChanged(ItemEvent evt) - { - if (evt.getSource() == fitToWindow) - { - treeCanvas.fitToWindow = fitToWindow.getState(); - } - - else if (evt.getSource() == distanceMenu) - { - treeCanvas.setShowDistances(distanceMenu.getState()); - } - - else if (evt.getSource() == bootstrapMenu) - { - treeCanvas.setShowBootstrap(bootstrapMenu.getState()); - } - - 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()); - String output = fout.print(false, true); - CutAndPasteTransfer cap = new CutAndPasteTransfer(false, null); - cap.setText(output); - java.awt.Frame frame = new java.awt.Frame(); - frame.add(cap); - jalview.bin.JalviewLite.addFrame(frame, type + " " + pwtype, 500, 100); - } - - public java.awt.Font getTreeFont() - { - return treeCanvas.font; - } - - public void setTreeFont(java.awt.Font font) - { - treeCanvas.font = font; - treeCanvas.repaint(); - } - - protected void fontSize_actionPerformed() - { - if (treeCanvas == null) - { - return; - } - - new FontChooser(this); - } - - BorderLayout borderLayout1 = new BorderLayout(); - protected ScrollPane scrollPane = new ScrollPane(); - MenuBar jMenuBar1 = new MenuBar(); - Menu jMenu2 = new Menu(); - protected MenuItem fontSize = new MenuItem(); - protected CheckboxMenuItem bootstrapMenu = new CheckboxMenuItem(); - protected CheckboxMenuItem distanceMenu = new CheckboxMenuItem(); - protected CheckboxMenuItem placeholdersMenu = new CheckboxMenuItem(); - 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); - 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); - fileMenu.add(newickOutput); - fileMenu.add(inputData); - inputData.addActionListener(this); - } - -} +/* + * Jalview - A Sequence Alignment Editor and Viewer + * 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 + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + +package jalview.appletgui; + +import java.awt.*; +import java.awt.event.*; +import java.util.Hashtable; + +import jalview.analysis.*; +import jalview.datamodel.*; +import jalview.io.*; + +public class TreePanel + extends EmbmenuFrame implements ActionListener, ItemListener +{ + SequenceI[] seq; + String type; + String pwtype; + int start; + int end; + TreeCanvas treeCanvas; + NJTree tree; + AlignViewport av; + + public NJTree getTree() + { + return tree; + } + + /** + * 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(AlignViewport av, String type, String pwtype) + { + try + { + jbInit(); + this.setMenuBar(jMenuBar1); + } + catch (Exception ex) + { + ex.printStackTrace(); + } + + initTreePanel(av, 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(AlignViewport av, + String type, + String pwtype, + NewickFile newtree) + { + try + { + jbInit(); + this.setMenuBar(jMenuBar1); + } + catch (Exception e) + { + e.printStackTrace(); + } + + initTreePanel(av, type, pwtype, newtree); + } + void initTreePanel(AlignViewport av, + String type, + String pwtype, + NewickFile newTree) + { + + this.av = av; + this.type = type; + this.pwtype = pwtype; + + + TreeLoader tl = new TreeLoader(newTree); + tl.start(); + treeCanvas = new TreeCanvas(av, scrollPane); + embedMenuIfNeeded(treeCanvas); + scrollPane.add(treeCanvas, BorderLayout.CENTER); + } + 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) + { + this.newtree = newtree; + } + + public void run() + { + if (newtree != null) + { + 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 + { + 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) + { + distanceMenu.setState(newtree.HasDistances()); + bootstrapMenu.setState(newtree.HasBootstrap()); + treeCanvas.setShowBootstrap(newtree.HasBootstrap()); + treeCanvas.setShowDistances(newtree.HasDistances()); + } + + treeCanvas.repaint(); + + av.setCurrentTree(tree); + + } + } + + public void actionPerformed(ActionEvent evt) + { + if (evt.getSource() == newickOutput) + { + newickOutput_actionPerformed(); + } + else if (evt.getSource() == fontSize) + { + fontSize_actionPerformed(); + } + else if (evt.getSource() == inputData) + { + showOriginalData(); + } + } + + public void itemStateChanged(ItemEvent evt) + { + if (evt.getSource() == fitToWindow) + { + treeCanvas.fitToWindow = fitToWindow.getState(); + } + + else if (evt.getSource() == distanceMenu) + { + treeCanvas.setShowDistances(distanceMenu.getState()); + } + + else if (evt.getSource() == bootstrapMenu) + { + treeCanvas.setShowBootstrap(bootstrapMenu.getState()); + } + + 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()); + String output = fout.print(false, true); + CutAndPasteTransfer cap = new CutAndPasteTransfer(false, null); + cap.setText(output); + java.awt.Frame frame = new java.awt.Frame(); + frame.add(cap); + jalview.bin.JalviewLite.addFrame(frame, type + " " + pwtype, 500, 100); + } + + public java.awt.Font getTreeFont() + { + return treeCanvas.font; + } + + public void setTreeFont(java.awt.Font font) + { + treeCanvas.font = font; + treeCanvas.repaint(); + } + + protected void fontSize_actionPerformed() + { + if (treeCanvas == null) + { + return; + } + + new FontChooser(this); + } + + BorderLayout borderLayout1 = new BorderLayout(); + protected ScrollPane scrollPane = new ScrollPane(); + MenuBar jMenuBar1 = new MenuBar(); + Menu jMenu2 = new Menu(); + protected MenuItem fontSize = new MenuItem(); + protected CheckboxMenuItem bootstrapMenu = new CheckboxMenuItem(); + protected CheckboxMenuItem distanceMenu = new CheckboxMenuItem(); + protected CheckboxMenuItem placeholdersMenu = new CheckboxMenuItem(); + 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); + 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); + fileMenu.add(newickOutput); + fileMenu.add(inputData); + inputData.addActionListener(this); + } + +} -- 1.7.10.2