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

Last change on this file since 1532 was 1532, checked in by bnemhaus, 4 years ago

New feature: when creating a frameset, if the item being used is linked and you hold shift, it will use the items on the linked frame to populate the zero frame of the new frameset

File size: 7.1 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 boolean isShiftDown = StandardInputEventListeners.kbmStateListener.isKeyDown(Key.SHIFT);
145 return apolloSingle(ApolloGestureType.CREATE_LINKED_TRACKS, new ItemSpecificGestureData(isShiftDown));
146 }
147 });
148
149 // Add the CTRL + G -> TOGGLE_QUALITY_GRAPHICS gesture recogniser
150 addTranslator(new InputEventToGestureTranslator(InputType.KBM)
151 {
152 @Override
153 public String details() { return "CTRL + G -> TOGGLE_QUALITY_GRAPHICS"; }
154
155 @Override
156 public List<Gesture> onInputEvent(InputEvent event)
157 {
158 // Cast to keyboard/mouse event
159 KBMInputEvent kbmEvent = (KBMInputEvent) event;
160
161 // Check that ctrl is down
162 if (!StandardInputEventListeners.kbmStateListener.isKeyDown(Key.CTRL)) return null;
163
164 // Check that G was pressed
165 if (kbmEvent.getKeyDown() != Key.G) return null;
166
167 // Return the gesture
168 return apolloSingle(ApolloGestureType.TOGGLE_QUALITY_GRAPHICS, null);
169 }
170 });
171
172 // Add the CTRL -> REFRESH gesture recogniser
173 addTranslator(new InputEventToGestureTranslator(InputType.KBM)
174 {
175 @Override
176 public String details() { return "CTRL -> REFRESH"; }
177
178 @Override
179 public List<Gesture> onInputEvent(InputEvent event)
180 {
181 // Cast to keyboard/mouse event
182 KBMInputEvent kbmEvent = (KBMInputEvent) event;
183
184 // Check that ctrl was pressed
185 if (kbmEvent.getKeyDown() != Key.CTRL) return null;
186
187 // Return the gesture
188 return ExpediteeKBMGestureTranslator.standardSingle(StandardGestureType.REFRESH, new RefreshGestureData(false, false));
189 }
190 });
191 }
192
193 public boolean isKeyDown(Key key)
194 {
195 return StandardInputEventListeners.kbmStateListener.isKeyDown(key);
196 }
197
198 public boolean isMouseButtonDown(MouseButton button)
199 {
200 return StandardInputEventListeners.kbmStateListener.isMouseButtonDown(button);
201 }
202
203 public boolean isOnlyMouseButtonDown(MouseButton button)
204 {
205 return StandardInputEventListeners.kbmStateListener.isOnlyMouseButtonDown(button);
206 }
207
208 public boolean isAnyMouseButtonDown()
209 {
210 return StandardInputEventListeners.kbmStateListener.isAnyMouseButtonDown();
211 }
212
213 /** Convenience function to create a single standard gesture. */
214 private List<Gesture> apolloSingle(ApolloGestureType type, GestureData data)
215 {
216 return Gesture.single(ApolloGestureActions.getInstance().gestureType(type), data);
217 }
218}
Note: See TracBrowser for help on using the repository browser.