1 Clazz.declarePackage ("jalview.appletgui");
\r
2 Clazz.load (["awt2swing.Panel", "java.awt.event.MouseListener", "$.MouseMotionListener", "java.lang.Thread", "java.util.Vector"], "jalview.appletgui.IdPanel", ["jalview.appletgui.APopupMenu", "$.IdCanvas", "$.PaintRefresher", "$.Tooltip", "jalview.datamodel.SequenceGroup", "jalview.util.UrlLink", "java.awt.BorderLayout", "java.lang.Float", "$.StringBuffer"], function () {
\r
3 c$ = Clazz.decorateAsClass (function () {
\r
4 this.idCanvas = null;
\r
6 this.alignPanel = null;
\r
7 this.scrollThread = null;
\r
9 this.mouseDragging = false;
\r
11 this.tooltip = null;
\r
12 if (!Clazz.isClassDefined ("jalview.appletgui.IdPanel.ScrollThread")) {
\r
13 jalview.appletgui.IdPanel.$IdPanel$ScrollThread$ ();
\r
15 Clazz.instantialize (this, arguments);
\r
16 }, jalview.appletgui, "IdPanel", awt2swing.Panel, [java.awt.event.MouseListener, java.awt.event.MouseMotionListener]);
\r
17 Clazz.prepareFields (c$, function () {
\r
18 this.links = new java.util.Vector ();
\r
20 Clazz.makeConstructor (c$,
\r
21 function (av, parent) {
\r
22 Clazz.superConstructor (this, jalview.appletgui.IdPanel, []);
\r
23 this.setName ("idPanel");
\r
25 this.alignPanel = parent;
\r
26 this.idCanvas = new jalview.appletgui.IdCanvas (av);
\r
27 this.setLayout ( new java.awt.BorderLayout ());
\r
28 this.add (this.idCanvas, "Center");
\r
29 this.idCanvas.addMouseListener (this);
\r
30 this.idCanvas.addMouseMotionListener (this);
\r
31 if (av.applet != null) {
\r
32 av.applet.getLinkParams (this.links);
\r
34 var srsPos = this.links.indexOf ("SRS|http://srs.ebi.ac.uk/srsbin/cgi-bin/wgetz?-newId+(([uniprot-all:$SEQUENCE_ID$]))+-view+SwissEntry");
\r
36 this.links.setElementAt ("EMBL-EBI Search|http://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$SEQUENCE_ID$", srsPos);
\r
37 }}if (this.links.size () < 1) {
\r
38 this.links = new java.util.Vector ();
\r
39 this.links.addElement ("EMBL-EBI Search|http://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$SEQUENCE_ID$");
\r
40 }}, "jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");
\r
41 Clazz.overrideMethod (c$, "mouseMoved",
\r
43 var seq = this.alignPanel.seqPanel.findSeq (e);
\r
44 var sequence = this.av.getAlignment ().getSequenceAt (seq);
\r
45 var tooltiptext = new StringBuffer ();
\r
46 if (sequence != null) {
\r
47 if (sequence.getDescription () != null) {
\r
48 tooltiptext.append (sequence.getDescription ());
\r
49 tooltiptext.append ("\n");
\r
50 }var sf = sequence.getSequenceFeatures ();
\r
51 for (var sl = 0; sf != null && sl < sf.length; sl++) {
\r
52 if (sf[sl].begin == sf[sl].end && sf[sl].begin == 0) {
\r
54 if (sf[sl].getFeatureGroup () != null) {
\r
55 tooltiptext.append (sf[sl].getFeatureGroup ());
\r
57 };if (sf[sl].getType () != null) {
\r
58 tooltiptext.append (" ");
\r
59 tooltiptext.append (sf[sl].getType ());
\r
61 };if (sf[sl].getDescription () != null) {
\r
62 tooltiptext.append (" ");
\r
63 tooltiptext.append (sf[sl].getDescription ());
\r
65 };if (!Float.isNaN (sf[sl].getScore ()) && sf[sl].getScore () != 0) {
\r
66 tooltiptext.append (" Score = ");
\r
67 tooltiptext.append (sf[sl].getScore ());
\r
69 };if (sf[sl].getStatus () != null && sf[sl].getStatus ().length > 0) {
\r
70 tooltiptext.append (" (");
\r
71 tooltiptext.append (sf[sl].getStatus ());
\r
72 tooltiptext.append (")");
\r
75 tooltiptext.append ("\n");
\r
77 }if (tooltiptext.length () == 0) {
\r
78 if (this.tooltip != null) {
\r
79 this.tooltip.setVisible (false);
\r
80 }this.tooltip = null;
\r
83 }if (this.tooltip == null) {
\r
84 this.tooltip = new jalview.appletgui.Tooltip (sequence.getDisplayId (true) + "\n" + tooltiptext.toString (), this.idCanvas);
\r
86 this.tooltip.setTip (sequence.getDisplayId (true) + "\n" + tooltiptext.toString ());
\r
87 }tooltiptext = null;
\r
88 }, "java.awt.event.MouseEvent");
\r
89 Clazz.overrideMethod (c$, "mouseDragged",
\r
91 this.mouseDragging = true;
\r
92 var seq = Math.max (0, this.alignPanel.seqPanel.findSeq (e));
\r
93 if (seq < this.lastid) {
\r
94 this.selectSeqs (this.lastid - 1, seq);
\r
95 } else if (seq > this.lastid) {
\r
96 this.selectSeqs (this.lastid + 1, seq);
\r
98 this.alignPanel.paintAlignment (false);
\r
99 }, "java.awt.event.MouseEvent");
\r
100 Clazz.overrideMethod (c$, "mouseClicked",
\r
102 if (e.getClickCount () < 2) {
\r
104 }var seq = this.alignPanel.seqPanel.findSeq (e);
\r
105 var sq = this.av.getAlignment ().getSequenceAt (seq);
\r
108 }var id = sq.getName ();
\r
112 while (url == null && i < this.links.size ()) {
\r
113 url = this.links.elementAt (i++).toString ();
\r
114 var urlLink = null;
\r
116 urlLink = new jalview.util.UrlLink (url);
\r
117 target = urlLink.getTarget ();
\r
119 if (Clazz.exceptionOf (foo, Exception)) {
\r
120 System.err.println ("Exception for URLLink '" + url + "'");
\r
121 foo.printStackTrace ();
\r
128 ;if (!urlLink.isValid ()) {
\r
129 System.err.println (urlLink.getInvalidMessage ());
\r
132 }var urls = urlLink.makeUrls (id, true);
\r
133 if (urls == null || urls[0] == null || urls[0].length < 1) {
\r
139 this.alignPanel.alignFrame.showURL (url, target);
\r
141 if (Clazz.exceptionOf (ex, Exception)) {
\r
142 ex.printStackTrace ();
\r
147 }, "java.awt.event.MouseEvent");
\r
148 Clazz.overrideMethod (c$, "mouseEntered",
\r
150 if (this.scrollThread != null) {
\r
151 this.scrollThread.running = false;
\r
152 }}, "java.awt.event.MouseEvent");
\r
153 Clazz.overrideMethod (c$, "mouseExited",
\r
155 if (this.av.getWrapAlignment ()) {
\r
157 }if (this.mouseDragging && e.getY () < 0 && this.av.getStartSeq () > 0) {
\r
158 this.scrollThread = Clazz.innerTypeInstance (jalview.appletgui.IdPanel.ScrollThread, this, null, true);
\r
159 }if (this.mouseDragging && e.getY () >= this.getSize ().height && this.av.getAlignment ().getHeight () > this.av.getEndSeq ()) {
\r
160 this.scrollThread = Clazz.innerTypeInstance (jalview.appletgui.IdPanel.ScrollThread, this, null, false);
\r
161 }}, "java.awt.event.MouseEvent");
\r
162 Clazz.overrideMethod (c$, "mousePressed",
\r
164 if (e.getClickCount () > 1) {
\r
166 }var y = e.getY ();
\r
167 if (this.av.getWrapAlignment ()) {
\r
168 y -= 2 * this.av.getCharHeight ();
\r
169 }var seq = this.alignPanel.seqPanel.findSeq (e);
\r
170 if ((e.getModifiers () & 4) == 4) {
\r
171 var sq = this.av.getAlignment ().getSequenceAt (seq);
\r
172 var nlinks = new java.util.Vector ();
\r
173 for (var l = 0, lSize = this.links.size (); l < lSize; l++) {
\r
174 nlinks.addElement (this.links.elementAt (l));
\r
176 var sf = sq == null ? null : sq.getSequenceFeatures ();
\r
177 for (var sl = 0; sf != null && sl < sf.length; sl++) {
\r
178 if (sf[sl].begin == sf[sl].end && sf[sl].begin == 0) {
\r
179 if (sf[sl].links != null && sf[sl].links.size () > 0) {
\r
180 for (var l = 0, lSize = sf[sl].links.size (); l < lSize; l++) {
\r
181 nlinks.addElement (sf[sl].links.elementAt (l));
\r
184 var popup = new jalview.appletgui.APopupMenu (this.alignPanel, sq, nlinks);
\r
186 popup.show (this, e.getX (), e.getY ());
\r
188 }if ((this.av.getSelectionGroup () == null) || ((!e.isControlDown () && !e.isShiftDown ()) && this.av.getSelectionGroup () != null)) {
\r
189 this.av.setSelectionGroup ( new jalview.datamodel.SequenceGroup ());
\r
190 this.av.getSelectionGroup ().setStartRes (0);
\r
191 this.av.getSelectionGroup ().setEndRes (this.av.getAlignment ().getWidth () - 1);
\r
192 }if (e.isShiftDown () && this.lastid != -1) {
\r
193 this.selectSeqs (this.lastid, seq);
\r
195 this.selectSeq (seq);
\r
196 }this.alignPanel.paintAlignment (false);
\r
197 }, "java.awt.event.MouseEvent");
\r
198 Clazz.defineMethod (c$, "selectSeq",
\r
201 var pickedSeq = this.av.getAlignment ().getSequenceAt (seq);
\r
202 this.av.getSelectionGroup ().addOrRemove (pickedSeq, true);
\r
204 Clazz.defineMethod (c$, "selectSeqs",
\r
205 function (start, end) {
\r
206 this.lastid = start;
\r
207 if (end >= this.av.getAlignment ().getHeight ()) {
\r
208 end = this.av.getAlignment ().getHeight () - 1;
\r
209 }if (end < start) {
\r
214 }if (this.av.getSelectionGroup () == null) {
\r
215 this.av.setSelectionGroup ( new jalview.datamodel.SequenceGroup ());
\r
216 }for (var i = start; i <= end; i++) {
\r
217 this.av.getSelectionGroup ().addSequence (this.av.getAlignment ().getSequenceAt (i), i == end);
\r
220 Clazz.overrideMethod (c$, "mouseReleased",
\r
222 if (this.scrollThread != null) {
\r
223 this.scrollThread.running = false;
\r
224 }if (this.av.getSelectionGroup () != null) {
\r
225 this.av.getSelectionGroup ().recalcConservation ();
\r
226 }this.mouseDragging = false;
\r
227 jalview.appletgui.PaintRefresher.Refresh (this, this.av.getSequenceSetId ());
\r
228 this.av.sendSelection ();
\r
229 }, "java.awt.event.MouseEvent");
\r
230 Clazz.defineMethod (c$, "highlightSearchResults",
\r
232 this.idCanvas.setHighlighted (list);
\r
233 if (list == null) {
\r
235 }var index = this.av.getAlignment ().findIndex (list.get (0));
\r
236 if (this.av.getStartSeq () > index || this.av.getEndSeq () < index) {
\r
237 this.alignPanel.setScrollValues (this.av.getStartRes (), index);
\r
238 }}, "java.util.List");
\r
239 c$.$IdPanel$ScrollThread$ = function () {
\r
240 Clazz.pu$h(self.c$);
\r
241 c$ = Clazz.decorateAsClass (function () {
\r
242 Clazz.prepareCallback (this, arguments);
\r
243 this.running = false;
\r
245 Clazz.instantialize (this, arguments);
\r
246 }, jalview.appletgui.IdPanel, "ScrollThread", Thread);
\r
247 Clazz.makeConstructor (c$,
\r
249 Clazz.superConstructor (this, jalview.appletgui.IdPanel.ScrollThread, []);
\r
253 Clazz.defineMethod (c$, "stopScrolling",
\r
255 this.running = false;
\r
257 Clazz.overrideMethod (c$, "run",
\r
259 this.running = true;
\r
260 while (this.running) {
\r
261 if (this.b$["jalview.appletgui.IdPanel"].alignPanel.scrollUp (this.up)) {
\r
262 var a = this.b$["jalview.appletgui.IdPanel"].av.getStartSeq ();
\r
264 a = this.b$["jalview.appletgui.IdPanel"].av.getEndSeq ();
\r
265 }if (a < this.b$["jalview.appletgui.IdPanel"].lastid) {
\r
266 this.b$["jalview.appletgui.IdPanel"].selectSeqs (this.b$["jalview.appletgui.IdPanel"].lastid - 1, a);
\r
267 } else if (a > this.b$["jalview.appletgui.IdPanel"].lastid && a < this.b$["jalview.appletgui.IdPanel"].av.getAlignment ().getHeight ()) {
\r
268 this.b$["jalview.appletgui.IdPanel"].selectSeqs (this.b$["jalview.appletgui.IdPanel"].lastid + 1, a);
\r
269 }this.b$["jalview.appletgui.IdPanel"].lastid = a;
\r
271 this.running = false;
\r
272 }this.b$["jalview.appletgui.IdPanel"].alignPanel.paintAlignment (true);
\r
274 Thread.sleep (100);
\r
276 if (Clazz.exceptionOf (ex, Exception)) {
\r