summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoman Kennke <roman@kennke.org>2006-11-23 20:30:28 +0000
committerRoman Kennke <roman@kennke.org>2006-11-23 20:30:28 +0000
commitba382cbfedb8dce61812052a16bf555d489592e9 (patch)
treefa2aba198b8c4260898c4cec58587f8cad083812
parentd8e534fcab9c98b08ede0b921ba2fb47db0837ea (diff)
downloadclasspath-ba382cbfedb8dce61812052a16bf555d489592e9.tar.gz
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.
-rw-r--r--ChangeLog36
-rw-r--r--gnu/java/awt/peer/gtk/GtkToolkit.java34
-rw-r--r--gnu/java/awt/peer/headless/HeadlessGraphicsEnvironment.java5
-rw-r--r--java/awt/Toolkit.java21
4 files changed, 84 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index ead660618..8f0267d9f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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);
+ }
}
}