JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / bin / jalview / appletgui / FeatureRenderer.js
1 Clazz.declarePackage ("jalview.appletgui");\r
2 Clazz.load (["awt2swing.Panel", "jalview.renderer.seqfeatures.FeatureRenderer"], "jalview.appletgui.FeatureRenderer", ["awt2swing.Button", "$.Choice", "$.Label", "$.ScrollPane", "$.TextArea", "$.TextField", "jalview.appletgui.FeatureColourChooser", "$.JVDialog", "$.UserDefinedColours", "jalview.datamodel.SearchResults", "jalview.io.FeaturesFile", "jalview.schemes.GraduatedColor", "$.UserColourScheme", "jalview.util.MessageManager", "java.awt.BorderLayout", "$.Color", "$.Font", "$.GridLayout", "java.awt.event.ActionListener", "$.ItemListener", "$.MouseAdapter", "java.lang.Error"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this.featureLinks = null;\r
5 this.featureIndex = 0;\r
6 this.deleteFeature = false;\r
7 this.colourPanel = null;\r
8 if (!Clazz.isClassDefined ("jalview.appletgui.FeatureRenderer.FeatureColourPanel")) {\r
9 jalview.appletgui.FeatureRenderer.$FeatureRenderer$FeatureColourPanel$ ();\r
10 }\r
11 Clazz.instantialize (this, arguments);\r
12 }, jalview.appletgui, "FeatureRenderer", jalview.renderer.seqfeatures.FeatureRenderer);\r
13 Clazz.makeConstructor (c$, \r
14 function (av) {\r
15 Clazz.superConstructor (this, jalview.appletgui.FeatureRenderer);\r
16 this.av = av;\r
17 this.setTransparencyAvailable (!System.getProperty ("java.version").startsWith ("1.1"));\r
18 }, "jalview.viewmodel.AlignmentViewport");\r
19 Clazz.defineMethod (c$, "amendFeatures", \r
20 function (sequences, features, newFeatures, ap) {\r
21 var bigPanel =  new awt2swing.Panel ( new java.awt.BorderLayout ());\r
22 var name =  new awt2swing.TextField (16);\r
23 var source =  new awt2swing.TextField (16);\r
24 var description =  new awt2swing.TextArea (3, 35);\r
25 var start =  new awt2swing.TextField (8);\r
26 var end =  new awt2swing.TextField (8);\r
27 var overlaps;\r
28 var deleteButton =  new awt2swing.Button ("Delete");\r
29 this.deleteFeature = false;\r
30 this.colourPanel = Clazz.innerTypeInstance (jalview.appletgui.FeatureRenderer.FeatureColourPanel, this, null);\r
31 this.colourPanel.setSize (110, 15);\r
32 var fr = this;\r
33 var panel =  new awt2swing.Panel ( new java.awt.GridLayout (3, 1));\r
34 this.featureIndex = 0;\r
35 var tmp;\r
36 if (!newFeatures && features.length > 1) {\r
37 panel =  new awt2swing.Panel ( new java.awt.GridLayout (4, 1));\r
38 tmp =  new awt2swing.Panel ();\r
39 tmp.add ( new awt2swing.Label ("Select Feature: "));\r
40 overlaps =  new awt2swing.Choice ();\r
41 for (var i = 0; i < features.length; i++) {\r
42 var item = features[i].getType () + "/" + features[i].getBegin () + "-" + features[i].getEnd ();\r
43 if (features[i].getFeatureGroup () != null) {\r
44 item += " (" + features[i].getFeatureGroup () + ")";\r
45 }overlaps.addItem (item);\r
46 }\r
47 tmp.add (overlaps);\r
48 overlaps.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.FeatureRenderer$1") ? 0 : jalview.appletgui.FeatureRenderer.$FeatureRenderer$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureRenderer$1, this, Clazz.cloneFinals ("overlaps", overlaps, "name", name, "features", features, "description", description, "source", source, "start", start, "end", end, "sequences", sequences, "ap", ap))));\r
49 panel.add (tmp);\r
50 }tmp =  new awt2swing.Panel ();\r
51 panel.add (tmp);\r
52 tmp.add ( new awt2swing.Label ("Name: ", 4));\r
53 tmp.add (name);\r
54 tmp =  new awt2swing.Panel ();\r
55 panel.add (tmp);\r
56 tmp.add ( new awt2swing.Label ("Group: ", 4));\r
57 tmp.add (source);\r
58 tmp =  new awt2swing.Panel ();\r
59 panel.add (tmp);\r
60 tmp.add ( new awt2swing.Label ("Colour: ", 4));\r
61 tmp.add (this.colourPanel);\r
62 bigPanel.add (panel, "North");\r
63 panel =  new awt2swing.Panel ();\r
64 panel.add ( new awt2swing.Label ("Description: ", 4));\r
65 panel.add ( new awt2swing.ScrollPane ().add (description));\r
66 if (!newFeatures) {\r
67 bigPanel.add (panel, "South");\r
68 panel =  new awt2swing.Panel ();\r
69 panel.add ( new awt2swing.Label (" Start:", 4));\r
70 panel.add (start);\r
71 panel.add ( new awt2swing.Label ("  End:", 4));\r
72 panel.add (end);\r
73 bigPanel.add (panel, "Center");\r
74 } else {\r
75 bigPanel.add (panel, "Center");\r
76 }if (jalview.appletgui.FeatureRenderer.lastFeatureAdded == null) {\r
77 if (features[0].type != null) {\r
78 jalview.appletgui.FeatureRenderer.lastFeatureAdded = features[0].type;\r
79 } else {\r
80 jalview.appletgui.FeatureRenderer.lastFeatureAdded = "feature_1";\r
81 }}if (jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded == null) {\r
82 if (features[0].featureGroup != null) {\r
83 jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded = features[0].featureGroup;\r
84 } else {\r
85 jalview.appletgui.FeatureRenderer.lastFeatureAdded = "Jalview";\r
86 }}var title = newFeatures ? jalview.util.MessageManager.getString ("label.create_new_sequence_features") : jalview.util.MessageManager.formatMessage ("label.amend_delete_features",  Clazz.newArray (-1, [sequences[0].getName ()]));\r
87 var dialog =  new jalview.appletgui.JVDialog (ap.alignFrame, title, true, 385, 240);\r
88 dialog.setMainPanel (bigPanel);\r
89 if (newFeatures) {\r
90 name.setText (jalview.appletgui.FeatureRenderer.lastFeatureAdded);\r
91 source.setText (jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded);\r
92 } else {\r
93 dialog.ok.setLabel (jalview.util.MessageManager.getString ("label.amend"));\r
94 dialog.buttonPanel.add (deleteButton, 1);\r
95 deleteButton.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.FeatureRenderer$2") ? 0 : jalview.appletgui.FeatureRenderer.$FeatureRenderer$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureRenderer$2, this, Clazz.cloneFinals ("dialog", dialog))));\r
96 name.setText (features[0].getType ());\r
97 source.setText (features[0].getFeatureGroup ());\r
98 }start.setText (features[0].getBegin () + "");\r
99 end.setText (features[0].getEnd () + "");\r
100 description.setText (features[0].getDescription ());\r
101 var col = this.getColour (name.getText ());\r
102 if (col == null) {\r
103 col =  new jalview.schemes.UserColourScheme ().createColourFromName (name.getText ());\r
104 }var fcol = this.getFeatureStyle (name.getText ());\r
105 this.colourPanel.updateColor (fcol);\r
106 dialog.setResizable (true);\r
107 this.colourPanel.addMouseListener (((Clazz.isClassDefined ("jalview.appletgui.FeatureRenderer$3") ? 0 : jalview.appletgui.FeatureRenderer.$FeatureRenderer$3$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureRenderer$3, this, Clazz.cloneFinals ("fr", fr, "ap", ap, "name", name, "dialog", dialog))));\r
108 dialog.setVisible (true);\r
109 var ffile =  new jalview.io.FeaturesFile ();\r
110 if (dialog.accept) {\r
111 this.lastSeq = null;\r
112 jalview.appletgui.FeatureRenderer.lastFeatureAdded = name.getText ().trim ();\r
113 jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded = source.getText ().trim ();\r
114 jalview.appletgui.FeatureRenderer.lastDescriptionAdded = description.getText ().$replace ('\n', ' ');\r
115 }if (jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded != null && jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded.length < 1) {\r
116 jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded = null;\r
117 }if (!newFeatures) {\r
118 var sf = features[this.featureIndex];\r
119 if (dialog.accept) {\r
120 sf.type = jalview.appletgui.FeatureRenderer.lastFeatureAdded;\r
121 sf.featureGroup = jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded;\r
122 sf.description = jalview.appletgui.FeatureRenderer.lastDescriptionAdded;\r
123 if (!this.colourPanel.isGcol) {\r
124 this.setColour (sf.type, this.colourPanel.getBackground ());\r
125 }try {\r
126 sf.begin = Integer.parseInt (start.getText ());\r
127 sf.end = Integer.parseInt (end.getText ());\r
128 } catch (ex) {\r
129 if (Clazz.exceptionOf (ex, NumberFormatException)) {\r
130 } else {\r
131 throw ex;\r
132 }\r
133 }\r
134 ffile.parseDescriptionHTML (sf, false);\r
135 this.setVisible (jalview.appletgui.FeatureRenderer.lastFeatureAdded);\r
136 }if (this.deleteFeature) {\r
137 sequences[0].deleteFeature (sf);\r
138 }} else {\r
139 if (dialog.accept && name.getText ().length > 0) {\r
140 for (var i = 0; i < sequences.length; i++) {\r
141 features[i].type = jalview.appletgui.FeatureRenderer.lastFeatureAdded;\r
142 features[i].featureGroup = jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded;\r
143 features[i].description = jalview.appletgui.FeatureRenderer.lastDescriptionAdded;\r
144 sequences[i].addSequenceFeature (features[i]);\r
145 ffile.parseDescriptionHTML (features[i], false);\r
146 }\r
147 var newColour = this.colourPanel.getBackground ();\r
148 if (jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded != null) {\r
149 this.setGroupVisibility (jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded, true);\r
150 }this.setColour (jalview.appletgui.FeatureRenderer.lastFeatureAdded, newColour);\r
151 this.setVisible (jalview.appletgui.FeatureRenderer.lastFeatureAdded);\r
152 this.findAllFeatures (false);\r
153 } else {\r
154 return false;\r
155 }}if ((this.av).featureSettings != null) {\r
156 (this.av).featureSettings.refreshTable ();\r
157 }ap.paintAlignment (true);\r
158 return true;\r
159 }, "~A,~A,~B,jalview.appletgui.AlignmentPanel");\r
160 c$.$FeatureRenderer$FeatureColourPanel$ = function () {\r
161 Clazz.pu$h ();\r
162 c$ = Clazz.decorateAsClass (function () {\r
163 Clazz.prepareCallback (this, arguments);\r
164 this.label = "";\r
165 this.maxCol = null;\r
166 this.isColourByLabel = false;\r
167 this.isGcol = false;\r
168 Clazz.instantialize (this, arguments);\r
169 }, jalview.appletgui.FeatureRenderer, "FeatureColourPanel", awt2swing.Panel);\r
170 Clazz.defineMethod (c$, "updateColor", \r
171 function (a) {\r
172 var b;\r
173 var c = null;\r
174 var d = null;\r
175 var e = "";\r
176 if (Clazz.instanceOf (a, java.awt.Color)) {\r
177 this.isGcol = false;\r
178 c = a;\r
179 d = null;\r
180 } else if (Clazz.instanceOf (a, jalview.schemes.GraduatedColor)) {\r
181 this.isGcol = true;\r
182 d = a;\r
183 c = null;\r
184 } else {\r
185 throw  new Error (jalview.util.MessageManager.getString ("error.invalid_colour_for_mycheckbox"));\r
186 }if (c != null) {\r
187 this.setBackground (b = c);\r
188 } else {\r
189 if (d.getThreshType () != -1) {\r
190 e += " " + ((d.getThreshType () == 1) ? "(>)" : "(<)");\r
191 }if (this.isColourByLabel = d.isColourByLabel ()) {\r
192 this.setBackground (b = java.awt.Color.white);\r
193 e += " (by Label)";\r
194 } else {\r
195 this.setBackground (b = d.getMinColor ());\r
196 this.maxCol = d.getMaxColor ();\r
197 }}this.label = e;\r
198 this.setBackground (b);\r
199 this.repaint ();\r
200 }, "~O");\r
201 Clazz.makeConstructor (c$, \r
202 function () {\r
203 Clazz.superConstructor (this, jalview.appletgui.FeatureRenderer.FeatureColourPanel, [null]);\r
204 });\r
205 Clazz.defineMethod (c$, "PaintComponent", \r
206 function (a) {\r
207 var b = this.getSize ();\r
208 if (this.isGcol) {\r
209 if (this.isColourByLabel) {\r
210 a.setColor (java.awt.Color.white);\r
211 a.fillRect (Clazz.doubleToInt (b.width / 2), 0, Clazz.doubleToInt (b.width / 2), b.height);\r
212 a.setColor (java.awt.Color.black);\r
213 var c =  new java.awt.Font ("Verdana", 0, 10);\r
214 a.setFont (c);\r
215 a.drawString (jalview.util.MessageManager.getString ("label.label"), 0, 0);\r
216 } else {\r
217 a.setColor (this.maxCol);\r
218 a.fillRect (Clazz.doubleToInt (b.width / 2), 0, Clazz.doubleToInt (b.width / 2), b.height);\r
219 }}}, "java.awt.Graphics");\r
220 c$ = Clazz.p0p ();\r
221 };\r
222 c$.$FeatureRenderer$1$ = function () {\r
223 Clazz.pu$h ();\r
224 c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureRenderer$1", null, java.awt.event.ItemListener);\r
225 Clazz.overrideMethod (c$, "itemStateChanged", \r
226 function (e) {\r
227 var index = this.f$.overlaps.getSelectedIndex ();\r
228 if (index != -1) {\r
229 this.b$["jalview.appletgui.FeatureRenderer"].featureIndex = index;\r
230 this.f$.name.setText (this.f$.features[index].getType ());\r
231 this.f$.description.setText (this.f$.features[index].getDescription ());\r
232 this.f$.source.setText (this.f$.features[index].getFeatureGroup ());\r
233 this.f$.start.setText (this.f$.features[index].getBegin () + "");\r
234 this.f$.end.setText (this.f$.features[index].getEnd () + "");\r
235 var highlight =  new jalview.datamodel.SearchResults ();\r
236 highlight.addResult (this.f$.sequences[0], this.f$.features[index].getBegin (), this.f$.features[index].getEnd ());\r
237 this.f$.ap.seqPanel.seqCanvas.highlightSearchResults (highlight);\r
238 }var col = this.b$["jalview.appletgui.FeatureRenderer"].getFeatureStyle (this.f$.name.getText ());\r
239 if (col == null) {\r
240 col =  new jalview.schemes.UserColourScheme ().createColourFromName (this.f$.name.getText ());\r
241 }this.b$["jalview.appletgui.FeatureRenderer"].colourPanel.updateColor (col);\r
242 }, "java.awt.event.ItemEvent");\r
243 c$ = Clazz.p0p ();\r
244 };\r
245 c$.$FeatureRenderer$2$ = function () {\r
246 Clazz.pu$h ();\r
247 c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureRenderer$2", null, java.awt.event.ActionListener);\r
248 Clazz.overrideMethod (c$, "actionPerformed", \r
249 function (evt) {\r
250 this.b$["jalview.appletgui.FeatureRenderer"].deleteFeature = true;\r
251 this.f$.dialog.setVisible (false);\r
252 }, "java.awt.event.ActionEvent");\r
253 c$ = Clazz.p0p ();\r
254 };\r
255 c$.$FeatureRenderer$3$ = function () {\r
256 Clazz.pu$h ();\r
257 c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureRenderer$3", java.awt.event.MouseAdapter);\r
258 Clazz.overrideMethod (c$, "mousePressed", \r
259 function (evt) {\r
260 if (!this.b$["jalview.appletgui.FeatureRenderer"].colourPanel.isGcol) {\r
261  new jalview.appletgui.UserDefinedColours (this.f$.fr, this.f$.ap.alignFrame);\r
262 } else {\r
263 var fcc =  new jalview.appletgui.FeatureColourChooser (this.f$.ap.alignFrame, this.f$.name.getText ());\r
264 this.f$.dialog.transferFocus ();\r
265 }}, "java.awt.event.MouseEvent");\r
266 c$ = Clazz.p0p ();\r
267 };\r
268 Clazz.defineStatics (c$,\r
269 "lastFeatureAdded", null,\r
270 "lastFeatureGroupAdded", null,\r
271 "lastDescriptionAdded", null);\r
272 });\r