/*
* Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package com.sun.awt;
import java.awt.*;
import java.awt.geom.*;
import sun.awt.AWTAccessor;
Security Warning control interface. This class provides a couple of methods that help a developer relocate the AWT security warning to an appropriate position relative to the current window size. A "top-level window" is an instance of the Window
class (or its descendant, such as JFrame
). The security warning is applied to all windows created by an untrusted code. All such windows have a non-null "warning string" (see Window.getWarningString()
).
WARNING: This class is an implementation detail and only meant
for limited use outside of the core platform. This API may change
drastically between update release, and it may even be
removed or be moved to some other packages or classes.
/**
* Security Warning control interface.
*
* This class provides a couple of methods that help a developer relocate
* the AWT security warning to an appropriate position relative to the current
* window size. A "top-level window" is an instance of the {@code Window}
* class (or its descendant, such as {@code JFrame}). The security warning
* is applied to all windows created by an untrusted code. All such windows
* have a non-null "warning string" (see {@link Window#getWarningString()}).
* <p>
* <b>WARNING</b>: This class is an implementation detail and only meant
* for limited use outside of the core platform. This API may change
* drastically between update release, and it may even be
* removed or be moved to some other packages or classes.
*/
public final class SecurityWarning {
The SecurityWarning class should not be instantiated
/**
* The SecurityWarning class should not be instantiated
*/
private SecurityWarning() {
}
Gets the size of the security warning. The returned value is not valid until the peer has been created. Before invoking this method a developer must call the Window.pack()
, Window.setVisible()
, or some other method that creates the peer. Params: - window – the window to get the security warning size for
Throws: - NullPointerException – if the window argument is null
- IllegalArgumentException – if the window is trusted (i.e. the
getWarningString()
returns null)
/**
* Gets the size of the security warning.
*
* The returned value is not valid until the peer has been created. Before
* invoking this method a developer must call the {@link Window#pack()},
* {@link Window#setVisible()}, or some other method that creates the peer.
*
* @param window the window to get the security warning size for
*
* @throws NullPointerException if the window argument is null
* @throws IllegalArgumentException if the window is trusted (i.e.
* the {@code getWarningString()} returns null)
*/
public static Dimension getSize(Window window) {
if (window == null) {
throw new NullPointerException(
"The window argument should not be null.");
}
if (window.getWarningString() == null) {
throw new IllegalArgumentException(
"The window must have a non-null warning string.");
}
// We don't check for a non-null peer since it may be destroyed
// after assigning a valid value to the security warning size.
return AWTAccessor.getWindowAccessor().getSecurityWarningSize(window);
}
Sets the position of the security warning.
The alignmentX
and alignmentY
arguments specify the origin of the coordinate system used to calculate the position of the security warning. The values must be in the range [0.0f...1.0f]. The 0.0f
value represents the left (top) edge of the rectangular bounds of the window. The 1.0f
value represents the right (bottom) edge of the bounds. Whenever the size of the window changes, the origin of the coordinate system gets relocated accordingly. For convenience a developer may use the Component.*_ALIGNMENT
constants to pass predefined values for these arguments.
The point
argument specifies the location of the security warning in the coordinate system described above. If both x
and y
coordinates of the point are equal to zero, the warning will be located right in the origin of the coordinate system. On the other hand, if both alignmentX
and alignmentY
are equal to zero (i.e. the origin of the coordinate system is placed at the top-left corner of the window), then the point
argument represents the absolute location of the security warning relative to the location of the window. The "absolute" in this case means that the position of the security warning is not effected by resizing of the window.
Note that the security warning managment code guarantees that:
- The security warning cannot be located farther than two pixels from the rectangular bounds of the window (see
Component.getBounds
), and - The security warning is always visible on the screen.
If either of the conditions is violated, the calculated position of the
security warning is adjusted by the system to meet both these
conditions.
The default position of the security warning is in the upper-right
corner of the window, two pixels to the right from the right edge. This
corresponds to the following arguments passed to this method:
alignmentX = Component.RIGHT_ALIGNMENT
alignmentY = Component.TOP_ALIGNMENT
point = (2, 0)
Params: - window – the window to set the position of the security warning for
- alignmentX – the horizontal origin of the coordinate system
- alignmentY – the vertical origin of the coordinate system
- point – the position of the security warning in the specified
coordinate system
Throws: - NullPointerException – if the window argument is null
- NullPointerException – if the point argument is null
- IllegalArgumentException – if the window is trusted (i.e. the
getWarningString()
returns null - IllegalArgumentException – if the alignmentX or alignmentY
arguments are not within the range [0.0f ... 1.0f]
/**
* Sets the position of the security warning.
* <p>
* The {@code alignmentX} and {@code alignmentY} arguments specify the
* origin of the coordinate system used to calculate the position of the
* security warning. The values must be in the range [0.0f...1.0f]. The
* {@code 0.0f} value represents the left (top) edge of the rectangular
* bounds of the window. The {@code 1.0f} value represents the right
* (bottom) edge of the bounds. Whenever the size of the window changes,
* the origin of the coordinate system gets relocated accordingly. For
* convenience a developer may use the {@code Component.*_ALIGNMENT}
* constants to pass predefined values for these arguments.
* <p>
* The {@code point} argument specifies the location of the security
* warning in the coordinate system described above. If both {@code x} and
* {@code y} coordinates of the point are equal to zero, the warning will
* be located right in the origin of the coordinate system. On the other
* hand, if both {@code alignmentX} and {@code alignmentY} are equal to
* zero (i.e. the origin of the coordinate system is placed at the top-left
* corner of the window), then the {@code point} argument represents the
* absolute location of the security warning relative to the location of
* the window. The "absolute" in this case means that the position of the
* security warning is not effected by resizing of the window.
* <p>
* Note that the security warning managment code guarantees that:
* <ul>
* <li>The security warning cannot be located farther than two pixels from
* the rectangular bounds of the window (see {@link Window#getBounds}), and
* <li>The security warning is always visible on the screen.
* </ul>
* If either of the conditions is violated, the calculated position of the
* security warning is adjusted by the system to meet both these
* conditions.
* <p>
* The default position of the security warning is in the upper-right
* corner of the window, two pixels to the right from the right edge. This
* corresponds to the following arguments passed to this method:
* <ul>
* <li>{@code alignmentX = Component.RIGHT_ALIGNMENT}
* <li>{@code alignmentY = Component.TOP_ALIGNMENT}
* <li>{@code point = (2, 0)}
* </ul>
*
* @param window the window to set the position of the security warning for
* @param alignmentX the horizontal origin of the coordinate system
* @param alignmentY the vertical origin of the coordinate system
* @param point the position of the security warning in the specified
* coordinate system
*
* @throws NullPointerException if the window argument is null
* @throws NullPointerException if the point argument is null
* @throws IllegalArgumentException if the window is trusted (i.e.
* the {@code getWarningString()} returns null
* @throws IllegalArgumentException if the alignmentX or alignmentY
* arguments are not within the range [0.0f ... 1.0f]
*/
public static void setPosition(Window window, Point2D point,
float alignmentX, float alignmentY)
{
if (window == null) {
throw new NullPointerException(
"The window argument should not be null.");
}
if (window.getWarningString() == null) {
throw new IllegalArgumentException(
"The window must have a non-null warning string.");
}
if (point == null) {
throw new NullPointerException(
"The point argument must not be null");
}
if (alignmentX < 0.0f || alignmentX > 1.0f) {
throw new IllegalArgumentException(
"alignmentX must be in the range [0.0f ... 1.0f].");
}
if (alignmentY < 0.0f || alignmentY > 1.0f) {
throw new IllegalArgumentException(
"alignmentY must be in the range [0.0f ... 1.0f].");
}
AWTAccessor.getWindowAccessor().setSecurityWarningPosition(window,
point, alignmentX, alignmentY);
}
}