From d088fc46aa873818835620346db976f4c7c7349e Mon Sep 17 00:00:00 2001
From: bryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Thu, 3 Aug 2000 12:09:41 +0000
Subject: [PATCH] 	* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@35450 138bc75d-0d04-0410-961f-82ee72b054a4
---
 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 000000000000..f6480e6972e6
--- /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 000000000000..ec1f20d5b3a5
--- /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 000000000000..a98c94a7ba56
--- /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 000000000000..cc1ddc0a57fa
--- /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 f1e24a4c63ad..5c61b913449d 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 000000000000..fcd8d6311689
--- /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 000000000000..cdcf442dfd34
--- /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 000000000000..ddc577679787
--- /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 d766d42b56a9..6e79ca0fc858 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 000000000000..2c3454c0bf04
--- /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 000000000000..e8059d4e6794
--- /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 e1788dfcfc59..b1cb286d6781 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 000000000000..634a8d5a94e4
--- /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 b2be56c9fbc5..000000000000
--- 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 <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
-}
-- 
GitLab