1 Clazz.declarePackage ("jalview.appletgui");
\r
2 Clazz.load (["awt2swing.Panel", "java.awt.event.MouseListener", "$.MouseMotionListener"], "jalview.appletgui.ScalePanel", ["awt2swing.MenuItem", "$.PopupMenu", "jalview.datamodel.SequenceGroup", "jalview.util.MessageManager", "java.awt.Color", "java.awt.event.ActionListener"], function () {
\r
3 c$ = Clazz.decorateAsClass (function () {
\r
8 this.stretchingGroup = false;
\r
11 this.mouseDragging = false;
\r
13 Clazz.instantialize (this, arguments);
\r
14 }, jalview.appletgui, "ScalePanel", awt2swing.Panel, [java.awt.event.MouseMotionListener, java.awt.event.MouseListener]);
\r
15 Clazz.makeConstructor (c$,
\r
17 Clazz.superConstructor (this, jalview.appletgui.ScalePanel, []);
\r
18 this.setName ("scalePanel");
\r
19 this.setLayout (null);
\r
22 this.addMouseListener (this);
\r
23 this.addMouseMotionListener (this);
\r
24 }, "jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");
\r
25 Clazz.overrideMethod (c$, "mousePressed",
\r
27 var x = (Clazz.doubleToInt (evt.getX () / this.av.getCharWidth ())) + this.av.getStartRes ();
\r
29 if (this.av.hasHiddenColumns ()) {
\r
30 res = this.av.getColumnSelection ().adjustForHiddenColumns (x);
\r
35 if ((evt.getModifiers () & 4) == 4) {
\r
36 var pop = new awt2swing.PopupMenu ();
\r
37 if (this.reveal != null) {
\r
38 var item = new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.reveal"));
\r
39 item.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.ScalePanel$1") ? 0 : jalview.appletgui.ScalePanel.$ScalePanel$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.ScalePanel$1, this, null)));
\r
41 if (this.av.getColumnSelection ().hasManyHiddenColumns ()) {
\r
42 item = new awt2swing.MenuItem (jalview.util.MessageManager.getString ("action.reveal_all"));
\r
43 item.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.ScalePanel$2") ? 0 : jalview.appletgui.ScalePanel.$ScalePanel$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.ScalePanel$2, this, null)));
\r
46 pop.show (this, evt.getX (), evt.getY ());
\r
47 } else if (this.av.getColumnSelection ().contains (res)) {
\r
48 var item = new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.hide_columns"));
\r
49 item.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.ScalePanel$3") ? 0 : jalview.appletgui.ScalePanel.$ScalePanel$3$ ()), Clazz.innerTypeInstance (jalview.appletgui.ScalePanel$3, this, Clazz.cloneFinals ("res", res))));
\r
52 pop.show (this, evt.getX (), evt.getY ());
\r
54 if (!evt.isControlDown () && !evt.isShiftDown ()) {
\r
55 this.av.getColumnSelection ().clear ();
\r
56 }this.av.getColumnSelection ().addElement (res);
\r
57 var sg = new jalview.datamodel.SequenceGroup ();
\r
58 for (var i = 0; i < this.av.getAlignment ().getSequences ().size (); i++) {
\r
59 sg.addSequence (this.av.getAlignment ().getSequenceAt (i), false);
\r
61 sg.setStartRes (res);
\r
63 this.av.setSelectionGroup (sg);
\r
64 if (evt.isShiftDown ()) {
\r
65 var min = Math.min (this.av.getColumnSelection ().getMin (), res);
\r
66 var max = Math.max (this.av.getColumnSelection ().getMax (), res);
\r
67 for (var i = min; i < max; i++) {
\r
68 this.av.getColumnSelection ().addElement (i);
\r
70 sg.setStartRes (min);
\r
72 }}this.ap.paintAlignment (true);
\r
73 this.av.sendSelection ();
\r
74 }, "java.awt.event.MouseEvent");
\r
75 Clazz.overrideMethod (c$, "mouseReleased",
\r
77 this.mouseDragging = false;
\r
78 var res = (Clazz.doubleToInt (evt.getX () / this.av.getCharWidth ())) + this.av.getStartRes ();
\r
79 if (res > this.av.getAlignment ().getWidth ()) {
\r
80 res = this.av.getAlignment ().getWidth () - 1;
\r
81 }if (this.av.hasHiddenColumns ()) {
\r
82 res = this.av.getColumnSelection ().adjustForHiddenColumns (res);
\r
83 }if (!this.stretchingGroup) {
\r
84 this.ap.paintAlignment (false);
\r
86 }var sg = this.av.getSelectionGroup ();
\r
87 if (res > sg.getStartRes ()) {
\r
89 } else if (res < sg.getStartRes ()) {
\r
90 sg.setStartRes (res);
\r
91 }this.stretchingGroup = false;
\r
92 this.ap.paintAlignment (false);
\r
93 this.av.sendSelection ();
\r
94 }, "java.awt.event.MouseEvent");
\r
95 Clazz.overrideMethod (c$, "mouseDragged",
\r
97 this.mouseDragging = true;
\r
98 var res = (Clazz.doubleToInt (evt.getX () / this.av.getCharWidth ())) + this.av.getStartRes ();
\r
101 }if (this.av.hasHiddenColumns ()) {
\r
102 res = this.av.getColumnSelection ().adjustForHiddenColumns (res);
\r
103 }if (res > this.av.getAlignment ().getWidth ()) {
\r
104 res = this.av.getAlignment ().getWidth () - 1;
\r
105 }if (res < this.min) {
\r
107 }if (res > this.max) {
\r
109 }var sg = this.av.getSelectionGroup ();
\r
111 this.stretchingGroup = true;
\r
112 if (!this.av.getColumnSelection ().contains (res)) {
\r
113 this.av.getColumnSelection ().addElement (res);
\r
114 }if (res > sg.getStartRes ()) {
\r
115 sg.setEndRes (res);
\r
116 }if (res < sg.getStartRes ()) {
\r
117 sg.setStartRes (res);
\r
119 for (var i = this.min; i <= this.max; i++) {
\r
120 col = this.av.getColumnSelection ().adjustForHiddenColumns (i);
\r
121 if ((col < sg.getStartRes ()) || (col > sg.getEndRes ())) {
\r
122 this.av.getColumnSelection ().removeElement (col);
\r
124 this.av.getColumnSelection ().addElement (col);
\r
126 this.ap.paintAlignment (false);
\r
127 }}, "java.awt.event.MouseEvent");
\r
128 Clazz.overrideMethod (c$, "mouseEntered",
\r
130 if (this.mouseDragging) {
\r
131 this.ap.seqPanel.scrollCanvas (null);
\r
132 }}, "java.awt.event.MouseEvent");
\r
133 Clazz.overrideMethod (c$, "mouseExited",
\r
135 if (this.mouseDragging) {
\r
136 this.ap.seqPanel.scrollCanvas (evt);
\r
137 }}, "java.awt.event.MouseEvent");
\r
138 Clazz.overrideMethod (c$, "mouseClicked",
\r
140 }, "java.awt.event.MouseEvent");
\r
141 Clazz.overrideMethod (c$, "mouseMoved",
\r
143 if (!this.av.hasHiddenColumns ()) {
\r
145 }var res = (Clazz.doubleToInt (evt.getX () / this.av.getCharWidth ())) + this.av.getStartRes ();
\r
146 res = this.av.getColumnSelection ().adjustForHiddenColumns (res);
\r
147 this.reveal = null;
\r
148 for (var region, $region = this.av.getColumnSelection ().getHiddenColumns ().iterator (); $region.hasNext () && ((region = $region.next ()) || true);) {
\r
149 if (res + 1 == region[0] || res - 1 == region[1]) {
\r
150 this.reveal = region;
\r
154 }, "java.awt.event.MouseEvent");
\r
155 Clazz.overrideMethod (c$, "paintComponent",
\r
157 if (this.av.getWrapAlignment ()) return;
\r
158 this.drawScale (g, this.av.getStartRes (), this.av.getEndRes (), this.getSize ().width, this.getSize ().height);
\r
159 }, "java.awt.Graphics");
\r
160 Clazz.defineMethod (c$, "drawScale",
\r
161 function (gg, startx, endx, width, height) {
\r
162 gg.setFont (this.av.getFont ());
\r
163 gg.setColor (java.awt.Color.white);
\r
164 gg.fillRect (0, 0, width, height);
\r
165 gg.setColor (java.awt.Color.black);
\r
166 var cs = this.av.getColumnSelection ();
\r
167 gg.setColor ( new java.awt.Color (220, 0, 0));
\r
168 var avcharWidth = this.av.getCharWidth ();
\r
169 var avcharHeight = this.av.getCharHeight ();
\r
170 for (var i = 0; i < cs.size (); i++) {
\r
171 var sel = cs.columnAt (i);
\r
172 if (this.av.hasHiddenColumns ()) {
\r
173 sel = this.av.getColumnSelection ().findColumnPosition (sel);
\r
174 }if ((sel >= startx) && (sel <= endx)) {
\r
175 gg.fillRect ((sel - startx) * avcharWidth, 0, avcharWidth, this.getSize ().height);
\r
177 gg.setColor (java.awt.Color.black);
\r
178 var scalestartx = (Clazz.doubleToInt (startx / 10)) * 10;
\r
179 var fm = gg.getFontMetrics (this.av.getFont ());
\r
180 var y = avcharHeight - fm.getDescent ();
\r
181 if ((scalestartx % 10) == 0) {
\r
185 for (var i = scalestartx; i < endx; i += 5) {
\r
186 if ((i % 10) == 0) {
\r
187 string = String.valueOf (this.av.getColumnSelection ().adjustForHiddenColumns (i));
\r
188 if ((i - startx - 1) * avcharWidth > maxX) {
\r
189 gg.drawString (string, (i - startx - 1) * avcharWidth, y);
\r
190 maxX = (i - startx + 1) * avcharWidth + fm.stringWidth (string);
\r
191 }gg.drawLine (((i - startx - 1) * avcharWidth) + (Clazz.doubleToInt (avcharWidth / 2)), y + 2, ((i - startx - 1) * avcharWidth) + (Clazz.doubleToInt (avcharWidth / 2)), y + (fm.getDescent () * 2));
\r
193 gg.drawLine (((i - startx - 1) * avcharWidth) + (Clazz.doubleToInt (avcharWidth / 2)), y + fm.getDescent (), ((i - startx - 1) * avcharWidth) + (Clazz.doubleToInt (avcharWidth / 2)), y + (fm.getDescent () * 2));
\r
195 if (this.av.hasHiddenColumns ()) {
\r
196 gg.setColor (java.awt.Color.blue);
\r
198 if (this.av.getShowHiddenMarkers ()) {
\r
199 for (var i = 0; i < this.av.getColumnSelection ().getHiddenColumns ().size (); i++) {
\r
200 res = this.av.getColumnSelection ().findHiddenRegionPosition (i) - startx;
\r
201 if (res < 0 || res > endx - scalestartx) {
\r
203 }gg.fillPolygon ( Clazz.newIntArray (-1, [res * avcharWidth - Clazz.doubleToInt (avcharHeight / 4), res * avcharWidth + Clazz.doubleToInt (avcharHeight / 4), res * avcharWidth]), Clazz.newIntArray (-1, [y - Clazz.doubleToInt (avcharHeight / 2), y - Clazz.doubleToInt (avcharHeight / 2), y + 8]), 3);
\r
205 }if (this.reveal != null && this.reveal[0] > startx && this.reveal[0] < endx) {
\r
206 gg.drawString (jalview.util.MessageManager.getString ("label.reveal_columns"), this.reveal[0] * avcharWidth, 0);
\r
207 }}}, "java.awt.Graphics,~N,~N,~N,~N");
\r
208 c$.$ScalePanel$1$ = function () {
\r
210 c$ = Clazz.declareAnonymous (jalview.appletgui, "ScalePanel$1", null, java.awt.event.ActionListener);
\r
211 Clazz.overrideMethod (c$, "actionPerformed",
\r
213 this.b$["jalview.appletgui.ScalePanel"].av.showColumn (this.b$["jalview.appletgui.ScalePanel"].reveal[0]);
\r
214 this.b$["jalview.appletgui.ScalePanel"].reveal = null;
\r
215 this.b$["jalview.appletgui.ScalePanel"].ap.paintAlignment (true);
\r
216 if (this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel != null) {
\r
217 this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel.updateOverviewImage ();
\r
218 }}, "java.awt.event.ActionEvent");
\r
221 c$.$ScalePanel$2$ = function () {
\r
223 c$ = Clazz.declareAnonymous (jalview.appletgui, "ScalePanel$2", null, java.awt.event.ActionListener);
\r
224 Clazz.overrideMethod (c$, "actionPerformed",
\r
226 this.b$["jalview.appletgui.ScalePanel"].av.showAllHiddenColumns ();
\r
227 this.b$["jalview.appletgui.ScalePanel"].reveal = null;
\r
228 this.b$["jalview.appletgui.ScalePanel"].ap.paintAlignment (true);
\r
229 if (this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel != null) {
\r
230 this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel.updateOverviewImage ();
\r
231 }}, "java.awt.event.ActionEvent");
\r
234 c$.$ScalePanel$3$ = function () {
\r
236 c$ = Clazz.declareAnonymous (jalview.appletgui, "ScalePanel$3", null, java.awt.event.ActionListener);
\r
237 Clazz.overrideMethod (c$, "actionPerformed",
\r
239 this.b$["jalview.appletgui.ScalePanel"].av.hideColumns (this.f$.res, this.f$.res);
\r
240 if (this.b$["jalview.appletgui.ScalePanel"].av.getSelectionGroup () != null && this.b$["jalview.appletgui.ScalePanel"].av.getSelectionGroup ().getSize () == this.b$["jalview.appletgui.ScalePanel"].av.getAlignment ().getHeight ()) {
\r
241 this.b$["jalview.appletgui.ScalePanel"].av.setSelectionGroup (null);
\r
242 }this.b$["jalview.appletgui.ScalePanel"].ap.paintAlignment (true);
\r
243 if (this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel != null) {
\r
244 this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel.updateOverviewImage ();
\r
245 }}, "java.awt.event.ActionEvent");
\r