/*
* Copyright (c) 2010-2016, Sikuli.org, sikulix.com
* Released under the MIT License.
*
*/
/**
*
*/
package org.sikuli.guide;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JLabel;
public class SxText extends Visual {
JLabel label;
boolean initDone = false;
public SxText(String text) {
super();
init(text);
}
private void init(String text) {
this.text = text;
label = new JLabel();
add(label);
fontSize = 12;
label.setFont(new Font("SansSerif", Font.PLAIN, 36));
updateComponent();
initDone = true;
}
@Override
public void updateComponent() {
String htmltxt = "<html><div style='" + getStyleString() + "'>"
+ text + "</div></html>";
label.setText(htmltxt);
Dimension size = label.getPreferredSize();
if (size.width > maxWidth) {
// hack to limit the width of the text to width
htmltxt = "<html><div style='width:" + maxWidth + ";" + getStyleString() + "'>"
+ text + "</div></html>";
label.setText(htmltxt);
size = label.getPreferredSize();
}
label.setSize(size);
setActualSize(size);
}
@Override
public void paintComponent(Graphics g) {
Dimension originalSize = label.getPreferredSize();
Dimension actualSize = getActualSize();
float scalex = 1f * actualSize.width / originalSize.width;
float scaley = 1f * actualSize.height / originalSize.height;
((Graphics2D) g).scale(scalex, scaley);
super.paintComponent(g);
}
//<editor-fold defaultstate="collapsed" desc="TODO make text editable??">
/* TextPropertyEditor ed = null;
*
* public void setEditable(boolean editable) {
* if (editable) {
* } else {
* }
* }*/ //</editor-fold>
}