Turns e characters red using a LineStyleListener : Text « SWT JFace Eclipse « Java






Turns e characters red using a LineStyleListener

Turns e characters red using a LineStyleListener
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();
  }
}
           
       








Related examples in the same category

1.Text to uppercase
2.Text EventText Event
3.Text and Label demoText and Label demo
4.Wrap LinesWrap Lines
5.Remarks TextRemarks Text
6.Demonstrates text fieldsDemonstrates text fields
7.Demonstrates multiline comments
8.TextField Example 5TextField Example 5
9.TextField Example 4
10.TextField Example 3TextField Example 3
11.TextField Example 2TextField Example 2
12.TextField ExampleTextField Example
13.SWT XML Editor: Modify DOMSWT XML Editor: Modify DOM
14.Draw internationalized styled text on a shellDraw internationalized styled text on a shell
15.Detect when the user scrolls a text controlDetect when the user scrolls a text control
16.Verify input (format for date)Verify input (format for date)
17.Verify input (only allow digits)Verify input (only allow digits)
18.Set the selection (start, end)Set the selection (start, end)
19.Text example snippet: set the selection (i-beam)Text example snippet: set the selection (i-beam)
20.Select all the text in the controlSelect all the text in the control
21.Resize a text control (show about 10 characters)Resize a text control (show about 10 characters)
22.Prompt for a password (set the echo character)Prompt for a password (set the echo character)
23.Stop CR from going to the default buttonStop CR from going to the default button
24.Add a select all menu item to the controlAdd a select all menu item to the control
25.Detect CR in a text or combo control (default selection)Detect CR in a text or combo control (default selection)