Java Code Examples for java.awt.peer.WindowPeer#applyShape()

The following examples show how to use java.awt.peer.WindowPeer#applyShape() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: Window.java    From jdk8u-jdk with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Sets the shape of the window.
 * <p>
 * Setting a shape cuts off some parts of the window. Only the parts that
 * belong to the given {@link Shape} remain visible and clickable. If
 * the shape argument is {@code null}, this method restores the default
 * shape, making the window rectangular on most platforms.
 * <p>
 * The following conditions must be met to set a non-null shape:
 * <ul>
 * <li>The {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 * PERPIXEL_TRANSPARENT} translucency must be supported by the
 * underlying system
 * <li>The window must be undecorated (see {@link Frame#setUndecorated}
 * and {@link Dialog#setUndecorated})
 * <li>The window must not be in full-screen mode (see {@link
 * GraphicsDevice#setFullScreenWindow(Window)})
 * </ul>
 * <p>
 * If the requested shape is not {@code null}, and any of the above
 * conditions are not met, the shape of this window will not change,
 * and either the {@code UnsupportedOperationException} or {@code
 * IllegalComponentStateException} will be thrown.
 * <p>
 * The translucency levels of individual pixels may also be effected by the
 * alpha component of their color (see {@link Window#setBackground(Color)}) and the
 * opacity value (see {@link #setOpacity(float)}). See {@link
 * GraphicsDevice.WindowTranslucency} for more details.
 *
 * @param shape the shape to set to the window
 *
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is decorated
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is in full-screen mode
 * @throws UnsupportedOperationException if the shape is not {@code
 *     null} and {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 *     PERPIXEL_TRANSPARENT} translucency is not supported
 *
 * @see Window#getShape()
 * @see Window#setBackground(Color)
 * @see Window#setOpacity(float)
 * @see Frame#isUndecorated
 * @see Dialog#isUndecorated
 * @see GraphicsDevice.WindowTranslucency
 * @see GraphicsDevice#isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
 *
 * @since 1.7
 */
public void setShape(Shape shape) {
    synchronized (getTreeLock()) {
        if (shape != null) {
            GraphicsConfiguration gc = getGraphicsConfiguration();
            GraphicsDevice gd = gc.getDevice();
            if (gc.getDevice().getFullScreenWindow() == this) {
                throw new IllegalComponentStateException(
                    "Setting shape for full-screen window is not supported.");
            }
            if (!gd.isWindowTranslucencySupported(
                    GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT))
            {
                throw new UnsupportedOperationException(
                    "PERPIXEL_TRANSPARENT translucency is not supported.");
            }
        }
        this.shape = (shape == null) ? null : new Path2D.Float(shape);
        WindowPeer peer = (WindowPeer)getPeer();
        if (peer != null) {
            peer.applyShape(shape == null ? null : Region.getInstance(shape, null));
        }
    }
}
 
Example 2
Source File: Window.java    From jdk8u-dev-jdk with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Sets the shape of the window.
 * <p>
 * Setting a shape cuts off some parts of the window. Only the parts that
 * belong to the given {@link Shape} remain visible and clickable. If
 * the shape argument is {@code null}, this method restores the default
 * shape, making the window rectangular on most platforms.
 * <p>
 * The following conditions must be met to set a non-null shape:
 * <ul>
 * <li>The {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 * PERPIXEL_TRANSPARENT} translucency must be supported by the
 * underlying system
 * <li>The window must be undecorated (see {@link Frame#setUndecorated}
 * and {@link Dialog#setUndecorated})
 * <li>The window must not be in full-screen mode (see {@link
 * GraphicsDevice#setFullScreenWindow(Window)})
 * </ul>
 * <p>
 * If the requested shape is not {@code null}, and any of the above
 * conditions are not met, the shape of this window will not change,
 * and either the {@code UnsupportedOperationException} or {@code
 * IllegalComponentStateException} will be thrown.
 * <p>
 * The translucency levels of individual pixels may also be effected by the
 * alpha component of their color (see {@link Window#setBackground(Color)}) and the
 * opacity value (see {@link #setOpacity(float)}). See {@link
 * GraphicsDevice.WindowTranslucency} for more details.
 *
 * @param shape the shape to set to the window
 *
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is decorated
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is in full-screen mode
 * @throws UnsupportedOperationException if the shape is not {@code
 *     null} and {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 *     PERPIXEL_TRANSPARENT} translucency is not supported
 *
 * @see Window#getShape()
 * @see Window#setBackground(Color)
 * @see Window#setOpacity(float)
 * @see Frame#isUndecorated
 * @see Dialog#isUndecorated
 * @see GraphicsDevice.WindowTranslucency
 * @see GraphicsDevice#isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
 *
 * @since 1.7
 */
public void setShape(Shape shape) {
    synchronized (getTreeLock()) {
        if (shape != null) {
            GraphicsConfiguration gc = getGraphicsConfiguration();
            GraphicsDevice gd = gc.getDevice();
            if (gc.getDevice().getFullScreenWindow() == this) {
                throw new IllegalComponentStateException(
                    "Setting shape for full-screen window is not supported.");
            }
            if (!gd.isWindowTranslucencySupported(
                    GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT))
            {
                throw new UnsupportedOperationException(
                    "PERPIXEL_TRANSPARENT translucency is not supported.");
            }
        }
        this.shape = (shape == null) ? null : new Path2D.Float(shape);
        WindowPeer peer = (WindowPeer)getPeer();
        if (peer != null) {
            peer.applyShape(shape == null ? null : Region.getInstance(shape, null));
        }
    }
}
 
Example 3
Source File: Window.java    From jdk-1.7-annotated with Apache License 2.0 4 votes vote down vote up
/**
 * Sets the shape of the window.
 * <p>
 * Setting a shape cuts off some parts of the window. Only the parts that
 * belong to the given {@link Shape} remain visible and clickable. If
 * the shape argument is {@code null}, this method restores the default
 * shape, making the window rectangular on most platforms.
 * <p>
 * The following conditions must be met to set a non-null shape:
 * <ul>
 * <li>The {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 * PERPIXEL_TRANSPARENT} translucency must be supported by the
 * underlying system
 * <li>The window must be undecorated (see {@link Frame#setUndecorated}
 * and {@link Dialog#setUndecorated})
 * <li>The window must not be in full-screen mode (see {@link
 * GraphicsDevice#setFullScreenWindow(Window)})
 * </ul>
 * <p>
 * If the requested shape is not {@code null}, and any of the above
 * conditions are not met, the shape of this window will not change,
 * and either the {@code UnsupportedOperationException} or {@code
 * IllegalComponentStateException} will be thrown.
 * <p>
 * The tranlucency levels of individual pixels may also be effected by the
 * alpha component of their color (see {@link Window#setBackground(Color)}) and the
 * opacity value (see {@link #setOpacity(float)}). See {@link
 * GraphicsDevice.WindowTranslucency} for more details.
 *
 * @param shape the shape to set to the window
 *
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is decorated
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is in full-screen mode
 * @throws UnsupportedOperationException if the shape is not {@code
 *     null} and {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 *     PERPIXEL_TRANSPARENT} translucency is not supported
 *
 * @see Window#getShape()
 * @see Window#setBackground(Color)
 * @see Window#setOpacity(float)
 * @see Frame#isUndecorated
 * @see Dialog#isUndecorated
 * @see GraphicsDevice.WindowTranslucency
 * @see GraphicsDevice#isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
 *
 * @since 1.7
 */
public void setShape(Shape shape) {
    synchronized (getTreeLock()) {
        if (shape != null) {
            GraphicsConfiguration gc = getGraphicsConfiguration();
            GraphicsDevice gd = gc.getDevice();
            if (gc.getDevice().getFullScreenWindow() == this) {
                throw new IllegalComponentStateException(
                    "Setting shape for full-screen window is not supported.");
            }
            if (!gd.isWindowTranslucencySupported(
                    GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT))
            {
                throw new UnsupportedOperationException(
                    "PERPIXEL_TRANSPARENT translucency is not supported.");
            }
        }
        this.shape = (shape == null) ? null : new Path2D.Float(shape);
        WindowPeer peer = (WindowPeer)getPeer();
        if (peer != null) {
            peer.applyShape(shape == null ? null : Region.getInstance(shape, null));
        }
    }
}
 
Example 4
Source File: Window.java    From jdk8u-jdk with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Sets the shape of the window.
 * <p>
 * Setting a shape cuts off some parts of the window. Only the parts that
 * belong to the given {@link Shape} remain visible and clickable. If
 * the shape argument is {@code null}, this method restores the default
 * shape, making the window rectangular on most platforms.
 * <p>
 * The following conditions must be met to set a non-null shape:
 * <ul>
 * <li>The {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 * PERPIXEL_TRANSPARENT} translucency must be supported by the
 * underlying system
 * <li>The window must be undecorated (see {@link Frame#setUndecorated}
 * and {@link Dialog#setUndecorated})
 * <li>The window must not be in full-screen mode (see {@link
 * GraphicsDevice#setFullScreenWindow(Window)})
 * </ul>
 * <p>
 * If the requested shape is not {@code null}, and any of the above
 * conditions are not met, the shape of this window will not change,
 * and either the {@code UnsupportedOperationException} or {@code
 * IllegalComponentStateException} will be thrown.
 * <p>
 * The translucency levels of individual pixels may also be effected by the
 * alpha component of their color (see {@link Window#setBackground(Color)}) and the
 * opacity value (see {@link #setOpacity(float)}). See {@link
 * GraphicsDevice.WindowTranslucency} for more details.
 *
 * @param shape the shape to set to the window
 *
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is decorated
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is in full-screen mode
 * @throws UnsupportedOperationException if the shape is not {@code
 *     null} and {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 *     PERPIXEL_TRANSPARENT} translucency is not supported
 *
 * @see Window#getShape()
 * @see Window#setBackground(Color)
 * @see Window#setOpacity(float)
 * @see Frame#isUndecorated
 * @see Dialog#isUndecorated
 * @see GraphicsDevice.WindowTranslucency
 * @see GraphicsDevice#isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
 *
 * @since 1.7
 */
public void setShape(Shape shape) {
    synchronized (getTreeLock()) {
        if (shape != null) {
            GraphicsConfiguration gc = getGraphicsConfiguration();
            GraphicsDevice gd = gc.getDevice();
            if (gc.getDevice().getFullScreenWindow() == this) {
                throw new IllegalComponentStateException(
                    "Setting shape for full-screen window is not supported.");
            }
            if (!gd.isWindowTranslucencySupported(
                    GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT))
            {
                throw new UnsupportedOperationException(
                    "PERPIXEL_TRANSPARENT translucency is not supported.");
            }
        }
        this.shape = (shape == null) ? null : new Path2D.Float(shape);
        WindowPeer peer = (WindowPeer)getPeer();
        if (peer != null) {
            peer.applyShape(shape == null ? null : Region.getInstance(shape, null));
        }
    }
}
 
Example 5
Source File: Window.java    From jdk8u_jdk with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Sets the shape of the window.
 * <p>
 * Setting a shape cuts off some parts of the window. Only the parts that
 * belong to the given {@link Shape} remain visible and clickable. If
 * the shape argument is {@code null}, this method restores the default
 * shape, making the window rectangular on most platforms.
 * <p>
 * The following conditions must be met to set a non-null shape:
 * <ul>
 * <li>The {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 * PERPIXEL_TRANSPARENT} translucency must be supported by the
 * underlying system
 * <li>The window must be undecorated (see {@link Frame#setUndecorated}
 * and {@link Dialog#setUndecorated})
 * <li>The window must not be in full-screen mode (see {@link
 * GraphicsDevice#setFullScreenWindow(Window)})
 * </ul>
 * <p>
 * If the requested shape is not {@code null}, and any of the above
 * conditions are not met, the shape of this window will not change,
 * and either the {@code UnsupportedOperationException} or {@code
 * IllegalComponentStateException} will be thrown.
 * <p>
 * The translucency levels of individual pixels may also be effected by the
 * alpha component of their color (see {@link Window#setBackground(Color)}) and the
 * opacity value (see {@link #setOpacity(float)}). See {@link
 * GraphicsDevice.WindowTranslucency} for more details.
 *
 * @param shape the shape to set to the window
 *
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is decorated
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is in full-screen mode
 * @throws UnsupportedOperationException if the shape is not {@code
 *     null} and {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 *     PERPIXEL_TRANSPARENT} translucency is not supported
 *
 * @see Window#getShape()
 * @see Window#setBackground(Color)
 * @see Window#setOpacity(float)
 * @see Frame#isUndecorated
 * @see Dialog#isUndecorated
 * @see GraphicsDevice.WindowTranslucency
 * @see GraphicsDevice#isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
 *
 * @since 1.7
 */
public void setShape(Shape shape) {
    synchronized (getTreeLock()) {
        if (shape != null) {
            GraphicsConfiguration gc = getGraphicsConfiguration();
            GraphicsDevice gd = gc.getDevice();
            if (gc.getDevice().getFullScreenWindow() == this) {
                throw new IllegalComponentStateException(
                    "Setting shape for full-screen window is not supported.");
            }
            if (!gd.isWindowTranslucencySupported(
                    GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT))
            {
                throw new UnsupportedOperationException(
                    "PERPIXEL_TRANSPARENT translucency is not supported.");
            }
        }
        this.shape = (shape == null) ? null : new Path2D.Float(shape);
        WindowPeer peer = (WindowPeer)getPeer();
        if (peer != null) {
            peer.applyShape(shape == null ? null : Region.getInstance(shape, null));
        }
    }
}
 
Example 6
Source File: Window.java    From openjdk-8 with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Sets the shape of the window.
 * <p>
 * Setting a shape cuts off some parts of the window. Only the parts that
 * belong to the given {@link Shape} remain visible and clickable. If
 * the shape argument is {@code null}, this method restores the default
 * shape, making the window rectangular on most platforms.
 * <p>
 * The following conditions must be met to set a non-null shape:
 * <ul>
 * <li>The {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 * PERPIXEL_TRANSPARENT} translucency must be supported by the
 * underlying system
 * <li>The window must be undecorated (see {@link Frame#setUndecorated}
 * and {@link Dialog#setUndecorated})
 * <li>The window must not be in full-screen mode (see {@link
 * GraphicsDevice#setFullScreenWindow(Window)})
 * </ul>
 * <p>
 * If the requested shape is not {@code null}, and any of the above
 * conditions are not met, the shape of this window will not change,
 * and either the {@code UnsupportedOperationException} or {@code
 * IllegalComponentStateException} will be thrown.
 * <p>
 * The translucency levels of individual pixels may also be effected by the
 * alpha component of their color (see {@link Window#setBackground(Color)}) and the
 * opacity value (see {@link #setOpacity(float)}). See {@link
 * GraphicsDevice.WindowTranslucency} for more details.
 *
 * @param shape the shape to set to the window
 *
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is decorated
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is in full-screen mode
 * @throws UnsupportedOperationException if the shape is not {@code
 *     null} and {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 *     PERPIXEL_TRANSPARENT} translucency is not supported
 *
 * @see Window#getShape()
 * @see Window#setBackground(Color)
 * @see Window#setOpacity(float)
 * @see Frame#isUndecorated
 * @see Dialog#isUndecorated
 * @see GraphicsDevice.WindowTranslucency
 * @see GraphicsDevice#isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
 *
 * @since 1.7
 */
public void setShape(Shape shape) {
    synchronized (getTreeLock()) {
        if (shape != null) {
            GraphicsConfiguration gc = getGraphicsConfiguration();
            GraphicsDevice gd = gc.getDevice();
            if (gc.getDevice().getFullScreenWindow() == this) {
                throw new IllegalComponentStateException(
                    "Setting shape for full-screen window is not supported.");
            }
            if (!gd.isWindowTranslucencySupported(
                    GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT))
            {
                throw new UnsupportedOperationException(
                    "PERPIXEL_TRANSPARENT translucency is not supported.");
            }
        }
        this.shape = (shape == null) ? null : new Path2D.Float(shape);
        WindowPeer peer = (WindowPeer)getPeer();
        if (peer != null) {
            peer.applyShape(shape == null ? null : Region.getInstance(shape, null));
        }
    }
}
 
Example 7
Source File: Window.java    From openjdk-8-source with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Sets the shape of the window.
 * <p>
 * Setting a shape cuts off some parts of the window. Only the parts that
 * belong to the given {@link Shape} remain visible and clickable. If
 * the shape argument is {@code null}, this method restores the default
 * shape, making the window rectangular on most platforms.
 * <p>
 * The following conditions must be met to set a non-null shape:
 * <ul>
 * <li>The {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 * PERPIXEL_TRANSPARENT} translucency must be supported by the
 * underlying system
 * <li>The window must be undecorated (see {@link Frame#setUndecorated}
 * and {@link Dialog#setUndecorated})
 * <li>The window must not be in full-screen mode (see {@link
 * GraphicsDevice#setFullScreenWindow(Window)})
 * </ul>
 * <p>
 * If the requested shape is not {@code null}, and any of the above
 * conditions are not met, the shape of this window will not change,
 * and either the {@code UnsupportedOperationException} or {@code
 * IllegalComponentStateException} will be thrown.
 * <p>
 * The translucency levels of individual pixels may also be effected by the
 * alpha component of their color (see {@link Window#setBackground(Color)}) and the
 * opacity value (see {@link #setOpacity(float)}). See {@link
 * GraphicsDevice.WindowTranslucency} for more details.
 *
 * @param shape the shape to set to the window
 *
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is decorated
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is in full-screen mode
 * @throws UnsupportedOperationException if the shape is not {@code
 *     null} and {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 *     PERPIXEL_TRANSPARENT} translucency is not supported
 *
 * @see Window#getShape()
 * @see Window#setBackground(Color)
 * @see Window#setOpacity(float)
 * @see Frame#isUndecorated
 * @see Dialog#isUndecorated
 * @see GraphicsDevice.WindowTranslucency
 * @see GraphicsDevice#isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
 *
 * @since 1.7
 */
public void setShape(Shape shape) {
    synchronized (getTreeLock()) {
        if (shape != null) {
            GraphicsConfiguration gc = getGraphicsConfiguration();
            GraphicsDevice gd = gc.getDevice();
            if (gc.getDevice().getFullScreenWindow() == this) {
                throw new IllegalComponentStateException(
                    "Setting shape for full-screen window is not supported.");
            }
            if (!gd.isWindowTranslucencySupported(
                    GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT))
            {
                throw new UnsupportedOperationException(
                    "PERPIXEL_TRANSPARENT translucency is not supported.");
            }
        }
        this.shape = (shape == null) ? null : new Path2D.Float(shape);
        WindowPeer peer = (WindowPeer)getPeer();
        if (peer != null) {
            peer.applyShape(shape == null ? null : Region.getInstance(shape, null));
        }
    }
}
 
Example 8
Source File: Window.java    From hottub with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Sets the shape of the window.
 * <p>
 * Setting a shape cuts off some parts of the window. Only the parts that
 * belong to the given {@link Shape} remain visible and clickable. If
 * the shape argument is {@code null}, this method restores the default
 * shape, making the window rectangular on most platforms.
 * <p>
 * The following conditions must be met to set a non-null shape:
 * <ul>
 * <li>The {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 * PERPIXEL_TRANSPARENT} translucency must be supported by the
 * underlying system
 * <li>The window must be undecorated (see {@link Frame#setUndecorated}
 * and {@link Dialog#setUndecorated})
 * <li>The window must not be in full-screen mode (see {@link
 * GraphicsDevice#setFullScreenWindow(Window)})
 * </ul>
 * <p>
 * If the requested shape is not {@code null}, and any of the above
 * conditions are not met, the shape of this window will not change,
 * and either the {@code UnsupportedOperationException} or {@code
 * IllegalComponentStateException} will be thrown.
 * <p>
 * The translucency levels of individual pixels may also be effected by the
 * alpha component of their color (see {@link Window#setBackground(Color)}) and the
 * opacity value (see {@link #setOpacity(float)}). See {@link
 * GraphicsDevice.WindowTranslucency} for more details.
 *
 * @param shape the shape to set to the window
 *
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is decorated
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is in full-screen mode
 * @throws UnsupportedOperationException if the shape is not {@code
 *     null} and {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 *     PERPIXEL_TRANSPARENT} translucency is not supported
 *
 * @see Window#getShape()
 * @see Window#setBackground(Color)
 * @see Window#setOpacity(float)
 * @see Frame#isUndecorated
 * @see Dialog#isUndecorated
 * @see GraphicsDevice.WindowTranslucency
 * @see GraphicsDevice#isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
 *
 * @since 1.7
 */
public void setShape(Shape shape) {
    synchronized (getTreeLock()) {
        if (shape != null) {
            GraphicsConfiguration gc = getGraphicsConfiguration();
            GraphicsDevice gd = gc.getDevice();
            if (gc.getDevice().getFullScreenWindow() == this) {
                throw new IllegalComponentStateException(
                    "Setting shape for full-screen window is not supported.");
            }
            if (!gd.isWindowTranslucencySupported(
                    GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT))
            {
                throw new UnsupportedOperationException(
                    "PERPIXEL_TRANSPARENT translucency is not supported.");
            }
        }
        this.shape = (shape == null) ? null : new Path2D.Float(shape);
        WindowPeer peer = (WindowPeer)getPeer();
        if (peer != null) {
            peer.applyShape(shape == null ? null : Region.getInstance(shape, null));
        }
    }
}
 
Example 9
Source File: Window.java    From Java8CN with Apache License 2.0 4 votes vote down vote up
/**
 * Sets the shape of the window.
 * <p>
 * Setting a shape cuts off some parts of the window. Only the parts that
 * belong to the given {@link Shape} remain visible and clickable. If
 * the shape argument is {@code null}, this method restores the default
 * shape, making the window rectangular on most platforms.
 * <p>
 * The following conditions must be met to set a non-null shape:
 * <ul>
 * <li>The {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 * PERPIXEL_TRANSPARENT} translucency must be supported by the
 * underlying system
 * <li>The window must be undecorated (see {@link Frame#setUndecorated}
 * and {@link Dialog#setUndecorated})
 * <li>The window must not be in full-screen mode (see {@link
 * GraphicsDevice#setFullScreenWindow(Window)})
 * </ul>
 * <p>
 * If the requested shape is not {@code null}, and any of the above
 * conditions are not met, the shape of this window will not change,
 * and either the {@code UnsupportedOperationException} or {@code
 * IllegalComponentStateException} will be thrown.
 * <p>
 * The translucency levels of individual pixels may also be effected by the
 * alpha component of their color (see {@link Window#setBackground(Color)}) and the
 * opacity value (see {@link #setOpacity(float)}). See {@link
 * GraphicsDevice.WindowTranslucency} for more details.
 *
 * @param shape the shape to set to the window
 *
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is decorated
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is in full-screen mode
 * @throws UnsupportedOperationException if the shape is not {@code
 *     null} and {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 *     PERPIXEL_TRANSPARENT} translucency is not supported
 *
 * @see Window#getShape()
 * @see Window#setBackground(Color)
 * @see Window#setOpacity(float)
 * @see Frame#isUndecorated
 * @see Dialog#isUndecorated
 * @see GraphicsDevice.WindowTranslucency
 * @see GraphicsDevice#isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
 *
 * @since 1.7
 */
public void setShape(Shape shape) {
    synchronized (getTreeLock()) {
        if (shape != null) {
            GraphicsConfiguration gc = getGraphicsConfiguration();
            GraphicsDevice gd = gc.getDevice();
            if (gc.getDevice().getFullScreenWindow() == this) {
                throw new IllegalComponentStateException(
                    "Setting shape for full-screen window is not supported.");
            }
            if (!gd.isWindowTranslucencySupported(
                    GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT))
            {
                throw new UnsupportedOperationException(
                    "PERPIXEL_TRANSPARENT translucency is not supported.");
            }
        }
        this.shape = (shape == null) ? null : new Path2D.Float(shape);
        WindowPeer peer = (WindowPeer)getPeer();
        if (peer != null) {
            peer.applyShape(shape == null ? null : Region.getInstance(shape, null));
        }
    }
}
 
Example 10
Source File: Window.java    From jdk1.8-source-analysis with Apache License 2.0 4 votes vote down vote up
/**
 * Sets the shape of the window.
 * <p>
 * Setting a shape cuts off some parts of the window. Only the parts that
 * belong to the given {@link Shape} remain visible and clickable. If
 * the shape argument is {@code null}, this method restores the default
 * shape, making the window rectangular on most platforms.
 * <p>
 * The following conditions must be met to set a non-null shape:
 * <ul>
 * <li>The {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 * PERPIXEL_TRANSPARENT} translucency must be supported by the
 * underlying system
 * <li>The window must be undecorated (see {@link Frame#setUndecorated}
 * and {@link Dialog#setUndecorated})
 * <li>The window must not be in full-screen mode (see {@link
 * GraphicsDevice#setFullScreenWindow(Window)})
 * </ul>
 * <p>
 * If the requested shape is not {@code null}, and any of the above
 * conditions are not met, the shape of this window will not change,
 * and either the {@code UnsupportedOperationException} or {@code
 * IllegalComponentStateException} will be thrown.
 * <p>
 * The translucency levels of individual pixels may also be effected by the
 * alpha component of their color (see {@link Window#setBackground(Color)}) and the
 * opacity value (see {@link #setOpacity(float)}). See {@link
 * GraphicsDevice.WindowTranslucency} for more details.
 *
 * @param shape the shape to set to the window
 *
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is decorated
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is in full-screen mode
 * @throws UnsupportedOperationException if the shape is not {@code
 *     null} and {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 *     PERPIXEL_TRANSPARENT} translucency is not supported
 *
 * @see Window#getShape()
 * @see Window#setBackground(Color)
 * @see Window#setOpacity(float)
 * @see Frame#isUndecorated
 * @see Dialog#isUndecorated
 * @see GraphicsDevice.WindowTranslucency
 * @see GraphicsDevice#isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
 *
 * @since 1.7
 */
public void setShape(Shape shape) {
    synchronized (getTreeLock()) {
        if (shape != null) {
            GraphicsConfiguration gc = getGraphicsConfiguration();
            GraphicsDevice gd = gc.getDevice();
            if (gc.getDevice().getFullScreenWindow() == this) {
                throw new IllegalComponentStateException(
                    "Setting shape for full-screen window is not supported.");
            }
            if (!gd.isWindowTranslucencySupported(
                    GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT))
            {
                throw new UnsupportedOperationException(
                    "PERPIXEL_TRANSPARENT translucency is not supported.");
            }
        }
        this.shape = (shape == null) ? null : new Path2D.Float(shape);
        WindowPeer peer = (WindowPeer)getPeer();
        if (peer != null) {
            peer.applyShape(shape == null ? null : Region.getInstance(shape, null));
        }
    }
}
 
Example 11
Source File: Window.java    From openjdk-jdk9 with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Sets the shape of the window.
 * <p>
 * Setting a shape cuts off some parts of the window. Only the parts that
 * belong to the given {@link Shape} remain visible and clickable. If
 * the shape argument is {@code null}, this method restores the default
 * shape, making the window rectangular on most platforms.
 * <p>
 * The following conditions must be met to set a non-null shape:
 * <ul>
 * <li>The {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 * PERPIXEL_TRANSPARENT} translucency must be supported by the
 * underlying system
 * <li>The window must be undecorated (see {@link Frame#setUndecorated}
 * and {@link Dialog#setUndecorated})
 * <li>The window must not be in full-screen mode (see {@link
 * GraphicsDevice#setFullScreenWindow(Window)})
 * </ul>
 * <p>
 * If the requested shape is not {@code null}, and any of the above
 * conditions are not met, the shape of this window will not change,
 * and either the {@code UnsupportedOperationException} or {@code
 * IllegalComponentStateException} will be thrown.
 * <p>
 * The translucency levels of individual pixels may also be effected by the
 * alpha component of their color (see {@link Window#setBackground(Color)}) and the
 * opacity value (see {@link #setOpacity(float)}). See {@link
 * GraphicsDevice.WindowTranslucency} for more details.
 *
 * @param shape the shape to set to the window
 *
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is decorated
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is in full-screen mode
 * @throws UnsupportedOperationException if the shape is not {@code
 *     null} and {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 *     PERPIXEL_TRANSPARENT} translucency is not supported
 *
 * @see Window#getShape()
 * @see Window#setBackground(Color)
 * @see Window#setOpacity(float)
 * @see Frame#isUndecorated
 * @see Dialog#isUndecorated
 * @see GraphicsDevice.WindowTranslucency
 * @see GraphicsDevice#isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
 *
 * @since 1.7
 */
public void setShape(Shape shape) {
    synchronized (getTreeLock()) {
        if (shape != null) {
            GraphicsConfiguration gc = getGraphicsConfiguration();
            GraphicsDevice gd = gc.getDevice();
            if (gc.getDevice().getFullScreenWindow() == this) {
                throw new IllegalComponentStateException(
                    "Setting shape for full-screen window is not supported.");
            }
            if (!gd.isWindowTranslucencySupported(
                    GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT))
            {
                throw new UnsupportedOperationException(
                    "PERPIXEL_TRANSPARENT translucency is not supported.");
            }
        }
        this.shape = (shape == null) ? null : new Path2D.Float(shape);
        WindowPeer peer = (WindowPeer) this.peer;
        if (peer != null) {
            peer.applyShape(shape == null ? null : Region.getInstance(shape, null));
        }
    }
}
 
Example 12
Source File: Window.java    From Bytecoder with Apache License 2.0 4 votes vote down vote up
/**
 * Sets the shape of the window.
 * <p>
 * Setting a shape cuts off some parts of the window. Only the parts that
 * belong to the given {@link Shape} remain visible and clickable. If
 * the shape argument is {@code null}, this method restores the default
 * shape, making the window rectangular on most platforms.
 * <p>
 * The following conditions must be met to set a non-null shape:
 * <ul>
 * <li>The {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 * PERPIXEL_TRANSPARENT} translucency must be supported by the
 * underlying system
 * <li>The window must be undecorated (see {@link Frame#setUndecorated}
 * and {@link Dialog#setUndecorated})
 * <li>The window must not be in full-screen mode (see {@link
 * GraphicsDevice#setFullScreenWindow(Window)})
 * </ul>
 * <p>
 * If the requested shape is not {@code null}, and any of the above
 * conditions are not met, the shape of this window will not change,
 * and either the {@code UnsupportedOperationException} or {@code
 * IllegalComponentStateException} will be thrown.
 * <p>
 * The translucency levels of individual pixels may also be effected by the
 * alpha component of their color (see {@link Window#setBackground(Color)}) and the
 * opacity value (see {@link #setOpacity(float)}). See {@link
 * GraphicsDevice.WindowTranslucency} for more details.
 *
 * @param shape the shape to set to the window
 *
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is decorated
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is in full-screen mode
 * @throws UnsupportedOperationException if the shape is not {@code
 *     null} and {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 *     PERPIXEL_TRANSPARENT} translucency is not supported
 *
 * @see Window#getShape()
 * @see Window#setBackground(Color)
 * @see Window#setOpacity(float)
 * @see Frame#isUndecorated
 * @see Dialog#isUndecorated
 * @see GraphicsDevice.WindowTranslucency
 * @see GraphicsDevice#isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
 *
 * @since 1.7
 */
public void setShape(Shape shape) {
    synchronized (getTreeLock()) {
        if (shape != null) {
            GraphicsConfiguration gc = getGraphicsConfiguration();
            GraphicsDevice gd = gc.getDevice();
            if (gc.getDevice().getFullScreenWindow() == this) {
                throw new IllegalComponentStateException(
                    "Setting shape for full-screen window is not supported.");
            }
            if (!gd.isWindowTranslucencySupported(
                    GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT))
            {
                throw new UnsupportedOperationException(
                    "PERPIXEL_TRANSPARENT translucency is not supported.");
            }
        }
        this.shape = (shape == null) ? null : new Path2D.Float(shape);
        WindowPeer peer = (WindowPeer) this.peer;
        if (peer != null) {
            peer.applyShape(shape == null ? null : Region.getInstance(shape, null));
        }
    }
}
 
Example 13
Source File: Window.java    From openjdk-jdk8u-backup with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Sets the shape of the window.
 * <p>
 * Setting a shape cuts off some parts of the window. Only the parts that
 * belong to the given {@link Shape} remain visible and clickable. If
 * the shape argument is {@code null}, this method restores the default
 * shape, making the window rectangular on most platforms.
 * <p>
 * The following conditions must be met to set a non-null shape:
 * <ul>
 * <li>The {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 * PERPIXEL_TRANSPARENT} translucency must be supported by the
 * underlying system
 * <li>The window must be undecorated (see {@link Frame#setUndecorated}
 * and {@link Dialog#setUndecorated})
 * <li>The window must not be in full-screen mode (see {@link
 * GraphicsDevice#setFullScreenWindow(Window)})
 * </ul>
 * <p>
 * If the requested shape is not {@code null}, and any of the above
 * conditions are not met, the shape of this window will not change,
 * and either the {@code UnsupportedOperationException} or {@code
 * IllegalComponentStateException} will be thrown.
 * <p>
 * The translucency levels of individual pixels may also be effected by the
 * alpha component of their color (see {@link Window#setBackground(Color)}) and the
 * opacity value (see {@link #setOpacity(float)}). See {@link
 * GraphicsDevice.WindowTranslucency} for more details.
 *
 * @param shape the shape to set to the window
 *
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is decorated
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is in full-screen mode
 * @throws UnsupportedOperationException if the shape is not {@code
 *     null} and {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 *     PERPIXEL_TRANSPARENT} translucency is not supported
 *
 * @see Window#getShape()
 * @see Window#setBackground(Color)
 * @see Window#setOpacity(float)
 * @see Frame#isUndecorated
 * @see Dialog#isUndecorated
 * @see GraphicsDevice.WindowTranslucency
 * @see GraphicsDevice#isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
 *
 * @since 1.7
 */
public void setShape(Shape shape) {
    synchronized (getTreeLock()) {
        if (shape != null) {
            GraphicsConfiguration gc = getGraphicsConfiguration();
            GraphicsDevice gd = gc.getDevice();
            if (gc.getDevice().getFullScreenWindow() == this) {
                throw new IllegalComponentStateException(
                    "Setting shape for full-screen window is not supported.");
            }
            if (!gd.isWindowTranslucencySupported(
                    GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT))
            {
                throw new UnsupportedOperationException(
                    "PERPIXEL_TRANSPARENT translucency is not supported.");
            }
        }
        this.shape = (shape == null) ? null : new Path2D.Float(shape);
        WindowPeer peer = (WindowPeer)getPeer();
        if (peer != null) {
            peer.applyShape(shape == null ? null : Region.getInstance(shape, null));
        }
    }
}
 
Example 14
Source File: Window.java    From openjdk-jdk8u with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Sets the shape of the window.
 * <p>
 * Setting a shape cuts off some parts of the window. Only the parts that
 * belong to the given {@link Shape} remain visible and clickable. If
 * the shape argument is {@code null}, this method restores the default
 * shape, making the window rectangular on most platforms.
 * <p>
 * The following conditions must be met to set a non-null shape:
 * <ul>
 * <li>The {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 * PERPIXEL_TRANSPARENT} translucency must be supported by the
 * underlying system
 * <li>The window must be undecorated (see {@link Frame#setUndecorated}
 * and {@link Dialog#setUndecorated})
 * <li>The window must not be in full-screen mode (see {@link
 * GraphicsDevice#setFullScreenWindow(Window)})
 * </ul>
 * <p>
 * If the requested shape is not {@code null}, and any of the above
 * conditions are not met, the shape of this window will not change,
 * and either the {@code UnsupportedOperationException} or {@code
 * IllegalComponentStateException} will be thrown.
 * <p>
 * The translucency levels of individual pixels may also be effected by the
 * alpha component of their color (see {@link Window#setBackground(Color)}) and the
 * opacity value (see {@link #setOpacity(float)}). See {@link
 * GraphicsDevice.WindowTranslucency} for more details.
 *
 * @param shape the shape to set to the window
 *
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is decorated
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is in full-screen mode
 * @throws UnsupportedOperationException if the shape is not {@code
 *     null} and {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 *     PERPIXEL_TRANSPARENT} translucency is not supported
 *
 * @see Window#getShape()
 * @see Window#setBackground(Color)
 * @see Window#setOpacity(float)
 * @see Frame#isUndecorated
 * @see Dialog#isUndecorated
 * @see GraphicsDevice.WindowTranslucency
 * @see GraphicsDevice#isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
 *
 * @since 1.7
 */
public void setShape(Shape shape) {
    synchronized (getTreeLock()) {
        if (shape != null) {
            GraphicsConfiguration gc = getGraphicsConfiguration();
            GraphicsDevice gd = gc.getDevice();
            if (gc.getDevice().getFullScreenWindow() == this) {
                throw new IllegalComponentStateException(
                    "Setting shape for full-screen window is not supported.");
            }
            if (!gd.isWindowTranslucencySupported(
                    GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT))
            {
                throw new UnsupportedOperationException(
                    "PERPIXEL_TRANSPARENT translucency is not supported.");
            }
        }
        this.shape = (shape == null) ? null : new Path2D.Float(shape);
        WindowPeer peer = (WindowPeer)getPeer();
        if (peer != null) {
            peer.applyShape(shape == null ? null : Region.getInstance(shape, null));
        }
    }
}
 
Example 15
Source File: Window.java    From JDKSourceCode1.8 with MIT License 4 votes vote down vote up
/**
 * Sets the shape of the window.
 * <p>
 * Setting a shape cuts off some parts of the window. Only the parts that
 * belong to the given {@link Shape} remain visible and clickable. If
 * the shape argument is {@code null}, this method restores the default
 * shape, making the window rectangular on most platforms.
 * <p>
 * The following conditions must be met to set a non-null shape:
 * <ul>
 * <li>The {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 * PERPIXEL_TRANSPARENT} translucency must be supported by the
 * underlying system
 * <li>The window must be undecorated (see {@link Frame#setUndecorated}
 * and {@link Dialog#setUndecorated})
 * <li>The window must not be in full-screen mode (see {@link
 * GraphicsDevice#setFullScreenWindow(Window)})
 * </ul>
 * <p>
 * If the requested shape is not {@code null}, and any of the above
 * conditions are not met, the shape of this window will not change,
 * and either the {@code UnsupportedOperationException} or {@code
 * IllegalComponentStateException} will be thrown.
 * <p>
 * The translucency levels of individual pixels may also be effected by the
 * alpha component of their color (see {@link Window#setBackground(Color)}) and the
 * opacity value (see {@link #setOpacity(float)}). See {@link
 * GraphicsDevice.WindowTranslucency} for more details.
 *
 * @param shape the shape to set to the window
 *
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is decorated
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is in full-screen mode
 * @throws UnsupportedOperationException if the shape is not {@code
 *     null} and {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 *     PERPIXEL_TRANSPARENT} translucency is not supported
 *
 * @see Window#getShape()
 * @see Window#setBackground(Color)
 * @see Window#setOpacity(float)
 * @see Frame#isUndecorated
 * @see Dialog#isUndecorated
 * @see GraphicsDevice.WindowTranslucency
 * @see GraphicsDevice#isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
 *
 * @since 1.7
 */
public void setShape(Shape shape) {
    synchronized (getTreeLock()) {
        if (shape != null) {
            GraphicsConfiguration gc = getGraphicsConfiguration();
            GraphicsDevice gd = gc.getDevice();
            if (gc.getDevice().getFullScreenWindow() == this) {
                throw new IllegalComponentStateException(
                    "Setting shape for full-screen window is not supported.");
            }
            if (!gd.isWindowTranslucencySupported(
                    GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT))
            {
                throw new UnsupportedOperationException(
                    "PERPIXEL_TRANSPARENT translucency is not supported.");
            }
        }
        this.shape = (shape == null) ? null : new Path2D.Float(shape);
        WindowPeer peer = (WindowPeer)getPeer();
        if (peer != null) {
            peer.applyShape(shape == null ? null : Region.getInstance(shape, null));
        }
    }
}
 
Example 16
Source File: Window.java    From jdk8u60 with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Sets the shape of the window.
 * <p>
 * Setting a shape cuts off some parts of the window. Only the parts that
 * belong to the given {@link Shape} remain visible and clickable. If
 * the shape argument is {@code null}, this method restores the default
 * shape, making the window rectangular on most platforms.
 * <p>
 * The following conditions must be met to set a non-null shape:
 * <ul>
 * <li>The {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 * PERPIXEL_TRANSPARENT} translucency must be supported by the
 * underlying system
 * <li>The window must be undecorated (see {@link Frame#setUndecorated}
 * and {@link Dialog#setUndecorated})
 * <li>The window must not be in full-screen mode (see {@link
 * GraphicsDevice#setFullScreenWindow(Window)})
 * </ul>
 * <p>
 * If the requested shape is not {@code null}, and any of the above
 * conditions are not met, the shape of this window will not change,
 * and either the {@code UnsupportedOperationException} or {@code
 * IllegalComponentStateException} will be thrown.
 * <p>
 * The translucency levels of individual pixels may also be effected by the
 * alpha component of their color (see {@link Window#setBackground(Color)}) and the
 * opacity value (see {@link #setOpacity(float)}). See {@link
 * GraphicsDevice.WindowTranslucency} for more details.
 *
 * @param shape the shape to set to the window
 *
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is decorated
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is in full-screen mode
 * @throws UnsupportedOperationException if the shape is not {@code
 *     null} and {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 *     PERPIXEL_TRANSPARENT} translucency is not supported
 *
 * @see Window#getShape()
 * @see Window#setBackground(Color)
 * @see Window#setOpacity(float)
 * @see Frame#isUndecorated
 * @see Dialog#isUndecorated
 * @see GraphicsDevice.WindowTranslucency
 * @see GraphicsDevice#isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
 *
 * @since 1.7
 */
public void setShape(Shape shape) {
    synchronized (getTreeLock()) {
        if (shape != null) {
            GraphicsConfiguration gc = getGraphicsConfiguration();
            GraphicsDevice gd = gc.getDevice();
            if (gc.getDevice().getFullScreenWindow() == this) {
                throw new IllegalComponentStateException(
                    "Setting shape for full-screen window is not supported.");
            }
            if (!gd.isWindowTranslucencySupported(
                    GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT))
            {
                throw new UnsupportedOperationException(
                    "PERPIXEL_TRANSPARENT translucency is not supported.");
            }
        }
        this.shape = (shape == null) ? null : new Path2D.Float(shape);
        WindowPeer peer = (WindowPeer)getPeer();
        if (peer != null) {
            peer.applyShape(shape == null ? null : Region.getInstance(shape, null));
        }
    }
}
 
Example 17
Source File: Window.java    From TencentKona-8 with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Sets the shape of the window.
 * <p>
 * Setting a shape cuts off some parts of the window. Only the parts that
 * belong to the given {@link Shape} remain visible and clickable. If
 * the shape argument is {@code null}, this method restores the default
 * shape, making the window rectangular on most platforms.
 * <p>
 * The following conditions must be met to set a non-null shape:
 * <ul>
 * <li>The {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 * PERPIXEL_TRANSPARENT} translucency must be supported by the
 * underlying system
 * <li>The window must be undecorated (see {@link Frame#setUndecorated}
 * and {@link Dialog#setUndecorated})
 * <li>The window must not be in full-screen mode (see {@link
 * GraphicsDevice#setFullScreenWindow(Window)})
 * </ul>
 * <p>
 * If the requested shape is not {@code null}, and any of the above
 * conditions are not met, the shape of this window will not change,
 * and either the {@code UnsupportedOperationException} or {@code
 * IllegalComponentStateException} will be thrown.
 * <p>
 * The translucency levels of individual pixels may also be effected by the
 * alpha component of their color (see {@link Window#setBackground(Color)}) and the
 * opacity value (see {@link #setOpacity(float)}). See {@link
 * GraphicsDevice.WindowTranslucency} for more details.
 *
 * @param shape the shape to set to the window
 *
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is decorated
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is in full-screen mode
 * @throws UnsupportedOperationException if the shape is not {@code
 *     null} and {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 *     PERPIXEL_TRANSPARENT} translucency is not supported
 *
 * @see Window#getShape()
 * @see Window#setBackground(Color)
 * @see Window#setOpacity(float)
 * @see Frame#isUndecorated
 * @see Dialog#isUndecorated
 * @see GraphicsDevice.WindowTranslucency
 * @see GraphicsDevice#isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
 *
 * @since 1.7
 */
public void setShape(Shape shape) {
    synchronized (getTreeLock()) {
        if (shape != null) {
            GraphicsConfiguration gc = getGraphicsConfiguration();
            GraphicsDevice gd = gc.getDevice();
            if (gc.getDevice().getFullScreenWindow() == this) {
                throw new IllegalComponentStateException(
                    "Setting shape for full-screen window is not supported.");
            }
            if (!gd.isWindowTranslucencySupported(
                    GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT))
            {
                throw new UnsupportedOperationException(
                    "PERPIXEL_TRANSPARENT translucency is not supported.");
            }
        }
        this.shape = (shape == null) ? null : new Path2D.Float(shape);
        WindowPeer peer = (WindowPeer)getPeer();
        if (peer != null) {
            peer.applyShape(shape == null ? null : Region.getInstance(shape, null));
        }
    }
}
 
Example 18
Source File: Window.java    From dragonwell8_jdk with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Sets the shape of the window.
 * <p>
 * Setting a shape cuts off some parts of the window. Only the parts that
 * belong to the given {@link Shape} remain visible and clickable. If
 * the shape argument is {@code null}, this method restores the default
 * shape, making the window rectangular on most platforms.
 * <p>
 * The following conditions must be met to set a non-null shape:
 * <ul>
 * <li>The {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 * PERPIXEL_TRANSPARENT} translucency must be supported by the
 * underlying system
 * <li>The window must be undecorated (see {@link Frame#setUndecorated}
 * and {@link Dialog#setUndecorated})
 * <li>The window must not be in full-screen mode (see {@link
 * GraphicsDevice#setFullScreenWindow(Window)})
 * </ul>
 * <p>
 * If the requested shape is not {@code null}, and any of the above
 * conditions are not met, the shape of this window will not change,
 * and either the {@code UnsupportedOperationException} or {@code
 * IllegalComponentStateException} will be thrown.
 * <p>
 * The translucency levels of individual pixels may also be effected by the
 * alpha component of their color (see {@link Window#setBackground(Color)}) and the
 * opacity value (see {@link #setOpacity(float)}). See {@link
 * GraphicsDevice.WindowTranslucency} for more details.
 *
 * @param shape the shape to set to the window
 *
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is decorated
 * @throws IllegalComponentStateException if the shape is not {@code
 *     null} and the window is in full-screen mode
 * @throws UnsupportedOperationException if the shape is not {@code
 *     null} and {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
 *     PERPIXEL_TRANSPARENT} translucency is not supported
 *
 * @see Window#getShape()
 * @see Window#setBackground(Color)
 * @see Window#setOpacity(float)
 * @see Frame#isUndecorated
 * @see Dialog#isUndecorated
 * @see GraphicsDevice.WindowTranslucency
 * @see GraphicsDevice#isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
 *
 * @since 1.7
 */
public void setShape(Shape shape) {
    synchronized (getTreeLock()) {
        if (shape != null) {
            GraphicsConfiguration gc = getGraphicsConfiguration();
            GraphicsDevice gd = gc.getDevice();
            if (gc.getDevice().getFullScreenWindow() == this) {
                throw new IllegalComponentStateException(
                    "Setting shape for full-screen window is not supported.");
            }
            if (!gd.isWindowTranslucencySupported(
                    GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT))
            {
                throw new UnsupportedOperationException(
                    "PERPIXEL_TRANSPARENT translucency is not supported.");
            }
        }
        this.shape = (shape == null) ? null : new Path2D.Float(shape);
        WindowPeer peer = (WindowPeer)getPeer();
        if (peer != null) {
            peer.applyShape(shape == null ? null : Region.getInstance(shape, null));
        }
    }
}