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;
6 this.deleteFeature = false;
7 this.colourPanel = null;
8 if (!Clazz.isClassDefined ("jalview.appletgui.FeatureRenderer.FeatureColourPanel")) {
9 jalview.appletgui.FeatureRenderer.$FeatureRenderer$FeatureColourPanel$ ();
11 Clazz.instantialize (this, arguments);
12 }, jalview.appletgui, "FeatureRenderer", jalview.renderer.seqfeatures.FeatureRenderer);
13 Clazz.makeConstructor (c$,
15 Clazz.superConstructor (this, jalview.appletgui.FeatureRenderer);
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);
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);
33 var panel = new awt2swing.Panel ( new java.awt.GridLayout (3, 1));
34 this.featureIndex = 0;
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);
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))));
50 }tmp = new awt2swing.Panel ();
52 tmp.add ( new awt2swing.Label ("Name: ", 4));
54 tmp = new awt2swing.Panel ();
56 tmp.add ( new awt2swing.Label ("Group: ", 4));
58 tmp = new awt2swing.Panel ();
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));
67 bigPanel.add (panel, "South");
68 panel = new awt2swing.Panel ();
69 panel.add ( new awt2swing.Label (" Start:", 4));
71 panel.add ( new awt2swing.Label (" End:", 4));
73 bigPanel.add (panel, "Center");
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;
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;
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);
90 name.setText (jalview.appletgui.FeatureRenderer.lastFeatureAdded);
91 source.setText (jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded);
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 ());
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 ();
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;
118 var sf = features[this.featureIndex];
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 ());
126 sf.begin = Integer.parseInt (start.getText ());
127 sf.end = Integer.parseInt (end.getText ());
129 if (Clazz.exceptionOf (ex, NumberFormatException)) {
134 ffile.parseDescriptionHTML (sf, false);
135 this.setVisible (jalview.appletgui.FeatureRenderer.lastFeatureAdded);
136 }if (this.deleteFeature) {
137 sequences[0].deleteFeature (sf);
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);
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);
155 }}if ((this.av).featureSettings != null) {
156 (this.av).featureSettings.refreshTable ();
157 }ap.paintAlignment (true);
159 }, "~A,~A,~B,jalview.appletgui.AlignmentPanel");
160 c$.$FeatureRenderer$FeatureColourPanel$ = function () {
162 c$ = Clazz.decorateAsClass (function () {
163 Clazz.prepareCallback (this, arguments);
166 this.isColourByLabel = false;
168 Clazz.instantialize (this, arguments);
169 }, jalview.appletgui.FeatureRenderer, "FeatureColourPanel", awt2swing.Panel);
170 Clazz.defineMethod (c$, "updateColor",
176 if (Clazz.instanceOf (a, java.awt.Color)) {
180 } else if (Clazz.instanceOf (a, jalview.schemes.GraduatedColor)) {
185 throw new Error (jalview.util.MessageManager.getString ("error.invalid_colour_for_mycheckbox"));
187 this.setBackground (b = c);
189 if (d.getThreshType () != -1) {
190 e += " " + ((d.getThreshType () == 1) ? "(>)" : "(<)");
191 }if (this.isColourByLabel = d.isColourByLabel ()) {
192 this.setBackground (b = java.awt.Color.white);
195 this.setBackground (b = d.getMinColor ());
196 this.maxCol = d.getMaxColor ();
198 this.setBackground (b);
201 Clazz.makeConstructor (c$,
203 Clazz.superConstructor (this, jalview.appletgui.FeatureRenderer.FeatureColourPanel, [null]);
205 Clazz.defineMethod (c$, "PaintComponent",
207 var b = this.getSize ();
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);
215 a.drawString (jalview.util.MessageManager.getString ("label.label"), 0, 0);
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");
222 c$.$FeatureRenderer$1$ = function () {
224 c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureRenderer$1", null, java.awt.event.ItemListener);
225 Clazz.overrideMethod (c$, "itemStateChanged",
227 var index = this.f$.overlaps.getSelectedIndex ();
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 ());
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");
245 c$.$FeatureRenderer$2$ = function () {
247 c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureRenderer$2", null, java.awt.event.ActionListener);
248 Clazz.overrideMethod (c$, "actionPerformed",
250 this.b$["jalview.appletgui.FeatureRenderer"].deleteFeature = true;
251 this.f$.dialog.setVisible (false);
252 }, "java.awt.event.ActionEvent");
255 c$.$FeatureRenderer$3$ = function () {
257 c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureRenderer$3", java.awt.event.MouseAdapter);
258 Clazz.overrideMethod (c$, "mousePressed",
260 if (!this.b$["jalview.appletgui.FeatureRenderer"].colourPanel.isGcol) {
261 new jalview.appletgui.UserDefinedColours (this.f$.fr, this.f$.ap.alignFrame);
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");
268 Clazz.defineStatics (c$,
269 "lastFeatureAdded", null,
270 "lastFeatureGroupAdded", null,
271 "lastDescriptionAdded", null);