package com.horstmann.violet.product.diagram.property.text;
import com.horstmann.violet.product.diagram.property.text.decorator.OneLineText;
/**
* This class is a container for a single line of text
*
* @author Adrian Bobrowski <adrian071993@gmail.com>
* @date 16.12.2015
*/
public class SingleLineText extends LineText
{
public SingleLineText()
{
super();
setPadding(5,10);
oneLineString = new OneLineText();
}
public SingleLineText(Converter converter)
{
super(converter);
setPadding(5,10);
oneLineString = new OneLineText();
}
protected SingleLineText(SingleLineText lineText) throws CloneNotSupportedException
{
super(lineText);
oneLineString = lineText.getOneLineString().clone();
}
@Override
public void reconstruction(Converter converter)
{
super.reconstruction(converter);
oneLineString = new OneLineText();
setPadding(0,10);
setText(text);
}
@Override
public SingleLineText clone()
{
return (SingleLineText)super.clone();
}
@Override
protected SingleLineText copy() throws CloneNotSupportedException
{
return new SingleLineText(this);
}
/**
* @see EditableText#setText(String)
*/
@Override
final public void setText(String text)
{
this.text = text;
oneLineString = converter.toLineString(this.text);
setLabelText(toDisplay());
notifyAboutChange();
}
/**
* @see EditableText#toDisplay()
*/
@Override
final public String toDisplay()
{
return getOneLineString().toDisplay();
}
/**
* @see EditableText#toEdit()
*/
@Override
final public String toEdit()
{
return getOneLineString().toEdit();
}
/**
* @see Object#toString()
*/
@Override
final public String toString()
{
return getOneLineString().toString();
}
/**
* @return one line text
*/
private OneLineText getOneLineString()
{
if(null == oneLineString)
{
oneLineString = new OneLineText();
setPadding(0,10);
setText(text);
}
return oneLineString;
}
private String text = "";
private transient OneLineText oneLineString;
}