JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / bin / jalview / appletgui / TreePanel.js
1 Clazz.declarePackage ("jalview.appletgui");\r
2 Clazz.load (["jalview.appletgui.EmbmenuFrame", "java.awt.event.ActionListener", "$.ItemListener", "java.lang.Thread", "awt2swing.CheckboxMenuItem", "$.Menu", "$.MenuBar", "$.MenuItem", "$.ScrollPane", "java.awt.BorderLayout"], "jalview.appletgui.TreePanel", ["awt2swing.Frame", "jalview.analysis.NJTree", "jalview.api.analysis.ViewBasedAnalysisI", "jalview.appletgui.AlignFrame", "$.CutAndPasteTransfer", "$.FontChooser", "$.TreeCanvas", "jalview.bin.JalviewLite", "jalview.datamodel.Alignment", "jalview.io.NewickFile", "jalview.schemes.ResidueProperties", "jalview.util.MessageManager", "java.awt.Color", "$.Font"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this.seq = null;\r
5 this.$type = null;\r
6 this.pwtype = null;\r
7 this.start = 0;\r
8 this.end = 0;\r
9 this.treeCanvas = null;\r
10 this.tree = null;\r
11 this.ap = null;\r
12 this.av = null;\r
13 if (!Clazz.isClassDefined ("jalview.appletgui.TreePanel.TreeLoader")) {\r
14 jalview.appletgui.TreePanel.$TreePanel$TreeLoader$ ();\r
15 }\r
16 this.borderLayout1 = null;\r
17 this.scrollPane = null;\r
18 this.jMenuBar1 = null;\r
19 this.jMenu2 = null;\r
20 this.fontSize = null;\r
21 this.bootstrapMenu = null;\r
22 this.distanceMenu = null;\r
23 this.placeholdersMenu = null;\r
24 this.fitToWindow = null;\r
25 this.fileMenu = null;\r
26 this.newickOutput = null;\r
27 this.inputData = null;\r
28 Clazz.instantialize (this, arguments);\r
29 }, jalview.appletgui, "TreePanel", jalview.appletgui.EmbmenuFrame, [java.awt.event.ActionListener, java.awt.event.ItemListener]);\r
30 Clazz.prepareFields (c$, function () {\r
31 this.borderLayout1 =  new java.awt.BorderLayout ();\r
32 this.scrollPane =  new awt2swing.ScrollPane ();\r
33 this.jMenuBar1 =  new awt2swing.MenuBar ();\r
34 this.jMenu2 =  new awt2swing.Menu ();\r
35 this.fontSize =  new awt2swing.MenuItem ();\r
36 this.bootstrapMenu =  new awt2swing.CheckboxMenuItem ();\r
37 this.distanceMenu =  new awt2swing.CheckboxMenuItem ();\r
38 this.placeholdersMenu =  new awt2swing.CheckboxMenuItem ();\r
39 this.fitToWindow =  new awt2swing.CheckboxMenuItem ();\r
40 this.fileMenu =  new awt2swing.Menu ();\r
41 this.newickOutput =  new awt2swing.MenuItem ();\r
42 this.inputData =  new awt2swing.MenuItem ();\r
43 });\r
44 Clazz.defineMethod (c$, "getTree", \r
45 function () {\r
46 return this.tree;\r
47 });\r
48 Clazz.defineMethod (c$, "finalize", \r
49 function () {\r
50 this.ap = null;\r
51 this.av = null;\r
52 Clazz.superCall (this, jalview.appletgui.TreePanel, "finalize", []);\r
53 });\r
54 Clazz.makeConstructor (c$, \r
55 function (ap, type, pwtype) {\r
56 Clazz.superConstructor (this, jalview.appletgui.TreePanel, []);\r
57 try {\r
58 this.jbInit ();\r
59 this.setMenuBar (this.jMenuBar1);\r
60 } catch (ex) {\r
61 if (Clazz.exceptionOf (ex, Exception)) {\r
62 ex.printStackTrace ();\r
63 } else {\r
64 throw ex;\r
65 }\r
66 }\r
67 this.initTreePanel (ap, type, pwtype, null);\r
68 }, "jalview.appletgui.AlignmentPanel,~S,~S");\r
69 Clazz.makeConstructor (c$, \r
70 function (ap, type, pwtype, newtree) {\r
71 Clazz.superConstructor (this, jalview.appletgui.TreePanel, []);\r
72 try {\r
73 this.jbInit ();\r
74 this.setMenuBar (this.jMenuBar1);\r
75 } catch (e) {\r
76 if (Clazz.exceptionOf (e, Exception)) {\r
77 e.printStackTrace ();\r
78 } else {\r
79 throw e;\r
80 }\r
81 }\r
82 this.initTreePanel (ap, type, pwtype, newtree);\r
83 }, "jalview.appletgui.AlignmentPanel,~S,~S,jalview.io.NewickFile");\r
84 Clazz.defineMethod (c$, "initTreePanel", \r
85 function (ap, type, pwtype, newTree) {\r
86 this.ap = ap;\r
87 this.av = ap.av;\r
88 this.$type = type;\r
89 this.pwtype = pwtype;\r
90 this.treeCanvas =  new jalview.appletgui.TreeCanvas (ap, this.scrollPane);\r
91 var tl = Clazz.innerTypeInstance (jalview.appletgui.TreePanel.TreeLoader, this, null, newTree);\r
92 tl.start ();\r
93 this.embedMenuIfNeeded (this.treeCanvas);\r
94 this.scrollPane.add (this.treeCanvas, "Center");\r
95 }, "jalview.appletgui.AlignmentPanel,~S,~S,jalview.io.NewickFile");\r
96 Clazz.defineMethod (c$, "showOriginalData", \r
97 function () {\r
98 if (this.tree.seqData != null) {\r
99 var gc = '-';\r
100 try {\r
101 gc = this.av.getGapCharacter ();\r
102 } catch (ex) {\r
103 if (Clazz.exceptionOf (ex, Exception)) {\r
104 } else {\r
105 throw ex;\r
106 }\r
107 }\r
108 ;var alAndColsel = this.tree.seqData.getAlignmentAndColumnSelection (gc);\r
109 if (alAndColsel != null && alAndColsel[0] != null) {\r
110 var al =  new jalview.datamodel.Alignment (alAndColsel[0]);\r
111 var af =  new jalview.appletgui.AlignFrame (al, this.av.applet, "Original Data for Tree", false);\r
112 af.viewport.setHiddenColumns (alAndColsel[1]);\r
113 }} else {\r
114 System.out.println ("Original Tree Data not available");\r
115 }});\r
116 Clazz.overrideMethod (c$, "actionPerformed", \r
117 function (evt) {\r
118 if (evt.getSource () === this.newickOutput) {\r
119 this.newickOutput_actionPerformed ();\r
120 } else if (evt.getSource () === this.fontSize) {\r
121 this.fontSize_actionPerformed ();\r
122 } else if (evt.getSource () === this.inputData) {\r
123 this.showOriginalData ();\r
124 }}, "java.awt.event.ActionEvent");\r
125 Clazz.overrideMethod (c$, "itemStateChanged", \r
126 function (evt) {\r
127 if (evt.getSource () === this.fitToWindow) {\r
128 this.treeCanvas.fitToWindow = this.fitToWindow.getState ();\r
129 } else if (evt.getSource () === this.distanceMenu) {\r
130 this.treeCanvas.setShowDistances (this.distanceMenu.getState ());\r
131 } else if (evt.getSource () === this.bootstrapMenu) {\r
132 this.treeCanvas.setShowBootstrap (this.bootstrapMenu.getState ());\r
133 } else if (evt.getSource () === this.placeholdersMenu) {\r
134 this.treeCanvas.setMarkPlaceholders (this.placeholdersMenu.getState ());\r
135 }this.treeCanvas.repaint ();\r
136 }, "java.awt.event.ItemEvent");\r
137 Clazz.defineMethod (c$, "newickOutput_actionPerformed", \r
138 function () {\r
139 var fout =  new jalview.io.NewickFile (this.tree.getTopNode ());\r
140 var output = fout.print (false, true);\r
141 var cap =  new jalview.appletgui.CutAndPasteTransfer (false, null);\r
142 cap.setText (output);\r
143 var frame =  new awt2swing.Frame ();\r
144 frame.add (cap);\r
145 jalview.bin.JalviewLite.addFrame (frame, this.$type + " " + this.pwtype, 500, 100);\r
146 });\r
147 Clazz.defineMethod (c$, "getTreeFont", \r
148 function () {\r
149 return this.treeCanvas.$font;\r
150 });\r
151 Clazz.defineMethod (c$, "setTreeFont", \r
152 function (font) {\r
153 this.treeCanvas.$font = font;\r
154 this.treeCanvas.repaint ();\r
155 }, "java.awt.Font");\r
156 Clazz.defineMethod (c$, "fontSize_actionPerformed", \r
157 function () {\r
158 if (this.treeCanvas == null) {\r
159 return;\r
160 } new jalview.appletgui.FontChooser (this);\r
161 });\r
162 Clazz.defineMethod (c$, "jbInit", \r
163 ($fz = function () {\r
164 this.setLayout (this.borderLayout1);\r
165 this.setBackground (java.awt.Color.white);\r
166 this.setFont ( new java.awt.Font ("Verdana", 0, 12));\r
167 this.jMenu2.setLabel (jalview.util.MessageManager.getString ("action.view"));\r
168 this.fontSize.setLabel (jalview.util.MessageManager.getString ("action.font"));\r
169 this.fontSize.addActionListener (this);\r
170 this.bootstrapMenu.setLabel (jalview.util.MessageManager.getString ("label.show_bootstrap_values"));\r
171 this.bootstrapMenu.addItemListener (this);\r
172 this.distanceMenu.setLabel (jalview.util.MessageManager.getString ("label.show_distances"));\r
173 this.distanceMenu.addItemListener (this);\r
174 this.placeholdersMenu.setLabel (jalview.util.MessageManager.getString ("label.mark_unassociated_leaves"));\r
175 this.placeholdersMenu.addItemListener (this);\r
176 this.fitToWindow.setState (true);\r
177 this.fitToWindow.setLabel (jalview.util.MessageManager.getString ("label.fit_to_window"));\r
178 this.fitToWindow.addItemListener (this);\r
179 this.fileMenu.setLabel (jalview.util.MessageManager.getString ("action.file"));\r
180 this.newickOutput.setLabel (jalview.util.MessageManager.getString ("label.newick_format"));\r
181 this.newickOutput.addActionListener (this);\r
182 this.inputData.setLabel (jalview.util.MessageManager.getString ("label.input_data"));\r
183 this.add (this.scrollPane, "Center");\r
184 this.jMenuBar1.add (this.fileMenu);\r
185 this.jMenuBar1.add (this.jMenu2);\r
186 this.jMenu2.add (this.fitToWindow);\r
187 this.jMenu2.add (this.fontSize);\r
188 this.jMenu2.add (this.distanceMenu);\r
189 this.jMenu2.add (this.bootstrapMenu);\r
190 this.jMenu2.add (this.placeholdersMenu);\r
191 this.fileMenu.add (this.newickOutput);\r
192 this.fileMenu.add (this.inputData);\r
193 this.inputData.addActionListener (this);\r
194 }, $fz.isPrivate = true, $fz));\r
195 c$.$TreePanel$TreeLoader$ = function () {\r
196 Clazz.pu$h ();\r
197 c$ = Clazz.decorateAsClass (function () {\r
198 Clazz.prepareCallback (this, arguments);\r
199 this.newtree = null;\r
200 this.odata = null;\r
201 Clazz.instantialize (this, arguments);\r
202 }, jalview.appletgui.TreePanel, "TreeLoader", Thread);\r
203 Clazz.makeConstructor (c$, \r
204 function (a) {\r
205 Clazz.superConstructor (this, jalview.appletgui.TreePanel.TreeLoader, []);\r
206 this.newtree = a;\r
207 }, "jalview.io.NewickFile");\r
208 Clazz.overrideMethod (c$, "run", \r
209 function () {\r
210 if (this.newtree != null) {\r
211 if (this.odata == null) {\r
212 this.b$["jalview.appletgui.TreePanel"].tree =  new jalview.analysis.NJTree (this.b$["jalview.appletgui.TreePanel"].av.getAlignment ().getSequencesArray (), this.newtree);\r
213 } else {\r
214 this.b$["jalview.appletgui.TreePanel"].tree =  new jalview.analysis.NJTree (this.b$["jalview.appletgui.TreePanel"].av.getAlignment ().getSequencesArray (), this.odata, this.newtree);\r
215 }} else {\r
216 var a;\r
217 var b;\r
218 var c;\r
219 var d = this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup () != null && this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup ().getSize () > 1;\r
220 var e = this.b$["jalview.appletgui.TreePanel"].av.getAlignmentView (d);\r
221 if (!d) {\r
222 a = 0;\r
223 b = this.b$["jalview.appletgui.TreePanel"].av.getAlignment ().getWidth ();\r
224 c = this.b$["jalview.appletgui.TreePanel"].av.getAlignment ().getSequencesArray ();\r
225 } else {\r
226 a = this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup ().getStartRes ();\r
227 b = this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup ().getEndRes () + 1;\r
228 c = this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup ().getSequencesInOrder (this.b$["jalview.appletgui.TreePanel"].av.getAlignment ());\r
229 }var f = jalview.schemes.ResidueProperties.getScoreModel (this.b$["jalview.appletgui.TreePanel"].pwtype);\r
230 if (Clazz.instanceOf (f, jalview.api.analysis.ViewBasedAnalysisI)) {\r
231 try {\r
232 f = f.getClass ().newInstance ();\r
233 (f).configureFromAlignmentView (this.b$["jalview.appletgui.TreePanel"].treeCanvas.ap);\r
234 } catch (q) {\r
235 if (Clazz.exceptionOf (q, Exception)) {\r
236 System.err.println ("Couldn't create a scoremodel instance for " + f.getName ());\r
237 q.printStackTrace ();\r
238 } else {\r
239 throw q;\r
240 }\r
241 }\r
242 this.b$["jalview.appletgui.TreePanel"].tree =  new jalview.analysis.NJTree (c, e, this.b$["jalview.appletgui.TreePanel"].$type, this.b$["jalview.appletgui.TreePanel"].pwtype, f, a, b);\r
243 } else {\r
244 this.b$["jalview.appletgui.TreePanel"].tree =  new jalview.analysis.NJTree (c, e, this.b$["jalview.appletgui.TreePanel"].$type, this.b$["jalview.appletgui.TreePanel"].pwtype, null, a, b);\r
245 }}this.b$["jalview.appletgui.TreePanel"].tree.reCount (this.b$["jalview.appletgui.TreePanel"].tree.getTopNode ());\r
246 this.b$["jalview.appletgui.TreePanel"].tree.findHeight (this.b$["jalview.appletgui.TreePanel"].tree.getTopNode ());\r
247 this.b$["jalview.appletgui.TreePanel"].treeCanvas.setTree (this.b$["jalview.appletgui.TreePanel"].tree);\r
248 if (this.newtree != null) {\r
249 var a = this.newtree.HasDistances () && this.b$["jalview.appletgui.TreePanel"].av.applet.getDefaultParameter ("showTreeDistances", this.newtree.HasDistances ());\r
250 var b = this.newtree.HasBootstrap () && this.b$["jalview.appletgui.TreePanel"].av.applet.getDefaultParameter ("showTreeBootstraps", this.newtree.HasBootstrap ());\r
251 this.b$["jalview.appletgui.TreePanel"].distanceMenu.setState (a);\r
252 this.b$["jalview.appletgui.TreePanel"].bootstrapMenu.setState (b);\r
253 this.b$["jalview.appletgui.TreePanel"].treeCanvas.setShowBootstrap (b);\r
254 this.b$["jalview.appletgui.TreePanel"].treeCanvas.setShowDistances (a);\r
255 this.b$["jalview.appletgui.TreePanel"].treeCanvas.setMarkPlaceholders (this.b$["jalview.appletgui.TreePanel"].av.applet.getDefaultParameter ("showUnlinkedTreeNodes", false));\r
256 }this.b$["jalview.appletgui.TreePanel"].treeCanvas.repaint ();\r
257 this.b$["jalview.appletgui.TreePanel"].av.setCurrentTree (this.b$["jalview.appletgui.TreePanel"].tree);\r
258 });\r
259 c$ = Clazz.p0p ();\r
260 };\r
261 });\r