Package com.cburch.logisim.std.base

Source Code of com.cburch.logisim.std.base.TextAttributes

/* Copyright (c) 2010, Carl Burch. License information is located in the
* com.cburch.logisim.Main source code and at www.cburch.com/logisim/. */

package com.cburch.logisim.std.base;

import java.awt.Font;
import java.util.Arrays;
import java.util.List;

import com.cburch.logisim.data.AbstractAttributeSet;
import com.cburch.logisim.data.Attribute;
import com.cburch.logisim.data.AttributeOption;
import com.cburch.logisim.data.Bounds;
import com.cburch.logisim.instance.StdAttr;

class TextAttributes extends AbstractAttributeSet {
  private static final List<Attribute<?>> ATTRIBUTES
    = Arrays.asList(new Attribute<?>[] {
      Text.ATTR_TEXT, Text.ATTR_FONT, Text.ATTR_HALIGN, Text.ATTR_VALIGN
    });

  private String text;
  private Font font;
  private AttributeOption halign;
  private AttributeOption valign;
  private Bounds offsetBounds;
 
  public TextAttributes() {
    text = "";
    font = StdAttr.DEFAULT_LABEL_FONT;
    halign = Text.ATTR_HALIGN.parse("center");
    valign = Text.ATTR_VALIGN.parse("base");
    offsetBounds = null;
  }
 
  String getText() {
    return text;
  }
 
  Font getFont() {
    return font;
  }
 
  int getHorizontalAlign() {
    return ((Integer) halign.getValue()).intValue();
  }
 
  int getVerticalAlign() {
    return ((Integer) valign.getValue()).intValue();
  }
 
  Bounds getOffsetBounds() {
    return offsetBounds;
  }
 
  boolean setOffsetBounds(Bounds value) {
    Bounds old = offsetBounds;
    boolean same = old == null ? value == null : old.equals(value);
    if (!same) {
      offsetBounds = value;
    }
    return !same;
  }

  @Override
  protected void copyInto(AbstractAttributeSet destObj) {
    ; // nothing to do
  }

  @Override
  public List<Attribute<?>> getAttributes() {
    return ATTRIBUTES;
  }

  @Override
  @SuppressWarnings("unchecked")
  public <V> V getValue(Attribute<V> attr) {
    if (attr == Text.ATTR_TEXT) return (V) text;
    if (attr == Text.ATTR_FONT) return (V) font;
    if (attr == Text.ATTR_HALIGN) return (V) halign;
    if (attr == Text.ATTR_VALIGN) return (V) valign;
    return null;
  }

  @Override
  public <V> void setValue(Attribute<V> attr, V value) {
    if (attr == Text.ATTR_TEXT) {
      text = (String) value;
    } else if (attr == Text.ATTR_FONT) {
      font = (Font) value;
    } else if (attr == Text.ATTR_HALIGN) {
      halign = (AttributeOption) value;
    } else if (attr == Text.ATTR_VALIGN) {
      valign = (AttributeOption) value;
    } else {
      throw new IllegalArgumentException("unknown attribute");
    }
    offsetBounds = null;
    fireAttributeValueChanged(attr, value);
  }

}
TOP

Related Classes of com.cburch.logisim.std.base.TextAttributes

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.