org.jdesktop.swingx.plaf.SafeBorder Maven / Gradle / Ivy
The newest version!
/*
* Created on 04.11.2010
*
*/
package org.jdesktop.swingx.plaf;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.Rectangle;
import java.awt.Component.BaselineResizeBehavior;
import javax.swing.border.AbstractBorder;
import javax.swing.plaf.UIResource;
/**
* Wrapper around a delegate with the same behaviour as the delegate except that
* it catches null insets (hack around Issue 1297-swingx which is core bug
* 6739738)
*/
public class SafeBorder extends AbstractBorder implements UIResource {
private AbstractBorder delegate;
public SafeBorder(AbstractBorder delegate) {
this.delegate = delegate;
}
/**
* {@inheritDoc}
*/
@Override
public int getBaseline(Component c, int width, int height) {
return delegate.getBaseline(c, width, height);
}
/**
* {@inheritDoc}
*/
@Override
public BaselineResizeBehavior getBaselineResizeBehavior(Component c) {
return delegate.getBaselineResizeBehavior(c);
}
/**
* {@inheritDoc}
*/
@Override
public Insets getBorderInsets(Component c, Insets insets) {
Insets result = delegate.getBorderInsets(c, safeInsets(insets));
return safeInsets(result);
}
/**
* @param insets
* the insets to query
* @return the insets supplied or an empty insets if the value is {@code null}
*/
private Insets safeInsets(Insets insets) {
return insets != null ? insets : new Insets(0, 0, 0, 0);
}
/**
* {@inheritDoc}
*/
@Override
public Insets getBorderInsets(Component c) {
Insets result = delegate.getBorderInsets(c);
return safeInsets(result);
}
/**
* {@inheritDoc}
*/
@Override
public Rectangle getInteriorRectangle(Component c, int x, int y, int width,
int height) {
return delegate.getInteriorRectangle(c, x, y, width, height);
}
/**
* {@inheritDoc}
*/
@Override
public boolean isBorderOpaque() {
return delegate.isBorderOpaque();
}
/**
* {@inheritDoc}
*/
@Override
public void paintBorder(Component c, Graphics g, int x, int y, int width,
int height) {
delegate.paintBorder(c, g, x, y, width, height);
}
}