LayoutConf.java
- package swingtree.style;
- import com.google.errorprone.annotations.Immutable;
- import org.jspecify.annotations.Nullable;
- import swingtree.api.Layout;
- import java.util.Objects;
- import java.util.Optional;
- /**
- * A style that defines the layout of a component.
- * The layout manager of a component will use this information
- * to determine the actual layout of the component in the layout.
- **/
- @Immutable
- @SuppressWarnings("Immutable")
- final class LayoutConf
- {
- private static final LayoutConf _NONE = new LayoutConf(Layout.unspecific(), null, null, null);
- static LayoutConf none() { return _NONE; }
- private final Layout _layout;
- private final @Nullable Object _constraint;
- private final @Nullable Float _alignmentX;
- private final @Nullable Float _alignmentY;
- private LayoutConf(
- Layout layout,
- @Nullable Object constraint,
- @Nullable Float alignmentX,
- @Nullable Float alignmentY
- ) {
- _layout = Objects.requireNonNull(layout);
- _constraint = constraint;
- _alignmentX = alignmentX;
- _alignmentY = alignmentY;
- }
- Layout layout() { return _layout; }
- Optional<Object> constraint() { return Optional.ofNullable(_constraint); }
- Optional<Float> alignmentX() { return Optional.ofNullable(_alignmentX); }
- Optional<Float> alignmentY() { return Optional.ofNullable(_alignmentY); }
- LayoutConf layout(Layout installer ) { return new LayoutConf(installer, _constraint, _alignmentX, _alignmentY); }
- LayoutConf constraint(Object constraint ) { return new LayoutConf(_layout, constraint, _alignmentX, _alignmentY); }
- LayoutConf alignmentX(Float alignmentX ) { return new LayoutConf(_layout, _constraint, alignmentX, _alignmentY); }
- LayoutConf alignmentY(Float alignmentY ) { return new LayoutConf(_layout, _constraint, _alignmentX, alignmentY); }
- @Override
- public int hashCode() { return Objects.hash(_layout, _constraint, _alignmentX, _alignmentY); }
- @Override
- public boolean equals( Object obj ) {
- if ( obj == null ) return false;
- if ( obj == this ) return true;
- if ( obj.getClass() != getClass() ) return false;
- LayoutConf other = (LayoutConf) obj;
- return Objects.equals(_layout, other._layout) &&
- Objects.equals(_constraint, other._constraint) &&
- Objects.equals(_alignmentX, other._alignmentX) &&
- Objects.equals(_alignmentY, other._alignmentY);
- }
- @Override
- public String toString() {
- if ( this.equals(_NONE) )
- return this.getClass().getSimpleName() + "[NONE]";
- return this.getClass().getSimpleName() + "[" +
- "layout=" + _layout + ", " +
- "constraint=" + (_constraint == null ? "?" : _constraint) + ", " +
- "alignmentX=" + (_alignmentX == null ? "?" : _alignmentX) + ", " +
- "alignmentY=" + (_alignmentY == null ? "?" : _alignmentY) +
- "]";
- }
- }