[multiple changes]

2005-04-25  Jeroen Frijters  <jeroen@frijters.net>

	* java/awt/GraphicsEnvironment.java
	(localGraphicsEnvironment): New field.
	(getLocalGraphicsEnvironment): Added support for java.awt.graphicsenv
	property.
	(isHeadless): Added support for java.awt.headless property.
	(isHeadlessInstance): Call headless().

2005-04-25  Roman Kennke  <roman@kennke.org>

	* gnu/java/awt/peer/gtk/GdkScreenGraphicsDevice.java
	(getDisplayMode): Added. Returns the current display mode.
	(isFullScreenSupported): Added.
	* java/awt/GraphicsDevice.java
	(setFullScreenWindow): Implemented a primitive fullscreen mode.
	This resizes and relocates the fullscreen window so that it uses
	the whole screen. This is not a fully accelerated fullscreen
	exclusive mode.

From-SVN: r98740
This commit is contained in:
Michael Koch 2005-04-25 20:58:13 +00:00
parent 4b30c6bda0
commit 84e0bcb8c5
4 changed files with 122 additions and 20 deletions

View File

@ -1,3 +1,23 @@
2005-04-25 Jeroen Frijters <jeroen@frijters.net>
* java/awt/GraphicsEnvironment.java
(localGraphicsEnvironment): New field.
(getLocalGraphicsEnvironment): Added support for java.awt.graphicsenv
property.
(isHeadless): Added support for java.awt.headless property.
(isHeadlessInstance): Call headless().
2005-04-25 Roman Kennke <roman@kennke.org>
* gnu/java/awt/peer/gtk/GdkScreenGraphicsDevice.java
(getDisplayMode): Added. Returns the current display mode.
(isFullScreenSupported): Added.
* java/awt/GraphicsDevice.java
(setFullScreenWindow): Implemented a primitive fullscreen mode.
This resizes and relocates the fullscreen window so that it uses
the whole screen. This is not a fully accelerated fullscreen
exclusive mode.
2005-04-25 Michael Koch <konqueror@gmx.de> 2005-04-25 Michael Koch <konqueror@gmx.de>
* java/lang/Runtime.java, * java/lang/Runtime.java,

View File

@ -38,6 +38,8 @@ exception statement from your version. */
package gnu.java.awt.peer.gtk; package gnu.java.awt.peer.gtk;
import java.awt.Dimension;
import java.awt.DisplayMode;
import java.awt.GraphicsConfiguration; import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice; import java.awt.GraphicsDevice;
@ -79,4 +81,35 @@ public class GdkScreenGraphicsDevice extends GraphicsDevice
// FIXME: query X for default configuration // FIXME: query X for default configuration
return new GdkGraphicsConfiguration(this); return new GdkGraphicsConfiguration(this);
} }
/**
* Returns the current display mode of this device, or null if unknown.
*
* @return the current display mode
* @see #setDisplayMode(DisplayMode)
* @see #getDisplayModes()
* @since 1.4
*/
public DisplayMode getDisplayMode()
{
// determine display mode
Dimension dim = getToolkit().getScreenSize();
DisplayMode mode = new DisplayMode(dim.width, dim.height, 0,
DisplayMode.REFRESH_RATE_UNKNOWN);
return mode;
}
/**
* This device does not yet support fullscreen exclusive mode, so this
* returns <code>false</code>.
*
* @return <code>false</code>
* @since 1.4
*/
public boolean isFullScreenSupported()
{
return false;
}
} }

View File

@ -64,6 +64,12 @@ public abstract class GraphicsDevice
/** The current full-screen window, or null if there is none. */ /** The current full-screen window, or null if there is none. */
private Window full_screen; private Window full_screen;
/**
* The bounds of the fullscreen window before it has been switched to full
* screen.
*/
private Rectangle fullScreenOldBounds;
/** The current display mode, or null if unknown. */ /** The current display mode, or null if unknown. */
private DisplayMode mode; private DisplayMode mode;
@ -151,9 +157,9 @@ public abstract class GraphicsDevice
* </ul><br> * </ul><br>
* If <code>isFullScreenSupported()</code> returns false, full-screen * If <code>isFullScreenSupported()</code> returns false, full-screen
* exclusive mode is simulated by resizing the window to the size of the * exclusive mode is simulated by resizing the window to the size of the
* screen and positioning it at (0,0). * screen and positioning it at (0,0). This is also what this method does.
* * If a device supports real fullscreen mode then it should override this
* XXX Not yet implemented in Classpath. * method as well as #isFullScreenSupported and #getFullScreenWindow.
* *
* @param w the window to toggle * @param w the window to toggle
* @see #isFullScreenSupported() * @see #isFullScreenSupported()
@ -164,11 +170,24 @@ public abstract class GraphicsDevice
*/ */
public synchronized void setFullScreenWindow(Window w) public synchronized void setFullScreenWindow(Window w)
{ {
// Restore the previous window to normal mode and release the reference.
if (full_screen != null) if (full_screen != null)
; // XXX Restore the previous window to normal mode. {
full_screen = w; full_screen.setBounds(fullScreenOldBounds);
// XXX If w != null, make it full-screen. }
throw new Error("not implemented");
full_screen = null;
// If w != null, make it full-screen.
if (w != null)
{
fullScreenOldBounds = w.getBounds();
full_screen = w;
DisplayMode dMode = getDisplayMode();
full_screen.setBounds(0, 0, dMode.getWidth(), dMode.getHeight());
full_screen.requestFocus();
full_screen.setLocationRelativeTo(null);
}
} }
/** /**

View File

@ -1,5 +1,5 @@
/* GraphicsEnvironment.java -- information about the graphics environment /* GraphicsEnvironment.java -- information about the graphics environment
Copyright (C) 2002, 2004 Free Software Foundation, Inc. Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath. This file is part of GNU Classpath.
@ -39,7 +39,7 @@ exception statement from your version. */
package java.awt; package java.awt;
import gnu.java.awt.ClasspathToolkit; import gnu.java.awt.ClasspathToolkit;
import gnu.classpath.SystemProperties;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.util.Locale; import java.util.Locale;
@ -56,6 +56,8 @@ import java.util.Locale;
*/ */
public abstract class GraphicsEnvironment public abstract class GraphicsEnvironment
{ {
private static GraphicsEnvironment localGraphicsEnvironment;
/** /**
* The environment must be obtained from a factory or query method, hence * The environment must be obtained from a factory or query method, hence
* this constructor is protected. * this constructor is protected.
@ -65,16 +67,43 @@ public abstract class GraphicsEnvironment
} }
/** /**
* Returns the local graphics environment. * Returns the local graphics environment. If the java.awt.graphicsenv
* system property is set, it instantiates the specified class,
* otherwise it assume that the awt toolkit is a ClasspathToolkit
* and delegates to it to create the instance.
* *
* XXX Not implemented in Classpath yet.
* @return the local environment * @return the local environment
*/ */
public static GraphicsEnvironment getLocalGraphicsEnvironment() public static GraphicsEnvironment getLocalGraphicsEnvironment()
{ {
ClasspathToolkit tk; if (localGraphicsEnvironment != null)
tk = ((ClasspathToolkit) Toolkit.getDefaultToolkit ()); return localGraphicsEnvironment;
return tk.getLocalGraphicsEnvironment ();
String graphicsenv = SystemProperties.getProperty("java.awt.graphicsenv",
null);
if (graphicsenv != null)
{
try
{
// We intentionally use the bootstrap class loader.
localGraphicsEnvironment = (GraphicsEnvironment)
Class.forName(graphicsenv).newInstance();
return localGraphicsEnvironment;
}
catch (Exception x)
{
throw (InternalError)
new InternalError("Unable to instantiate java.awt.graphicsenv")
.initCause(x);
}
}
else
{
ClasspathToolkit tk;
tk = ((ClasspathToolkit) Toolkit.getDefaultToolkit());
localGraphicsEnvironment = tk.getLocalGraphicsEnvironment();
return localGraphicsEnvironment;
}
} }
/** /**
@ -83,7 +112,8 @@ public abstract class GraphicsEnvironment
* Windows Toolkit (java.awt) throw a {@link HeadlessException} if this * Windows Toolkit (java.awt) throw a {@link HeadlessException} if this
* returns true. * returns true.
* *
* XXX For now, Classpath assumes that it is never headless. * This method returns true if the java.awt.headless property is set
* to "true".
* *
* @return true if the environment is headless, meaning that graphics are * @return true if the environment is headless, meaning that graphics are
* unsupported * unsupported
@ -91,16 +121,16 @@ public abstract class GraphicsEnvironment
*/ */
public static boolean isHeadless() public static boolean isHeadless()
{ {
// XXX Should be: getLocalGraphicsEnvironment().isHeadlessInstance(); String headless = SystemProperties.getProperty("java.awt.headless", null);
return false; return "true".equalsIgnoreCase(headless);
} }
/** /**
* Check if the given environment is headless, meaning that it does not * Check if the given environment is headless, meaning that it does not
* support a display, keyboard, or mouse. Many methods in the Abstract * support a display, keyboard, or mouse. Many methods in the Abstract
* Windows Toolkit (java.awt) throw a {@link HeadlessException} if this * Windows Toolkit (java.awt) throw a {@link HeadlessException} if this
* returns true. This default implementation returns false, so subclasses * returns true. This default implementation returns isHeadless(), so
* need only override it if they are headless. * subclasses need only override it if they differ.
* *
* @return true if the environment is headless, meaning that graphics are * @return true if the environment is headless, meaning that graphics are
* unsupported * unsupported
@ -108,7 +138,7 @@ public abstract class GraphicsEnvironment
*/ */
public boolean isHeadlessInstance() public boolean isHeadlessInstance()
{ {
return false; return isHeadless();
} }
/** /**