Dynamic syntax coloring : StyledText Style « SWT « Java Tutorial






import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ExtendedModifyEvent;
import org.eclipse.swt.custom.ExtendedModifyListener;
import org.eclipse.swt.custom.StyleRange;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class SyntaxColoring {
  public static void main(String[] args) {
    final Display display = new Display();
    final Shell shell = new Shell(display);

    final StyledText styledText = new StyledText(shell, SWT.V_SCROLL | SWT.BORDER);

    final String PUNCTUATION = "(){}";
    styledText.addExtendedModifyListener(new ExtendedModifyListener() {
      public void modifyText(ExtendedModifyEvent event) {
        int end = event.start + event.length - 1;

        if (event.start <= end) {
          String text = styledText.getText(event.start, end);
          java.util.List ranges = new java.util.ArrayList();

          for (int i = 0, n = text.length(); i < n; i++) {
            if (PUNCTUATION.indexOf(text.charAt(i)) > -1) {
              ranges.add(new StyleRange(event.start + i, 1, display.getSystemColor(SWT.COLOR_BLUE),
                  null, SWT.BOLD));
            }
          }
          if (!ranges.isEmpty()) {
            styledText.replaceStyleRanges(event.start, event.length, (StyleRange[]) ranges
                .toArray(new StyleRange[0]));
          }
        }
      }
    });

    styledText.setBounds(10, 10, 500, 100);
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {
        display.sleep();
      }
    }
    display.dispose();
  }
}








17.43.StyledText Style
17.43.1.Using StyleRanges
17.43.2.StyleRange Constructors
17.43.3.Compare StyleRange
17.43.4.Set a single StyleRange into a StyledTextSet a single StyleRange into a StyledText
17.43.5.Set two Different stylesSet two Different styles
17.43.6.Store StyleRanges into an array, and called setStyleRanges()Store StyleRanges into an array, and called setStyleRanges()
17.43.7.replaceStyleRanges(): specifies which portion of the StyledText to repaintreplaceStyleRanges(): specifies which portion of the StyledText to repaint
17.43.8.Dynamic syntax coloring
17.43.9.Make Text BoldMake Text Bold
17.43.10.Make text appear underlinedMake text appear underlined
17.43.11.Use rise and font with StyleRangeUse rise and font with StyleRange
17.43.12.Change the backgroundChange the background
17.43.13.Change the Foreground colorChange the Foreground color
17.43.14.Make text appear strikeoutMake text appear strikeout
17.43.15.StyledText: set line backgroundStyledText: set line background
17.43.16.Using LineBackgroundListenerUsing LineBackgroundListener