OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libjava/] [classpath/] [java/] [awt/] [dnd/] [DragSource.java] - Blame information for rev 861

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 771 jeremybenn
/* DragSource.java --
2
   Copyright (C) 2002 Free Software Foundation, Inc.
3
 
4
This file is part of GNU Classpath.
5
 
6
GNU Classpath is free software; you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation; either version 2, or (at your option)
9
any later version.
10
 
11
GNU Classpath is distributed in the hope that it will be useful, but
12
WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
General Public License for more details.
15
 
16
You should have received a copy of the GNU General Public License
17
along with GNU Classpath; see the file COPYING.  If not, write to the
18
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19
02110-1301 USA.
20
 
21
Linking this library statically or dynamically with other modules is
22
making a combined work based on this library.  Thus, the terms and
23
conditions of the GNU General Public License cover the whole
24
combination.
25
 
26
As a special exception, the copyright holders of this library give you
27
permission to link this library with independent modules to produce an
28
executable, regardless of the license terms of these independent
29
modules, and to copy and distribute the resulting executable under
30
terms of your choice, provided that you also meet, for each linked
31
independent module, the terms and conditions of the license of that
32
module.  An independent module is a module which is not derived from
33
or based on this library.  If you modify this library, you may extend
34
this exception to your version of the library, but you are not
35
obligated to do so.  If you do not wish to do so, delete this
36
exception statement from your version. */
37
 
38
 
39
package java.awt.dnd;
40
 
41
import gnu.classpath.NotImplementedException;
42
 
43
import java.awt.Component;
44
import java.awt.Cursor;
45
import java.awt.GraphicsEnvironment;
46
import java.awt.HeadlessException;
47
import java.awt.Image;
48
import java.awt.Point;
49
import java.awt.Toolkit;
50
import java.awt.datatransfer.FlavorMap;
51
import java.awt.datatransfer.SystemFlavorMap;
52
import java.awt.datatransfer.Transferable;
53
import java.awt.dnd.peer.DragSourceContextPeer;
54
import java.io.Serializable;
55
import java.util.EventListener;
56
 
57
/**
58
 * @since 1.2
59
 */
60
public class DragSource implements Serializable
61
{
62
  /**
63
   * Compatible with JDK 1.2+.
64
   */
65
  private static final long serialVersionUID = 6236096958971414066L;
66
 
67
  public static final Cursor DefaultCopyDrop = null;
68
  public static final Cursor DefaultMoveDrop = null;
69
  public static final Cursor DefaultLinkDrop = null;
70
  public static final Cursor DefaultCopyNoDrop = null;
71
  public static final Cursor DefaultMoveNoDrop = null;
72
  public static final Cursor DefaultLinkNoDrop = null;
73
 
74
  private transient FlavorMap flavorMap = SystemFlavorMap.getDefaultFlavorMap ();
75
  private transient DragSourceListener dragSourceListener;
76
  private transient DragSourceMotionListener dragSourceMotionListener;
77
 
78
  private static DragSource ds;
79
  private DragSourceContextPeer peer;
80
  private DragSourceContext context;
81
 
82
  /**
83
   * Initializes the drag source.
84
   *
85
   * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
86
   */
87
  public DragSource()
88
  {
89
    if (GraphicsEnvironment.isHeadless())
90
      {
91
        ds = null;
92
        throw new HeadlessException();
93
      }
94
  }
95
 
96
  /**
97
   * Gets the default drag source.
98
   *
99
   * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
100
   */
101
  public static DragSource getDefaultDragSource()
102
  {
103
    if (GraphicsEnvironment.isHeadless())
104
      {
105
        ds = null;
106
        throw new HeadlessException();
107
      }
108
 
109
    if (ds == null)
110
      ds = new DragSource();
111
    return ds;
112
  }
113
 
114
  public static boolean isDragImageSupported()
115
  {
116
    // In all cases, Sun returns false here.
117
    return false;
118
  }
119
 
120
  /**
121
   * Start a drag, given the DragGestureEvent that initiated the drag.
122
   *
123
   * @exception InvalidDnDOperationException If the Drag and Drop system is
124
   * unable to initiate a drag operation, or if the user attempts to start
125
   * a drag while an existing drag operation is still executing.
126
   */
127
  public void startDrag(DragGestureEvent trigger, Cursor dragCursor,
128
                        Image dragImage, Point imageOffset,
129
                        Transferable trans, DragSourceListener dsl,
130
                        FlavorMap map)
131
  {
132
    // http://www.javaworld.com/javaworld/jw-03-1999/jw-03-dragndrop.html
133
 
134
    // This function creates a DragSourceContext object. This object tracks the
135
    // state of the operation by listening to a native peer. In this situation,
136
    // the DragSource may be obtained from the event or by an instance variable.
137
    // This function also creates a new DragSourceContextPeer.
138
 
139
    // This function sends the same message to the context, which then forwards
140
    // it to the peer, passing itself as a parameter. Now, the native system has
141
    // access to the Transferable through the context.
142
 
143
    try
144
      {
145
        flavorMap = map;
146
 
147
        if (peer == null)
148
          peer = Toolkit.getDefaultToolkit().createDragSourceContextPeer(trigger);
149
 
150
        if (context == null)
151
          context = createDragSourceContext(peer, trigger,
152
                                                            dragCursor,
153
                                                            dragImage,
154
                                                            imageOffset, trans,
155
                                                            dsl);
156
 
157
        if (peer == null)
158
          throw new InvalidDnDOperationException();
159
 
160
        peer.startDrag(context, dragCursor, dragImage, imageOffset);
161
      }
162
    catch (Exception e)
163
      {
164
        throw new InvalidDnDOperationException("Drag and Drop system is "
165
                                + "unable to initiate a drag operation.");
166
      }
167
  }
168
 
169
  /**
170
   * Start a drag, given the DragGestureEvent that initiated the drag.
171
   *
172
   * @exception InvalidDnDOperationException If the Drag and Drop system is
173
   * unable to initiate a drag operation, or if the user attempts to start
174
   * a drag while an existing drag operation is still executing.
175
   */
176
  public void startDrag(DragGestureEvent trigger, Cursor dragCursor,
177
                        Transferable trans, DragSourceListener dsl,
178
                        FlavorMap map)
179
  {
180
    startDrag(trigger, dragCursor, null, null, trans, dsl, map);
181
  }
182
 
183
  /**
184
   * Start a drag, given the DragGestureEvent that initiated the drag.
185
   *
186
   * @exception InvalidDnDOperationException If the Drag and Drop system is
187
   * unable to initiate a drag operation, or if the user attempts to start
188
   * a drag while an existing drag operation is still executing.
189
   */
190
  public void startDrag(DragGestureEvent trigger, Cursor dragCursor,
191
                        Image dragImage, Point imageOffset,
192
                        Transferable trans, DragSourceListener dsl)
193
  {
194
    startDrag(trigger, dragCursor, dragImage, imageOffset, trans, dsl, null);
195
  }
196
 
197
  /**
198
   * Start a drag, given the DragGestureEvent that initiated the drag.
199
   *
200
   * @exception InvalidDnDOperationException If the Drag and Drop system is
201
   * unable to initiate a drag operation, or if the user attempts to start
202
   * a drag while an existing drag operation is still executing.
203
   */
204
  public void startDrag(DragGestureEvent trigger, Cursor dragCursor,
205
                        Transferable trans, DragSourceListener dsl)
206
  {
207
    startDrag(trigger, dragCursor, null, null, trans, dsl, null);
208
  }
209
 
210
  /**
211
   * Creates the DragSourceContext to handle this drag.
212
   *
213
   * @exception IllegalArgumentException
214
   * @exception NullPointerException If dscp, dgl, dragImage or t is null.
215
   */
216
  protected DragSourceContext
217
    createDragSourceContext(DragSourceContextPeer peer, DragGestureEvent dge,
218
                            Cursor cursor, Image image, Point offset,
219
                            Transferable t, DragSourceListener dsl)
220
  {
221
    return new DragSourceContext(peer, dge, cursor, image, offset, t, dsl);
222
  }
223
 
224
  public FlavorMap getFlavorMap()
225
  {
226
    return flavorMap;
227
  }
228
 
229
  public <T extends DragGestureRecognizer> T
230
                    createDragGestureRecognizer(Class<T> recognizer,
231
                                                Component c,
232
                                                int actions,
233
                                                DragGestureListener dgl)
234
  {
235
    return (T) Toolkit.getDefaultToolkit().createDragGestureRecognizer(recognizer,
236
                                                                       this, c,
237
                                                                       actions, dgl);
238
  }
239
 
240
  public DragGestureRecognizer createDefaultDragGestureRecognizer(Component c,
241
                                                                  int actions,
242
                                                                  DragGestureListener dgl)
243
  {
244
    return createDragGestureRecognizer(MouseDragGestureRecognizer.class, c,
245
                                       actions, dgl);
246
  }
247
 
248
  /**
249
   * @since 1.4
250
   */
251
  public void addDragSourceListener(DragSourceListener l)
252
  {
253
    DnDEventMulticaster.add (dragSourceListener, l);
254
  }
255
 
256
  /**
257
   * @since 1.4
258
   */
259
  public void removeDragSourceListener(DragSourceListener l)
260
  {
261
    DnDEventMulticaster.remove (dragSourceListener, l);
262
  }
263
 
264
  /**
265
   * @since 1.4
266
   */
267
  public DragSourceListener[] getDragSourceListeners()
268
  {
269
    return (DragSourceListener[]) getListeners (DragSourceListener.class);
270
  }
271
 
272
  /**
273
   * @since 1.4
274
   */
275
  public void addDragSourceMotionListener(DragSourceMotionListener l)
276
  {
277
    DnDEventMulticaster.add (dragSourceMotionListener, l);
278
  }
279
 
280
  /**
281
   * @since 1.4
282
   */
283
  public void removeDragSourceMotionListener(DragSourceMotionListener l)
284
  {
285
    DnDEventMulticaster.remove (dragSourceMotionListener, l);
286
  }
287
 
288
  /**
289
   * @since 1.4
290
   */
291
  public DragSourceMotionListener[] getDragSourceMotionListeners ()
292
  {
293
    return (DragSourceMotionListener[]) getListeners
294
                                         (DragSourceMotionListener.class);
295
  }
296
 
297
  /**
298
   * @since 1.4
299
   */
300
  public <T extends EventListener> T[] getListeners (Class<T> listenerType)
301
  {
302
    if (listenerType == DragSourceListener.class)
303
      return DnDEventMulticaster.getListeners (dragSourceListener,
304
                                               listenerType);
305
 
306
    if (listenerType == DragSourceMotionListener.class)
307
      return DnDEventMulticaster.getListeners (dragSourceMotionListener,
308
                                               listenerType);
309
 
310
    // Return an empty EventListener array.
311
    return (T[]) new EventListener [0];
312
  }
313
 
314
  /**
315
   * TODO
316
   * @return TODO
317
   *
318
   * @since 1.5
319
   */
320
  public static int getDragThreshold()
321
    throws NotImplementedException
322
  {
323
    // FIXME: Not implemented.
324
    return 8;
325
  }
326
} // class DragSource

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.