This is the mail archive of the
java-patches@sources.redhat.com
mailing list for the Java project.
AWT Toolkit etc
- To: java-patches at sourceware dot cygnus dot com
- Subject: AWT Toolkit etc
- From: Bryce McKinlay <bryce at albatross dot co dot nz>
- Date: Fri, 04 Aug 2000 00:09:47 +1200
A few AWT beats and peices
regards
[ bryce ]
2000-08-03 Bryce McKinlay <bryce@albatross.co.nz>
* Makefile.am: Add new AWT stubs.
* java/awt/Canvas.java: New placeholder class.
* java/awt/Checkbox.java: Ditto.
* java/awt/CheckboxMenuItem.java: Ditto.
* java/awt/Choice.java: Ditto.
* java/awt/Dialog.java: Ditto.
* java/awt/FileDialog.java: Ditto.
* java/awt/List.java: Ditto.
* java/awt/ScrollPane.java: Ditto.
* java/awt/TextField.java: Ditto.
* java/awt/datatransfer/Clipboard.java: Ditto.
* java/awt/Component.java (treeLock): Now a static String. Add comment.
* java/awt/MenuItem.java (MenuItem): Add default constructor.
* java/awt/Toolkit.java: Added all methods from J2SE 1.3 API docs.
Some commented out. Partially implemented.
* java/awt/natToolkit.cc: Removed file.
Index: Makefile.am
===================================================================
RCS file: /cvs/java/libgcj/libjava/Makefile.am,v
retrieving revision 1.76
diff -u -r1.76 Makefile.am
--- Makefile.am 2000/08/03 06:48:34 1.76
+++ Makefile.am 2000/08/03 11:58:56
@@ -497,16 +497,22 @@
java/awt/Adjustable.java \
java/awt/BorderLayout.java \
java/awt/Button.java \
+java/awt/Canvas.java \
+java/awt/Checkbox.java \
java/awt/CheckboxGroup.java \
+java/awt/CheckboxMenuItem.java \
+java/awt/Choice.java \
java/awt/Color.java \
java/awt/Component.java \
java/awt/ComponentOrientation.java \
java/awt/Container.java \
java/awt/Cursor.java \
+java/awt/Dialog.java \
java/awt/Dimension.java \
java/awt/Event.java \
java/awt/EventDispatchThread.java \
java/awt/EventQueue.java \
+java/awt/FileDialog.java \
java/awt/Font.java \
java/awt/FontMetrics.java \
java/awt/Frame.java \
@@ -519,6 +525,7 @@
java/awt/Label.java \
java/awt/LayoutManager.java \
java/awt/LayoutManager2.java \
+java/awt/List.java \
java/awt/Menu.java \
java/awt/MenuBar.java \
java/awt/MenuComponent.java \
@@ -532,15 +539,18 @@
java/awt/PopupMenu.java \
java/awt/Rectangle.java \
java/awt/Scrollbar.java \
+java/awt/ScrollPane.java \
java/awt/Shape.java \
java/awt/TextArea.java \
java/awt/TextComponent.java \
+java/awt/TextField.java \
java/awt/Toolkit.java \
java/awt/Transparency.java \
java/awt/Window.java \
java/awt/color/ColorSpace.java \
java/awt/color/ICC_ColorSpace.java \
java/awt/color/ICC_Profile.java \
+java/awt/datatransfer/Clipboard.java \
java/awt/event/AWTEventListener.java \
java/awt/event/ActionEvent.java \
java/awt/event/ActionListener.java \
@@ -1071,8 +1081,6 @@
java/lang/e_scalb.c java/lang/s_rint.c java/lang/w_sqrt.c \
java/lang/e_sqrt.c java/lang/s_scalbn.c java/lang/sf_rint.c \
java/lang/k_cos.c java/lang/s_sin.c
-
-#java/awt/natToolkit.cc
## This lists all the C++ source files in subdirectories.
nat_source_files = \
Index: java/awt/Canvas.java
===================================================================
RCS file: Canvas.java
diff -N Canvas.java
--- /dev/null Tue May 5 13:32:27 1998
+++ Canvas.java Thu Aug 3 04:57:52 2000
@@ -0,0 +1,15 @@
+/* Copyright (C) 2000 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+package java.awt;
+
+/* A very incomplete placeholder. */
+
+public class Canvas extends Component
+{
+}
Index: java/awt/Checkbox.java
===================================================================
RCS file: Checkbox.java
diff -N Checkbox.java
--- /dev/null Tue May 5 13:32:27 1998
+++ Checkbox.java Thu Aug 3 04:57:52 2000
@@ -0,0 +1,15 @@
+/* Copyright (C) 2000 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+package java.awt;
+
+/* A very incomplete placeholder. */
+
+public class Checkbox extends Component
+{
+}
Index: java/awt/CheckboxMenuItem.java
===================================================================
RCS file: CheckboxMenuItem.java
diff -N CheckboxMenuItem.java
--- /dev/null Tue May 5 13:32:27 1998
+++ CheckboxMenuItem.java Thu Aug 3 04:57:53 2000
@@ -0,0 +1,15 @@
+/* Copyright (C) 2000 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+package java.awt;
+
+/* A very incomplete placeholder. */
+
+public class CheckboxMenuItem extends MenuItem
+{
+}
Index: java/awt/Choice.java
===================================================================
RCS file: Choice.java
diff -N Choice.java
--- /dev/null Tue May 5 13:32:27 1998
+++ Choice.java Thu Aug 3 04:57:53 2000
@@ -0,0 +1,15 @@
+/* Copyright (C) 2000 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+package java.awt;
+
+/* A very incomplete placeholder. */
+
+public class Choice extends Component
+{
+}
Index: java/awt/Component.java
===================================================================
RCS file: /cvs/java/libgcj/libjava/java/awt/Component.java,v
retrieving revision 1.9
diff -u -r1.9 Component.java
--- Component.java 2000/07/31 04:11:49 1.9
+++ Component.java 2000/08/03 11:57:55
@@ -38,6 +38,12 @@
RIGHT_ALIGNMENT = 1.0f,
TOP_ALIGNMENT = 0.0f;
+ /* Make the treelock a String so that it can easily be identified
+ in debug dumps. We clone the String in order to avoid a conflict in
+ the unlikely event that some other package uses exactly the same string
+ as a lock object. */
+ static Object treeLock = new String("AWT_TREE_LOCK");
+
/* Serialized fields from the serialization spec. */
// FIXME: Default values?
int x;
@@ -70,8 +76,6 @@
/* Anything else is non-serializable, and should be declared "transient". */
transient Container parent;
transient java.awt.peer.ComponentPeer peer;
-
- transient Object treeLock;
transient ComponentListener componentListener;
transient FocusListener focusListener;
Index: java/awt/Dialog.java
===================================================================
RCS file: Dialog.java
diff -N Dialog.java
--- /dev/null Tue May 5 13:32:27 1998
+++ Dialog.java Thu Aug 3 04:57:55 2000
@@ -0,0 +1,20 @@
+/* Copyright (C) 2000 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+package java.awt;
+
+/* A very incomplete placeholder. */
+
+public class Dialog extends Window
+{
+ public Dialog (Frame owner)
+ {
+ super(owner);
+ // FIXME
+ }
+}
Index: java/awt/FileDialog.java
===================================================================
RCS file: FileDialog.java
diff -N FileDialog.java
--- /dev/null Tue May 5 13:32:27 1998
+++ FileDialog.java Thu Aug 3 04:57:55 2000
@@ -0,0 +1,20 @@
+/* Copyright (C) 2000 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+package java.awt;
+
+/* A very incomplete placeholder. */
+
+public class FileDialog extends Dialog
+{
+ public FileDialog (Frame owner)
+ {
+ super(owner);
+ // FIXME
+ }
+}
Index: java/awt/List.java
===================================================================
RCS file: List.java
diff -N List.java
--- /dev/null Tue May 5 13:32:27 1998
+++ List.java Thu Aug 3 04:57:55 2000
@@ -0,0 +1,15 @@
+/* Copyright (C) 2000 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+package java.awt;
+
+/* A very incomplete placeholder. */
+
+public class List extends Component
+{
+}
Index: java/awt/MenuItem.java
===================================================================
RCS file: /cvs/java/libgcj/libjava/java/awt/MenuItem.java,v
retrieving revision 1.4
diff -u -r1.4 MenuItem.java
--- MenuItem.java 2000/07/12 03:32:06 1.4
+++ MenuItem.java 2000/08/03 11:57:55
@@ -24,6 +24,11 @@
transient ActionListener actionListener;
+ public MenuItem ()
+ {
+ this.label = "";
+ }
+
public MenuItem (String label)
{
this.label = label;
Index: java/awt/ScrollPane.java
===================================================================
RCS file: ScrollPane.java
diff -N ScrollPane.java
--- /dev/null Tue May 5 13:32:27 1998
+++ ScrollPane.java Thu Aug 3 04:57:55 2000
@@ -0,0 +1,15 @@
+/* Copyright (C) 2000 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+package java.awt;
+
+/* A very incomplete placeholder. */
+
+public class ScrollPane extends Container
+{
+}
Index: java/awt/TextField.java
===================================================================
RCS file: TextField.java
diff -N TextField.java
--- /dev/null Tue May 5 13:32:27 1998
+++ TextField.java Thu Aug 3 04:57:55 2000
@@ -0,0 +1,16 @@
+/* Copyright (C) 2000 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+package java.awt;
+import java.awt.event.*;
+
+/* A very incomplete placeholder. */
+
+public class TextField extends TextComponent
+{
+}
Index: java/awt/Toolkit.java
===================================================================
RCS file: /cvs/java/libgcj/libjava/java/awt/Toolkit.java,v
retrieving revision 1.9
diff -u -r1.9 Toolkit.java
--- Toolkit.java 2000/07/31 02:03:51 1.9
+++ Toolkit.java 2000/08/03 11:57:56
@@ -8,7 +8,12 @@
package java.awt;
import java.awt.peer.*;
+import java.awt.event.*;
import java.net.URL;
+import java.beans.*;
+import java.awt.image.*;
+import java.awt.datatransfer.Clipboard;
+import java.util.Hashtable;
/* A very incomplete placeholder. */
@@ -16,29 +21,244 @@
{
static Toolkit defaultToolkit;
static EventQueue systemEventQueue = new EventQueue();
+ PropertyChangeSupport pcsupport = new PropertyChangeSupport(this);
+ Hashtable desktopProperties = new Hashtable();
- public static synchronized Toolkit getDefaultToolkit()
+ public static Toolkit getDefaultToolkit()
{
- if (defaultToolkit == null)
- init();
+ if (defaultToolkit != null)
+ return defaultToolkit;
+
+ Class toolkit_class;
+ String tk_class_name = System.getProperty("awt.toolkit");
+ if (tk_class_name == null)
+ tk_class_name = "gnu.awt.peer.gtk.GTKToolkit";
+
+ try
+ {
+ toolkit_class = Class.forName(tk_class_name);
+ defaultToolkit = (Toolkit) toolkit_class.newInstance();
+ }
+ catch (Exception x)
+ {
+ throw new AWTError("Toolkit class " + tk_class_name +
+ " could not be initialized:\n " + x);
+ }
+
return defaultToolkit;
}
+ protected abstract ButtonPeer createButton(Button target);
+ protected abstract TextFieldPeer createTextField(TextField target);
+ protected abstract LabelPeer createLabel(Label target);
+ protected abstract ListPeer createList(List target);
+ protected abstract CheckboxPeer createCheckbox(Checkbox target);
+ protected abstract ScrollbarPeer createScrollbar(Scrollbar target);
+ protected abstract ScrollPanePeer createScrollPane(ScrollPane target);
+ protected abstract TextAreaPeer createTextArea(TextArea target);
+ protected abstract ChoicePeer createChoice(Choice target);
protected abstract FramePeer createFrame(Frame target);
+ protected abstract CanvasPeer createCanvas(Canvas target);
+ protected abstract PanelPeer createPanel(Panel target);
+ protected abstract WindowPeer createWindow(Window target);
+ protected abstract DialogPeer createDialog(Dialog target);
+ protected abstract MenuBarPeer createMenuBar(MenuBar target);
+ protected abstract MenuPeer createMenu(Menu target);
+ protected abstract PopupMenuPeer createPopupMenu(PopupMenu target);
+ protected abstract MenuItemPeer createMenuItem(MenuItem target);
+ protected abstract FileDialogPeer createFileDialog(FileDialog target);
+ protected abstract CheckboxMenuItemPeer
+ createCheckboxMenuItem(CheckboxMenuItem target);
+
+ protected LightweightPeer createComponent(Component target)
+ {
+ // FIXME
+ return null;
+ }
+
+ /* @deprecated Use GraphicsEnvironment.getAllFonts() */
+ protected abstract java.awt.peer.FontPeer getFontPeer(String name, int style);
+
+ /*
+ public abstract DragSourceContextPeer
+ createDragSourceContextPeer(DragGestureEvent dge)
+ throws InvalidDnDOperationException;
+ */
+
+ protected void loadSystemColors(int[] systemColors)
+ {
+ // FIXME
+ }
+
+ public abstract Dimension getScreenSize();
+ public abstract int getScreenResolution();
+ public abstract ColorModel getColorModel();
+ /* @deprecated Use GraphicsEnvironment.getAvailableFontFamilyNames() */
+ public abstract String[] getFontList();
+ public abstract FontMetrics getFontMetrics(Font font);
+ public abstract void sync();
+ public abstract Image getImage(String filename);
public abstract Image getImage(URL url);
+ public abstract Image createImage(String filename);
+ public abstract Image createImage(URL url);
+ public abstract boolean prepareImage(Image image, int width, int height,
+ ImageObserver observer);
+ public abstract int checkImage(Image image, int width, int height,
+ ImageObserver observer);
+ public abstract Image createImage(ImageProducer producer);
- protected abstract ButtonPeer createButton (Button target);
- protected abstract ContainerPeer createContainer (Container target);
- protected abstract LabelPeer createLabel (Label target);
- protected abstract ScrollbarPeer createScrollbar (Scrollbar target);
- protected abstract WindowPeer createWindow (Window target);
+ public Image createImage(byte[] imagedata)
+ {
+ return createImage (imagedata, 0, imagedata.length);
+ }
+
+ public abstract Image createImage(byte[] imagedata, int imageoffset,
+ int imagelength);
+ /*
+ public abstract PrintJob getPrintJob(Frame frame, String jobtitle,
+ Properties props);
+ public PrintJob getPrintJob(Frame frame, String jobtitle,
+ JobAttributes jobAttributes,
+ PageAttributes pageAttributes)
+ {
+
+ }
+ */
+
+ public abstract void beep();
+ public abstract Clipboard getSystemClipboard();
+
+ public int getMenuShortcutKeyMask()
+ {
+ return InputEvent.CTRL_MASK;
+ }
+
+ public boolean getLockingKeyState(int keyCode)
+ {
+ if (keyCode != KeyEvent.VK_CAPS_LOCK
+ && keyCode != KeyEvent.VK_NUM_LOCK
+ && keyCode != KeyEvent.VK_SCROLL_LOCK)
+ throw new IllegalArgumentException();
+ throw new UnsupportedOperationException();
+ }
+
+ public void setLockingKeyState(int keyCode, boolean on)
+ {
+ if (keyCode != KeyEvent.VK_CAPS_LOCK
+ && keyCode != KeyEvent.VK_NUM_LOCK
+ && keyCode != KeyEvent.VK_SCROLL_LOCK)
+ throw new IllegalArgumentException();
+
+ throw new UnsupportedOperationException();
+ }
+
+ protected static Container getNativeContainer(Component c)
+ {
+ while (c != null)
+ {
+ if (!c.isLightweight ())
+ return (Container) c;
+
+ c = c.getParent();
+ }
+ return null;
+ }
+
+ public Cursor createCustomCursor(Image cursor, Point hotSpot, String name)
+ throws IndexOutOfBoundsException
+ {
+ // Presumably the only reason this isn't abstract is for backwards
+ // compatibility? FIXME?
+ return null;
+ }
+
+ public Dimension getBestCursorSize(int preferredWidth, int preferredHeight)
+ {
+ return new Dimension (0,0);
+ }
+
+ public int getMaximumCursorColors()
+ {
+ return 0;
+ }
+
+ public static String getProperty(String key, String defaultValue)
+ {
+ // FIXME
+ return defaultValue;
+ }
+
public final EventQueue getSystemEventQueue()
+ {
+ return systemEventQueue;
+ }
+
+ protected abstract EventQueue getSystemEventQueueImpl();
+
+ /*
+ public DragGestureRecognizer
+ createDragGestureRecognizer(Class abstractRecognizerClass, DragSource ds,
+ Component c, int srcActions,
+ DragGestureListener dgl)
+ {
+ // err... FIXME
+ return null;
+ }
+ */
+
+ public final Object getDesktopProperty(String propertyName)
+ {
+ return desktopProperties.get(propertyName);
+ }
+
+ protected final void setDesktopProperty(String name, Object newValue)
+ {
+ Object oldValue = getDesktopProperty(name);
+ desktopProperties.put(name, newValue);
+ pcsupport.firePropertyChange(name, oldValue, newValue);
+ }
+
+ protected Object lazilyLoadDesktopProperty(String name)
+ {
+ // FIXME - what is this??
+ return null;
+ }
+
+ protected void initializeDesktopProperties()
+ {
+ // Overridden by toolkit implementation?
+ }
+
+ public void addPropertyChangeListener(String name,
+ PropertyChangeListener pcl)
+ {
+ pcsupport.addPropertyChangeListener(name, pcl);
+ }
+
+ public void removePropertyChangeListener(String name,
+ PropertyChangeListener pcl)
+ {
+ pcsupport.removePropertyChangeListener(name, pcl);
+ }
+
+ public void addAWTEventListener(AWTEventListener listener, long eventMask)
{
- return systemEventQueue;
+ // SecurityManager s = System.getSecurityManager();
+ // if (s != null)
+ // s.checkPermission(AWTPermission("listenToAllAWTEvents"));
+
+ // FIXME
}
- private static void init() { }
- // private static native void init();
- // static { init(); }
+ public void removeAWTEventListener(AWTEventListener listener)
+ {
+ // FIXME
+ }
+
+ /*
+ public abstract Map mapInputMethodHighlight(InputMethodHighlight highlight)
+ {
+ }
+ */
}
Index: java/awt/natToolkit.cc
===================================================================
RCS file: natToolkit.cc
diff -N natToolkit.cc
--- /sourceware/cvs-tmp/cvsuuWaba Thu Aug 3 04:57:56 2000
+++ /dev/null Tue May 5 13:32:27 1998
@@ -1,27 +0,0 @@
-/* Copyright (C) 1999 Free Software Foundation
-
- This file is part of libgcj.
-
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
-#include <config.h>
-
-/*#define ENABLE_GTK*/
-
-#include <gcj/cni.h>
-#include <java/awt/Toolkit.h>
-#ifdef ENABLE_GTK
-#include <java/awt/peer/GtkToolkit.h>
-#endif
-
-void
-java::awt::Toolkit::init()
-{
-#ifdef ENABLE_GTK
- defaultToolkit = new java::awt::peer::GtkToolkit();
-#else
- JvFail("no awt (graphics) toolkit available");
-#endif
-}
Index: java/awt/datatransfer/Clipboard.java
===================================================================
RCS file: Clipboard.java
diff -N Clipboard.java
--- /dev/null Tue May 5 13:32:27 1998
+++ Clipboard.java Thu Aug 3 04:57:56 2000
@@ -0,0 +1,15 @@
+/* Copyright (C) 2000 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+package java.awt.datatransfer;
+
+/* A very incomplete placeholder. */
+
+public class Clipboard
+{
+}