source: trunk/src/org/apollo/ApolloKBMGestureTranslator.java@ 1133

Last change on this file since 1133 was 1133, checked in by bln4, 6 years ago

org.apollo.ApolloKBMGestureTranslator ->

Additional guard on Apollo translator for CTRL + L to match pre JFX refactoring. Expeditee's base CTRL + L now gets an opportunity to run.

File size: 7.0 KB
Line 
1package org.apollo;
2
3import java.util.List;
4
5import org.apollo.ApolloGestureActions.ApolloGestureType;
6import org.apollo.gio.gesture.data.TrackAdjustmentGestureData;
7import org.expeditee.gio.gesture.ExpediteeKBMGestureTranslator;
8import org.expeditee.gio.gesture.Gesture;
9import org.expeditee.gio.gesture.StandardGestureActions.StandardGestureType;
10import org.expeditee.gio.gesture.data.GestureData;
11import org.expeditee.gio.gesture.data.ItemSpecificGestureData;
12import org.expeditee.gio.gesture.data.RefreshGestureData;
13import org.expeditee.gio.input.InputEvent;
14import org.expeditee.gio.input.InputEvent.InputType;
15import org.expeditee.gio.input.InputEventToGestureTranslator;
16import org.expeditee.gio.input.InputEventToGestureTranslatorSet;
17import org.expeditee.gio.input.KBMInputEvent;
18import org.expeditee.gio.input.KBMInputEvent.Key;
19import org.expeditee.gio.input.KBMInputEvent.MouseButton;
20import org.expeditee.gui.FrameUtils;
21import org.expeditee.gio.input.StandardInputEventListeners;
22
23public 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}
Note: See TracBrowser for help on using the repository browser.