Class JidePopup

All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible, WindowConstants
Direct Known Subclasses:
Searchable.SearchPopup

public class JidePopup extends JComponent implements Accessible, WindowConstants
JidePopup is a popup window which can be resized, dragged and autohide if time out.

JidePopup uses JWindow as the container in order to show itself. By default, JidePopup is not focusable which means no component in the JidePopup will get focus. For example, if you put a JTextField in JidePopup and the JTextField becomes not editable, this is a result of non-focusable JWindow. So if you want components in JidePopup to be able to receive focus, you can either call setFocusable(true) or you can call setDefaultFocusComponent(java.awt.Component) to set a child component as the default focus component.

See Also:
  • Field Details

    • CLIENT_PROPERTY_WINDOW_OPACITY

      public static final String CLIENT_PROPERTY_WINDOW_OPACITY
      You can set client property to JidePopup control the window opacity (only when heavyweight popup is in use). The value of the client property should be a float.
      See Also:
    • CLIENT_PROPERTY_WINDOW_OPAQUE

      public static final String CLIENT_PROPERTY_WINDOW_OPAQUE
      You can set client property to JidePopup control the window opaque (only when heavyweight popup is in use) The value of the client property should be a boolean.
      See Also:
    • CLIENT_PROPERTY_WINDOW_SHAPE

      public static final String CLIENT_PROPERTY_WINDOW_SHAPE
      You can set client property to JidePopup control the window shape (only when heavyweight popup is in use) The value of the client property should be a Shape.
      See Also:
    • CONTENT_PANE_PROPERTY

      public static final String CONTENT_PANE_PROPERTY
      Bound property name.
      See Also:
    • LAYERED_PANE_PROPERTY

      public static final String LAYERED_PANE_PROPERTY
      Bound property name.
      See Also:
    • ROOT_PANE_PROPERTY

      public static final String ROOT_PANE_PROPERTY
      Bound property name.
      See Also:
    • GLASS_PANE_PROPERTY

      public static final String GLASS_PANE_PROPERTY
      Bound property name.
      See Also:
    • VISIBLE_PROPERTY

      public static final String VISIBLE_PROPERTY
      Bound property name.
      See Also:
    • TRANSIENT_PROPERTY

      public static final String TRANSIENT_PROPERTY
      See Also:
    • ATTACHABLE_PROPERTY

      public static final String ATTACHABLE_PROPERTY
      Constrained property name indicating that the popup is attachable.
      See Also:
    • MOVABLE_PROPERTY

      public static final String MOVABLE_PROPERTY
      Bound property name for gripper.
      See Also:
    • DETACHED_PROPERTY

      public static final String DETACHED_PROPERTY
      Bound property name for if the popup is detached.
      See Also:
    • CLIENT_PROPERTY_POPUP_TYPE

      public static final String CLIENT_PROPERTY_POPUP_TYPE
      See Also:
    • CLIENT_PROPERTY_VALUE_POPUP_TYPE_COMBOBOX

      public static final String CLIENT_PROPERTY_VALUE_POPUP_TYPE_COMBOBOX
      See Also:
    • _detached

      protected boolean _detached
    • _window

      protected ResizableWindow _window
    • _panel

      protected ResizablePanel _panel
    • _resizableSupport

      protected ResizableSupport _resizableSupport
    • CLIENT_PROPERTY_POPUP_ACTUAL_OWNER

      public static final String CLIENT_PROPERTY_POPUP_ACTUAL_OWNER
      If the popup shows a dialog and you don't want the popup to be hidden when the dialog is shown, you can use this special client property to do it. Here is the code, assuming the dialog is shown from your popup.
       JComponent c = JideSwingUtilities.getFirstJComponent(dialog);
         if(c != null) {
             c.putClientProperty(JidePopup.CLIENT_PROPERTY_POPUP_ACTUAL_OWNER, component);
         }
       
      See Also:
    • RESIZABLE_PROPERTY

      public static final String RESIZABLE_PROPERTY
      Bound property name for resizable.
      See Also:
    • OWNER_PROPERTY

      public static final String OWNER_PROPERTY
      Bound property name for owner.
      See Also:
    • DO_NOTHING_ON_MOVED

      public static final int DO_NOTHING_ON_MOVED
      Hides the popup when the owner is moved.
      See Also:
    • HIDE_ON_MOVED

      public static final int HIDE_ON_MOVED
      Hides the popup when the owner is moved.
      See Also:
    • MOVE_ON_MOVED

      public static final int MOVE_ON_MOVED
      Moves the popup along with owner when the owner is moved.
      See Also:
    • DISTANCE_TO_SCREEN_BORDER

      public int DISTANCE_TO_SCREEN_BORDER
      The distance between alert and screen border.
    • PROPERTY_GRIPPER_LOCATION

      public static final String PROPERTY_GRIPPER_LOCATION
      See Also:
    • _previousSize

      protected Dimension _previousSize
    • _actualOwner

      protected Component _actualOwner
    • _actualOwnerLocation

      protected Point _actualOwnerLocation
    • LIGHT_WEIGHT_POPUP

      public static final int LIGHT_WEIGHT_POPUP
      Key used to indicate a light weight popup should be used.
      See Also:
    • HEAVY_WEIGHT_POPUP

      public static final int HEAVY_WEIGHT_POPUP
      See Also:
    • _insets

      protected Insets _insets
  • Constructor Details

    • JidePopup

      public JidePopup()
      Creates a Popup.
  • Method Details

    • createRootPane

      protected JRootPane createRootPane()
      Called by the constructor to set up the JRootPane.
      Returns:
      a new JRootPane
      See Also:
    • getUI

      public PopupUI getUI()
      Returns the look-and-feel object that renders this component.
      Overrides:
      getUI in class JComponent
      Returns:
      the PopupUI object that renders this component
    • setUI

      public void setUI(PopupUI ui)
      Sets the UI delegate for this Popup.
      Parameters:
      ui - the UI delegate
    • updateUI

      public void updateUI()
      Notification from the UIManager that the look and feel has changed. Replaces the current UI object with the latest version from the UIManager.
      Overrides:
      updateUI in class JComponent
      See Also:
    • getUIClassID

      public String getUIClassID()
      Returns the name of the look-and-feel class that renders this component.
      Overrides:
      getUIClassID in class JComponent
      Returns:
      the string "PopupUI"
      See Also:
    • isRootPaneCheckingEnabled

      protected boolean isRootPaneCheckingEnabled()
      Returns whether calls to add and setLayout cause an exception to be thrown.
      Returns:
      true if add and setLayout are checked
      See Also:
    • setRootPaneCheckingEnabled

      protected void setRootPaneCheckingEnabled(boolean enabled)
      Determines whether calls to add and setLayout cause an exception to be thrown.
      Parameters:
      enabled - a boolean value, true if checking is to be enabled, which cause the exceptions to be thrown
      See Also:
    • addImpl

      protected void addImpl(Component comp, Object constraints, int index)
      Ensures that, by default, children cannot be added directly to this component. Instead, children must be added to its content pane. For example:
       thisComponent.getContentPane().add(child)
       
      An attempt to add to directly to this component will cause a runtime exception to be thrown. Subclasses can disable this behavior.
      Overrides:
      addImpl in class Container
      Parameters:
      comp - the Component to be added
      constraints - the object containing the constraints, if any
      index - the index
      Throws:
      Error - if called with isRootPaneChecking true
      See Also:
    • remove

      public void remove(Component comp)
      Removes the specified component from this container.
      Overrides:
      remove in class Container
      Parameters:
      comp - the component to be removed
      See Also:
    • setLayout

      public void setLayout(LayoutManager manager)
      Ensures that, by default, the layout of this component cannot be set. Instead, the layout of its content pane should be set. For example:
       thisComponent.getContentPane().setLayout(new GridLayout(1,2))
       
      An attempt to set the layout of this component will cause an runtime exception to be thrown. Subclasses can disable this behavior.
      Overrides:
      setLayout in class Container
      Parameters:
      manager - the LayoutManager
      Throws:
      Error - if called with isRootPaneChecking true
      See Also:
    • getJMenuBar

      public JMenuBar getJMenuBar()
      Returns the current JMenuBar for this Popup, or null if no menu bar has been set.
      Returns:
      the JMenuBar used by this Popup.
      See Also:
    • setJMenuBar

      public void setJMenuBar(JMenuBar m)
      Sets the menuBar property for this Popup.
      Parameters:
      m - the JMenuBar to use in this Popup.
      See Also:
    • getContentPane

      public Container getContentPane()
      Returns the content pane for this Popup.
      Returns:
      the content pane
    • setContentPane

      public void setContentPane(Container c)
      Sets this Popup's contentPane property.
      Parameters:
      c - the content pane for this popup.
      Throws:
      IllegalComponentStateException - (a runtime exception) if the content pane parameter is null
      See Also:
    • getLayeredPane

      public JLayeredPane getLayeredPane()
      Returns the layered pane for this popup.
      Returns:
      a JLayeredPane object
      See Also:
    • setLayeredPane

      public void setLayeredPane(JLayeredPane layered)
      Sets this Popup's layeredPane property.
      Parameters:
      layered - the JLayeredPane for this popup
      Throws:
      IllegalComponentStateException - (a runtime exception) if the layered pane parameter is null
      See Also:
    • getGlassPane

      public Component getGlassPane()
      Returns the glass pane for this popup.
      Returns:
      the glass pane
      See Also:
    • setGlassPane

      public void setGlassPane(Component glass)
      Sets this Popup's glassPane property.
      Parameters:
      glass - the glass pane for this popup
      See Also:
    • getRootPane

      public JRootPane getRootPane()
      Returns the rootPane object for this popup.
      Overrides:
      getRootPane in class JComponent
      Returns:
      the rootPane property
      See Also:
    • setRootPane

      protected void setRootPane(JRootPane root)
      Sets the rootPane property for this Popup. This method is called by the constructor.
      Parameters:
      root - the new JRootPane object
    • setVisible

      public void setVisible(boolean visible)
      Makes the component visible or invisible. Overrides Component.setVisible.
      Overrides:
      setVisible in class JComponent
      Parameters:
      visible - true to make the component visible; false to make it invisible
    • getAccessibleContext

      public AccessibleContext getAccessibleContext()
      Gets the AccessibleContext associated with this Popup. For popups, the AccessibleContext takes the form of an AccessiblePopup object. A new AccessiblePopup instance is created if necessary.
      Specified by:
      getAccessibleContext in interface Accessible
      Overrides:
      getAccessibleContext in class Component
      Returns:
      an AccessiblePopup that serves as the AccessibleContext of this Popup
      See Also:
    • isKeepPreviousSize

      public boolean isKeepPreviousSize()
      Get the flag indicating if JidePopup should keep the size last time it was popped up.

      The default value of this flag is true. If you want the popup to resize based on the changing contents like in IntelliHints, you need set this flag to false.

      Returns:
      the flag.
    • setKeepPreviousSize

      public void setKeepPreviousSize(boolean keepPreviousSize)
      Set the flag indicating if JidePopup should keep the size last time it was popped up.
      Parameters:
      keepPreviousSize - the flag.
    • getBackToOriginalInsets

      public Insets getBackToOriginalInsets()
      Get the insets so that when the JidePopup is dragged back to this area, the JidePopup will jump to its original position automatically.

      By default, the value is {10, 10, 10, 10}. You can disable the jump functionality by setting the insets to {0, 0, 0, 0}.

      Returns:
      the insets.
    • setBackToOriginalInsets

      public void setBackToOriginalInsets(Insets backToOriginalInsets)
      Set the insets so that when the JidePopup is dragged back to this area, the JidePopup will jump to its original position automatically.
      Parameters:
      backToOriginalInsets - the insets
    • showPopup

      public void showPopup()
      Shows the popup. By default, it will show right below the owner.
    • showPopup

      public void showPopup(Component owner)
      Shows the popup. By default, it will show right below the owner after considering the insets. This call is almost the same as setOwner followed by showPopup() except in this case, the owner is only temporarily used to create the popup. It will not be added to excludedComponent list as setOwner would do.
      Parameters:
      owner - the popup window's owner; if unspecified, it will default to the RootPaneContainer(Applet) or ContentContainer
    • showPopup

      public void showPopup(Insets insets)
      Shows the popup. By default, it will show right below the owner after considering the insets.
      Parameters:
      insets - the popup's insets RootPaneContainer(Applet) or ContentContainer
    • showPopup

      public void showPopup(Insets insets, Component owner)
      Shows the popup. By default, it will show right below the owner after considering the insets. Please note, if the owner is not displayed (isShowing returns false), the popup will not be displayed either.
      Parameters:
      insets - the popup's insets
      owner - the popup window's owner; if unspecified, it will default to the RootPaneContainer(Applet) or ContentContainer
    • getPopupLocation

      protected Point getPopupLocation(Point point, Dimension size, Component owner)
      Calculates the popup location.
      Parameters:
      point - owner is top-left coordinate relative to screen.
      size - the size of the popup window.
      owner - the owner
      Returns:
      new popup location. By default, it will return the coordinate of the bottom-left corner of owner.
    • setupResizeCorner

      public void setupResizeCorner(int corner)
      Setup Resizable's ResizeCorner.
      Parameters:
      corner - the corner.
    • getTopLevelAncestor

      public static Component getTopLevelAncestor(Component component)
    • showPopup

      public void showPopup(int location)
      Shows the popup at the specified location relative to the screen. The valid locations are: The actual location will be based on the main screen bounds. Say if the location is SwingConstants.SOUTH_EAST, the popup will appear at the south west corner of main screen with 10 pixels to the border. The 10 pixel is the default value. You can change it by setting DISTANCE_TO_SCREEN_BORDER.
      Parameters:
      location - the new location.
    • showPopup

      public void showPopup(int location, Component owner)
      Shows the popup at the specified location relative to the owner. The valid locations are: The actual location will be based on the owner's bounds. Say if the location is SwingConstants.SOUTH_EAST, the popup will appear at the south west corner of owner with 10 pixels to the border. The 10 pixel is the default value. You can change it by setting DISTANCE_TO_SCREEN_BORDER.
      Parameters:
      location - the new location
      owner - the popup window's owner; if unspecified, it will default to the RootPaneContainer(Applet) or ContentContainer
    • setDisplayStartLocation

      public void setDisplayStartLocation(Point startLocation)
      Set the display start location of the popup.
      Parameters:
      startLocation - the display start location.
      See Also:
    • getDisplayStartLocation

      protected Point getDisplayStartLocation(Rectangle screenDim, Dimension size, int location)
      Get the display start location of the popup. It will automatically calculate a point if the customer didn't invoke setDisplayStartLocation(java.awt.Point) explicitly. It will just return the location if the customer already set it.
      Parameters:
      screenDim - the dimension of the screen
      size - the size of the popup
      location - the direction to show the popup
      Returns:
      the display start location.
    • getDisplayScreenBounds

      protected Rectangle getDisplayScreenBounds(Component owner)
    • packPopup

      public void packPopup()
      Packs the popup. Setting size only if it's a light weight popup. Otherwise do pack.
    • internalShowPopup

      protected void internalShowPopup(int x, int y)
    • internalShowPopup

      protected void internalShowPopup(int x, int y, Component owner)
    • getAdjustedRectangle

      protected Rectangle getAdjustedRectangle(int x, int y, Component owner)
      Gets the rectangle adjusted by preferred size and the monitor device settings. The client property "useAllMonitorDevices" could be registered in any ancestor component of the owner component to take effect.
      Parameters:
      x - the original x
      y - the original y
      owner - the owner component
      Returns:
      the adjusted rectangle according to the preferred size and monitor devie settings.
      Since:
      3.4.1
    • createWindow

      protected void createWindow(Component owner, int x, int y)
    • showPopup

      public void showPopup(int x, int y)
      Shows the popup at the specified x and y coordinates.
      Parameters:
      x - the x position. It is screen position.
      y - the y position. It is screen position.
    • showPopup

      public void showPopup(int x, int y, Component owner)
      Shows the popup at the specified x and y coordinates.
      Parameters:
      x - the x position. It is screen position.
      y - the y position. It is screen position.
      owner - the popup window's owner; if unspecified, it will default to the RootPaneContainer(Applet) or ContentContainer
    • getFrame

      protected static Frame getFrame(Component c)
    • createHeavyweightPopupContainer

      protected ResizableWindow createHeavyweightPopupContainer(Component owner)
      Parameters:
      owner - the owner for this popup container. It will be used to find the top level ancestor and use it as the parent for this popup window.
      Returns:
      a ResizableWindow.
    • createLightweightPopupContainer

      protected ResizablePanel createLightweightPopupContainer(Component owner)
      Creates lightweight container for the popup.
      Parameters:
      owner - the owner for this popup container. This parameter is not used in this method. It was there mainly because the corresponding createHeavyweightPopupContainer(java.awt.Component) has this parameter.
      Returns:
      a ResizablePanel
    • installListeners

      protected void installListeners()
    • contentResized

      protected void contentResized()
    • installBorder

      protected void installBorder()
    • showPopupImmediately

      protected void showPopupImmediately()
    • movePopup

      protected void movePopup()
    • endDragging

      protected void endDragging()
    • beginDragging

      protected void beginDragging(JComponent f, int mouseX, int mouseY, double relativeX, double relativeY)
    • isDragging

      protected boolean isDragging()
    • drag

      protected void drag(JComponent f, int newX, int newY, int mouseModifiers)
    • handleMousePressed

      protected void handleMousePressed(MouseEvent e)
    • handleMouseReleased

      protected void handleMouseReleased(MouseEvent e)
    • handleMouseDragged

      protected void handleMouseDragged(MouseEvent e)
    • handleMouseEntered

      protected void handleMouseEntered(MouseEvent e)
    • handleMouseExited

      protected void handleMouseExited(MouseEvent e)
    • handleWindowEvent

      protected void handleWindowEvent(WindowEvent e)
    • getRealParent

      protected JComponent getRealParent(RootPaneContainer rootPaneContainer)
    • handleComponentEvent

      protected void handleComponentEvent(ComponentEvent e)
      This method will process component event. By default, if popup's ancestor is hidden, we will hide the popup as well if the popup is transient (isTransient returns true). If popup's ancestor is moved, we will either move or hide the popup depending on getDefaultMoveOperation() value.
      Parameters:
      e - the ComponentEvent.
    • ancestorHidden

      protected void ancestorHidden()
      This method will process component hidden event for the popup's ancestor. By default we will hide the popup immediately. You can override this to customize the behavior.
    • ancestorMoved

      protected void ancestorMoved()
      This method will process component moved event for the popup's ancestor. By default we will move the popup if getDefaultMoveOperation() is MOVE_ON_MOVED, or hide the popup if getDefaultMoveOperation() is HIDE_ON_MOVED. You can override this to customize the behavior.
    • hidePopup

      public void hidePopup()
    • hidePopup

      public void hidePopup(boolean cancelled)
    • isPopupVisible

      public boolean isPopupVisible()
    • getPopupBounds

      public Rectangle getPopupBounds()
    • hidePopupImmediately

      public void hidePopupImmediately(boolean cancelled)
    • hidePopupImmediately

      public void hidePopupImmediately()
      Hides the popup immediately (compare to hidePopup() could use animation to hide the popup).
    • shouldAWTEventListenerBeUsed

      protected boolean shouldAWTEventListenerBeUsed()
      Returns whether the AWTEventEventListener should be used to handle event processing
      Returns:
      true to use the AWT event listener; false otherwise
    • getOwner

      public Component getOwner()
      Gets the owner of the popup.
      Returns:
      the owner of the popup.
    • setOwner

      public void setOwner(Component owner)
      Sets the owner of the popup. By default, we will call addExcludedComponent(owner) so that clicking on the owner will not hide the popup. If you prefer to hide the popup when the owner is clicked, please call removeExcludedComponent(java.awt.Component) to remove it explicitly after setOwner is called.
      Parameters:
      owner - the new owner.
    • isMovable

      public boolean isMovable()
      Checks if the popup is movable. If yes, it will show the gripper so that user can grab it and move the popup. If the popup is attached to its owner, moving it will detach from the owner.
      Returns:
      true if gripper is visible
    • setMovable

      public void setMovable(boolean movable)
      Sets the movable attribute.
      Parameters:
      movable - true or false.
    • isResizable

      public boolean isResizable()
      Checks if the popup is resizable. By default, resizable option is true.

      Depending on the detached/attached mode, the resizing behavior may be different. If a popup is detached to a component, it only allows you to resize from bottom, bottom right and right It obviously doesn't make sense to resize from top and top side is aligned with the attached component.

      (Notes: in the future we will allow resize from different corner if the popup is shown above owner due to not enough space on the screen).

      Returns:
      if the popup is resizable.
    • setResizable

      public void setResizable(boolean resizable)
      Sets the resizable option.
      Parameters:
      resizable - true or false.
    • isAttachable

      public boolean isAttachable()
      Checks if the popup is attachable. By default, attachable option is true.
      Returns:
      if the popup is attachable.
    • setAttachable

      public void setAttachable(boolean attachable)
      Sets the attachable option.
      Parameters:
      attachable - true or false.
    • isDetached

      public boolean isDetached()
      Checks if the popup is detached.

      A popup has detached and attached mode. When a popup is in attached, it will act like it's part of the owner (which can be set using setOwner(java.awt.Component). When owner is moved, the popup will be moved. If the owner is hidden, the popup will hidden. In the other word, it is attached with the owner. In detached mode, popup becomes an independent floating window. It will stay at the same location regardless if owner is moved. It could still be visible when owner is hidden.

      Returns:
      true if it's ddetached Otherwise false.
    • setDetached

      public void setDetached(boolean detached)
      Changes the popup's detached mode.
      Parameters:
      detached - true or false.
    • getPopupBorder

      public Border getPopupBorder()
      Gets the popup border set by setPopupBorder(javax.swing.border.Border).
      Returns:
      the border for this popup.
    • setPopupBorder

      public void setPopupBorder(Border popupBorder)
      Sets the border for this popup. Please note a non-empty border is needed if you want the popup to be resizable.
      Parameters:
      popupBorder - the border for the popup.
    • isTransient

      public boolean isTransient()
      Checks if the popup is transient.
      Returns:
      true if transient.
      See Also:
    • setTransient

      public void setTransient(boolean isTransient)
      Sets the transient attribute. If a popup is transient, it will hide automatically when mouse is clicked outside the popup. Otherwise, it will stay visible until timeout or hidePopup() is called.
      Parameters:
      isTransient - true or false.
    • getTimeout

      public int getTimeout()
      Gets the time out value, in milliseconds.
      Returns:
      the time out value, in milliseconds.
    • setTimeout

      public void setTimeout(int timeout)
      Sets the time out value, in milliseconds. If you don't want the popup hide after the time out, set the value to 0. By default it's 0 meaning it will never time out.

      Typically, you call setTimeOut before the popup is visible. But if you do call setTimeOut when popup is already visible (which means the timer is running), we will restart the timer using the new time out value you just set, even the new time out value is the same as the old one. In the other word, this setTimeOut call will always restart the timer if the timer is running.

      Parameters:
      timeout - new time out value, in milliseconds. 0 if you don't want popup automatically hides.
    • getDefaultFocusComponent

      public Component getDefaultFocusComponent()
      Gets the default focus component.
      Returns:
      the default focus component.
    • setDefaultFocusComponent

      public void setDefaultFocusComponent(Component defaultFocusComponent)
      Sets the default focus component. Default focus component should be a child component on this popup. It will get focus when popup is shown. By setting a non-null component as default focus component, the JWindow that contains the JidePopup will be set focusable. Otherwise the JWindow will be non-focusable.
      Parameters:
      defaultFocusComponent - the default focus component.
    • addPopupMenuListener

      public void addPopupMenuListener(PopupMenuListener l)
      Adds a PopupMenu listener which will listen to notification messages from the popup portion of the combo box.

      For all standard look and feels shipped with Java 2, the popup list portion of combo box is implemented as a JPopupMenu. A custom look and feel may not implement it this way and will therefore not receive the notification.

      Parameters:
      l - the PopupMenuListener to add
    • removePopupMenuListener

      public void removePopupMenuListener(PopupMenuListener l)
      Removes a PopupMenuListener.
      Parameters:
      l - the PopupMenuListener to remove
      Since:
      1.4
      See Also:
    • getPopupMenuListeners

      public PopupMenuListener[] getPopupMenuListeners()
      Returns an array of all the PopupMenuListeners added to this JComboBox with addPopupMenuListener().
      Returns:
      all of the PopupMenuListeners added or an empty array if no listeners have been added
    • firePopupMenuWillBecomeVisible

      public void firePopupMenuWillBecomeVisible()
      Notifies PopupMenuListeners that the popup portion of the combo box will become visible.

      This method is public but should not be called by anything other than the UI delegate.

      See Also:
    • firePopupMenuWillBecomeInvisible

      public void firePopupMenuWillBecomeInvisible()
      Notifies PopupMenuListeners that the popup portion of the combo box has become invisible.

      This method is public but should not be called by anything other than the UI delegate.

      See Also:
    • firePopupMenuCanceled

      public void firePopupMenuCanceled()
      Notifies PopupMenuListeners that the popup portion of the combo box has been canceled.

      This method is public but should not be called by anything other than the UI delegate.

      See Also:
    • getDefaultMoveOperation

      public int getDefaultMoveOperation()
      Gets the default operation when the owner is moved. The valid values are either HIDE_ON_MOVED, MOVE_ON_MOVED or DO_NOTHING_ON_MOVED.
      Returns:
      the default operation when the owner is moved.
    • setDefaultMoveOperation

      public void setDefaultMoveOperation(int defaultMoveOperation)
      Sets the default operation when the owner is moved. The valid could be either HIDE_ON_MOVED, MOVE_ON_MOVED or DO_NOTHING_ON_MOVED.
      Parameters:
      defaultMoveOperation - the default operation when the owner is moved.
    • addExcludedComponent

      public void addExcludedComponent(Component component)
      Adds a component as excluded component. If a component is an excluded component or descendant of an excluded component, clicking on it will not hide the popup.

      For example, AbstractComboBox uses JidePopup to display the popup. If you want to show a JDialog from the popup, you will have to add the dialog as excluded component. See below for an example.

      
       JDialog dialog =new JDialog((Frame) JideSwingUtilities.getWindowForComponent(this), true);
       dialog.add(new JTable(10, 4));
       dialog.pack();
       Container ancestorOfClass = SwingUtilities.getAncestorOfClass(JidePopup.class, this); // try
       to find the JidePopup
       if(ancestorOfClass instanceof  JidePopup) {
           ((JidePopup) ancestorOfClass).addExcludedComponent(dialog);
       }
       dialog.setVisible(true);
       if(ancestorOfClass instanceof  JidePopup) {
           ((JidePopup) ancestorOfClass).removeExcludedComponent(dialog);
       }
       
      Parameters:
      component - the component should be excluded.
    • removeExcludedComponent

      public void removeExcludedComponent(Component component)
      Removes a component from the excluded component list. If a component is an excluded component, clicking on it will not hide the popup.
      Parameters:
      component - the component was excluded before.
    • removeAllExcludedComponents

      public void removeAllExcludedComponents()
      Removes all excluded components that were added before.
    • isExcludedComponent

      public boolean isExcludedComponent(Component component)
      Checks if a component is an excluded component. If a component is an excluded component, clicking on it will not hide the popup. By default, owner is always the excluded component.
      Parameters:
      component - a component.
      Returns:
      true if the component is an excluded component.
    • getGripperLocation

      public int getGripperLocation()
    • setGripperLocation

      public void setGripperLocation(int gripperLocation)
      Sets the gripper location. The valid values are SwingConstants.NORTH, SwingConstants.SOUTH, SwingConstants.EAST, and SwingConstants.WEST.
      Parameters:
      gripperLocation - the new gripper location.
    • getPopupType

      public int getPopupType()
    • setPopupType

      public void setPopupType(int popupType)
    • isClickOnPopup

      public boolean isClickOnPopup(MouseEvent e)
      Checks if the mouse event is on the popup. By default, we will check if popup is an ancestor of the clicked component. If it returns true, the popup will not be hidden. If false, the popup will be hidden as we consider the mouse click is outside the popup.
      Parameters:
      e - the mouse event
      Returns:
      true or false.
    • getActualOwner

      protected Component getActualOwner()
      Gets the actual owner. User can set owner using setOwner(java.awt.Component) method. But when one of the showPopup methods with owner parameter is called, the actual owner will be changed to this component.
      Returns:
      the actual owner.
    • setPreferredPopupSize

      public void setPreferredPopupSize(Dimension size)
      Sets the preferred popup size. This method can be used when you want to keep the popup size to be the same as when it was closed.
      Parameters:
      size - the size of the popup when it was shown last time.
    • getPreferredPopupSize

      public Dimension getPreferredPopupSize()
    • isPopupAncestorOf

      public static boolean isPopupAncestorOf(JidePopup popup, Component c)
    • isReturnFocusToOwner

      public boolean isReturnFocusToOwner()
      gets the flag. If true, it will return focus to the owner when the popup is hidden.
      Returns:
      true or false.
    • setReturnFocusToOwner

      public void setReturnFocusToOwner(boolean returnFocusToOwner)
      Sets the flag to return focus to the owner when the popup is hidden.
      Parameters:
      returnFocusToOwner - true or false.
    • isEnsureInOneScreen

      public boolean isEnsureInOneScreen()
      Checks if the popup will be shown in one screen.
      Returns:
      true or false.
      Since:
      3.6.3
    • setEnsureInOneScreen

      public void setEnsureInOneScreen(boolean ensureInOneScreen)
      Sets the flag if the popup should appear within one screen. True in one screen. False to allow cross two screens.
      Parameters:
      ensureInOneScreen - true or false.
      Since:
      3.6.3