Package org.eclipse.draw2d

# Class CompoundBorder

java.lang.Object
org.eclipse.draw2d.AbstractBorder
org.eclipse.draw2d.CompoundBorder

All Implemented Interfaces:
  `Border`

Direct Known Subclasses:
  `FrameBorder`

public class CompoundBorder extends AbstractBorder
CompoundBorder allows for the nesting of two borders. The nested borders are referred to as the inner and outer borders.

## Field Summary

Fields
Modifier and Type
Field
Description
`protected Border`
`inner`
The inner Border.
`protected Border`
`outer`
The outer Border.

### Fields inherited from class org.eclipse.draw2d.AbstractBorder

`tempRect`

## Constructor Summary

Constructors
Constructor
Description
`CompoundBorder()`
Constructs a default CompoundBorder with no borders under it.
`CompoundBorder(Border outer, Border inner)`
Constructs a CompoundBorder with the two borders specified as input.

## Method Summary

Modifier and Type
Method
Description
`Border`
`getInnerBorder()`
Returns the inner border of this CompoundBorder.
`Insets`
`getInsets(IFigure figure)`
Returns the total insets required to hold both the inner and outer borders of this CompoundBorder.
`Border`
`getOuterBorder()`
Returns the outer border of this CompoundBorder.
`Dimension`
`getPreferredSize(IFigure fig)`
Returns the preferred width and height that this border would like to display itself properly.
`boolean`
`isOpaque()`
Returns `true` if this border is opaque.
`void`
`paint(IFigure figure, Graphics g, Insets insets)`
Paints the border.

### Methods inherited from class org.eclipse.draw2d.AbstractBorder

`getPaintRectangle`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### inner

protected Border inner
The inner Border.

### outer

protected Border outer
The outer Border.

## Constructor Details

### CompoundBorder

public CompoundBorder()
Constructs a default CompoundBorder with no borders under it.

Since:
  2.0

### CompoundBorder

public CompoundBorder(Border outer, Border inner)
Constructs a CompoundBorder with the two borders specified as input.

Parameters:
  `outer` - Border which is drawn on the outside
  `inner` - Border which is drawn inside the outer border
Since:
  2.0

## Method Details

### getInnerBorder

public Border getInnerBorder()
Returns the inner border of this CompoundBorder.

Returns:
  The inner border
Since:
  2.0

### getInsets

public Insets getInsets(IFigure figure)
Returns the total insets required to hold both the inner and outer borders of this CompoundBorder.

Parameters:
  `figure` - Figure for which this is the border
Returns:
  The total insets for this border
Since:
  2.0

### getPreferredSize

public Dimension getPreferredSize(IFigure fig)
Description copied from interface: `Border`
Returns the preferred width and height that this border would like to display itself properly.

Specified by:
  `getPreferredSize` in interface `Border`
Overrides:
  `getPreferredSize` in class `AbstractBorder`
Parameters:
  `fig` - The figure
Returns:
  The preferred size
See Also:
  - `Border.getPreferredSize(IFigure)`

### getOuterBorder

public Border getOuterBorder()
Returns the outer border of this CompoundBorder.

Returns:
  The outer border
Since:
  2.0

### isOpaque

public boolean isOpaque()
Returns `true` if this border is opaque. Return value is dependent on the opaque state of both the borders it contains. Both borders have to be opaque for this border to be opaque. In the absence of any of the borders, this border is not opaque.

Specified by:
  `isOpaque` in interface `Border`
Overrides:
  `isOpaque` in class `AbstractBorder`
Returns:
  `true` if this border is opaque
See Also:
  - `Border.isOpaque()`

### paint

public void paint(IFigure figure, Graphics g, Insets insets)
Description copied from interface: `Border`
Paints the border. The border should paint inside figure's `IFigure.getBounds()`, inset by the parameter insets. The border generally should not paint inside its own insets. More specifically, Border b should paint inside the rectangle: figure.getBounds().getCropped(insets) and outside of the rectangle: figure.getBounds().getCropped(insets).getCropped(getInsets()) where inside is defined as `Rectangle.contains(int, int)`.

Parameters:
  `figure` - The figure this border belongs to
  `g` - The graphics object used for painting
  `insets` - The insets
See Also:
  - `Border.paint(IFigure, Graphics, Insets)`