summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorLillian Angel <langel@redhat.com>2006-07-17 18:37:19 +0000
committerLillian Angel <langel@redhat.com>2006-07-17 18:37:19 +0000
commit1d58a8693b8a5ba7a9d3b0f4bb816c3689fbfee6 (patch)
tree32cdcd321aef0c4db6271b2773143f1728547679 /examples
parenta553c17ba58f627dd804c8d2f962f827db825e59 (diff)
downloadclasspath-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.java202
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();