TextLabel.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.9 $, 2005/07/28
*/
public class TextLabel implements GnuplotComponent {
/** テキスト */
private String text;
/** 表示位置のX座標 */
private double x;
/** 表示位置のY座標 */
private double y;
/** テキスト描画に関する属性 */
private String attribute;
/**
* コンストラクター
*
*/
public TextLabel() {
this(null, 0, 0, null);
}
/**
* コンストラクター
*
* @param text テキスト
* @param x 表示位置のX座標
* @param y 表示位置のY座標
*/
public TextLabel(String text, double x, double y) {
this(text, x, y, null);
}
/**
* コンストラクター
*
* @param text テキスト
* @param x 表示位置のX座標
* @param y 表示位置のY座標
* @param attribute テキスト描画に関する属性
*/
public TextLabel(String text, double x, double y, String attribute) {
this.text = text;
this.x = x;
this.y = y;
this.attribute = attribute;
}
/**
* 設定するためのコマンド文字列を得る。
*
* @return 設定するためのコマンド文字列
*/
@SuppressWarnings("nls")
public String getCommand() {
if (this.attribute == null || this.attribute.length() == 0) {
return "set label '" + this.text + "' at " + this.x + "," + this.y;
}
return "set label '" + this.text + "' at " + this.x + "," + this.y + " " + this.attribute;
}
/**
* ラベルを設定します。
*
* @param text テキスト
* @param x 表示位置のX座標
* @param y 表示位置のY座標
*/
public void setLabel(String text, double x, double y) {
this.text = text;
this.x = x;
this.y = y;
}
/**
* ラベルを設定します。
*
* @param text テキスト
* @param x 表示位置のX座標
* @param y 表示位置のY座標
* @param attribute テキスト描画に関する属性
*/
public void setLabel(String text, double x, double y, String attribute) {
this.text = text;
this.x = x;
this.y = y;
this.attribute = attribute;
}
/**
* {@inheritDoc}
*/
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((this.attribute == null) ? 0 : this.attribute.hashCode());
result = prime * result + ((this.text == null) ? 0 : this.text.hashCode());
long temp;
temp = Double.doubleToLongBits(this.x);
result = prime * result + (int)(temp ^ (temp >>> 32));
temp = Double.doubleToLongBits(this.y);
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;
TextLabel other = (TextLabel)obj;
if (this.attribute == null) {
if (other.attribute != null) return false;
} else if (!this.attribute.equals(other.attribute)) return false;
if (this.text == null) {
if (other.text != null) return false;
} else if (!this.text.equals(other.text)) return false;
if (Double.doubleToLongBits(this.x) != Double.doubleToLongBits(other.x)) return false;
if (Double.doubleToLongBits(this.y) != Double.doubleToLongBits(other.y)) return false;
return true;
}
}