com.jgoodies.looks.common
public final class ShadowPopupFactory extends PopupFactory
PopupFactory.
Adds a drop shadow border to all popups except ComboBox popups.
It is installed by the JGoodies Plastic L&F, as well as by
the JGoodies Windows L&F during the Look&Feel initialization,
see {@link com.jgoodies.looks.plastic.PlasticLookAndFeel#initialize} and
{@link com.jgoodies.looks.windows.WindowsLookAndFeel#initialize}.This factory shall not be used on platforms that provide native drop shadows, such as the Mac OS X. Therefore the invocation of the {@link #install()} method will have no effect on such platforms.
Note: To be used in a sandbox environment, this PopupFactory
requires two AWT permissions: createRobot and
readDisplayPixels. The reason for it is, that in the case of
the heavy weight popups this PopupFactory uses a Robot to snapshot
the screen background to simulate the drop shadow effect.
Version: $Revision: 1.2 $
See Also: java.awt.AWTPermission java.awt.Robot javax.swing.Popup LookAndFeel#initialize LookAndFeel#uninitialize
| Method Summary | |
|---|---|
| Popup | getPopup(Component owner, Component contents, int x, int y)
Creates a Popup for the Component owner
containing the Component contents. |
| static void | install()
Installs the ShadowPopupFactory as the shared popup factory
on non-Mac platforms. |
| static void | uninstall()
Uninstalls the ShadowPopupFactory and restores the original
popup factory as the new shared popup factory.
|
Popup for the Component owner
containing the Component contents. In addition to
the superclass behavior, we try to return a Popup that has a drop shadow,
if popup drop shadows are active - as returned by
Options#isPopupDropShadowActive.
owner is used to determine which Window the new
Popup will parent the Component the
Popup creates to. A null owner implies there
is no valid parent. x and
y specify the preferred initial location to place
the Popup at. Based on screen size, or other paramaters,
the Popup may not display at x and
y.
We invoke the super #getPopup, not the one in the
stored factory, because the popup type is set in this instance,
not in the stored one.
Parameters: owner Component mouse coordinates are relative to, may be null contents Contents of the Popup x Initial x screen coordinate y Initial y screen coordinate
Returns: Popup containing Contents
Throws: IllegalArgumentException if contents is null
See Also: isPopupDropShadowActive
#uninstall.
In some Mac Java environments the popup factory throws
a NullPointerException when we call #getPopup.
TODO: The Mac case shows that we may have problems replacing non PopupFactory instances. Therefore we should consider replacing only instances of PopupFactory.
See Also: uninstall
See Also: install