Class ShadowPopupFactory
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 PlasticLookAndFeel.initialize() and
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 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.8 $
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) static final StringIn the case of heavy weight popups, snapshots of the screen background will be stored as client properties of the popup contents' parent.(package private) static final Stringprivate final PopupFactoryThe PopupFactory used before this PopupFactory has been installed in#install. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionCreates aPopupfor the Componentownercontaining the Componentcontents.static voidinstall()Installs the ShadowPopupFactory as the shared popup factory on non-Mac platforms.static voidUninstalls the ShadowPopupFactory and restores the original popup factory as the new shared popup factory.Methods inherited from class javax.swing.PopupFactory
getPopup, getSharedInstance, setSharedInstance
-
Field Details
-
PROP_HORIZONTAL_BACKGROUND
In the case of heavy weight popups, snapshots of the screen background will be stored as client properties of the popup contents' parent. These snapshots will be used by the popup border to simulate the drop shadow effect. The two following constants define the names of these client properties.- See Also:
-
PROP_VERTICAL_BACKGROUND
- See Also:
-
storedFactory
The PopupFactory used before this PopupFactory has been installed in#install. Used to restored the original state in#uninstall.
-
-
Constructor Details
-
ShadowPopupFactory
-
-
Method Details
-
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
public static void uninstall()Uninstalls the ShadowPopupFactory and restores the original popup factory as the new shared popup factory.- See Also:
-
getPopup
Creates aPopupfor the Componentownercontaining 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.owneris used to determine whichWindowthe newPopupwill parent theComponentthePopupcreates to. A nullownerimplies there is no valid parent.xandyspecify the preferred initial location to place thePopupat. Based on screen size, or other paramaters, thePopupmay not display atxandy.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:
getPopupin 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:
-