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