Java tutorial
import org.eclipse.swt.SWT; import org.eclipse.swt.custom.*; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.layout.*; import org.eclipse.swt.widgets.*; /** * This class turns 'e' characters red using a LineStyleListener */ public class RedEListener { // Color for the StyleRanges private Color red; /** * Runs the application */ public void run() { Display display = new Display(); Shell shell = new Shell(display); // Get color for style ranges red = display.getSystemColor(SWT.COLOR_RED); createContents(shell); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); } /** * Creates the main window contents * * @param shell the main window */ private void createContents(Shell shell) { shell.setLayout(new FillLayout()); // Create the StyledText final StyledText styledText = new StyledText(shell, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); // Add the syntax coloring handler styledText.addLineStyleListener(new LineStyleListener() { public void lineGetStyle(LineStyleEvent event) { // Create a collection to hold the StyleRanges java.util.List styles = new java.util.ArrayList(); // Iterate through the text for (int i = 0, n = event.lineText.length(); i < n; i++) { // Check for 'e' if (event.lineText.charAt(i) == 'e') { // Found an 'e'; combine all subsequent e's into the same StyleRange int start = i; for (; i < n && event.lineText.charAt(i) == 'e'; i++) ; // Create the StyleRange and add it to the collection styles.add(new StyleRange(event.lineOffset + start, i - start, red, null)); } } // Set the styles for the line event.styles = (StyleRange[]) styles.toArray(new StyleRange[0]); } }); } /** * The application entry point * * @param args the command line arguments */ public static void main(String[] args) { new RedEListener().run(); } }