/**
*
*/
package com.aelitis.azureus.ui.swt.skin;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.gudy.azureus2.ui.swt.shells.GCStringPrinter;
/**
* @author TuxPaper
* @created Jun 8, 2006
*
* XXX NOT USED XXX
*/
public class SWTTextPaintListener
implements PaintListener
{
private int align;
private Color bgcolor;
private Color fgcolor;
private Font font;
private String text;
private SWTSkinProperties skinProperties;
/**
*
*/
public SWTTextPaintListener(SWTSkin skin, Control createOn, String sConfigID) {
skinProperties = skin.getSkinProperties();
bgcolor = skinProperties.getColor(sConfigID + ".color");
text = skinProperties.getStringValue(sConfigID + ".text");
fgcolor = skinProperties.getColor(sConfigID + ".text.color");
align = SWT.NONE;
String sAlign = skinProperties.getStringValue(sConfigID + ".align");
if (sAlign != null) {
align = SWTSkinUtils.getAlignment(sAlign, SWT.NONE);
}
String sSize = skinProperties.getStringValue(sConfigID + ".text.size");
if (sSize != null) {
FontData[] fd = createOn.getFont().getFontData();
try {
char firstChar = sSize.charAt(0);
if (firstChar == '+' || firstChar == '-') {
sSize = sSize.substring(1);
}
int iSize = Integer.parseInt(sSize);
if (firstChar == '+') {
fd[0].height += iSize;
} else if (firstChar == '-') {
fd[0].height -= iSize;
} else {
fd[0].height = iSize;
}
font = new Font(createOn.getDisplay(), fd);
createOn.addDisposeListener(new DisposeListener() {
public void widgetDisposed(DisposeEvent e) {
font.dispose();
}
});
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
}
public void paintControl(PaintEvent e) {
e.gc.setClipping(e.x, e.y, e.width, e.height);
if (bgcolor != null) {
e.gc.setBackground(bgcolor);
}
if (fgcolor != null) {
e.gc.setForeground(fgcolor);
}
if (font != null) {
e.gc.setFont(font);
}
if (text != null) {
Rectangle clientArea = ((Composite) e.widget).getClientArea();
GCStringPrinter.printString(e.gc, text, clientArea, true, true, align);
}
}
}
|