Quaqua 8.0 2011-10-02

ch.randelshofer.quaqua.border
Class VisualMarginBorder

java.lang.Object
  extended by javax.swing.border.AbstractBorder
      extended by ch.randelshofer.quaqua.border.VisualMarginBorder
All Implemented Interfaces:
PressedCueBorder, VisualMargin, java.io.Serializable, javax.swing.border.Border, javax.swing.plaf.UIResource
Direct Known Subclasses:
QuaquaComboBoxVisualMargin, QuaquaNativeButtonBorder, QuaquaNativeImageBevelBorder, QuaquaNativeScrollPaneBorder, QuaquaNativeTextFieldBorder, QuaquaScrollPaneBorder, QuaquaTextFieldBorder

public class VisualMarginBorder
extends javax.swing.border.AbstractBorder
implements javax.swing.plaf.UIResource, VisualMargin, PressedCueBorder

The VisualMarginBorder is used to visually align components using bounds based on other criterias than the clip bounds of the component. For example: The clip bounds of a JButton includes its cast shadow and its focus ring. When we align the JButton with a JLabel, we want to align the baseline of the Text of the JButton with the text in the JLabel. The visual margin may be quite large. We allow to programmatically set a smaller margin using the client property "Quaqua.Component.margin".

Version:
$Id: VisualMarginBorder.java 417 2011-08-04 07:32:38Z wrandelshofer $
Author:
Werner Randelshofer
See Also:
Serialized Form

Constructor Summary
VisualMarginBorder()
          Creates a new VisualMarginBorder.
VisualMarginBorder(boolean ftop, boolean fleft, boolean fbottom, boolean fright)
           
VisualMarginBorder(java.awt.Insets layoutMargin)
          Creates a new VisualMarginBorder.
VisualMarginBorder(int top, int left, int bottom, int right)
          Creates a new VisualMarginBorder.
VisualMarginBorder(int top, int left, int bottom, int right, boolean ftop, boolean fleft, boolean fbottom, boolean fright)
           
 
Method Summary
 java.awt.Insets getBorderInsets(java.awt.Component c)
           
 java.awt.Insets getBorderInsets(java.awt.Component c, java.awt.Insets insets)
          Reinitializes the insets parameter with this Border's current Insets.
 java.awt.Insets getVisualMargin(java.awt.Component c)
           
protected  java.awt.Insets getVisualMargin(java.awt.Component c, java.awt.Insets insets)
          Reinitializes the insets parameter with this Border's current Insets.
 boolean hasPressedCue(javax.swing.JComponent c)
          Returns true, if this border has a visual cue for the pressed state of the button.
 void setFixed(boolean top, boolean left, boolean bottom, boolean right)
           
 void setPropertyName(java.lang.String propertyName)
          The UIManager Property to be used for the default margin.
 
Methods inherited from class javax.swing.border.AbstractBorder
getBaseline, getBaselineResizeBehavior, getInteriorRectangle, getInteriorRectangle, isBorderOpaque, paintBorder
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface javax.swing.border.Border
isBorderOpaque, paintBorder
 

Constructor Detail

VisualMarginBorder

public VisualMarginBorder()
Creates a new VisualMarginBorder.


VisualMarginBorder

public VisualMarginBorder(int top,
                          int left,
                          int bottom,
                          int right)
Creates a new VisualMarginBorder.

Parameters:
top - Defines the margin from the clip bounds of the component to its visual bounds.
left - Defines the margin from the clip bounds of the component to its visual bounds.
bottom - Defines the margin from the clip bounds of the component to its visual bounds.
right - Defines the margin from the clip bounds of the component to its visual bounds.

VisualMarginBorder

public VisualMarginBorder(int top,
                          int left,
                          int bottom,
                          int right,
                          boolean ftop,
                          boolean fleft,
                          boolean fbottom,
                          boolean fright)

VisualMarginBorder

public VisualMarginBorder(boolean ftop,
                          boolean fleft,
                          boolean fbottom,
                          boolean fright)

VisualMarginBorder

public VisualMarginBorder(java.awt.Insets layoutMargin)
Creates a new VisualMarginBorder.

Parameters:
layoutMargin - Defines the margin from the clip bounds of the component to its visual bounds. The margin has usually negative values!
Method Detail

setPropertyName

public void setPropertyName(java.lang.String propertyName)
The UIManager Property to be used for the default margin.


setFixed

public void setFixed(boolean top,
                     boolean left,
                     boolean bottom,
                     boolean right)

getVisualMargin

public final java.awt.Insets getVisualMargin(java.awt.Component c)
Specified by:
getVisualMargin in interface VisualMargin

getBorderInsets

public final java.awt.Insets getBorderInsets(java.awt.Component c)
Specified by:
getBorderInsets in interface javax.swing.border.Border
Overrides:
getBorderInsets in class javax.swing.border.AbstractBorder

getBorderInsets

public java.awt.Insets getBorderInsets(java.awt.Component c,
                                       java.awt.Insets insets)
Reinitializes the insets parameter with this Border's current Insets.

Overrides:
getBorderInsets in class javax.swing.border.AbstractBorder
Parameters:
c - the component for which this border insets value applies
insets - the object to be reinitialized
Returns:
the insets object

getVisualMargin

protected java.awt.Insets getVisualMargin(java.awt.Component c,
                                          java.awt.Insets insets)
Reinitializes the insets parameter with this Border's current Insets.

Parameters:
c - the component for which this border insets value applies
insets - the object to be reinitialized
Returns:
the insets object

hasPressedCue

public boolean hasPressedCue(javax.swing.JComponent c)
Description copied from interface: PressedCueBorder
Returns true, if this border has a visual cue for the pressed state of the button. If the border has no visual cue, then the ButtonUI has to provide it by some other means.

Specified by:
hasPressedCue in interface PressedCueBorder

Copyright 2003-2007 (c) Werner Randelshofer.
All rights reserved.