1 | package org.apollo;
|
---|
2 |
|
---|
3 | import java.util.List;
|
---|
4 |
|
---|
5 | import org.apollo.ApolloGestureActions.ApolloGestureType;
|
---|
6 | import org.apollo.gio.gesture.data.TrackAdjustmentGestureData;
|
---|
7 | import org.expeditee.gio.gesture.ExpediteeKBMGestureTranslator;
|
---|
8 | import org.expeditee.gio.gesture.Gesture;
|
---|
9 | import org.expeditee.gio.gesture.StandardGestureActions.StandardGestureType;
|
---|
10 | import org.expeditee.gio.gesture.data.GestureData;
|
---|
11 | import org.expeditee.gio.gesture.data.ItemSpecificGestureData;
|
---|
12 | import org.expeditee.gio.gesture.data.RefreshGestureData;
|
---|
13 | import org.expeditee.gio.input.InputEvent;
|
---|
14 | import org.expeditee.gio.input.InputEvent.InputType;
|
---|
15 | import org.expeditee.gio.input.InputEventToGestureTranslator;
|
---|
16 | import org.expeditee.gio.input.InputEventToGestureTranslatorSet;
|
---|
17 | import org.expeditee.gio.input.KBMInputEvent;
|
---|
18 | import org.expeditee.gio.input.KBMInputEvent.Key;
|
---|
19 | import org.expeditee.gio.input.KBMInputEvent.MouseButton;
|
---|
20 | import org.expeditee.gui.FrameUtils;
|
---|
21 | import org.expeditee.gio.input.StandardInputEventListeners;
|
---|
22 |
|
---|
23 | public class ApolloKBMGestureTranslator extends InputEventToGestureTranslatorSet
|
---|
24 | {
|
---|
25 | public static final long TRACK_WIDGET_TIMELINE_ADJUSTMENT = 50;
|
---|
26 | public static final long TRACK_WIDGET_VERTICAL_ADJUSTMENT = 5;
|
---|
27 |
|
---|
28 | public ApolloKBMGestureTranslator()
|
---|
29 | {
|
---|
30 | // Create the list of sub-translators
|
---|
31 | initialiseApolloTranslators();
|
---|
32 | }
|
---|
33 |
|
---|
34 | public void initialiseApolloTranslators()
|
---|
35 | {
|
---|
36 | // Add the CTRL + LEFT/RIGHT -> ADJUST_INITIATION_TIME gesture recogniser
|
---|
37 | addTranslator(new InputEventToGestureTranslator(InputType.KBM)
|
---|
38 | {
|
---|
39 | @Override
|
---|
40 | public String details() { return "CTRL + LEFT/RIGHT -> ADJUST_INITIATION_TIME"; }
|
---|
41 |
|
---|
42 | @Override
|
---|
43 | public List<Gesture> onInputEvent(InputEvent event)
|
---|
44 | {
|
---|
45 | // Cast to keyboard/mouse event
|
---|
46 | KBMInputEvent kbmEvent = (KBMInputEvent) event;
|
---|
47 |
|
---|
48 | // Check that ctrl is down
|
---|
49 | if (!StandardInputEventListeners.kbmStateListener.isKeyDown(Key.CTRL)) return null;
|
---|
50 |
|
---|
51 | // Calculate the adjustment amount
|
---|
52 | long adjustment;
|
---|
53 | if (kbmEvent.getKeyDown() == Key.LEFT_ARROW) {
|
---|
54 | adjustment = -TRACK_WIDGET_TIMELINE_ADJUSTMENT;
|
---|
55 | } else if (kbmEvent.getKeyDown() == Key.RIGHT_ARROW) {
|
---|
56 | adjustment = TRACK_WIDGET_TIMELINE_ADJUSTMENT;
|
---|
57 | } else {
|
---|
58 | return null;
|
---|
59 | }
|
---|
60 |
|
---|
61 | // Return the gesture
|
---|
62 | return apolloSingle(ApolloGestureType.ADJUST_INITIATION_TIME, new TrackAdjustmentGestureData(adjustment));
|
---|
63 | }
|
---|
64 | });
|
---|
65 |
|
---|
66 | // Add the CTRL + UP/DOWN -> ADJUST_VERTICAL_POSITION gesture recogniser
|
---|
67 | addTranslator(new InputEventToGestureTranslator(InputType.KBM)
|
---|
68 | {
|
---|
69 | @Override
|
---|
70 | public String details() { return "CTRL + UP/DOWN -> ADJUST_VERTICAL_POSITION"; }
|
---|
71 |
|
---|
72 | @Override
|
---|
73 | public List<Gesture> onInputEvent(InputEvent event)
|
---|
74 | {
|
---|
75 | // Cast to keyboard/mouse event
|
---|
76 | KBMInputEvent kbmEvent = (KBMInputEvent) event;
|
---|
77 |
|
---|
78 | // Check that ctrl is down
|
---|
79 | if (!StandardInputEventListeners.kbmStateListener.isKeyDown(Key.CTRL)) return null;
|
---|
80 |
|
---|
81 | // Calculate the adjustment amount
|
---|
82 | long adjustment;
|
---|
83 | if (kbmEvent.getKeyDown() == Key.UP_ARROW) {
|
---|
84 | adjustment = -TRACK_WIDGET_VERTICAL_ADJUSTMENT;
|
---|
85 | } else if (kbmEvent.getKeyDown() == Key.DOWN_ARROW) {
|
---|
86 | adjustment = TRACK_WIDGET_VERTICAL_ADJUSTMENT;
|
---|
87 | } else {
|
---|
88 | return null;
|
---|
89 | }
|
---|
90 |
|
---|
91 | // Return the gesture
|
---|
92 | return apolloSingle(ApolloGestureType.ADJUST_VERTICAL_POSITION, new TrackAdjustmentGestureData(adjustment));
|
---|
93 | }
|
---|
94 | });
|
---|
95 |
|
---|
96 | // Add the CTRL + SHIFT + F -> MOD_POSITION gesture recogniser
|
---|
97 | addTranslator(new InputEventToGestureTranslator(InputType.KBM)
|
---|
98 | {
|
---|
99 | @Override
|
---|
100 | public String details() { return "CTRL + SHIFT + F -> MOD_POSITION"; }
|
---|
101 |
|
---|
102 | @Override
|
---|
103 | public List<Gesture> onInputEvent(InputEvent event)
|
---|
104 | {
|
---|
105 | // Cast to keyboard/mouse event
|
---|
106 | KBMInputEvent kbmEvent = (KBMInputEvent) event;
|
---|
107 |
|
---|
108 | // Check that ctrl is down
|
---|
109 | if (!StandardInputEventListeners.kbmStateListener.isKeyDown(Key.CTRL)) return null;
|
---|
110 |
|
---|
111 | // Check that shift is down
|
---|
112 | if (!StandardInputEventListeners.kbmStateListener.isKeyDown(Key.SHIFT)) return null;
|
---|
113 |
|
---|
114 | // Check that F was pressed
|
---|
115 | if (kbmEvent.getKeyDown() != Key.F) return null;
|
---|
116 |
|
---|
117 | // Return the gesture
|
---|
118 | return apolloSingle(ApolloGestureType.MODULUS_POSITION, null);
|
---|
119 | }
|
---|
120 | });
|
---|
121 |
|
---|
122 | // Add the CTRL + L -> CREATE_LINKED_TRACKS gesture recogniser
|
---|
123 | addTranslator(new InputEventToGestureTranslator(InputType.KBM)
|
---|
124 | {
|
---|
125 | @Override
|
---|
126 | public String details() { return "CTRL + L -> CREATE_LINKED_TRACKS"; }
|
---|
127 |
|
---|
128 | @Override
|
---|
129 | public List<Gesture> onInputEvent(InputEvent event)
|
---|
130 | {
|
---|
131 | // Cast to keyboard/mouse event
|
---|
132 | KBMInputEvent kbmEvent = (KBMInputEvent) event;
|
---|
133 |
|
---|
134 | // Check that ctrl is down
|
---|
135 | if (!StandardInputEventListeners.kbmStateListener.isKeyDown(Key.CTRL)) return null;
|
---|
136 |
|
---|
137 | // Check that no Items are selected (Apollo uses widgets)
|
---|
138 | if(FrameUtils.getCurrentItem() != null) return null;
|
---|
139 |
|
---|
140 | // Check that L was pressed
|
---|
141 | if (kbmEvent.getKeyDown() != Key.L) return null;
|
---|
142 |
|
---|
143 | // Return the gesture
|
---|
144 | return apolloSingle(ApolloGestureType.CREATE_LINKED_TRACKS, new ItemSpecificGestureData());
|
---|
145 | }
|
---|
146 | });
|
---|
147 |
|
---|
148 | // Add the CTRL + G -> TOGGLE_QUALITY_GRAPHICS gesture recogniser
|
---|
149 | addTranslator(new InputEventToGestureTranslator(InputType.KBM)
|
---|
150 | {
|
---|
151 | @Override
|
---|
152 | public String details() { return "CTRL + G -> TOGGLE_QUALITY_GRAPHICS"; }
|
---|
153 |
|
---|
154 | @Override
|
---|
155 | public List<Gesture> onInputEvent(InputEvent event)
|
---|
156 | {
|
---|
157 | // Cast to keyboard/mouse event
|
---|
158 | KBMInputEvent kbmEvent = (KBMInputEvent) event;
|
---|
159 |
|
---|
160 | // Check that ctrl is down
|
---|
161 | if (!StandardInputEventListeners.kbmStateListener.isKeyDown(Key.CTRL)) return null;
|
---|
162 |
|
---|
163 | // Check that G was pressed
|
---|
164 | if (kbmEvent.getKeyDown() != Key.G) return null;
|
---|
165 |
|
---|
166 | // Return the gesture
|
---|
167 | return apolloSingle(ApolloGestureType.TOGGLE_QUALITY_GRAPHICS, null);
|
---|
168 | }
|
---|
169 | });
|
---|
170 |
|
---|
171 | // Add the CTRL -> REFRESH gesture recogniser
|
---|
172 | addTranslator(new InputEventToGestureTranslator(InputType.KBM)
|
---|
173 | {
|
---|
174 | @Override
|
---|
175 | public String details() { return "CTRL -> REFRESH"; }
|
---|
176 |
|
---|
177 | @Override
|
---|
178 | public List<Gesture> onInputEvent(InputEvent event)
|
---|
179 | {
|
---|
180 | // Cast to keyboard/mouse event
|
---|
181 | KBMInputEvent kbmEvent = (KBMInputEvent) event;
|
---|
182 |
|
---|
183 | // Check that ctrl was pressed
|
---|
184 | if (kbmEvent.getKeyDown() != Key.CTRL) return null;
|
---|
185 |
|
---|
186 | // Return the gesture
|
---|
187 | return ExpediteeKBMGestureTranslator.standardSingle(StandardGestureType.REFRESH, new RefreshGestureData(false, false));
|
---|
188 | }
|
---|
189 | });
|
---|
190 | }
|
---|
191 |
|
---|
192 | public boolean isKeyDown(Key key)
|
---|
193 | {
|
---|
194 | return StandardInputEventListeners.kbmStateListener.isKeyDown(key);
|
---|
195 | }
|
---|
196 |
|
---|
197 | public boolean isMouseButtonDown(MouseButton button)
|
---|
198 | {
|
---|
199 | return StandardInputEventListeners.kbmStateListener.isMouseButtonDown(button);
|
---|
200 | }
|
---|
201 |
|
---|
202 | public boolean isOnlyMouseButtonDown(MouseButton button)
|
---|
203 | {
|
---|
204 | return StandardInputEventListeners.kbmStateListener.isOnlyMouseButtonDown(button);
|
---|
205 | }
|
---|
206 |
|
---|
207 | public boolean isAnyMouseButtonDown()
|
---|
208 | {
|
---|
209 | return StandardInputEventListeners.kbmStateListener.isAnyMouseButtonDown();
|
---|
210 | }
|
---|
211 |
|
---|
212 | /** Convenience function to create a single standard gesture. */
|
---|
213 | private List<Gesture> apolloSingle(ApolloGestureType type, GestureData data)
|
---|
214 | {
|
---|
215 | return Gesture.single(ApolloGestureActions.getInstance().gestureType(type), data);
|
---|
216 | }
|
---|
217 | }
|
---|