package org.fanhongtao.log;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.fanhongtao.swt.BaseShell;
/**
* @author Fan Hongtao
* @created 2010-11-10
*/
public class SwtStyledTextAppenderTest extends BaseShell
{
private static Logger log = Logger.getLogger(SwtStyledTextAppenderTest.class);
private StyledText logText;
// The font to use for displaying log message
private Font font;
/* (non-Javadoc)
* @see org.fanhongtao.swt.BaseShell#createContents(org.eclipse.swt.widgets.Shell)
*/
@Override
public void createContents(Shell shell)
{
// create controller
shell.setLayout(new GridLayout());
logText = new StyledText(shell, SWT.BORDER | SWT.WRAP | SWT.V_SCROLL | SWT.READ_ONLY);
logText.setLayoutData(new GridData(GridData.FILL_BOTH));
// set font
font = new Font(Display.getCurrent(), "Courier New", 10, SWT.NORMAL);
logText.setFont(font);
// make it an appender of Log4J
SwtStyledTextAppender appender = new SwtStyledTextAppender(logText);
appender.setLayout(new PatternLayout(LogUtils.DEFAULT_PATTERN_LAYOUT));
Logger.getRootLogger().addAppender(appender);
// write some log messages
log.info("Write some info message");
log.error("Write some error message");
log.info("Write some info message, too");
}
@Override
protected void dispose()
{
// We created this font, so we must dispose it
if (font != null)
{
font.dispose();
}
}
public static void main(String[] args)
{
new SwtStyledTextAppenderTest().run("StyledText Appender Test");
}
}