1:
37:
38:
39: package ;
40:
41: import ;
42:
43: import ;
44: import ;
45: import ;
46: import ;
47: import ;
48: import ;
49: import ;
50: import ;
51: import ;
52:
53:
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 events = new ArrayList();
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: public void resetRecognizer()
131: throws NotImplementedException
132: {
133: events = new ArrayList();
134:
135: }
136:
137:
143: public void addDragGestureListener(DragGestureListener dgl)
144: throws TooManyListenersException
145: {
146: if (dragGestureListener != null)
147: throw new TooManyListenersException();
148: dragGestureListener = dgl;
149: }
150:
151: public void removeDragGestureListener(DragGestureListener dgl)
152: {
153: if (dragGestureListener != dgl)
154: throw new IllegalArgumentException();
155: dragGestureListener = null;
156: }
157:
158:
162: protected void fireDragGestureRecognized(int dragAction, Point p)
163: {
164: if(dragGestureListener != null)
165: dragGestureListener.dragGestureRecognized
166: (new DragGestureEvent(this, dragAction, p, events));
167: }
168:
169: protected void appendEvent(InputEvent e)
170: {
171: if (e == null)
172: return;
173: events.add(e);
174: }
175:
176: private void readObject(ObjectInputStream s)
177: throws ClassNotFoundException, IOException
178: {
179: s.defaultReadObject();
180: dragGestureListener = (DragGestureListener) s.readObject();
181: }
182:
183: private void writeObject(ObjectOutputStream s) throws IOException
184: {
185: s.defaultWriteObject();
186: s.writeObject(dragGestureListener instanceof Serializable
187: ? dragGestureListener : null);
188: }
189: }