2020 */
2121public class BaseCodeArea extends CodeArea {
2222
23- @ NotNull
24- protected static final String CLASS_KEYWORD = "KEYWORD" ;
23+ protected static final String CSS_KEYWORD = "keyword" ;
24+ protected static final String CSS_VALUE_TYPE = "value-type" ;
25+ protected static final String CSS_VALUE_VALUE = "value-value" ;
26+ protected static final String CSS_PAREN = "paren" ;
27+ protected static final String CSS_BRACE = "brace" ;
28+ protected static final String CSS_BRACKET = "bracket" ;
29+ protected static final String CSS_SEMICOLON = "semicolon" ;
30+ protected static final String CSS_STRING = "string" ;
31+ protected static final String CSS_COMMENT = "comment" ;
2532
26- @ NotNull
33+ protected static final String CLASS_KEYWORD = "KEYWORD" ;
2734 protected static final String CLASS_VALUE_TYPE = "VALUETYPE" ;
28-
29- @ NotNull
3035 protected static final String CLASS_VALUE_VALUE = "VALUEVALUE" ;
31-
32- @ NotNull
3336 protected static final String CLASS_PAREN = "PAREN" ;
34-
35- @ NotNull
3637 protected static final String CLASS_BRACE = "BRACE" ;
37-
38- @ NotNull
3938 protected static final String CLASS_BRACKET = "BRACKET" ;
40-
41- @ NotNull
4239 protected static final String CLASS_SEMICOLON = "SEMICOLON" ;
43-
44- @ NotNull
4540 protected static final String CLASS_STRING = "STRING" ;
46-
47- @ NotNull
4841 protected static final String CLASS_COMMENT = "COMMENT" ;
4942
5043 @ NotNull
5144 protected static final String [][] AVAILABLE_CLASSES = {
52- {CLASS_KEYWORD , "keyword" },
53- {CLASS_VALUE_TYPE , "value-type" },
54- {CLASS_VALUE_VALUE , "value-value" },
55- {CLASS_PAREN , "paren" },
56- {CLASS_BRACE , "brace" },
57- {CLASS_BRACKET , "bracket" },
58- {CLASS_SEMICOLON , "semicolon" },
59- {CLASS_STRING , "string" },
60- {CLASS_COMMENT , "comment" },
45+ {CLASS_KEYWORD , CSS_KEYWORD },
46+ {CLASS_VALUE_TYPE , CSS_VALUE_TYPE },
47+ {CLASS_VALUE_VALUE , CSS_VALUE_VALUE },
48+ {CLASS_PAREN , CSS_PAREN },
49+ {CLASS_BRACE , CSS_BRACE },
50+ {CLASS_BRACKET , CSS_BRACKET },
51+ {CLASS_SEMICOLON , CSS_SEMICOLON },
52+ {CLASS_STRING , CSS_STRING },
53+ {CLASS_COMMENT , CSS_COMMENT },
6154 };
6255
6356 protected static final String PAREN_PATTERN = "\\ (|\\ )" ;
@@ -67,11 +60,38 @@ public class BaseCodeArea extends CodeArea {
6760 protected static final String STRING_PATTERN = "\" ([^\" \\ \\ ]|\\ \\ .)*\" " ;
6861 protected static final String COMMENT_PATTERN = "//[^\n ]*" + "|" + "/\\ *(.|\\ R)*?\\ */" ;
6962
63+ /**
64+ * The list of available classes.
65+ */
66+ @ NotNull
67+ protected final String [][] availableClasses ;
68+
7069 public BaseCodeArea () {
70+ this .availableClasses = createAvailableClasses ();
7171 richChanges ().filter (ch -> !ch .getInserted ().equals (ch .getRemoved ()))
7272 .subscribe (change -> setStyleSpans (0 , calculateStyleSpans (getText ())));
7373 }
7474
75+ /**
76+ * Create a list of available classes.
77+ *
78+ * @return the list of available classes.
79+ */
80+ @ FXThread
81+ protected @ NotNull String [][] createAvailableClasses () {
82+ return AVAILABLE_CLASSES ;
83+ }
84+
85+ /**
86+ * Get the list of available classes.
87+ *
88+ * @return the list of available classes.
89+ */
90+ @ FXThread
91+ protected @ NotNull String [][] getAvailableClasses () {
92+ return AVAILABLE_CLASSES ;
93+ }
94+
7595 /**
7696 * Calculate highlighting for the code.
7797 *
@@ -92,7 +112,7 @@ public BaseCodeArea() {
92112
93113 String styleClass = null ;
94114
95- for (final String [] availableClass : AVAILABLE_CLASSES ) {
115+ for (final String [] availableClass : getAvailableClasses () ) {
96116
97117 try {
98118 styleClass = matcher .group (availableClass [0 ]) != null ? availableClass [1 ] : null ;
0 commit comments