1:
37:
38:
39: package ;
40:
41: import ;
42: import ;
43: import ;
44: import ;
45: import ;
46: import ;
47: import ;
48: import ;
49: import ;
50:
51:
57: public abstract class DragGestureRecognizer implements Serializable
58: {
59:
62: private static final long serialVersionUID = 8996673345831063337L;
63:
64: protected DragSource dragSource;
65: protected Component component;
66: protected transient DragGestureListener dragGestureListener;
67: protected int sourceActions;
68: protected ArrayList<InputEvent> events = new ArrayList<InputEvent>();
69:
70: protected DragGestureRecognizer(DragSource ds, Component c, int sa,
71: DragGestureListener dgl)
72: {
73: if (ds == null)
74: throw new IllegalArgumentException();
75: dragSource = ds;
76: component = c;
77: sourceActions = sa;
78: dragGestureListener = dgl;
79: }
80:
81: protected DragGestureRecognizer(DragSource ds, Component c, int sa)
82: {
83: this(ds, c, sa, null);
84: }
85:
86: protected DragGestureRecognizer(DragSource ds, Component c)
87: {
88: this(ds, c, 0, null);
89: }
90:
91: protected DragGestureRecognizer(DragSource ds)
92: {
93: this(ds, null, 0, null);
94: }
95:
96: protected abstract void registerListeners();
97:
98: protected abstract void unregisterListeners();
99:
100: public DragSource getDragSource()
101: {
102: return dragSource;
103: }
104:
105: public Component getComponent()
106: {
107: return component;
108: }
109:
110: public void setComponent(Component c)
111: {
112: component = c;
113: }
114:
115: public int getSourceActions()
116: {
117: return sourceActions;
118: }
119:
120: public void setSourceActions(int sa)
121: {
122: sourceActions = sa;
123: }
124:
125: public InputEvent getTriggerEvent()
126: {
127: return events.size() > 0 ? (InputEvent) events.get(0) : null;
128: }
129:
130:
133: public void resetRecognizer()
134: {
135: events.clear();
136: }
137:
138:
144: public void addDragGestureListener(DragGestureListener dgl)
145: throws TooManyListenersException
146: {
147: if (dragGestureListener != null)
148: throw new TooManyListenersException();
149: dragGestureListener = dgl;
150: }
151:
152: public void removeDragGestureListener(DragGestureListener dgl)
153: {
154: if (dragGestureListener != dgl)
155: throw new IllegalArgumentException();
156: dragGestureListener = null;
157: }
158:
159:
163: protected void fireDragGestureRecognized(int dragAction, Point p)
164: {
165: if(dragGestureListener != null)
166: dragGestureListener.dragGestureRecognized
167: (new DragGestureEvent(this, dragAction, p, events));
168: resetRecognizer();
169: }
170:
171: protected void appendEvent(InputEvent e)
172: {
173: if (e == null)
174: return;
175: events.add(e);
176: }
177:
178: private void readObject(ObjectInputStream s)
179: throws ClassNotFoundException, IOException
180: {
181: s.defaultReadObject();
182: dragGestureListener = (DragGestureListener) s.readObject();
183: }
184:
185: private void writeObject(ObjectOutputStream s) throws IOException
186: {
187: s.defaultWriteObject();
188: s.writeObject(dragGestureListener instanceof Serializable
189: ? dragGestureListener : null);
190: }
191: }