org.jdesktop.swingx.painter
Class AbstractLayoutPainter<T>

java.lang.Object
  extended by org.jdesktop.beans.AbstractBean
      extended by org.jdesktop.swingx.painter.AbstractPainter<T>
          extended by org.jdesktop.swingx.painter.AbstractLayoutPainter<T>
All Implemented Interfaces:
Painter<T>
Direct Known Subclasses:
AbstractAreaPainter

public abstract class AbstractLayoutPainter<T>
extends AbstractPainter<T>

An abstract base class for any painter which can be positioned. This means the painter has some intrinsic size to what it is drawing and can be stretched or aligned both horizontally and vertically. The AbstractLayoutPainter class provides the following configuraable properties:

By combining these five properties any AbstractLayoutPainter subclass can position it's content within the paintable area. For example, an ImagePainter has an intrinsic size based on the image it is painting. If you wanted to paint the image in the lower right hand corner of the paintable area, but inset by 5 pixels, you could do the following:

     ImagePainter p = new ImagePainter(null);
     p.setVerticalAlignment(AbstractLayoutPainter.VerticalAlignment.BOTTOM);
     p.setHorizontalAlignment(AbstractLayoutPainter.HorizontalAlignment.RIGHT);
     p.setInsets(new Insets(0,0,5,5));
 
For something which is resizable, like a RectanglePainter, you can use the fill properties to make it resize along with the paintable area. For example, to make a rectangle with 20 px rounded corners, and which resizes with the paintable area but is inset by 10 pixels on all sides, you could do the following:

     RectanglePainter p = new RectanglePainter();
     p.setRoundHeight(20);
     p.setRoundWidth(20);
     p.setInsets(new Insets(10,10,10,10));
     p.setFillHorizontal(true);
     p.setFillVertical(true);
 


Nested Class Summary
static class AbstractLayoutPainter.HorizontalAlignment
          An enum which controls horizontalAlignment alignment
static class AbstractLayoutPainter.VerticalAlignment
          An enum which controls verticalAlignment alignment
 
Nested classes/interfaces inherited from class org.jdesktop.swingx.painter.AbstractPainter
AbstractPainter.Interpolation
 
Constructor Summary
AbstractLayoutPainter()
          Creates a new instance of AbstractLayoutPainter
 
Method Summary
protected  Rectangle calculateLayout(int contentWidth, int contentHeight, int width, int height)
          A protected method used by subclasses to calculate the final position of the content.
 AbstractLayoutPainter.HorizontalAlignment getHorizontalAlignment()
          Gets the current horizontalAlignment alignment.
 Insets getInsets()
          Gets the current whitespace insets.
 AbstractLayoutPainter.VerticalAlignment getVerticalAlignment()
          gets the current verticalAlignment alignment
 boolean isFillHorizontal()
          indicates if the painter content is stretched horizontally
 boolean isFillVertical()
          indicates if the painter content is stretched vertically
 void setFillHorizontal(boolean fillHorizontal)
          Sets if the content should be stretched horizontally to fill all available horizontalAlignment space (minus the left and right insets).
 void setFillVertical(boolean verticalStretch)
          Sets if the content should be stretched vertically to fill all available verticalAlignment space (minus the top and bottom insets).
 void setHorizontalAlignment(AbstractLayoutPainter.HorizontalAlignment horizontal)
          Sets a new horizontalAlignment alignment.
 void setInsets(Insets insets)
          Sets the current whitespace insets.
 void setVerticalAlignment(AbstractLayoutPainter.VerticalAlignment vertical)
          Sets a new verticalAlignment alignment.
 
Methods inherited from class org.jdesktop.swingx.painter.AbstractPainter
clearCache, configureGraphics, doPaint, getFilters, getInterpolation, isAntialiasing, isCacheable, isDirty, isVisible, paint, setAntialiasing, setCacheable, setDirty, setFilters, setInterpolation, setVisible, shouldUseCache, validate
 
Methods inherited from class org.jdesktop.beans.AbstractBean
addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, addVetoableChangeListener, clone, fireIndexedPropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, fireVetoableChange, getPropertyChangeListeners, getPropertyChangeListeners, getVetoableChangeListeners, getVetoableChangeListeners, hasPropertyChangeListeners, hasVetoableChangeListeners, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, removeVetoableChangeListener
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AbstractLayoutPainter

public AbstractLayoutPainter()
Creates a new instance of AbstractLayoutPainter

Method Detail

getHorizontalAlignment

public AbstractLayoutPainter.HorizontalAlignment getHorizontalAlignment()
Gets the current horizontalAlignment alignment.

Returns:
the current horizontalAlignment alignment

getInsets

public Insets getInsets()
Gets the current whitespace insets.

Returns:
the current insets

getVerticalAlignment

public AbstractLayoutPainter.VerticalAlignment getVerticalAlignment()
gets the current verticalAlignment alignment

Returns:
current verticalAlignment alignment

isFillHorizontal

public boolean isFillHorizontal()
indicates if the painter content is stretched horizontally

Returns:
the current horizontalAlignment stretch value

isFillVertical

public boolean isFillVertical()
indicates if the painter content is stretched vertically

Returns:
the current verticalAlignment stretch value

setHorizontalAlignment

public void setHorizontalAlignment(AbstractLayoutPainter.HorizontalAlignment horizontal)
Sets a new horizontalAlignment alignment. Used to position the content at the left, right, or center.

Parameters:
horizontal - new horizontalAlignment alignment

setFillHorizontal

public void setFillHorizontal(boolean fillHorizontal)
Sets if the content should be stretched horizontally to fill all available horizontalAlignment space (minus the left and right insets).

Parameters:
fillHorizontal - new horizonal stretch value

setInsets

public void setInsets(Insets insets)
Sets the current whitespace insets.

Parameters:
insets - new insets

setVerticalAlignment

public void setVerticalAlignment(AbstractLayoutPainter.VerticalAlignment vertical)
Sets a new verticalAlignment alignment. Used to position the content at the top, bottom, or center.

Parameters:
vertical - new verticalAlignment alignment

setFillVertical

public void setFillVertical(boolean verticalStretch)
Sets if the content should be stretched vertically to fill all available verticalAlignment space (minus the top and bottom insets).

Parameters:
verticalStretch - new verticalAlignment stretch value

calculateLayout

protected final Rectangle calculateLayout(int contentWidth,
                                          int contentHeight,
                                          int width,
                                          int height)
A protected method used by subclasses to calculate the final position of the content. This will position the content using the fillHorizontal, fillVertical horizontalAlignment, and verticalAlignment properties. This method is typically called by subclasses in their doPaint() methods.

Parameters:
contentWidth - The width of the content to be painted
contentHeight - The height of the content to be painted
width - the width of the area that the content will be positioned in
height - the height of the area that the content will be positioned in
Returns:
the rectangle for the content to be painted in