formatting changes
[jalview.git] / src / jalview / appletgui / TreePanel.java
1 package jalview.appletgui;\r
2 \r
3 import jalview.datamodel.*;\r
4 import jalview.io.NewickFile;\r
5 import jalview.analysis.*;\r
6 import jalview.jbappletgui.GTreePanel;\r
7 import java.awt.event.*;\r
8 import java.util.*;\r
9 import jalview.io.NewickFile;\r
10 \r
11 \r
12 public class TreePanel extends GTreePanel\r
13 {\r
14   SequenceI[] seq;\r
15   String type;\r
16   String pwtype;\r
17   AlignViewport av;\r
18   int start;\r
19   int end;\r
20   TreeCanvas treeCanvas;\r
21   NJTree tree;\r
22 \r
23   public NJTree getTree()\r
24   {\r
25     return tree;\r
26   }\r
27 \r
28   public TreePanel(AlignViewport av, Vector seqVector, String type, String pwtype, int s, int e)\r
29   {\r
30     super();\r
31 \r
32     this.type = type;\r
33     this.pwtype = pwtype;\r
34 \r
35     start = s;\r
36     end = e;\r
37 \r
38     String longestName = "";\r
39     seq = new Sequence [seqVector.size()];\r
40     for (int i=0;i < seqVector.size();i++)\r
41     {\r
42       seq[i] = (Sequence) seqVector.elementAt(i);\r
43       if(seq[i].getName().length()>longestName.length())\r
44         longestName = seq[i].getName();\r
45     }\r
46 \r
47     tree = new NJTree(seq, type, pwtype, start, end);\r
48 \r
49     treeCanvas = new TreeCanvas(av, tree, scrollPane, longestName);\r
50 \r
51     tree.reCount(tree.getTopNode());\r
52     tree.findHeight(tree.getTopNode());\r
53     scrollPane.add(treeCanvas);\r
54 \r
55   }\r
56   public TreePanel(AlignViewport av, Vector seqVector, NewickFile newtree,\r
57                    String type, String pwtype)\r
58     {\r
59       super();\r
60       // These are probably only  arbitrary strings reflecting source of tree\r
61       this.type = type;\r
62       this.pwtype = pwtype;\r
63 \r
64       start = 0;\r
65       end = seqVector.size();\r
66 \r
67       String longestName = "";\r
68       seq = new Sequence [seqVector.size()];\r
69       for (int i=0;i < seqVector.size();i++)\r
70       {\r
71         seq[i] = (Sequence) seqVector.elementAt(i);\r
72       }\r
73       // This constructor matches sequence names to treenodes and sets up the tree layouts.\r
74       tree = new NJTree(seq, newtree);\r
75       // Now have to calculate longest name based on the leaves\r
76       Vector leaves = tree.findLeaves(tree.getTopNode(),new Vector());\r
77 \r
78       for (int i=0;i < leaves.size();i++)\r
79         if (longestName.length()<((Sequence) ((SequenceNode) leaves.elementAt(i)).element()).getName().length())\r
80           longestName = TreeCanvas.PLACEHOLDER+((Sequence) ((SequenceNode) leaves.elementAt(i)).element()).getName();\r
81 \r
82       tree.reCount(tree.getTopNode());\r
83       tree.findHeight(tree.getTopNode());\r
84 \r
85       treeCanvas = new TreeCanvas(av, tree, scrollPane, longestName);\r
86       treeCanvas.setShowBootstrap(newtree.HasBootstrap());\r
87       treeCanvas.setShowDistances(newtree.HasDistances());\r
88       distanceMenu.setState(newtree.HasDistances());\r
89       bootstrapMenu.setState(newtree.HasBootstrap());\r
90       if (true) // JBPNote TODO: preference for always marking placeholders in new associated tree\r
91         placeholdersMenu.setState(treeCanvas.markPlaceholders);\r
92       scrollPane.add(treeCanvas);\r
93 \r
94     }\r
95 \r
96 public String getText(String format) {\r
97   return null;\r
98 }\r
99 \r
100   protected void fitToWindow_actionPerformed(ActionEvent e)\r
101   {\r
102     treeCanvas.fitToWindow = fitToWindow.getState();\r
103     repaint();\r
104   }\r
105 \r
106   public void newickOutput_actionPerformed(ActionEvent actionEvent)\r
107   {\r
108     jalview.io.NewickFile fout = new jalview.io.NewickFile(tree.getTopNode());\r
109     String output = fout.print(false, true);\r
110     CutAndPasteTransfer cap = new CutAndPasteTransfer(false);\r
111     cap.setText(output);\r
112     java.awt.Frame frame = new java.awt.Frame();\r
113     frame.add(cap);\r
114     jalview.bin.JalviewLite.addFrame(frame, type+" "+pwtype, 500,100);\r
115   }\r
116 \r
117 \r
118 \r
119   protected void fontSize_actionPerformed(ActionEvent e)\r
120   {\r
121  /*   if( treeCanvas==null )\r
122      return;\r
123 \r
124    String size = fontSize.getLabel().substring( fontSize.getLabel().indexOf("-")+1);\r
125 \r
126    Object selection = JOptionPane.showInternalInputDialog(Desktop.desktop,\r
127                                "Select font size",\r
128                                "Font size",\r
129                                JOptionPane.QUESTION_MESSAGE,\r
130                                null, new String[]{"1","2","4","6","8","10","12","14","16","18","20"}\r
131                                ,"Font Size - "+size);\r
132    if(selection!=null)\r
133    {\r
134      fontSize.setText("Font Size - " + selection);\r
135 \r
136      int i = Integer.parseInt(selection.toString());\r
137      treeCanvas.setFontSize(i);\r
138    }\r
139     scrollPane.setViewportView(treeCanvas);\r
140 */\r
141   }\r
142 \r
143   protected void distanceMenu_actionPerformed(ActionEvent e)\r
144   {\r
145     treeCanvas.setShowDistances(distanceMenu.getState());\r
146   }\r
147 \r
148   protected void bootstrapMenu_actionPerformed(ActionEvent e)\r
149   {\r
150     treeCanvas.setShowBootstrap(bootstrapMenu.getState());\r
151   }\r
152 \r
153   protected void placeholdersMenu_actionPerformed(ActionEvent e)\r
154   {\r
155       treeCanvas.setMarkPlaceholders(placeholdersMenu.getState());\r
156   }\r
157 \r
158 }\r