Label.java

/*
 * Created on 2005/07/28
 * Copyright (C) 2005 Koga Laboratory. All rights reserved.
 *
 */
package org.mklab.tool.graph.gnuplot.decoration;

/**
 * ラベルを表すクラスです。
 * 
 * @author koga
 * @version $Revision: 1.7 $, 2005/07/28
 */
public abstract class Label implements GnuplotComponent {
  /** ラベルテキスト */
  private String text;
  /** 表示位置のx方向のオフセット */
  private double xOffset;
  /** 表示位置のy方向のオフセット */
  private double yOffset;
  
  /**
   * ラベルを設定します。
   * 
   * @param text ラベルテキスト
   */
  public Label(String text) {
    this(text, 0, 0);
  }
  
  /**
   * ラベルを設定します。
   * 
   * @param text ラベルテキスト
   * @param xOffset 表示位置のx方向のオフセット
   * @param yOffset 表示位置のy方向のオフセット
   */
  public Label(String text, double xOffset, double yOffset) {
    this.text = text;
    this.xOffset = xOffset;
    this.yOffset = yOffset;
  }

  /**
   * {@inheritDoc}
   */
  @Override
  public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((this.text == null) ? 0 : this.text.hashCode());
    long temp;
    temp = Double.doubleToLongBits(this.xOffset);
    result = prime * result + (int)(temp ^ (temp >>> 32));
    temp = Double.doubleToLongBits(this.yOffset);
    result = prime * result + (int)(temp ^ (temp >>> 32));
    return result;
  }

  /**
   * {@inheritDoc}
   */
  @Override
  public boolean equals(Object obj) {
    if (this == obj) return true;
    if (obj == null) return false;
    if (getClass() != obj.getClass()) return false;
    Label other = (Label)obj;
    if (this.text == null) {
      if (other.text != null) return false;
    } else if (!this.text.equals(other.text)) return false;
    if (Double.doubleToLongBits(this.xOffset) != Double.doubleToLongBits(other.xOffset)) return false;
    if (Double.doubleToLongBits(this.yOffset) != Double.doubleToLongBits(other.yOffset)) return false;
    return true;
  }

  /**
   * ラベルを設定します。
   * 
   * @param text ラベルテキスト
   * @param xOffset 表示位置のx方向のオフセット
   * @param yOffset 表示位置のy方向のオフセット
   */
  public void setLabel(String text, double xOffset, double yOffset) {
    this.text = text;
    this.xOffset = xOffset;
    this.yOffset = yOffset;
  }

  /**
   * ラベルテキストを設定します。
   * 
   * @param text ラベルテキスト
   */
  public void setText(String text) {
    this.text = text;
  }

  /**
   * 表示位置のx方向のオフセットを得る。
   * 
   * @return 表示位置のx方向のオフセット
   */
  protected double getXOffset() {
    return this.xOffset;
  }

  /**
   * 表示位置のy方向のオフセットを得る。
   * 
   * @return 表示位置のy方向のオフセット
   */
  protected double getYOffset() {
    return this.yOffset;
  }

  /**
   * ラベルテキストを得る。
   * 
   * @return ラベルテキスト
   */
  public String getText() {
    return this.text;
  }

}