package open.dolphin.impl.scheam.schemastate;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Shape;
import java.awt.font.FontRenderContext;
import java.awt.font.TextLayout;
import java.awt.geom.AffineTransform;
import javax.swing.JOptionPane;
import open.dolphin.client.ClientContext;
import open.dolphin.impl.scheam.SchemaCanvasDialog2;
import open.dolphin.impl.scheam.SchemaEditorImpl;
/**
*
* @author pns
*/
public class TextState extends AbstractState {
private String inputText;
private final int[] fontSizeList = {12,16,20,24,28};
public TextState(SchemaEditorImpl context) {
super(context);
}
@Override
public void mouseDown(Point p) {
TextPanel textPanel = new TextPanel();
textPanel.setFontSizeList(fontSizeList);
textPanel.setFontSize(properties.getFontSize());
SchemaCanvasDialog2 dialog = new SchemaCanvasDialog2(context.getCanvasView(), true);
dialog.addContent(textPanel);
dialog.setTitle(ClientContext.getMyBundle(TextState.class).getString("dialogTitle.inputText"));
dialog.setVisible(true);
int result = dialog.getResult();
inputText = textPanel.getText();
properties.setFontSize(textPanel.getFontSize());
if (result == JOptionPane.OK_OPTION && inputText != null && !inputText.equals("")) {
start = p;
end = null;
canvas.repaint();
} else {
start = null;
end = null;
}
}
@Override
public void mouseDragged(Point p) {
}
@Override
public void mouseUp(Point p) {
}
@Override
public void draw(Graphics2D g2d) {
if (inputText != null && start != null) {
undoMgr.storeDraw();
FontRenderContext ctx = g2d.getFontRenderContext();
Font f = properties.getFont();
TextLayout layout = new TextLayout(inputText, f, ctx);
AffineTransform trans = AffineTransform.getTranslateInstance(start.getX(), start.getY());
Shape outLine = layout.getOutline(trans);
g2d.setStroke(properties.getTextStroke());
g2d.setPaint(properties.getTextColor());
g2d.fill(outLine);
addTextShape(outLine);
inputText = null;
}
}
}