diff options
-rw-r--r-- | ChangeLog | 36 | ||||
-rw-r--r-- | gnu/java/awt/peer/gtk/GtkToolkit.java | 34 | ||||
-rw-r--r-- | gnu/java/awt/peer/headless/HeadlessGraphicsEnvironment.java | 5 | ||||
-rw-r--r-- | java/awt/Toolkit.java | 21 |
4 files changed, 84 insertions, 12 deletions
@@ -1,3 +1,39 @@ +2006-11-23 Roman Kennke <kennke@aicas.com> + + * gnu/java/awt/peer/headless/HeadlessGraphicsEnvironment.java + (createGraphics): Use constructor to create new instance of + BufferedImageGraphics. + * java/awt/Toolkit.java + (getDefaultToolkit): Really try to get a real toolkit. Only + use HeadlessToolkit if no other is available. + * gnu/java/awt/peer/gtk/GtkToolkit.java + (checkHeadless): New helper method. Checks for headless environment + and throws HeadlessException if appropriate. + (createButton): Check for headless. + (createCanvas): Check for headless. + (createCheckbox): Check for headless. + (createCheckboxMenuItem): Check for headless. + (createChoice): Check for headless. + (createDialog): Check for headless. + (createDragGestureRecognizer): Check for headless. + (createDragSourceContextPeer): Check for headless. + (createEmbeddedWindow): Check for headless. + (createFileDialog): Check for headless. + (createFrame): Check for headless. + (createCheckbox): Check for headless. + (createLabel): Check for headless. + (createList): Check for headless. + (createMenu): Check for headless. + (createMenuBar): Check for headless. + (createMenuItem): Check for headless. + (createPanel): Check for headless. + (createPopupMenu): Check for headless. + (createScrollbar): Check for headless. + (createScrollPane): Check for headless. + (createTextArea): Check for headless. + (createTextField): Check for headless. + (createWindow): Check for headless. + 2006-11-23 David Gilbert <david.gilbert@object-refinery.com> * java/beans/beancontext/BeanContextSupport.java diff --git a/gnu/java/awt/peer/gtk/GtkToolkit.java b/gnu/java/awt/peer/gtk/GtkToolkit.java index 81367d6b0..26724206d 100644 --- a/gnu/java/awt/peer/gtk/GtkToolkit.java +++ b/gnu/java/awt/peer/gtk/GtkToolkit.java @@ -62,6 +62,7 @@ import java.awt.FontMetrics; import java.awt.Frame; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; +import java.awt.HeadlessException; import java.awt.Image; import java.awt.Label; import java.awt.List; @@ -83,6 +84,7 @@ import java.awt.dnd.DragGestureEvent; import java.awt.dnd.DragGestureListener; import java.awt.dnd.DragGestureRecognizer; import java.awt.dnd.DragSource; +import java.awt.dnd.InvalidDnDOperationException; import java.awt.dnd.peer.DragSourceContextPeer; import java.awt.im.InputMethodHighlight; import java.awt.image.ColorModel; @@ -418,109 +420,130 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit protected ButtonPeer createButton (Button b) { + checkHeadless(); return new GtkButtonPeer (b); } protected CanvasPeer createCanvas (Canvas c) { + checkHeadless(); return new GtkCanvasPeer (c); } protected CheckboxPeer createCheckbox (Checkbox cb) { + checkHeadless(); return new GtkCheckboxPeer (cb); } protected CheckboxMenuItemPeer createCheckboxMenuItem (CheckboxMenuItem cmi) { + checkHeadless(); return new GtkCheckboxMenuItemPeer (cmi); } protected ChoicePeer createChoice (Choice c) { + checkHeadless(); return new GtkChoicePeer (c); } protected DialogPeer createDialog (Dialog d) { + checkHeadless(); GtkMainThread.createWindow(); return new GtkDialogPeer (d); } protected FileDialogPeer createFileDialog (FileDialog fd) { + checkHeadless(); return new GtkFileDialogPeer (fd); } protected FramePeer createFrame (Frame f) { + checkHeadless(); GtkMainThread.createWindow(); return new GtkFramePeer (f); } protected LabelPeer createLabel (Label label) { + checkHeadless(); return new GtkLabelPeer (label); } protected ListPeer createList (List list) { + checkHeadless(); return new GtkListPeer (list); } protected MenuPeer createMenu (Menu m) { + checkHeadless(); return new GtkMenuPeer (m); } protected MenuBarPeer createMenuBar (MenuBar mb) { + checkHeadless(); return new GtkMenuBarPeer (mb); } protected MenuItemPeer createMenuItem (MenuItem mi) { + checkHeadless(); return new GtkMenuItemPeer (mi); } protected PanelPeer createPanel (Panel p) { + checkHeadless(); return new GtkPanelPeer (p); } protected PopupMenuPeer createPopupMenu (PopupMenu target) { + checkHeadless(); return new GtkPopupMenuPeer (target); } protected ScrollPanePeer createScrollPane (ScrollPane sp) { + checkHeadless(); return new GtkScrollPanePeer (sp); } protected ScrollbarPeer createScrollbar (Scrollbar sb) { + checkHeadless(); return new GtkScrollbarPeer (sb); } protected TextAreaPeer createTextArea (TextArea ta) { + checkHeadless(); return new GtkTextAreaPeer (ta); } protected TextFieldPeer createTextField (TextField tf) { + checkHeadless(); return new GtkTextFieldPeer (tf); } protected WindowPeer createWindow (Window w) { + checkHeadless(); GtkMainThread.createWindow(); return new GtkWindowPeer (w); } public EmbeddedWindowPeer createEmbeddedWindow (EmbeddedWindow w) { + checkHeadless(); GtkMainThread.createWindow(); return new GtkEmbeddedWindowPeer (w); } @@ -590,6 +613,8 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit public DragSourceContextPeer createDragSourceContextPeer(DragGestureEvent e) { + if (GraphicsEnvironment.isHeadless()) + throw new InvalidDnDOperationException(); return new GtkDragSourceContextPeer(e); } @@ -599,7 +624,8 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit int actions, DragGestureListener l) { - if (recognizer.getName().equals("java.awt.dnd.MouseDragGestureRecognizer")) + if (recognizer.getName().equals("java.awt.dnd.MouseDragGestureRecognizer") + && ! GraphicsEnvironment.isHeadless()) { GtkMouseDragGestureRecognizer gestureRecognizer = new GtkMouseDragGestureRecognizer(ds, comp, actions, l); @@ -659,6 +685,12 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit || state == Frame.MAXIMIZED_BOTH; } + private void checkHeadless() + { + if (GraphicsEnvironment.isHeadless()) + throw new HeadlessException(); + } + public native int getMouseNumberOfButtons(); } // class GtkToolkit diff --git a/gnu/java/awt/peer/headless/HeadlessGraphicsEnvironment.java b/gnu/java/awt/peer/headless/HeadlessGraphicsEnvironment.java index 6ae2bf141..b3eeb1baa 100644 --- a/gnu/java/awt/peer/headless/HeadlessGraphicsEnvironment.java +++ b/gnu/java/awt/peer/headless/HeadlessGraphicsEnvironment.java @@ -62,7 +62,8 @@ public class HeadlessGraphicsEnvironment { // Try to get a CairoGraphics (accellerated) when available. Do this // via reflection to avoid having a hard compile time dependency. - Class cairoSurfaceCl = Class.forName("gnu.java.awt.peer.gtk.CairoSurface"); + Class cairoSurfaceCl = + Class.forName("gnu.java.awt.peer.gtk.CairoSurface"); Raster raster = image.getRaster(); if (cairoSurfaceCl.isInstance(raster)) { @@ -76,7 +77,7 @@ public class HeadlessGraphicsEnvironment Class.forName("gnu.java.awt.peer.gtk.BufferedImageGraphics"); Constructor bigC = bigCl.getConstructor(new Class[]{BufferedImage.class }); - g2d = (Graphics2D) bigCl.newInstance(); + g2d = (Graphics2D) bigC.newInstance(new Object[]{ image}); } } catch (Exception ex) diff --git a/java/awt/Toolkit.java b/java/awt/Toolkit.java index 33cd05d7d..29327cac5 100644 --- a/java/awt/Toolkit.java +++ b/java/awt/Toolkit.java @@ -553,13 +553,6 @@ public abstract class Toolkit if (toolkit != null) return toolkit; - // Check for the headless property. - if (GraphicsEnvironment.isHeadless()) - { - toolkit = new HeadlessToolkit(); - return toolkit; - } - String toolkit_name = SystemProperties.getProperty("awt.toolkit", default_toolkit_name); try @@ -589,8 +582,18 @@ public abstract class Toolkit } catch (Throwable t) { - AWTError e = new AWTError("Cannot load AWT toolkit: " + toolkit_name); - throw (AWTError) e.initCause(t); + // Check for the headless property. + if (GraphicsEnvironment.isHeadless()) + { + toolkit = new HeadlessToolkit(); + return toolkit; + } + else + { + AWTError e = new AWTError("Cannot load AWT toolkit: " + + toolkit_name); + throw (AWTError) e.initCause(t); + } } } |