JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / site / swingjs / j2s / swingjs / JSMouse.js
1 Clazz.declarePackage ("swingjs");\r
2 Clazz.load (null, "swingjs.JSMouse", ["JU.V3", "java.awt.Toolkit", "java.awt.event.MouseEvent"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this.ap = null;\r
5 this.isMouseDown = false;\r
6 this.wheeling = false;\r
7 this.xWhenPressed = 0;\r
8 this.yWhenPressed = 0;\r
9 this.modifiersWhenPressed10 = 0;\r
10 Clazz.instantialize (this, arguments);\r
11 }, swingjs, "JSMouse");\r
12 Clazz.makeConstructor (c$, \r
13 function (ap) {\r
14 this.ap = ap;\r
15 }, "swingjs.JSAppletPanel");\r
16 Clazz.defineMethod (c$, "processEvent", \r
17 function (id, x, y, modifiers, time) {\r
18 if (id != -1) modifiers = swingjs.JSMouse.applyLeftMouse (modifiers);\r
19 switch (id) {\r
20 case -1:\r
21 this.wheeled (time, x, modifiers);\r
22 break;\r
23 case 501:\r
24 this.xWhenPressed = x;\r
25 this.yWhenPressed = y;\r
26 this.modifiersWhenPressed10 = modifiers;\r
27 this.pressed (time, x, y, modifiers, false);\r
28 break;\r
29 case 506:\r
30 this.dragged (time, x, y, modifiers);\r
31 break;\r
32 case 504:\r
33 this.entry (time, x, y, false);\r
34 break;\r
35 case 505:\r
36 this.entry (time, x, y, true);\r
37 break;\r
38 case 503:\r
39 this.moved (time, x, y, modifiers);\r
40 break;\r
41 case 502:\r
42 this.released (time, x, y, modifiers);\r
43 if (x == this.xWhenPressed && y == this.yWhenPressed && modifiers == this.modifiersWhenPressed10) {\r
44 this.clicked (time, x, y, modifiers, 1);\r
45 }break;\r
46 default:\r
47 return false;\r
48 }\r
49 return true;\r
50 }, "~N,~N,~N,~N,~N");\r
51 Clazz.defineMethod (c$, "processTwoPointGesture", \r
52 function (touches) {\r
53 if (touches[0].length < 2) return;\r
54 var t1 = touches[0];\r
55 var t2 = touches[1];\r
56 var t1first = t1[0];\r
57 var t1last = t1[t2.length - 1];\r
58 var x1first = t1first[0];\r
59 var x1last = t1last[0];\r
60 var dx1 = x1last - x1first;\r
61 var y1first = t1first[1];\r
62 var y1last = t1last[1];\r
63 var dy1 = y1last - y1first;\r
64 var v1 = JU.V3.new3 (dx1, dy1, 0);\r
65 var d1 = v1.length ();\r
66 var t2first = t2[0];\r
67 var t2last = t2[t2.length - 1];\r
68 var x2first = t2first[0];\r
69 var x2last = t2last[0];\r
70 var dx2 = x2last - x2first;\r
71 var y2first = t2first[1];\r
72 var y2last = t2last[1];\r
73 var dy2 = y2last - y2first;\r
74 var v2 = JU.V3.new3 (dx2, dy2, 0);\r
75 var d2 = v2.length ();\r
76 if (d1 < 1 || d2 < 1) return;\r
77 v1.normalize ();\r
78 v2.normalize ();\r
79 var cos12 = (v1.dot (v2));\r
80 if (cos12 > 0.8) {\r
81 var deltaX = Clazz.floatToInt (x1last - t1[t1.length - 2][0]);\r
82 var deltaY = Clazz.floatToInt (y1last - t1[t1.length - 2][1]);\r
83 this.translateXYBy (deltaX, deltaY);\r
84 } else if (cos12 < -0.8) {\r
85 v1 = JU.V3.new3 (x2first - x1first, y2first - y1first, 0);\r
86 v2 = JU.V3.new3 (x2last - x1last, y2last - y1last, 0);\r
87 var dx = v2.length () - v1.length ();\r
88 this.wheeled (System.currentTimeMillis (), dx < 0 ? -1 : 1, 32);\r
89 }}, "~A");\r
90 Clazz.defineMethod (c$, "translateXYBy", \r
91  function (deltaX, deltaY) {\r
92 }, "~N,~N");\r
93 Clazz.defineMethod (c$, "mouseClicked", \r
94 function (e) {\r
95 this.clicked (e.getWhen (), e.getX (), e.getY (), e.getModifiers (), e.getClickCount ());\r
96 }, "java.awt.event.MouseEvent");\r
97 Clazz.defineMethod (c$, "mouseEntered", \r
98 function (e) {\r
99 this.entry (e.getWhen (), e.getX (), e.getY (), false);\r
100 }, "java.awt.event.MouseEvent");\r
101 Clazz.defineMethod (c$, "mouseExited", \r
102 function (e) {\r
103 this.entry (e.getWhen (), e.getX (), e.getY (), true);\r
104 }, "java.awt.event.MouseEvent");\r
105 Clazz.defineMethod (c$, "mousePressed", \r
106 function (e) {\r
107 this.pressed (e.getWhen (), e.getX (), e.getY (), e.getModifiers (), e.isPopupTrigger ());\r
108 }, "java.awt.event.MouseEvent");\r
109 Clazz.defineMethod (c$, "mouseReleased", \r
110 function (e) {\r
111 this.released (e.getWhen (), e.getX (), e.getY (), e.getModifiers ());\r
112 }, "java.awt.event.MouseEvent");\r
113 Clazz.defineMethod (c$, "mouseDragged", \r
114 function (e) {\r
115 var modifiers = e.getModifiers ();\r
116 if ((modifiers & 28) == 0) modifiers |= 16;\r
117 this.dragged (e.getWhen (), e.getX (), e.getY (), modifiers);\r
118 }, "java.awt.event.MouseEvent");\r
119 Clazz.defineMethod (c$, "mouseMoved", \r
120 function (e) {\r
121 this.moved (e.getWhen (), e.getX (), e.getY (), e.getModifiers ());\r
122 }, "java.awt.event.MouseEvent");\r
123 Clazz.defineMethod (c$, "mouseWheelMoved", \r
124 function (e) {\r
125 e.consume ();\r
126 this.wheeled (e.getWhen (), e.getWheelRotation (), e.getModifiers ());\r
127 }, "java.awt.event.MouseWheelEvent");\r
128 Clazz.defineMethod (c$, "entry", \r
129  function (time, x, y, isExit) {\r
130 this.wheeling = false;\r
131 this.mouseEnterExit (time, x, y, isExit);\r
132 }, "~N,~N,~N,~B");\r
133 Clazz.defineMethod (c$, "clicked", \r
134  function (time, x, y, modifiers, clickCount) {\r
135 this.mouseAction (500, time, x, y, 1, modifiers);\r
136 }, "~N,~N,~N,~N,~N");\r
137 Clazz.defineMethod (c$, "moved", \r
138  function (time, x, y, modifiers) {\r
139 if (this.isMouseDown) this.mouseAction (506, time, x, y, 0, swingjs.JSMouse.applyLeftMouse (modifiers));\r
140  else this.mouseAction (503, time, x, y, 0, modifiers);\r
141 }, "~N,~N,~N,~N");\r
142 Clazz.defineMethod (c$, "wheeled", \r
143  function (time, rotation, modifiers) {\r
144 this.wheeling = true;\r
145 this.mouseAction (507, time, 0, rotation, 0, modifiers & -29 | 32);\r
146 }, "~N,~N,~N");\r
147 Clazz.defineMethod (c$, "pressed", \r
148  function (time, x, y, modifiers, isPopupTrigger) {\r
149 this.isMouseDown = true;\r
150 this.wheeling = false;\r
151 this.mouseAction (501, time, x, y, 0, modifiers);\r
152 }, "~N,~N,~N,~N,~B");\r
153 Clazz.defineMethod (c$, "released", \r
154  function (time, x, y, modifiers) {\r
155 this.isMouseDown = false;\r
156 this.wheeling = false;\r
157 this.mouseAction (502, time, x, y, 0, modifiers);\r
158 }, "~N,~N,~N,~N");\r
159 Clazz.defineMethod (c$, "dragged", \r
160  function (time, x, y, modifiers) {\r
161 if (this.wheeling) return;\r
162 if ((modifiers & 20) == 20) modifiers = modifiers & -5 | 2;\r
163 this.mouseAction (506, time, x, y, 0, modifiers);\r
164 }, "~N,~N,~N,~N");\r
165 c$.applyLeftMouse = Clazz.defineMethod (c$, "applyLeftMouse", \r
166  function (modifiers) {\r
167 return ((modifiers & 28) == 0) ? (modifiers | 16) : modifiers;\r
168 }, "~N");\r
169 Clazz.defineMethod (c$, "getButton", \r
170  function (modifiers) {\r
171 switch (modifiers & 28) {\r
172 case 16:\r
173 return 1;\r
174 case 8:\r
175 return 2;\r
176 case 4:\r
177 return 3;\r
178 default:\r
179 return 0;\r
180 }\r
181 }, "~N");\r
182 Clazz.defineMethod (c$, "mouseEnterExit", \r
183  function (time, x, y, isExit) {\r
184 }, "~N,~N,~N,~B");\r
185 Clazz.defineMethod (c$, "mouseAction", \r
186  function (id, time, x, y, count, modifiers) {\r
187 var popupTrigger = false;\r
188 var button = this.getButton (modifiers);\r
189 var source = this.ap.applet;\r
190 var e =  new java.awt.event.MouseEvent (source, id, time, modifiers, x, y, x, y, count, popupTrigger, button);\r
191 java.awt.Toolkit.getEventQueue ().postEvent (e);\r
192 }, "~N,~N,~N,~N,~N,~N");\r
193 Clazz.defineStatics (c$,\r
194 "MOUSE_LEFT", 16,\r
195 "MOUSE_MIDDLE", 8,\r
196 "MOUSE_RIGHT", 4,\r
197 "MOUSE_WHEEL", 32,\r
198 "MAC_COMMAND", 20,\r
199 "BUTTON_MASK", 28);\r
200 });\r