+ public void neighbourTreeMenuItem_actionPerformed()\r
+ {\r
+ NewTreePanel("NJ", "PID", "Neighbour joining tree using PID");\r
+ }\r
+\r
+ protected void njTreeBlosumMenuItem_actionPerformed()\r
+ {\r
+ NewTreePanel("NJ", "BL", "Neighbour joining tree using BLOSUM62");\r
+ }\r
+\r
+ protected void avTreeBlosumMenuItem_actionPerformed()\r
+ {\r
+ NewTreePanel("AV", "BL", "Average distance tree using BLOSUM62");\r
+ }\r
+\r
+ void NewTreePanel(String type, String pwType, String title)\r
+ {\r
+ // are the sequences aligned?\r
+ if (!viewport.getAlignment().isAligned(false))\r
+ {\r
+ SequenceI current;\r
+ int Width = viewport.getAlignment().getWidth();\r
+\r
+ for (int i = 0; i < viewport.getAlignment().getSequences().size(); i++)\r
+ {\r
+ current = viewport.getAlignment().getSequenceAt(i);\r
+\r
+ if (current.getLength() < Width)\r
+ {\r
+ current.insertCharAt(Width - 1, viewport.getGapCharacter());\r
+ }\r
+ }\r
+ alignPanel.paintAlignment(true);\r
+\r
+ }\r
+\r
+ if ((viewport.getSelectionGroup() != null && viewport\r
+ .getSelectionGroup().getSize() > 1)\r
+ || (viewport.getAlignment().getHeight() > 1))\r
+ {\r
+ final TreePanel tp = new TreePanel(alignPanel, type, pwType);\r
+\r
+ addTreeMenuItem(tp, title);\r
+\r
+ jalview.bin.JalviewLite.addFrame(tp, title, 600, 500);\r
+ }\r
+ }\r
+\r
+ void loadTree_actionPerformed()\r
+ {\r
+ CutAndPasteTransfer cap = new CutAndPasteTransfer(true, this);\r
+ cap.setText("Paste your Newick tree file here.");\r
+ cap.setTreeImport();\r
+ Frame frame = new Frame();\r
+ frame.add(cap);\r
+ jalview.bin.JalviewLite.addFrame(frame, "Paste Newick file ", 400, 300);\r
+ }\r
+\r
+ public void loadTree(jalview.io.NewickFile tree, String treeFile)\r
+ {\r
+ TreePanel tp = new TreePanel(alignPanel, treeFile, "From File - ", tree);\r
+ jalview.bin.JalviewLite.addFrame(tp, treeFile, 600, 500);\r
+ addTreeMenuItem(tp, treeFile);\r
+ }\r
+\r
+ /**\r
+ * sort the alignment using the given treePanel\r
+ * \r
+ * @param treePanel\r
+ * tree used to sort view\r
+ * @param title\r
+ * string used for undo event name\r
+ */\r
+ public void sortByTree(TreePanel treePanel, String title)\r
+ {\r
+ SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray();\r
+ AlignmentSorter\r
+ .sortByTree(viewport.getAlignment(), treePanel.getTree());\r
+ // addHistoryItem(new HistoryItem("Sort", viewport.alignment,\r
+ // HistoryItem.SORT));\r
+ addHistoryItem(new OrderCommand("Order by " + title, oldOrder,\r
+ viewport.getAlignment()));\r
+ alignPanel.paintAlignment(true);\r
+ }\r
+\r
+ /**\r
+ * Do any automatic reordering of the alignment and add the necessary bits to\r
+ * the menu structure for the new tree\r
+ * \r
+ * @param treePanel\r
+ * @param title\r
+ */\r
+ protected void addTreeMenuItem(final TreePanel treePanel,\r
+ final String title)\r
+ {\r
+ final MenuItem item = new MenuItem(title);\r
+ sortByTreeMenu.add(item);\r
+ item.addActionListener(new java.awt.event.ActionListener()\r
+ {\r
+ @Override\r
+ public void actionPerformed(ActionEvent evt)\r
+ {\r
+ sortByTree(treePanel, title); // treePanel.getTitle());\r
+ }\r
+ });\r
+\r
+ treePanel.addWindowListener(new WindowAdapter()\r
+ {\r
+ @Override\r
+ public void windowOpened(WindowEvent e)\r
+ {\r
+ if (viewport.sortByTree)\r
+ {\r
+ sortByTree(treePanel, title);\r
+ }\r
+ super.windowOpened(e);\r
+ }\r
+\r
+ @Override\r
+ public void windowClosing(WindowEvent e)\r
+ {\r
+ sortByTreeMenu.remove(item);\r
+ };\r
+ });\r
+ }\r
+\r
+ public boolean sortBy(AlignmentOrder alorder, String undoname)\r
+ {\r
+ SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray();\r
+ if (viewport.applet.debug)\r
+ {\r
+ System.err.println("Sorting " + alorder.getOrder().size()\r
+ + " in alignment '" + getTitle() + "'");\r
+ }\r
+ AlignmentSorter.sortBy(viewport.getAlignment(), alorder);\r
+ if (undoname != null)\r
+ {\r
+ addHistoryItem(new OrderCommand(undoname, oldOrder,\r
+ viewport.getAlignment()));\r
+ }\r
+ alignPanel.paintAlignment(true);\r
+ return true;\r
+ }\r
+\r
+ protected void documentation_actionPerformed()\r
+ {\r
+ alignPanel.av.applet.openJalviewHelpUrl();\r
+ }\r
+\r
+ protected void about_actionPerformed()\r
+ {\r
+\r
+ class AboutPanel extends Canvas\r
+ {\r
+ String version;\r
+\r
+ String builddate;\r
+\r
+ public AboutPanel(String version, String builddate)\r
+ {\r
+ this.version = version;\r
+ this.builddate = builddate;\r
+ }\r
+\r
+ @Override\r
+ public void paint(Graphics g)\r
+ {\r
+ g.setColor(Color.white);\r
+ g.fillRect(0, 0, getSize().width, getSize().height);\r
+ g.setFont(new Font("Helvetica", Font.PLAIN, 12));\r
+ FontMetrics fm = g.getFontMetrics();\r
+ int fh = fm.getHeight();\r
+ int y = 5, x = 7;\r
+ g.setColor(Color.black);\r
+ // TODO: update this text for each release or centrally store it for\r
+ // lite and application\r
+ g.setFont(new Font("Helvetica", Font.BOLD, 14));\r
+ g.drawString("JalviewLite - Release " + version, x, y += fh);\r
+ g.setFont(new Font("Helvetica", Font.BOLD, 12));\r
+ g.drawString("Build date: " + builddate, x, y += fh);\r
+ g.setFont(new Font("Helvetica", Font.PLAIN, 12));\r
+ g.drawString(\r
+ "Authors: Jim Procter, Andrew Waterhouse, Michele Clamp, James Cuff, Steve Searle,",\r
+ x, y += fh * 1.5);\r
+ g.drawString("David Martin & Geoff Barton.", x + 50, y += fh);\r
+ g.drawString(\r
+ "Development managed by The Barton Group, University of Dundee, Scotland, UK.",\r
+ x, y += fh);\r
+ g.drawString(\r
+ "For help, see the FAQ at www.jalview.org and/or join the jalview-discuss@jalview.org mailing list",\r
+ x, y += fh);\r
+ g.drawString("If you use Jalview, please cite:", x, y += fh + 8);\r
+ g.drawString(\r
+ "Waterhouse, A.M., Procter, J.B., Martin, D.M.A, Clamp, M. and Barton, G. J. (2009)",\r
+ x, y += fh);\r
+ g.drawString(\r
+ "Jalview Version 2 - a multiple sequence alignment editor and analysis workbench",\r
+ x, y += fh);\r
+ g.drawString("Bioinformatics doi: 10.1093/bioinformatics/btp033",\r
+ x, y += fh);\r
+ }\r
+ }\r
+\r
+ Frame frame = new Frame();\r
+ frame.add(new AboutPanel(JalviewLite.getVersion(), JalviewLite\r
+ .getBuildDate()));\r
+ jalview.bin.JalviewLite.addFrame(frame, "Jalview", 580, 220);\r
+\r
+ }\r
+\r
+ public void showURL(String url, String target)\r
+ {\r
+ if (viewport.applet == null)\r
+ {\r
+ System.out.println("Not running as applet - no browser available.");\r
+ }\r
+ else\r
+ {\r
+ viewport.applet.showURL(url, target);\r
+ }\r
+ }\r
+\r
+ // ////////////////////////////////////////////////////////////////////////////////\r
+ // JBuilder Graphics here\r
+\r
+ MenuBar alignFrameMenuBar = new MenuBar();\r
+\r
+ Menu fileMenu = new Menu("File");\r
+\r
+ MenuItem loadApplication = new MenuItem("View in Full Application");\r
+\r
+ MenuItem loadTree = new MenuItem("Load Associated Tree ...");\r
+\r
+ MenuItem loadAnnotations = new MenuItem("Load Features/Annotations ...");\r
+\r
+ MenuItem outputFeatures = new MenuItem("Export Features ...");\r
+\r
+ MenuItem outputAnnotations = new MenuItem("Export Annotations ...");\r
+\r
+ MenuItem closeMenuItem = new MenuItem("Close");\r
+\r
+ Menu editMenu = new Menu("Edit");\r
+\r
+ Menu viewMenu = new Menu("View");\r
+\r
+ Menu colourMenu = new Menu("Colour");\r
+\r
+ Menu calculateMenu = new Menu("Calculate");\r
+\r
+ MenuItem selectAllSequenceMenuItem = new MenuItem("Select all");\r
+\r
+ MenuItem deselectAllSequenceMenuItem = new MenuItem("Deselect All");\r
+\r
+ MenuItem invertSequenceMenuItem = new MenuItem("Invert Selection");\r
+\r
+ MenuItem remove2LeftMenuItem = new MenuItem();\r
+\r
+ MenuItem remove2RightMenuItem = new MenuItem();\r
+\r
+ MenuItem removeGappedColumnMenuItem = new MenuItem();\r
+\r
+ MenuItem removeAllGapsMenuItem = new MenuItem();\r
+\r
+ CheckboxMenuItem viewBoxesMenuItem = new CheckboxMenuItem();\r
+\r
+ CheckboxMenuItem viewTextMenuItem = new CheckboxMenuItem();\r
+\r
+ MenuItem sortPairwiseMenuItem = new MenuItem();\r
+\r
+ MenuItem sortIDMenuItem = new MenuItem();\r
+\r
+ MenuItem sortLengthMenuItem = new MenuItem();\r
+\r
+ MenuItem sortGroupMenuItem = new MenuItem();\r
+\r
+ MenuItem removeRedundancyMenuItem = new MenuItem();\r
+\r
+ MenuItem pairwiseAlignmentMenuItem = new MenuItem();\r
+\r
+ MenuItem PCAMenuItem = new MenuItem();\r
+\r
+ MenuItem averageDistanceTreeMenuItem = new MenuItem();\r
+\r
+ MenuItem neighbourTreeMenuItem = new MenuItem();\r
+\r
+ BorderLayout borderLayout1 = new BorderLayout();\r
+\r
+ public Label statusBar = new Label();\r
+\r
+ Menu outputTextboxMenu = new Menu();\r
+\r
+ MenuItem clustalColour = new MenuItem();\r
+\r
+ MenuItem zappoColour = new MenuItem();\r
+\r
+ MenuItem taylorColour = new MenuItem();\r
+\r
+ MenuItem hydrophobicityColour = new MenuItem();\r
+\r
+ MenuItem helixColour = new MenuItem();\r
+\r
+ MenuItem strandColour = new MenuItem();\r
+\r
+ MenuItem turnColour = new MenuItem();\r
+\r
+ MenuItem buriedColour = new MenuItem();\r
+\r
+ MenuItem purinePyrimidineColour = new MenuItem();\r
+\r
+ MenuItem RNAHelixColour = new MenuItem();\r
+\r
+ MenuItem userDefinedColour = new MenuItem();\r
+\r
+ MenuItem PIDColour = new MenuItem();\r
+\r
+ MenuItem BLOSUM62Colour = new MenuItem();\r
+\r
+ MenuItem tcoffeeColour = new MenuItem();\r
+\r
+ MenuItem njTreeBlosumMenuItem = new MenuItem();\r
+\r
+ MenuItem avDistanceTreeBlosumMenuItem = new MenuItem();\r
+\r
+ CheckboxMenuItem annotationPanelMenuItem = new CheckboxMenuItem();\r
+\r
+ CheckboxMenuItem colourTextMenuItem = new CheckboxMenuItem();\r
+\r
+ CheckboxMenuItem displayNonconservedMenuItem = new CheckboxMenuItem();\r
+\r
+ MenuItem alProperties = new MenuItem("Alignment Properties...");\r
+\r
+ MenuItem overviewMenuItem = new MenuItem();\r
+\r
+ MenuItem undoMenuItem = new MenuItem();\r
+\r
+ MenuItem redoMenuItem = new MenuItem();\r
+\r
+ CheckboxMenuItem conservationMenuItem = new CheckboxMenuItem();\r
+\r
+ MenuItem noColourmenuItem = new MenuItem();\r
+\r
+ CheckboxMenuItem wrapMenuItem = new CheckboxMenuItem();\r
+\r
+ CheckboxMenuItem renderGapsMenuItem = new CheckboxMenuItem();\r
+\r
+ MenuItem findMenuItem = new MenuItem();\r
+\r
+ CheckboxMenuItem abovePIDThreshold = new CheckboxMenuItem();\r
+\r
+ MenuItem nucleotideColour = new MenuItem();\r
+\r
+ MenuItem deleteGroups = new MenuItem();\r
+\r
+ MenuItem grpsFromSelection = new MenuItem();\r
+\r
+ MenuItem delete = new MenuItem();\r
+\r
+ MenuItem copy = new MenuItem();\r
+\r
+ MenuItem cut = new MenuItem();\r
+\r
+ Menu pasteMenu = new Menu();\r
+\r
+ MenuItem pasteNew = new MenuItem();\r
+\r
+ MenuItem pasteThis = new MenuItem();\r
+\r
+ CheckboxMenuItem applyToAllGroups = new CheckboxMenuItem();\r
+\r
+ MenuItem font = new MenuItem();\r
+\r
+ CheckboxMenuItem scaleAbove = new CheckboxMenuItem();\r
+\r
+ CheckboxMenuItem scaleLeft = new CheckboxMenuItem();\r