Gridarta Editor
SyntaxUtilities.java
Go to the documentation of this file.
1 /*
2  * SyntaxUtilities.java - Utility functions used by syntax colorizing
3  * Copyright (C) 1999 Slava Pestov
4  * Copyright (C) 2000-2015 The Gridarta Developers.
5  *
6  * You may use and modify this package for any purpose. Redistribution is
7  * permitted, in both source and binary form, provided that this notice
8  * remains intact in all source distributions of this package.
9  */
10 
11 package net.sf.gridarta.textedit.textarea;
12 
13 import java.awt.Color;
14 import java.awt.Font;
15 import java.awt.Graphics;
16 import javax.swing.text.Segment;
17 import javax.swing.text.TabExpander;
18 import javax.swing.text.Utilities;
19 
26 public class SyntaxUtilities {
27 
31  private SyntaxUtilities() {
32  }
33 
42  public static boolean regionMatches(final boolean ignoreCase, final Segment text, final int offset, final CharSequence match) {
43  final int length = offset + match.length();
44  final char[] textArray = text.array;
45  if (length > text.offset + text.count) {
46  return false;
47  }
48 
49  for (int i = offset, j = 0; i < length; i++, j++) {
50  char c1 = textArray[i];
51  char c2 = match.charAt(j);
52  if (ignoreCase) {
53  c1 = Character.toUpperCase(c1);
54  c2 = Character.toUpperCase(c2);
55  }
56  if (c1 != c2) {
57  return false;
58  }
59  }
60  return true;
61  }
62 
70  final SyntaxStyle[] styles = new SyntaxStyle[Token.ID_COUNT];
71 
72  styles[(int) Token.COMMENT1] = new SyntaxStyle(new Color(0x008000), true, false); // green comments
73  styles[(int) Token.COMMENT2] = new SyntaxStyle(new Color(0x990033), true, false);
74  styles[(int) Token.KEYWORD1] = new SyntaxStyle(Color.blue, false, true);
75  styles[(int) Token.KEYWORD2] = new SyntaxStyle(Color.magenta, false, false);
76  styles[(int) Token.KEYWORD3] = new SyntaxStyle(new Color(0x009600), false, false);
77  styles[(int) Token.LITERAL1] = new SyntaxStyle(new Color(0x650099), false, false);
78  styles[(int) Token.LITERAL2] = new SyntaxStyle(new Color(0x650099), false, true);
79  styles[(int) Token.LABEL] = new SyntaxStyle(new Color(0x990033), false, true);
80  styles[(int) Token.OPERATOR] = new SyntaxStyle(Color.black, false, true);
81  styles[(int) Token.INVALID] = new SyntaxStyle(Color.red, false, true);
82 
83  return new SyntaxStyles(styles);
84  }
85 
99  public static int paintSyntaxLine(final Segment line, final Iterable<Token> tokens, final SyntaxStyles styles, final TabExpander expander, final Graphics gfx, final int x, final int y) {
100  final Font defaultFont = gfx.getFont();
101  final Color defaultColor = gfx.getColor();
102 
103  int xPos = x;
104  for (final Token token : tokens) {
105  final byte id = token.getId();
106 
107  final int length = token.getLength();
108  if (id == Token.NULL) {
109  if (!defaultColor.equals(gfx.getColor())) {
110  gfx.setColor(defaultColor);
111  }
112  if (!defaultFont.equals(gfx.getFont())) {
113  gfx.setFont(defaultFont);
114  }
115  } else {
116  styles.getStyle(id).setGraphicsFlags(gfx, defaultFont);
117  }
118 
119  line.count = length;
120  xPos = Utilities.drawTabbedText(line, xPos, y, gfx, expander, 0);
121  line.offset += length;
122  }
123 
124  return xPos;
125  }
126 
127 }
static final byte COMMENT2
Comment 2 token id.
Definition: Token.java:36
A set of SyntaxStyle instances for painting colorized text.
static final byte COMMENT1
Comment 1 token id.
Definition: Token.java:31
static final byte LITERAL1
Literal 1 token id.
Definition: Token.java:42
static final byte KEYWORD3
Keyword 3 token id.
Definition: Token.java:72
SyntaxStyle getStyle(final byte id)
Returns a style for a token id.
A linked list of tokens.
Definition: Token.java:21
static final byte OPERATOR
Operator token id.
Definition: Token.java:78
SyntaxUtilities()
Private constructor to prevent instantiation.
Class with several utility functions used by jEdit&#39;s syntax colorizing subsystem. ...
static final byte LITERAL2
Literal 2 token id.
Definition: Token.java:48
static boolean regionMatches(final boolean ignoreCase, final Segment text, final int offset, final CharSequence match)
Checks if a sub-region of a.
static final byte NULL
Normal text token id.
Definition: Token.java:26
static final byte KEYWORD2
Keyword 2 token id.
Definition: Token.java:66
static int paintSyntaxLine(final Segment line, final Iterable< Token > tokens, final SyntaxStyles styles, final TabExpander expander, final Graphics gfx, final int x, final int y)
Paints the specified line onto the graphics context.
static final byte KEYWORD1
Keyword 1 token id.
Definition: Token.java:60
static final byte ID_COUNT
The total number of defined token ids.
Definition: Token.java:89
static SyntaxStyles getDefaultSyntaxStyles()
Returns the default styles.
static final byte INVALID
Invalid token id.
Definition: Token.java:84
static final byte LABEL
Label token id.
Definition: Token.java:54
void setGraphicsFlags(final Graphics gfx, final Font font)
Sets the text color and font of the specified graphics context to that specified in this style...