Class ShadowPopupFactory
- java.lang.Object
-
- javax.swing.PopupFactory
-
- org.pushingpixels.substance.internal.contrib.jgoodies.looks.common.ShadowPopupFactory
-
public final class ShadowPopupFactory extends PopupFactory
The JGoodies Looks implementation ofPopupFactory
. 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, seecom.jgoodies.looks.plastic.PlasticLookAndFeel#initialize
andcom.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
install()
method will have no effect on such platforms.Note: To be used in a sandbox environment, this PopupFactory requires two AWT permissions:
createRobot
andreadDisplayPixels
. 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.
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Popup
getPopup(Component owner, Component contents, int x, int y)
Creates aPopup
for the Componentowner
containing the Componentcontents
.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.-
Methods inherited from class javax.swing.PopupFactory
getPopup, getSharedInstance, setSharedInstance
-
-
-
-
Method Detail
-
install
public static void install()
Installs the ShadowPopupFactory as the shared popup factory on non-Mac platforms. Also stores the previously set factory, so that it can be restored in#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()
-
uninstall
public static void uninstall()
Uninstalls the ShadowPopupFactory and restores the original popup factory as the new shared popup factory.- See Also:
install()
-
getPopup
public Popup getPopup(Component owner, Component contents, int x, int y) throws IllegalArgumentException
Creates aPopup
for the Componentowner
containing the Componentcontents
. 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 byOptions#isPopupDropShadowActive
.owner
is used to determine whichWindow
the newPopup
will parent theComponent
thePopup
creates to. A nullowner
implies there is no valid parent.x
andy
specify the preferred initial location to place thePopup
at. Based on screen size, or other paramaters, thePopup
may not display atx
andy
.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.- Overrides:
getPopup
in classPopupFactory
- Parameters:
owner
- Component mouse coordinates are relative to, may be nullcontents
- Contents of the Popupx
- Initial x screen coordinatey
- Initial y screen coordinate- Returns:
- Popup containing Contents
- Throws:
IllegalArgumentException
- if contents is null- See Also:
Options.isPopupDropShadowActive()
-
-