source: trunk/src/org/expeditee/gio/input/InputEventToGestureTranslatorSet.java@ 1127

Last change on this file since 1127 was 1127, checked in by bln4, 6 years ago
File size: 2.1 KB
Line 
1package org.expeditee.gio.input;
2
3import java.util.LinkedList;
4import java.util.List;
5import java.util.Set;
6
7import org.expeditee.gio.gesture.Gesture;
8import org.expeditee.gio.input.InputEvent.InputType;
9
10/**
11 * An input-event -> gesture translator that is the aggregation of a set of
12 * other translators.
13 *
14 * @author cts16
15 */
16public class InputEventToGestureTranslatorSet extends InputEventToGestureTranslator {
17 /** The individual gesture recognisers. */
18 private List<InputEventToGestureTranslator> _recognisers;
19
20 public InputEventToGestureTranslatorSet() {
21 _recognisers = new LinkedList<InputEventToGestureTranslator>();
22 }
23
24 /** Adds a sub-translator to this translator set. */
25 public void addTranslator(InputEventToGestureTranslator translator) {
26 if (translator == null)
27 return;
28
29 _recognisers.add(translator);
30
31 Set<InputType> recogniserMonitoredTypes = translator.getMonitoredInputTypes();
32 if (recogniserMonitoredTypes != null)
33 _monitoredInputTypes.addAll(recogniserMonitoredTypes);
34 }
35
36 @Override
37 public String details() {
38 if (_recognisers.isEmpty())
39 return "";
40
41 // Aggregate the details of the individual gesture recognisers
42 String details = "";
43 for (InputEventToGestureTranslator recogniser : _recognisers) {
44 String recogniserDetails = recogniser.details();
45 if (recogniserDetails != null && recogniserDetails != "") {
46 if (details != "")
47 details += "\n";
48 details += recogniserDetails;
49 }
50 }
51
52 return details;
53 }
54
55 @Override
56 public List<Gesture> onInputEvent(InputEvent event) {
57 if (_recognisers.isEmpty())
58 return null;
59
60 // Only interested in monitored events
61 if (event == null || !isMonitoredType(event.getInputType()))
62 return null;
63
64 // Aggregate the responses of all individual gesture listeners
65 List<Gesture> gestures = new LinkedList<Gesture>();
66
67 for (InputEventToGestureTranslator recogniser : _recognisers) {
68 if (recogniser.isMonitoredType(event.getInputType())) {
69 List<Gesture> recogniserGestures = recogniser.onInputEvent(event);
70 if (recogniserGestures != null) {
71 gestures.addAll(recogniserGestures);
72 }
73 }
74 }
75
76 return gestures;
77 }
78}
Note: See TracBrowser for help on using the repository browser.