com.jgoodies.looks.windows
Class WindowsComboBoxUI

java.lang.Object
  extended by javax.swing.plaf.ComponentUI
      extended by javax.swing.plaf.ComboBoxUI
          extended by javax.swing.plaf.basic.BasicComboBoxUI
              extended by com.sun.java.swing.plaf.windows.WindowsComboBoxUI
                  extended by com.jgoodies.looks.windows.WindowsComboBoxUI

public class WindowsComboBoxUI
extends com.sun.java.swing.plaf.windows.WindowsComboBoxUI

The JGoodies Windows Look&Feel implementation of ComboBoxUI. Corrects the editor insets for editable combo boxes as well as the render insets for non-editable combos. And it has the same height as text fields - unless you change the renderer.

Also, this class offers to use the combo's popup prototype display value to compute the popup menu width. This is an optional feature of the JGoodies Windows L&f implemented via a client property key.

Version:
$Revision: 1.19 $
Author:
Karsten Lentzsch
See Also:
Options.COMBO_POPUP_PROTOTYPE_DISPLAY_VALUE_KEY

Nested Class Summary
 
Nested classes/interfaces inherited from class com.sun.java.swing.plaf.windows.WindowsComboBoxUI
com.sun.java.swing.plaf.windows.WindowsComboBoxUI.WindowsComboBoxEditor
 
Nested classes/interfaces inherited from class javax.swing.plaf.basic.BasicComboBoxUI
BasicComboBoxUI.ComboBoxLayoutManager, BasicComboBoxUI.FocusHandler, BasicComboBoxUI.ItemHandler, BasicComboBoxUI.KeyHandler, BasicComboBoxUI.ListDataHandler, BasicComboBoxUI.PropertyChangeHandler
 
Field Summary
 
Fields inherited from class javax.swing.plaf.basic.BasicComboBoxUI
arrowButton, cachedMinimumSize, comboBox, currentValuePane, editor, focusListener, hasFocus, isMinimumSizeDirty, itemListener, keyListener, listBox, listDataListener, popup, popupKeyListener, popupMouseListener, popupMouseMotionListener
 
Constructor Summary
WindowsComboBoxUI()
           
 
Method Summary
protected  void configureEditor()
           
protected  JButton createArrowButton()
          Creates the arrow button that is to be used in the combo box.
protected  ComboBoxEditor createEditor()
          Creates the editor that is to be used in editable combo boxes.
protected  LayoutManager createLayoutManager()
          Creates a layout manager for managing the components which make up the combo box.
protected  ComboPopup createPopup()
          Creates a ComboPopup that honors the optional combo popup display value that is used to compute the popup menu width.
protected  ListCellRenderer createRenderer()
          Creates the default renderer that will be used in a non-editiable combo box.
static ComponentUI createUI(JComponent b)
           
 Dimension getMinimumSize(JComponent c)
          The minumum size is the size of the display area plus insets plus the button.
 Dimension getPreferredSize(JComponent c)
          Delegates to #getMinimumSize(Component).
protected  void installListeners()
           
 void installUI(JComponent c)
           
protected  boolean isRendererBorderRemovable(JComponent rendererComponent)
          Checks and answer whether the border of the given renderer component can be removed temporarily, so the combo's selection background will be consistent with the default renderer and native appearance.
 void paintCurrentValue(Graphics g, Rectangle bounds, boolean hasFocus)
          Paints the currently selected item.
protected  Rectangle rectangleForCurrentValue()
          Returns the area that is reserved for drawing the currently selected item.
protected  void uninstallListeners()
           
 
Methods inherited from class com.sun.java.swing.plaf.windows.WindowsComboBoxUI
installKeyboardActions, paint, paintCurrentValueBackground, unconfigureEditor, uninstallUI
 
Methods inherited from class javax.swing.plaf.basic.BasicComboBoxUI
addEditor, configureArrowButton, createFocusListener, createItemListener, createKeyListener, createListDataListener, createPropertyChangeListener, getAccessibleChild, getAccessibleChildrenCount, getBaseline, getBaselineResizeBehavior, getDefaultSize, getDisplaySize, getInsets, getMaximumSize, installComponents, installDefaults, isFocusTraversable, isNavigationKey, isPopupVisible, removeEditor, selectNextPossibleValue, selectPreviousPossibleValue, setPopupVisible, toggleOpenClose, unconfigureArrowButton, uninstallComponents, uninstallDefaults, uninstallKeyboardActions
 
Methods inherited from class javax.swing.plaf.ComponentUI
contains, update
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

WindowsComboBoxUI

public WindowsComboBoxUI()
Method Detail

createUI

public static ComponentUI createUI(JComponent b)

installUI

public void installUI(JComponent c)
Overrides:
installUI in class com.sun.java.swing.plaf.windows.WindowsComboBoxUI

installListeners

protected void installListeners()
Overrides:
installListeners in class com.sun.java.swing.plaf.windows.WindowsComboBoxUI

uninstallListeners

protected void uninstallListeners()
Overrides:
uninstallListeners in class com.sun.java.swing.plaf.windows.WindowsComboBoxUI

createArrowButton

protected JButton createArrowButton()
Creates the arrow button that is to be used in the combo box.

Overridden to paint black triangles.

Overrides:
createArrowButton in class com.sun.java.swing.plaf.windows.WindowsComboBoxUI

createEditor

protected ComboBoxEditor createEditor()
Creates the editor that is to be used in editable combo boxes. This method only gets called if a custom editor has not already been installed in the JComboBox.

Overrides:
createEditor in class com.sun.java.swing.plaf.windows.WindowsComboBoxUI

createLayoutManager

protected LayoutManager createLayoutManager()
Creates a layout manager for managing the components which make up the combo box.

Overriden to use a layout that has a fixed width arrow button.

Overrides:
createLayoutManager in class com.sun.java.swing.plaf.windows.WindowsComboBoxUI
Returns:
an instance of a layout manager

configureEditor

protected void configureEditor()
Overrides:
configureEditor in class com.sun.java.swing.plaf.windows.WindowsComboBoxUI

createPopup

protected ComboPopup createPopup()
Creates a ComboPopup that honors the optional combo popup display value that is used to compute the popup menu width.

Overrides:
createPopup in class com.sun.java.swing.plaf.windows.WindowsComboBoxUI

createRenderer

protected ListCellRenderer createRenderer()
Creates the default renderer that will be used in a non-editiable combo box. A default renderer will used only if a renderer has not been explicitly set with setRenderer.

This method differs from the superclass implementation in that it uses an empty border with the default left and right text insets, the same as used by a combo box editor.

Overrides:
createRenderer in class com.sun.java.swing.plaf.windows.WindowsComboBoxUI
Returns:
a ListCellRender used for the combo box
See Also:
JComboBox.setRenderer(javax.swing.ListCellRenderer)

getMinimumSize

public Dimension getMinimumSize(JComponent c)
The minumum size is the size of the display area plus insets plus the button.

Overrides:
getMinimumSize in class BasicComboBoxUI

getPreferredSize

public Dimension getPreferredSize(JComponent c)
Delegates to #getMinimumSize(Component). Overridden to return the same result in JDK 1.5 as in JDK 1.4.

Overrides:
getPreferredSize in class com.sun.java.swing.plaf.windows.WindowsComboBoxUI

paintCurrentValue

public void paintCurrentValue(Graphics g,
                              Rectangle bounds,
                              boolean hasFocus)
Paints the currently selected item.

Overrides:
paintCurrentValue in class com.sun.java.swing.plaf.windows.WindowsComboBoxUI

isRendererBorderRemovable

protected boolean isRendererBorderRemovable(JComponent rendererComponent)
Checks and answer whether the border of the given renderer component can be removed temporarily, so the combo's selection background will be consistent with the default renderer and native appearance. This test is invoked from #paintCurrentValue.

It is safe to remove an EmptyBorder if the component doesn't override #update, #paint and #paintBorder. Since we know the default renderer, we can remove its border.

Custom renderers may set a hint to make their border removable. To do so, set the client property "isBorderRemovable" to Boolean.TRUE. If this client property is set, its value will be returned. If it is not set, true is returned if and only if the component's border is an EmptyBorder.

Parameters:
rendererComponent - the renderer component to check
Returns:
true if the component's border can be removed, false if not
See Also:
paintCurrentValue(Graphics, Rectangle, boolean)

rectangleForCurrentValue

protected Rectangle rectangleForCurrentValue()
Returns the area that is reserved for drawing the currently selected item.

Overrides:
rectangleForCurrentValue in class BasicComboBoxUI


Copyright © 2001-2007 JGoodies Karsten Lentzsch. All Rights Reserved.