diff options
author | Lillian Angel <langel@redhat.com> | 2006-07-17 18:37:19 +0000 |
---|---|---|
committer | Lillian Angel <langel@redhat.com> | 2006-07-17 18:37:19 +0000 |
commit | 1d58a8693b8a5ba7a9d3b0f4bb816c3689fbfee6 (patch) | |
tree | 32cdcd321aef0c4db6271b2773143f1728547679 /examples | |
parent | a553c17ba58f627dd804c8d2f962f827db825e59 (diff) | |
download | classpath-1d58a8693b8a5ba7a9d3b0f4bb816c3689fbfee6.tar.gz |
2006-07-17 Lillian Angel <langel@redhat.com>
* examples/gnu/classpath/examples/awt/Demo.java
(Demo): Added new window for DnD demo.
(DragDropWindow): New class.
* gnu/java/awt/dnd/peer/gtk/GtkDragSourceContextPeer.java:
Added new fields and declarations for native functions.
(GtkDragSourceContextPeer): Implemented.
(getComponentPeer): New function.
(startDrag): Partially implemented.
(getCursor): Implemented.
(setCursor): Implemented.
* include/GtkDragSourceContextPeer.h: New file.
* include/Makefile.am: Added new header file.
* java/awt/Component.java
(addNotify): Added call to the dropTarget's addNotify.
* java/awt/dnd/DragSource.java
(startDrag): Fixed code to use shared instances of peer and
context.
(getDragThreshold): Added stub.
* java/awt/dnd/DropTarget.java
(DropTarget): Implemented fully.
(addNotify): Added code to get the peer of the parent that is
not lightweight.
* java/awt/dnd/DropTargetDragEvent.java
(getTransferable): Added stub.
* native/jni/gtk-peer/GtkDragSourceContextPeer.c: New file.
* native/jni/gtk-peer/Makefile.am: Added new c file.
* gnu/java/awt/dnd/peer/gtk/GtkDropTargetContextPeer.java:
Changed to extend GtkGenericPeer.
(GtkDropTargetContextPeer): New constructor.
* gnu/java/awt/dnd/peer/gtk/GtkDropTargetPeer.java:
Changed to extend GtkGenericPeer.
(GtkDropTargetContextPeer): New constructor.
Diffstat (limited to 'examples')
-rw-r--r-- | examples/gnu/classpath/examples/awt/Demo.java | 202 |
1 files changed, 199 insertions, 3 deletions
diff --git a/examples/gnu/classpath/examples/awt/Demo.java b/examples/gnu/classpath/examples/awt/Demo.java index 5e668dde6..1ca09ff23 100644 --- a/examples/gnu/classpath/examples/awt/Demo.java +++ b/examples/gnu/classpath/examples/awt/Demo.java @@ -20,11 +20,70 @@ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA package gnu.classpath.examples.awt; -import java.awt.*; +import java.awt.BorderLayout; +import java.awt.Button; +import java.awt.Canvas; +import java.awt.Checkbox; +import java.awt.CheckboxGroup; +import java.awt.CheckboxMenuItem; +import java.awt.Choice; +import java.awt.Color; +import java.awt.Cursor; +import java.awt.Dialog; +import java.awt.Dimension; +import java.awt.DisplayMode; +import java.awt.FileDialog; +import java.awt.FlowLayout; +import java.awt.Font; +import java.awt.Frame; +import java.awt.Graphics; +import java.awt.GraphicsDevice; +import java.awt.GraphicsEnvironment; +import java.awt.GridLayout; +import java.awt.Image; +import java.awt.Insets; +import java.awt.Label; import java.awt.List; -import java.awt.event.*; +import java.awt.Menu; +import java.awt.MenuBar; +import java.awt.MenuItem; +import java.awt.MenuShortcut; +import java.awt.Panel; +import java.awt.ScrollPane; +import java.awt.TextField; +import java.awt.Toolkit; +import java.awt.Window; +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.StringSelection; +import java.awt.datatransfer.Transferable; +import java.awt.datatransfer.UnsupportedFlavorException; +import java.awt.dnd.DnDConstants; +import java.awt.dnd.DragGestureEvent; +import java.awt.dnd.DragGestureListener; +import java.awt.dnd.DragSource; +import java.awt.dnd.DragSourceContext; +import java.awt.dnd.DragSourceDragEvent; +import java.awt.dnd.DragSourceDropEvent; +import java.awt.dnd.DragSourceEvent; +import java.awt.dnd.DragSourceListener; +import java.awt.dnd.DropTarget; +import java.awt.dnd.DropTargetDragEvent; +import java.awt.dnd.DropTargetDropEvent; +import java.awt.dnd.DropTargetEvent; +import java.awt.dnd.DropTargetListener; +import java.awt.dnd.InvalidDnDOperationException; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; import java.net.URL; -import java.util.*; +import java.util.Enumeration; +import java.util.Hashtable; +import java.util.Vector; class Demo { @@ -156,6 +215,7 @@ class Demo addSubWindow ("Animation", new AnimationWindow ()); addSubWindow ("Resolution", new ResolutionWindow ()); addSubWindow ("Fullscreen", new FullscreenWindow ()); + addSubWindow ("Drag n' Drop", new DragDropWindow ()); Panel sp = new Panel(); PrettyPanel p = new PrettyPanel(); @@ -799,6 +859,142 @@ class Demo } } + static class DragDropWindow + extends SubFrame + implements ActionListener, DropTargetListener + { + DragLabel source = new DragLabel( + "Drag and drop me to the following JButton", + Label.CENTER); + + Button target = new Button(); + + public void init() + { + source.setForeground(Color.red); + add(source, BorderLayout.NORTH); + + target.addActionListener(this); + add(target, BorderLayout.SOUTH); + + new DropTarget(target, DnDConstants.ACTION_COPY_OR_MOVE, this); + + setSize(205, 100); + + pack(); + } + + public void actionPerformed(ActionEvent e) + { + Button b = (Button) e.getSource(); + b.setLabel(""); + } + + public void dragEnter(DropTargetDragEvent e) + { + } + + public void dragExit(DropTargetEvent e) + { + } + + public void dragOver(DropTargetDragEvent e) + { + } + + public void drop(DropTargetDropEvent e) + { + try + { + Transferable t = e.getTransferable(); + + if (e.isDataFlavorSupported(DataFlavor.stringFlavor)) + { + e.acceptDrop(e.getDropAction()); + + String s; + s = (String) t.getTransferData(DataFlavor.stringFlavor); + + target.setLabel(s); + + e.dropComplete(true); + } + else + e.rejectDrop(); + } + catch (java.io.IOException e2) + { + } + catch (UnsupportedFlavorException e2) + { + } + } + + public void dropActionChanged(DropTargetDragEvent e) + { + } + + class DragLabel + extends Label + implements DragGestureListener, DragSourceListener + { + private DragSource ds = DragSource.getDefaultDragSource(); + + public DragLabel(String s, int alignment) + { + super(s, alignment); + int action = DnDConstants.ACTION_COPY_OR_MOVE; + ds.createDefaultDragGestureRecognizer(this, action, this); + } + + public void dragGestureRecognized(DragGestureEvent e) + { + try + { + Transferable t = new StringSelection(getText()); + e.startDrag(DragSource.DefaultCopyNoDrop, t, this); + } + catch (InvalidDnDOperationException e2) + { + System.out.println(e2); + } + } + + public void dragDropEnd(DragSourceDropEvent e) + { + if (e.getDropSuccess() == false) + return; + + int action = e.getDropAction(); + if ((action & DnDConstants.ACTION_MOVE) != 0) + setText(""); + } + + public void dragEnter(DragSourceDragEvent e) + { + DragSourceContext ctx = e.getDragSourceContext(); + + int action = e.getDropAction(); + if ((action & DnDConstants.ACTION_COPY) != 0) + ctx.setCursor(DragSource.DefaultCopyDrop); + else + ctx.setCursor(DragSource.DefaultCopyNoDrop); + } + + public void dragExit(DragSourceEvent e) + { + } + + public void dragOver(DragSourceDragEvent e) + { + } + + public void dropActionChanged(DragSourceDragEvent e) + { + } + } + } + static class FullscreenWindow extends SubFrame { GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); |