From 5ab63c1aea2a97e7b5e63d01b56bcbf8ddc15726 Mon Sep 17 00:00:00 2001 From: Bryce McKinlay Date: Thu, 3 Aug 2000 13:09:41 +0100 Subject: [PATCH] Makefile.am: Add new AWT stubs. * 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. From-SVN: r35450 --- libjava/java/awt/Canvas.java | 15 ++ libjava/java/awt/Checkbox.java | 15 ++ libjava/java/awt/CheckboxMenuItem.java | 15 ++ libjava/java/awt/Choice.java | 15 ++ libjava/java/awt/Component.java | 8 +- libjava/java/awt/Dialog.java | 20 ++ libjava/java/awt/FileDialog.java | 20 ++ libjava/java/awt/List.java | 15 ++ libjava/java/awt/MenuItem.java | 5 + libjava/java/awt/ScrollPane.java | 15 ++ libjava/java/awt/TextField.java | 16 ++ libjava/java/awt/Toolkit.java | 244 ++++++++++++++++++- libjava/java/awt/datatransfer/Clipboard.java | 15 ++ libjava/java/awt/natToolkit.cc | 27 -- 14 files changed, 404 insertions(+), 41 deletions(-) create mode 100644 libjava/java/awt/Canvas.java create mode 100644 libjava/java/awt/Checkbox.java create mode 100644 libjava/java/awt/CheckboxMenuItem.java create mode 100644 libjava/java/awt/Choice.java create mode 100644 libjava/java/awt/Dialog.java create mode 100644 libjava/java/awt/FileDialog.java create mode 100644 libjava/java/awt/List.java create mode 100644 libjava/java/awt/ScrollPane.java create mode 100644 libjava/java/awt/TextField.java create mode 100644 libjava/java/awt/datatransfer/Clipboard.java delete mode 100644 libjava/java/awt/natToolkit.cc diff --git a/libjava/java/awt/Canvas.java b/libjava/java/awt/Canvas.java new file mode 100644 index 00000000000..f6480e6972e --- /dev/null +++ b/libjava/java/awt/Canvas.java @@ -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 +{ +} diff --git a/libjava/java/awt/Checkbox.java b/libjava/java/awt/Checkbox.java new file mode 100644 index 00000000000..ec1f20d5b3a --- /dev/null +++ b/libjava/java/awt/Checkbox.java @@ -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 +{ +} diff --git a/libjava/java/awt/CheckboxMenuItem.java b/libjava/java/awt/CheckboxMenuItem.java new file mode 100644 index 00000000000..a98c94a7ba5 --- /dev/null +++ b/libjava/java/awt/CheckboxMenuItem.java @@ -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 +{ +} diff --git a/libjava/java/awt/Choice.java b/libjava/java/awt/Choice.java new file mode 100644 index 00000000000..cc1ddc0a57f --- /dev/null +++ b/libjava/java/awt/Choice.java @@ -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 +{ +} diff --git a/libjava/java/awt/Component.java b/libjava/java/awt/Component.java index f1e24a4c63a..5c61b913449 100644 --- a/libjava/java/awt/Component.java +++ b/libjava/java/awt/Component.java @@ -38,6 +38,12 @@ public abstract class Component implements ImageObserver, MenuContainer, 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; @@ -71,8 +77,6 @@ public abstract class Component implements ImageObserver, MenuContainer, transient Container parent; transient java.awt.peer.ComponentPeer peer; - transient Object treeLock; - transient ComponentListener componentListener; transient FocusListener focusListener; transient KeyListener keyListener; diff --git a/libjava/java/awt/Dialog.java b/libjava/java/awt/Dialog.java new file mode 100644 index 00000000000..fcd8d631168 --- /dev/null +++ b/libjava/java/awt/Dialog.java @@ -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 + } +} diff --git a/libjava/java/awt/FileDialog.java b/libjava/java/awt/FileDialog.java new file mode 100644 index 00000000000..cdcf442dfd3 --- /dev/null +++ b/libjava/java/awt/FileDialog.java @@ -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 + } +} diff --git a/libjava/java/awt/List.java b/libjava/java/awt/List.java new file mode 100644 index 00000000000..ddc57767978 --- /dev/null +++ b/libjava/java/awt/List.java @@ -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 +{ +} diff --git a/libjava/java/awt/MenuItem.java b/libjava/java/awt/MenuItem.java index d766d42b56a..6e79ca0fc85 100644 --- a/libjava/java/awt/MenuItem.java +++ b/libjava/java/awt/MenuItem.java @@ -24,6 +24,11 @@ public class MenuItem extends MenuComponent transient ActionListener actionListener; + public MenuItem () + { + this.label = ""; + } + public MenuItem (String label) { this.label = label; diff --git a/libjava/java/awt/ScrollPane.java b/libjava/java/awt/ScrollPane.java new file mode 100644 index 00000000000..2c3454c0bf0 --- /dev/null +++ b/libjava/java/awt/ScrollPane.java @@ -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 +{ +} diff --git a/libjava/java/awt/TextField.java b/libjava/java/awt/TextField.java new file mode 100644 index 00000000000..e8059d4e679 --- /dev/null +++ b/libjava/java/awt/TextField.java @@ -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 +{ +} diff --git a/libjava/java/awt/Toolkit.java b/libjava/java/awt/Toolkit.java index e1788dfcfc5..b1cb286d678 100644 --- a/libjava/java/awt/Toolkit.java +++ b/libjava/java/awt/Toolkit.java @@ -8,7 +8,12 @@ details. */ 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 @@ public abstract class Toolkit { 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); + + 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(); - 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); + 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; + return systemEventQueue; + } + + protected abstract EventQueue getSystemEventQueueImpl(); + + /* + public DragGestureRecognizer + createDragGestureRecognizer(Class abstractRecognizerClass, DragSource ds, + Component c, int srcActions, + DragGestureListener dgl) + { + // err... FIXME + return null; } + */ - private static void init() { } - // private static native void init(); - // static { init(); } + 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) + { + // SecurityManager s = System.getSecurityManager(); + // if (s != null) + // s.checkPermission(AWTPermission("listenToAllAWTEvents")); + + // FIXME + } + + public void removeAWTEventListener(AWTEventListener listener) + { + // FIXME + } + + /* + public abstract Map mapInputMethodHighlight(InputMethodHighlight highlight) + { + } + */ } diff --git a/libjava/java/awt/datatransfer/Clipboard.java b/libjava/java/awt/datatransfer/Clipboard.java new file mode 100644 index 00000000000..634a8d5a94e --- /dev/null +++ b/libjava/java/awt/datatransfer/Clipboard.java @@ -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 +{ +} diff --git a/libjava/java/awt/natToolkit.cc b/libjava/java/awt/natToolkit.cc deleted file mode 100644 index b2be56c9fbc..00000000000 --- a/libjava/java/awt/natToolkit.cc +++ /dev/null @@ -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 - -/*#define ENABLE_GTK*/ - -#include -#include -#ifdef ENABLE_GTK -#include -#endif - -void -java::awt::Toolkit::init() -{ -#ifdef ENABLE_GTK - defaultToolkit = new java::awt::peer::GtkToolkit(); -#else - JvFail("no awt (graphics) toolkit available"); -#endif -} -- 2.30.2