SWTSkinObjectText2public class SWTSkinObjectText2 extends SWTSkinObjectBasic implements SWTSkinObjectText, PaintListenerText Skin Object. This one paints text on parent. |
Fields Summary |
---|
String | sText | String | sKey | boolean | bIsTextDefault | private int | style | private Canvas | canvas | private boolean | bUnderline | private static Font | font |
Constructors Summary |
---|
public SWTSkinObjectText2(SWTSkin skin, SWTSkinProperties skinProperties, String sID, String sConfigID, String[] typeParams, SWTSkinObject parent)
super(skin, skinProperties, sID, sConfigID, "text", parent);
style = SWT.WRAP;
String sAlign = skinProperties.getStringValue(sConfigID + ".align");
if (sAlign != null) {
int align = SWTSkinUtils.getAlignment(sAlign, SWT.NONE);
if (align != SWT.NONE) {
style |= align;
}
}
if (skinProperties.getIntValue(sConfigID + ".border", 0) == 1) {
style |= SWT.BORDER;
}
Composite createOn;
if (parent == null) {
createOn = skin.getShell();
} else {
createOn = (Composite) parent.getControl();
}
canvas = new Canvas(createOn, SWT.DOUBLE_BUFFERED) {
Point ptMax = new Point(0, 0);
// @see org.eclipse.swt.widgets.Composite#computeSize(int, int, boolean)
public Point computeSize(int wHint, int hHint, boolean changed) {
int border = getBorderWidth() * 2;
Point pt = new Point(border, border);
if (sText == null) {
return pt;
}
Font existingFont = (Font) canvas.getData("font");
Color existingColor = (Color) canvas.getData("color");
GC gc = new GC(this);
if (existingFont != null) {
gc.setFont(existingFont);
}
if (existingColor != null) {
gc.setForeground(existingColor);
}
pt = gc.textExtent(sText);
pt.x += border;
pt.y += border;
gc.dispose();
if (bUnderline) {
pt.y++;
}
int fixedWidth = skinProperties.getIntValue(sConfigID + ".width", -1);
if (fixedWidth >= 0) {
pt.x = fixedWidth;
}
int fixedHeight = skinProperties.getIntValue(sConfigID + ".height", -1);
if (fixedHeight >= 0) {
pt.y = fixedHeight;
}
if (isVisible()) {
if (pt.x > ptMax.x) {
ptMax.x = pt.x;
}
if (pt.y > ptMax.y) {
ptMax.y = pt.y;
}
}
return pt;
}
};
if (false && font == null) {
Display display = createOn.getDisplay();
FontData fd = new FontData("Arial", Utils.pixelsToPoint(10,
display.getDPI().y), SWT.NORMAL);
font = new Font(display, fd);
}
canvas.setData("font", font);
setControl(canvas);
if (typeParams.length > 1) {
bIsTextDefault = true;
sText = typeParams[1];
}
canvas.addPaintListener(this);
updateFont("");
|
Methods Summary |
---|
public void | paintControl(PaintEvent e)
if (sText == null || sText.length() == 0) {
return;
}
// e.gc.setClipping(e.x, e.y, e.width, e.height);
Composite composite = (Composite) e.widget;
Rectangle clientArea = composite.getClientArea();
Font existingFont = (Font) canvas.getData("font");
Color existingColor = (Color) canvas.getData("color");
if (existingFont != null) {
e.gc.setFont(existingFont);
}
if (existingColor != null) {
e.gc.setForeground(existingColor);
}
// e.gc.drawText(sText, 0, 0, true);
GCStringPrinter.printString(e.gc, sText, clientArea, true, false, style
| SWT.TOP);
| public void | setText(java.lang.String text)
if (text == null) {
text = "";
}
if (text.equals(sText)) {
return;
}
this.sText = text;
this.sKey = null;
bIsTextDefault = false;
Utils.execSWTThread(new AERunnable() {
public void runSupport() {
if (canvas != null && !canvas.isDisposed()) {
canvas.redraw();
Utils.relayout(canvas);
}
}
});
| public void | setTextID(java.lang.String key)
if (key == null) {
setText("");
}
if (key.equals(sKey)) {
return;
}
this.sText = MessageText.getString(key);
this.sKey = key;
bIsTextDefault = false;
Utils.execSWTThread(new AERunnable() {
public void runSupport() {
canvas.redraw();
canvas.layout(true);
Utils.relayout(canvas);
}
});
| public java.lang.String | switchSuffix(java.lang.String suffix, int level, boolean walkUp)
suffix = super.switchSuffix(suffix, level, walkUp);
if (suffix == null) {
return null;
}
String sPrefix = sConfigID + ".text";
if (sText == null || bIsTextDefault) {
String text = properties.getStringValue(sPrefix + suffix);
if (text != null) {
sText = text;
}
}
final String fSuffix = suffix;
Utils.execSWTThread(new AERunnable() {
public void runSupport() {
if (canvas == null || canvas.isDisposed()) {
return;
}
updateFont(fSuffix);
}
});
return suffix;
| private void | updateFont(java.lang.String suffix)
String sPrefix = sConfigID + ".text";
Color color = properties.getColor(sPrefix + ".color" + suffix);
//System.out.println(this + "; " + sPrefix + ";" + suffix + "; " + color + "; " + text);
if (color != null) {
canvas.setData("color", color);
}
Font existingFont = (Font) canvas.getData("Font" + suffix);
if (existingFont != null && !existingFont.isDisposed()) {
canvas.setData("font", existingFont);
} else {
boolean bNewFont = false;
int iFontSize = -1;
int iFontWeight = -1;
String sFontFace = null;
String sSize = properties.getStringValue(sPrefix + ".size" + suffix);
if (sSize != null) {
FontData[] fd = canvas.getFont().getFontData();
try {
char firstChar = sSize.charAt(0);
if (firstChar == '+" || firstChar == '-") {
sSize = sSize.substring(1);
}
double dSize = NumberFormat.getInstance(Locale.US).parse(sSize).doubleValue();
if (firstChar == '+") {
iFontSize = (int) (fd[0].height + dSize);
} else if (firstChar == '-") {
iFontSize = (int) (fd[0].height - dSize);
} else {
if (sSize.endsWith("px")) {
iFontSize = Utils.getFontHeightFromPX(canvas.getFont(), null,
(int) dSize);
// iFontSize = Utils.pixelsToPoint(dSize, canvas.getDisplay().getDPI().y);
} else {
iFontSize = (int) dSize;
}
}
bNewFont = true;
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
String sStyle = properties.getStringValue(sPrefix + ".style" + suffix);
if (sStyle != null) {
String[] sStyles = sStyle.toLowerCase().split(",");
for (int i = 0; i < sStyles.length; i++) {
String s = sStyles[i];
if (s.equals("bold")) {
if (iFontWeight == -1) {
iFontWeight = SWT.BOLD;
} else {
iFontWeight |= SWT.BOLD;
}
bNewFont = true;
}
if (s.equals("italic")) {
if (iFontWeight == -1) {
iFontWeight = SWT.ITALIC;
} else {
iFontWeight |= SWT.ITALIC;
}
bNewFont = true;
}
bUnderline = s.equals("underline");
if (bUnderline) {
canvas.addPaintListener(new PaintListener() {
public void paintControl(PaintEvent e) {
Point size = ((Control) e.widget).getSize();
e.gc.drawLine(0, size.y - 1, size.x - 1, size.y - 1);
}
});
}
if (s.equals("strike")) {
canvas.addPaintListener(new PaintListener() {
public void paintControl(PaintEvent e) {
Point size = ((Control) e.widget).getSize();
int y = size.y / 2;
e.gc.drawLine(0, y, size.x - 1, y);
}
});
}
if (s.equals("normal")) {
bNewFont = true;
}
}
}
sFontFace = properties.getStringValue(sPrefix + ".font" + suffix);
if (sFontFace != null) {
bNewFont = true;
}
if (bNewFont) {
FontData[] fd = canvas.getFont().getFontData();
if (iFontSize > 0) {
fd[0].setHeight(iFontSize);
}
if (iFontWeight >= 0) {
fd[0].setStyle(iFontWeight);
}
if (sFontFace != null) {
fd[0].setName(sFontFace);
}
final Font canvasFont = new Font(canvas.getDisplay(), fd);
canvas.setData("font", canvasFont);
canvas.addDisposeListener(new DisposeListener() {
public void widgetDisposed(DisposeEvent e) {
canvasFont.dispose();
}
});
canvas.setData("Font" + suffix, canvasFont);
}
}
canvas.redraw();
|
|