1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 package org.ximtec.igesture.app.showcaseapp;
28
29 import java.awt.Color;
30 import java.awt.Graphics2D;
31 import java.awt.image.BufferedImage;
32 import java.util.List;
33 import java.util.logging.Level;
34 import java.util.logging.Logger;
35
36 import javax.swing.ImageIcon;
37 import javax.swing.JFrame;
38 import javax.swing.JLabel;
39
40 import org.sigtec.ink.Note;
41 import org.sigtec.ink.Point;
42 import org.sigtec.util.Constant;
43 import org.ximtec.igesture.Recogniser;
44 import org.ximtec.igesture.algorithm.AlgorithmException;
45 import org.ximtec.igesture.app.showcaseapp.descriptor.ArrowDescriptor;
46 import org.ximtec.igesture.app.showcaseapp.descriptor.LineDescriptor;
47 import org.ximtec.igesture.app.showcaseapp.descriptor.RectangleDescriptor;
48 import org.ximtec.igesture.app.showcaseapp.descriptor.TriangleDescriptor;
49 import org.ximtec.igesture.app.showcaseapp.eventhandler.DeleteEventHandler;
50 import org.ximtec.igesture.app.showcaseapp.eventhandler.DrawEventHandler;
51 import org.ximtec.igesture.app.showcaseapp.eventhandler.RejectEventHandler;
52 import org.ximtec.igesture.app.showcaseapp.eventhandler.StyleEventHandler;
53 import org.ximtec.igesture.configuration.Configuration;
54 import org.ximtec.igesture.core.DigitalDescriptor;
55 import org.ximtec.igesture.core.Gesture;
56 import org.ximtec.igesture.core.GestureSet;
57 import org.ximtec.igesture.event.GestureActionManager;
58 import org.ximtec.igesture.io.GestureDevice;
59 import org.ximtec.igesture.io.GestureEventListener;
60 import org.ximtec.igesture.io.mouseclient.MouseReader;
61 import org.ximtec.igesture.util.XMLTool;
62
63
64
65
66
67
68
69 public class Application implements GestureEventListener {
70
71 private static final Logger LOGGER = Logger.getLogger(Application.class
72 .getName());
73
74 private Recogniser recogniser;
75
76 private GestureDevice<Note, Point> client;
77
78 private JFrame frame;
79
80 private BufferedImage bufferedImage;
81
82
83 public Application() {
84 initialiseGUI();
85 initGestures();
86 }
87
88
89 private void initGestures() {
90 Configuration configuration = XMLTool.importConfiguration(ClassLoader
91 .getSystemResourceAsStream("rubineconfiguration.xml"));
92 GestureSet gestureSet = XMLTool.importGestureSet(ClassLoader
93 .getSystemResourceAsStream("demogestures.xml"));
94 GestureActionManager eventManager = new GestureActionManager();
95 eventManager.registerRejectEvent(new RejectEventHandler());
96 Style style = new Style();
97 StyleEventHandler styleEventHandler = new StyleEventHandler(style);
98 Graphics2D graphic = (Graphics2D)bufferedImage.getGraphics();
99 DrawEventHandler drawEventHandler = new DrawEventHandler(graphic, style);
100 gestureSet.getGestureClass("Rectangle").addDescriptor(
101 DigitalDescriptor.class, new RectangleDescriptor());
102 gestureSet.getGestureClass("LeftRight").addDescriptor(
103 DigitalDescriptor.class, new LineDescriptor());
104 gestureSet.getGestureClass("Triangle").addDescriptor(
105 DigitalDescriptor.class, new TriangleDescriptor());
106 gestureSet.getGestureClass("Arrow").addDescriptor(DigitalDescriptor.class,
107 new ArrowDescriptor());
108 eventManager.registerEventHandler("Rectangle", drawEventHandler);
109 eventManager.registerEventHandler("LeftRight", drawEventHandler);
110 eventManager.registerEventHandler("Triangle", drawEventHandler);
111 eventManager.registerEventHandler("Arrow", drawEventHandler);
112 eventManager.registerEventHandler("Delete",
113 new DeleteEventHandler(graphic));
114 eventManager.registerEventHandler("Red", styleEventHandler);
115 eventManager.registerEventHandler("Black", styleEventHandler);
116 eventManager.registerEventHandler("Yellow", styleEventHandler);
117 eventManager.registerEventHandler("Thin", styleEventHandler);
118 eventManager.registerEventHandler("Fat", styleEventHandler);
119 configuration.addGestureSet(gestureSet);
120
121
122 try {
123 recogniser = new Recogniser(configuration);
124 recogniser.addGestureHandler(eventManager);
125 }
126 catch (AlgorithmException e) {
127 LOGGER.log(Level.SEVERE, Constant.EMPTY_STRING, e);
128 }
129
130 client = new MouseReader();
131 client.init();
132 client.addGestureHandler(this);
133
134 }
135
136
137 private void initialiseGUI() {
138 frame = new JFrame();
139 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
140 frame.setSize(440, 620);
141 bufferedImage = new BufferedImage(420, 600, BufferedImage.TYPE_INT_ARGB);
142 bufferedImage.getGraphics().setColor(Color.WHITE);
143 bufferedImage.getGraphics().fillRect(0, 0, 420, 600);
144 bufferedImage.getGraphics().setColor(Color.BLACK);
145 JLabel label = new JLabel();
146 label.setSize(420, 620);
147 label.setIcon(new ImageIcon(bufferedImage));
148 frame.add(label);
149 frame.setVisible(true);
150 }
151
152
153
154
155 public static void main(String[] args) {
156 new Application();
157 }
158
159
160 @Override
161 public void handleChunks(List< ? > chunks) {
162
163
164 }
165
166
167 @Override
168 public void handleGesture(Gesture< ? > gesture) {
169
170 if (gesture.getGesture() instanceof Note) {
171 Note note = (Note)gesture.getGesture();
172 Note clone = (Note)note.clone();
173 clone.scale(2);
174
175 recogniser.recognise(clone);
176 frame.repaint();
177 }
178 }
179
180 }