NamedConf.java
- package swingtree.style;
- import java.util.Objects;
- /**
- * An immutable value container that pairs a name with a
- * style where the name is a string that is supposed to uniquely identify
- * the style in a collection of named styles.
- *
- * @param <S> The type of the style.
- */
- final class NamedConf<S> implements Simplifiable<NamedConf<S>>
- {
- static <S> NamedConf<S> of(String name, S style ) {
- return new NamedConf<>( name, style );
- }
- private final String _name;
- private final S _style;
- private NamedConf(String name, S style ) {
- _name = Objects.requireNonNull(name);
- _style = Objects.requireNonNull(style);
- }
- String name() { return _name; }
- S style() { return _style; }
- @Override
- public int hashCode() { return Objects.hash(_name, _style); }
- @Override
- public boolean equals( Object obj ) {
- if ( obj == null ) return false;
- if ( obj == this ) return true;
- if ( obj.getClass() != getClass() ) return false;
- NamedConf<?> rhs = (NamedConf<?>) obj;
- return Objects.equals(_name, rhs._name) &&
- Objects.equals(_style, rhs._style);
- }
- @Override
- public String toString() {
- return this.getClass().getSimpleName()+"[" +
- "name=" + _name +", "+
- "style=" + _style +
- "]";
- }
- @Override
- public NamedConf<S> simplified() {
- if ( _style instanceof Simplifiable ) {
- S simplifiedStyle = ((Simplifiable<S>)_style).simplified();
- if (simplifiedStyle == _style)
- return this;
- return new NamedConf<>(_name, simplifiedStyle);
- }
- return this;
- }
- }