javax.swing
Class PopupFactory2

java.lang.Object
  extended by javax.swing.PopupFactory2

public class PopupFactory2
extends java.lang.Object

Copied from javax.swing.PopupFactory, due to bugs in the original implementation.
The first bug is fixed by one line in overlappedByOwnedWindow(), also mentioned in
http://developer.java.sun.com/developer/bugParade/bugs/4809958.html
The bug I noticed is that when I dispose a particular JDialog, it doesn't get truly removed -- just hidden, and then in overlappedByOwnedWindows(), we find that it doesn't check to see if a window is visible or not.

The other problem is that for some reason, HeavyWeightPopup is not showing quite right -- they weren't
http://developer.java.sun.com/developer/bugParade/bugs/4909116.html

In order to fix all of these bugs temporarily, we have rewritten it and included it here as PopupFactory2. We hope to go back to the PopupFactory after these bugs are fixed (some partially fixed in Java 1.5).


PopupFactory, as the name implies, is used to obtain instances of Popups. Popups are used to display a Component above all other Components in a particular containment hierarchy. The general contract is that once you have obtained a Popup from a PopupFactory, you must invoke hide on the Popup. The typical usage is:

   PopupFactory factory = PopupFactory.getSharedInstance();
   Popup popup = factory.getPopup(owner, contents, x, y);
   popup.show();
   ...
   popup.hide();
 

Since:
1.4
See Also:
Popup

Constructor Summary
PopupFactory2()
           
 
Method Summary
 Popup2 getPopup(java.awt.Component owner, java.awt.Component contents, int x, int y)
          Creates a Popup for the Component owner containing the Component contents.
static PopupFactory2 getSharedInstance()
           
static void setSharedInstance(PopupFactory2 factory)
          Sets the AppContext specific PopupFactory.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PopupFactory2

public PopupFactory2()
Method Detail

setSharedInstance

public static void setSharedInstance(PopupFactory2 factory)
Sets the AppContext specific PopupFactory. This will throw an IllegalArgumentException if factory is null.

Parameters:
factory - Shared PopupFactory
Throws:
java.lang.IllegalArgumentException - if factory is null

getSharedInstance

public static PopupFactory2 getSharedInstance()

getPopup

public Popup2 getPopup(java.awt.Component owner,
                       java.awt.Component contents,
                       int x,
                       int y)
                throws java.lang.IllegalArgumentException
Creates a Popup for the Component owner containing the Component contents. 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.

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:
java.lang.IllegalArgumentException - if contents is null