/*
* Created on 31.03.2011
*
*/
package org.jdesktop.swingx.decorator;
import java.awt.Component;
import java.awt.ComponentOrientation;
/**
* A Highlighter which applies the ComponentOrientation to the component.
*
* @author Jeanette Winzenburg, Berlin
*/
public class ComponentOrientationHighlighter extends AbstractHighlighter {
private ComponentOrientation co;
/**
* Instantiates a ComponentOrientationHighlighter with <code>ComponentOrientation.LEFT_TO_RIGHT</code>.
* The Highlighter is applied always.
*/
public ComponentOrientationHighlighter() {
this((HighlightPredicate) null);
}
/**
* Instantiates a ComponentOrientationHighlighter with the given HighlightPredicate
* and <code>ComponentOrientation.LEFT_TO_RIGHT</code>.
*
* @param predicate the HighlightPredicate to use, may be null to default to ALWAYS.
*/
public ComponentOrientationHighlighter(HighlightPredicate predicate) {
this(predicate, null);
}
/**
* Instantiates a ComponentOrientationHighlighter with the given ComponentOrientation.
* The Highlighter is applied always.
*
* @param co the ComponentOrientation to apply
*/
public ComponentOrientationHighlighter(ComponentOrientation co) {
this(null, co);
}
/**
* Instantiates a ComponentOrientationHighlighter with the given ComponentOrientation and HighlightPredicate.
*
* @param predicate the HighlightPredicate to use, may be null to default to ALWAYS.
* @param co the ComponentOrientation to apply, may be null
*/
public ComponentOrientationHighlighter(HighlightPredicate predicate,
ComponentOrientation co) {
super(predicate);
setComponentOrientation(co);
}
/**
* Returns the ComponentOrientation to apply.
*
* @return the ComponentOrientation to apply, guaranteed to be not null.
*/
public ComponentOrientation getComponentOrientation() {
return co;
}
/**
* Sets the ComponentOrientation to apply.
*
* @param co the co to set, may be null to denote fallback to LEFT_TO_RIGHT
*/
public void setComponentOrientation(ComponentOrientation co) {
if (co == null) {
co = ComponentOrientation.LEFT_TO_RIGHT;
}
if (areEqual(this.co, co)) return;
this.co = co;
fireStateChanged();
}
/**
* @inherited <p>
* Implementated to decorate the given component with the ComponentOrientation.
*/
@Override
protected Component doHighlight(Component component,
ComponentAdapter adapter) {
component.applyComponentOrientation(getComponentOrientation());
return component;
}
}