I have started to implemented the peers for Drag and Drop. It is coming
along :)
Most of the functions in the peers are still not implemented. I am
working on it.
2006-07-06 Lillian Angel <[EMAIL PROTECTED]>
* gnu/java/awt/dnd/GtkMouseDragGestureRecognizer.java:
New class not fully implemented.
* gnu/java/awt/dnd/peer/gtk/GtkDragSourceContextPeer.java:
New class not fully implemented.
* gnu/java/awt/dnd/peer/gtk/GtkDropTargetPeer.java:
New class not fully implemented.
* gnu/java/awt/dnd/peer/gtk/GtkDropTargetContextPeer.java:
New class not fully implemented.
* nu/java/awt/peer/gtk/GtkToolkit.java:
Fixed Imports.
(createDragSourceContextPeer): Implemented.
(createDragGestureRecognizer): New function to override
java.awt.Toolkit.createDragGestureRecognizer.
* java/awt/dnd/DragSource.java
(NoDragGestureRecognizer): Removed inner class.
(createDragGestureRecognizer): Re-Implemented to
call Toolkit's createDragGestureRecognizer.
(createDefaultDragGestureRecognizer): Re-Implemented to
call Toolkit's createDragGestureRecognizer.
* java/awt/dnd/DropTarget.java
(addNotify): Added check to determine type of peer and call
addDropTarget.
(removeNotify): Added call to removeDropTarget.
Index: gnu/java/awt/dnd/GtkMouseDragGestureRecognizer.java
===================================================================
RCS file: gnu/java/awt/dnd/GtkMouseDragGestureRecognizer.java
diff -N gnu/java/awt/dnd/GtkMouseDragGestureRecognizer.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gnu/java/awt/dnd/GtkMouseDragGestureRecognizer.java 6 Jul 2006 19:40:20 -0000
@@ -0,0 +1,110 @@
+/* GtkMouseDragGestureRecognizer.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.java.awt.dnd;
+
+import java.awt.Component;
+import java.awt.dnd.DragGestureEvent;
+import java.awt.dnd.DragGestureListener;
+import java.awt.dnd.DragSource;
+import java.awt.dnd.MouseDragGestureRecognizer;
+import java.awt.event.MouseEvent;
+
+public class GtkMouseDragGestureRecognizer
+ extends MouseDragGestureRecognizer
+{
+
+ DragSource ds;
+ Component c;
+ int actions;
+ DragGestureListener dgl;
+
+ GtkMouseDragGestureRecognizer()
+ {
+ super(null);
+ }
+
+ public GtkMouseDragGestureRecognizer (DragSource ds, Component c, int act,
+ DragGestureListener dgl)
+ {
+ super (ds, c, act, dgl);
+
+ registerListeners();
+
+ this.ds = ds;
+ this.c = c;
+ this.actions = act;
+ this.dgl = dgl;
+ }
+
+ public void mouseClicked (MouseEvent e)
+ {
+ // FIXME: Not Implemented
+ }
+
+ public void mousePressed (MouseEvent e)
+ {
+ // FIXME: Not Implemented
+ }
+
+ public void mouseReleased (MouseEvent e)
+ {
+ // FIXME: Not Implemented
+ }
+
+ public void mouseEntered (MouseEvent e)
+ {
+ // FIXME: Not Implemented
+ }
+
+ public void mouseExited (MouseEvent e)
+ {
+ // FIXME: Not Implemented
+ }
+
+ public void mouseDragged(MouseEvent e)
+ {
+ dgl.dragGestureRecognized(new DragGestureEvent(this, actions, e.getPoint(),
+ events));
+ }
+
+ public void mouseMoved (MouseEvent e)
+ {
+ // FIXME: Not Implemented
+ }
+}
Index: gnu/java/awt/dnd/peer/gtk/GtkDragSourceContextPeer.java
===================================================================
RCS file: gnu/java/awt/dnd/peer/gtk/GtkDragSourceContextPeer.java
diff -N gnu/java/awt/dnd/peer/gtk/GtkDragSourceContextPeer.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gnu/java/awt/dnd/peer/gtk/GtkDragSourceContextPeer.java 6 Jul 2006 19:40:20 -0000
@@ -0,0 +1,81 @@
+/* GtkDragSourceContextPeer.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.java.awt.dnd.peer.gtk;
+
+import java.awt.Cursor;
+import java.awt.Image;
+import java.awt.Point;
+import java.awt.dnd.DragGestureEvent;
+import java.awt.dnd.DragSourceContext;
+import java.awt.dnd.InvalidDnDOperationException;
+import java.awt.dnd.peer.DragSourceContextPeer;
+
+public class GtkDragSourceContextPeer
+ implements DragSourceContextPeer
+{
+
+ private DragGestureEvent dge;
+
+ public GtkDragSourceContextPeer(DragGestureEvent e)
+ {
+ dge = e;
+ }
+
+ public void startDrag(DragSourceContext context, Cursor c, Image i, Point p)
+ throws InvalidDnDOperationException
+ {
+ // FIXME: Not Implemented
+ }
+
+ public Cursor getCursor()
+ {
+ // FIXME: Not Implemented
+ return null;
+ }
+
+ public void setCursor(Cursor c) throws InvalidDnDOperationException
+ {
+ // FIXME: Not Implemented
+ }
+
+ public void transferablesFlavorsChanged()
+ {
+ // FIXME: Not Implemented
+ }
+}
Index: gnu/java/awt/dnd/peer/gtk/GtkDropTargetContextPeer.java
===================================================================
RCS file: gnu/java/awt/dnd/peer/gtk/GtkDropTargetContextPeer.java
diff -N gnu/java/awt/dnd/peer/gtk/GtkDropTargetContextPeer.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gnu/java/awt/dnd/peer/gtk/GtkDropTargetContextPeer.java 6 Jul 2006 19:40:20 -0000
@@ -0,0 +1,117 @@
+/* GtkDropTargetContextPeer.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.java.awt.dnd.peer.gtk;
+
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.Transferable;
+import java.awt.dnd.DropTarget;
+import java.awt.dnd.InvalidDnDOperationException;
+import java.awt.dnd.peer.DropTargetContextPeer;
+
+public class GtkDropTargetContextPeer
+ implements DropTargetContextPeer
+{
+
+ public void setTargetActions(int actions)
+ {
+ // FIXME: Not Implemented
+
+ }
+
+ public int getTargetActions()
+ {
+ // FIXME: Not Implemented
+ return 0;
+ }
+
+ public DropTarget getDropTarget()
+ {
+ // FIXME: Not Implemented
+ return null;
+ }
+
+ public DataFlavor[] getTransferDataFlavors()
+ {
+ // FIXME: Not Implemented
+ return null;
+ }
+
+ public Transferable getTransferable() throws InvalidDnDOperationException
+ {
+ // FIXME: Not Implemented
+ return null;
+ }
+
+ public boolean isTransferableJVMLocal()
+ {
+ // FIXME: Not Implemented
+ return false;
+ }
+
+ public void acceptDrag(int dragAction)
+ {
+ // FIXME: Not Implemented
+
+ }
+
+ public void rejectDrag()
+ {
+ // FIXME: Not Implemented
+
+ }
+
+ public void acceptDrop(int dropAction)
+ {
+ // FIXME: Not Implemented
+
+ }
+
+ public void rejectDrop()
+ {
+ // FIXME: Not Implemented
+
+ }
+
+ public void dropComplete(boolean success)
+ {
+ // FIXME: Not Implemented
+
+ }
+
+}
Index: gnu/java/awt/dnd/peer/gtk/GtkDropTargetPeer.java
===================================================================
RCS file: gnu/java/awt/dnd/peer/gtk/GtkDropTargetPeer.java
diff -N gnu/java/awt/dnd/peer/gtk/GtkDropTargetPeer.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gnu/java/awt/dnd/peer/gtk/GtkDropTargetPeer.java 6 Jul 2006 19:40:20 -0000
@@ -0,0 +1,60 @@
+/* GtkDropTargetPeer.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.java.awt.dnd.peer.gtk;
+
+import java.awt.dnd.DropTarget;
+import java.awt.dnd.peer.DropTargetPeer;
+
+public class GtkDropTargetPeer
+ implements DropTargetPeer
+{
+
+ public void addDropTarget(DropTarget target)
+ {
+ // FIXME: Not Implemented
+
+ }
+
+ public void removeDropTarget(DropTarget target)
+ {
+ // FIXME: Not Implemented
+
+ }
+
+}
Index: gnu/java/awt/peer/gtk/GtkToolkit.java
===================================================================
RCS file: /cvsroot/classpath/classpath/gnu/java/awt/peer/gtk/GtkToolkit.java,v
retrieving revision 1.89
diff -u -r1.89 GtkToolkit.java
--- gnu/java/awt/peer/gtk/GtkToolkit.java 30 Jun 2006 18:20:06 -0000 1.89
+++ gnu/java/awt/peer/gtk/GtkToolkit.java 6 Jul 2006 19:40:20 -0000
@@ -39,31 +39,82 @@
package gnu.java.awt.peer.gtk;
-import gnu.classpath.Configuration;
import gnu.java.awt.EmbeddedWindow;
+import gnu.java.awt.dnd.GtkMouseDragGestureRecognizer;
+import gnu.java.awt.dnd.peer.gtk.GtkDragSourceContextPeer;
import gnu.java.awt.peer.ClasspathFontPeer;
import gnu.java.awt.peer.EmbeddedWindowPeer;
-import java.awt.*;
+import java.awt.AWTException;
+import java.awt.Button;
+import java.awt.Canvas;
+import java.awt.Checkbox;
+import java.awt.CheckboxMenuItem;
+import java.awt.Choice;
+import java.awt.Component;
+import java.awt.Cursor;
+import java.awt.Dialog;
+import java.awt.Dimension;
+import java.awt.EventQueue;
+import java.awt.FileDialog;
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.Frame;
+import java.awt.GraphicsDevice;
+import java.awt.GraphicsEnvironment;
+import java.awt.Image;
+import java.awt.Label;
+import java.awt.List;
+import java.awt.Menu;
+import java.awt.MenuBar;
+import java.awt.MenuItem;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.PopupMenu;
+import java.awt.PrintJob;
+import java.awt.Rectangle;
+import java.awt.ScrollPane;
+import java.awt.Scrollbar;
+import java.awt.TextArea;
+import java.awt.TextField;
+import java.awt.Window;
import java.awt.datatransfer.Clipboard;
import java.awt.dnd.DragGestureEvent;
+import java.awt.dnd.DragGestureListener;
+import java.awt.dnd.DragGestureRecognizer;
+import java.awt.dnd.DragSource;
import java.awt.dnd.peer.DragSourceContextPeer;
-import java.awt.font.FontRenderContext;
import java.awt.im.InputMethodHighlight;
-import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.DirectColorModel;
-import java.awt.image.ImageConsumer;
import java.awt.image.ImageObserver;
import java.awt.image.ImageProducer;
-import java.awt.peer.*;
+import java.awt.peer.ButtonPeer;
+import java.awt.peer.CanvasPeer;
+import java.awt.peer.CheckboxMenuItemPeer;
+import java.awt.peer.CheckboxPeer;
+import java.awt.peer.ChoicePeer;
+import java.awt.peer.DialogPeer;
+import java.awt.peer.FileDialogPeer;
+import java.awt.peer.FontPeer;
+import java.awt.peer.FramePeer;
+import java.awt.peer.LabelPeer;
+import java.awt.peer.ListPeer;
+import java.awt.peer.MenuBarPeer;
+import java.awt.peer.MenuItemPeer;
+import java.awt.peer.MenuPeer;
+import java.awt.peer.PanelPeer;
+import java.awt.peer.PopupMenuPeer;
+import java.awt.peer.RobotPeer;
+import java.awt.peer.ScrollPanePeer;
+import java.awt.peer.ScrollbarPeer;
+import java.awt.peer.TextAreaPeer;
+import java.awt.peer.TextFieldPeer;
+import java.awt.peer.WindowPeer;
import java.io.InputStream;
import java.net.URL;
-import java.text.AttributedString;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Hashtable;
-import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Properties;
@@ -553,7 +604,18 @@
public DragSourceContextPeer createDragSourceContextPeer(DragGestureEvent e)
{
- throw new Error("not implemented");
+ return new GtkDragSourceContextPeer(e);
+ }
+
+ public DragGestureRecognizer createDragGestureRecognizer(Class recognizer,
+ DragSource ds,
+ Component comp,
+ int actions,
+ DragGestureListener l)
+ {
+ if (recognizer.getName().equals("java.awt.dnd.MouseDragGestureRecognizer"))
+ return new GtkMouseDragGestureRecognizer(ds, comp, actions, l);
+ return null;
}
public Map mapInputMethodHighlight(InputMethodHighlight highlight)
Index: java/awt/dnd/DragSource.java
===================================================================
RCS file: /cvsroot/classpath/classpath/java/awt/dnd/DragSource.java,v
retrieving revision 1.8
diff -u -r1.8 DragSource.java
--- java/awt/dnd/DragSource.java 6 Jul 2006 17:41:08 -0000 1.8
+++ java/awt/dnd/DragSource.java 6 Jul 2006 19:40:20 -0000
@@ -51,6 +51,7 @@
import java.awt.datatransfer.SystemFlavorMap;
import java.awt.datatransfer.Transferable;
import java.awt.dnd.peer.DragSourceContextPeer;
+import java.awt.event.MouseMotionListener;
import java.io.Serializable;
import java.util.EventListener;
@@ -222,48 +224,22 @@
return flavorMap;
}
- /**
- * Dummy DragGestureRecognizer when Toolkit doesn't support drag and drop.
- */
- static class NoDragGestureRecognizer
- extends DragGestureRecognizer
- {
- NoDragGestureRecognizer(DragSource ds, Component c, int actions,
- DragGestureListener dgl)
- {
- super(ds, c, actions, dgl);
- }
-
- protected void registerListeners()
- {
- }
-
- protected void unregisterListeners()
- {
- }
- }
-
- public DragGestureRecognizer
- createDragGestureRecognizer(Class recognizer, Component c, int actions,
- DragGestureListener dgl)
- {
- DragGestureRecognizer dgr;
- dgr = Toolkit.getDefaultToolkit ()
- .createDragGestureRecognizer (recognizer, this, c, actions,
- dgl);
-
- if (dgr == null)
- dgr = new NoDragGestureRecognizer(this, c, actions, dgl);
-
- return dgr;
- }
-
- public DragGestureRecognizer
- createDefaultDragGestureRecognizer(Component c, int actions,
- DragGestureListener dgl)
+ public DragGestureRecognizer createDragGestureRecognizer(Class recognizer,
+ Component c,
+ int actions,
+ DragGestureListener dgl)
+ {
+ return Toolkit.getDefaultToolkit().createDragGestureRecognizer(recognizer,
+ this, c,
+ actions, dgl);
+ }
+
+ public DragGestureRecognizer createDefaultDragGestureRecognizer(Component c,
+ int actions,
+ DragGestureListener dgl)
{
- return createDragGestureRecognizer (MouseDragGestureRecognizer.class, c,
- actions, dgl);
+ return createDragGestureRecognizer(MouseDragGestureRecognizer.class, c,
+ actions, dgl);
}
/**
Index: java/awt/dnd/DropTarget.java
===================================================================
RCS file: /cvsroot/classpath/classpath/java/awt/dnd/DropTarget.java,v
retrieving revision 1.13
diff -u -r1.13 DropTarget.java
--- java/awt/dnd/DropTarget.java 5 Jul 2006 17:45:50 -0000 1.13
+++ java/awt/dnd/DropTarget.java 6 Jul 2006 19:40:20 -0000
@@ -275,12 +275,20 @@
public void addNotify(ComponentPeer p)
{
- peer = (DropTargetPeer) p;
+ if (p instanceof DropTargetPeer)
+ {
+ peer = (DropTargetPeer) p;
+ peer.addDropTarget(this);
+ }
+ else
+ peer = null;
}
- public void removeNotify(ComponentPeer peer)
+ public void removeNotify(ComponentPeer p)
{
+ ((DropTargetPeer) peer).removeDropTarget(this);
peer = null;
+ p = null;
}
public DropTargetContext getDropTargetContext()