Skip to content

Commit

Permalink
Improve MENU syntax highlighting
Browse files Browse the repository at this point in the history
- Uses a separate highlighting definition class for MENU scripts.
- Added a separate Preferences section for MENU highlighting options
(color scheme and enabled state).
  • Loading branch information
Argent77 committed Apr 22, 2024
1 parent be25fd8 commit 66a66bb
Show file tree
Hide file tree
Showing 7 changed files with 5,545 additions and 7 deletions.
3 changes: 3 additions & 0 deletions src/org/infinity/AppOption.java
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,9 @@ public class AppOption {
/** Menu Options > Misc. Types: LuaSyntaxHighlighting (Boolean, Default: true) */
public static final AppOption LUA_SYNTAX_HIGHLIGHTING = new AppOption(OptionsMenuItem.OPTION_LUA_SYNTAXHIGHLIGHTING,
"Enable LUA Syntax Highlighting", true);
/** Menu Options > Misc. Types: MenuColorScheme (Integer, Default: 0) */
public static final AppOption MENU_COLOR_SCHEME = new AppOption(OptionsMenuItem.OPTION_MENU_COLORSCHEME,
"MENU Color Scheme", 0);
/** Menu Options > Misc. Types: MenuSyntaxHighlighting (Boolean, Default: true) */
public static final AppOption MENU_SYNTAX_HIGHLIGHTING = new AppOption(OptionsMenuItem.OPTION_MENU_SYNTAXHIGHLIGHTING,
"Enable MENU Syntax Highlighting", true);
Expand Down
10 changes: 10 additions & 0 deletions src/org/infinity/gui/InfinityTextArea.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
import org.infinity.resource.text.modes.BCSTokenMaker;
import org.infinity.resource.text.modes.GLSLTokenMaker;
import org.infinity.resource.text.modes.INITokenMaker;
import org.infinity.resource.text.modes.MenuTokenMaker;
import org.infinity.resource.text.modes.TLKTokenMaker;
import org.infinity.resource.text.modes.WeiDULogTokenMaker;
import org.infinity.util.Misc;
Expand All @@ -64,6 +65,8 @@ public enum Language {
INI(INITokenMaker.SYNTAX_STYLE_INI),
/** Select LUA highlighting. */
LUA(SyntaxConstants.SYNTAX_STYLE_LUA),
/** Select MENU highlighting. */
MENU(MenuTokenMaker.SYNTAX_STYLE_MENU),
/** Select SQL highlighting. */
SQL(SyntaxConstants.SYNTAX_STYLE_SQL),
/** Select WeiDU.log highlighting. */
Expand Down Expand Up @@ -165,6 +168,8 @@ public String getScheme() {
GLSLTokenMaker.class.getCanonicalName());
((AbstractTokenMakerFactory) TokenMakerFactory.getDefaultInstance()).putMapping(INITokenMaker.SYNTAX_STYLE_INI,
INITokenMaker.class.getCanonicalName());
((AbstractTokenMakerFactory) TokenMakerFactory.getDefaultInstance()).putMapping(MenuTokenMaker.SYNTAX_STYLE_MENU,
MenuTokenMaker.class.getCanonicalName());
}

private final SortedMap<Integer, GutterIcon> gutterIcons = new TreeMap<>();
Expand Down Expand Up @@ -369,6 +374,11 @@ public static void applyExtendedSettings(RSyntaxTextArea edit, Language language
schemePath = BrowserMenuBar.getInstance().getOptions().getLuaColorScheme();
}
break;
case MENU:
if (BrowserMenuBar.isInstantiated()) {
schemePath = BrowserMenuBar.getInstance().getOptions().getMenuColorScheme();
}
break;
case SQL:
if (BrowserMenuBar.isInstantiated()) {
schemePath = BrowserMenuBar.getInstance().getOptions().getSqlColorScheme();
Expand Down
22 changes: 17 additions & 5 deletions src/org/infinity/gui/PreferencesDialog.java
Original file line number Diff line number Diff line change
Expand Up @@ -343,10 +343,22 @@ public String toString() {
AppOption.LUA_COLOR_SCHEME),
OptionCheckBox.create(AppOption.LUA_SYNTAX_HIGHLIGHTING.getName(), AppOption.LUA_SYNTAX_HIGHLIGHTING.getLabel(),
"Enables syntax highlighting for LUA resources.", AppOption.LUA_SYNTAX_HIGHLIGHTING)
.setOnCreated(this::luaSyntaxHighlightingOnCreated).setOnAction(this::luaSyntaxHighlightingOnAction),
.setOnCreated(this::luaSyntaxHighlightingOnCreated).setOnAction(this::luaSyntaxHighlightingOnAction)
),
OptionGroup.create("MENU",
OptionGroupBox.create(AppOption.MENU_COLOR_SCHEME.getName(), AppOption.MENU_COLOR_SCHEME.getLabel(),
"Select a color scheme for MENU resources.<p>"
+ "<strong>Default:</strong> A general-purpose default color scheme.<br/>"
+ "<strong>Dark:</strong> A dark scheme based off of Notepad++'s Obsidian theme.<br/>"
+ "<strong>Druid:</strong> A dark green color scheme.<br/>"
+ "<strong>Eclipse:</strong> Mimics the default color scheme of the Eclipse IDE.<br/>"
+ "<strong>IntelliJ IDEA:</strong> Mimics the default color scheme of IntelliJ IDEA.<br/>"
+ "<strong>Monokai:</strong> A dark color scheme inspired by \"Monokai\".<br/>"
+ "<strong>Visual Studio:</strong> Mimics the default color scheme of Microsoft Visual Studio.</p>",
0, OptionsMenuItem.getColorSchemes().toArray(new OptionsMenuItem.ColorScheme[0]),
AppOption.MENU_COLOR_SCHEME),
OptionCheckBox.create(AppOption.MENU_SYNTAX_HIGHLIGHTING.getName(), AppOption.MENU_SYNTAX_HIGHLIGHTING.getLabel(),
"Enables syntax highlighting for MENU resources. Coloring of non-Lua script code won't be 100% accurate.",
AppOption.MENU_SYNTAX_HIGHLIGHTING)
"Enables syntax highlighting for MENU resources.", AppOption.MENU_SYNTAX_HIGHLIGHTING)
.setOnCreated(this::menuSyntaxHighlightingOnCreated).setOnAction(this::menuSyntaxHighlightingOnAction)
),
OptionGroup.create("SQL",
Expand Down Expand Up @@ -1257,12 +1269,12 @@ private boolean luaSyntaxHighlightingOnAction(OptionCheckBox cb) {

/** onCreated() function for {@link AppOption#MENU_SYNTAX_HIGHLIGHTING}. */
private void menuSyntaxHighlightingOnCreated(OptionCheckBox cb) {
setOptionUiEnabled(AppOption.LUA_COLOR_SCHEME.getName(), cb.getUiCheckBox().isSelected());
setOptionUiEnabled(AppOption.MENU_COLOR_SCHEME.getName(), cb.getUiCheckBox().isSelected());
}

/** onAction() function for {@link AppOption#MENU_SYNTAX_HIGHLIGHTING}. */
private boolean menuSyntaxHighlightingOnAction(OptionCheckBox cb) {
setOptionUiEnabled(AppOption.LUA_COLOR_SCHEME.getName(), cb.getUiCheckBox().isSelected());
setOptionUiEnabled(AppOption.MENU_COLOR_SCHEME.getName(), cb.getUiCheckBox().isSelected());
return true;
}

Expand Down
8 changes: 7 additions & 1 deletion src/org/infinity/gui/menu/OptionsMenuItem.java
Original file line number Diff line number Diff line change
Expand Up @@ -192,8 +192,9 @@ public String toString() {
public static final String OPTION_INI_SYNTAXHIGHLIGHTING = "IniSyntaxHighlighting";
public static final String OPTION_INI_COLORSCHEME = "IniColorScheme";
public static final String OPTION_LUA_SYNTAXHIGHLIGHTING = "LuaSyntaxHighlighting";
public static final String OPTION_MENU_SYNTAXHIGHLIGHTING = "MenuSyntaxHighlighting";
public static final String OPTION_LUA_COLORSCHEME = "LuaColorScheme";
public static final String OPTION_MENU_SYNTAXHIGHLIGHTING = "MenuSyntaxHighlighting";
public static final String OPTION_MENU_COLORSCHEME = "MenuColorScheme";
public static final String OPTION_SQL_SYNTAXHIGHLIGHTING = "SqlSyntaxHighlighting";
public static final String OPTION_SQL_COLORSCHEME = "SqlColorScheme";
public static final String OPTION_TLK_SYNTAXHIGHLIGHTING = "TlkSyntaxHighlighting";
Expand Down Expand Up @@ -686,6 +687,11 @@ public String getLuaColorScheme() {
return COLOR_SCHEME.get(idx).getPath();
}

public String getMenuColorScheme() {
int idx = AppOption.MENU_COLOR_SCHEME.getIntValue();
return COLOR_SCHEME.get(idx).getPath();
}

public String getSqlColorScheme() {
int idx = AppOption.SQL_COLOR_SCHEME.getIntValue();
return COLOR_SCHEME.get(idx).getPath();
Expand Down
2 changes: 1 addition & 1 deletion src/org/infinity/resource/text/PlainTextResource.java
Original file line number Diff line number Diff line change
Expand Up @@ -628,7 +628,7 @@ private void setSyntaxHighlightingEnabled(InfinityTextArea edit, InfinityScrollP
}
} else if ("MENU".equalsIgnoreCase(entry.getExtension())) {
if (!BrowserMenuBar.isInstantiated() || BrowserMenuBar.getInstance().getOptions().getMenuSyntaxHighlightingEnabled()) {
language = InfinityTextArea.Language.LUA;
language = InfinityTextArea.Language.MENU;
}
} else if ("INI".equalsIgnoreCase(entry.getExtension())) {
if (!BrowserMenuBar.isInstantiated() || BrowserMenuBar.getInstance().getOptions().getIniSyntaxHighlightingEnabled()) {
Expand Down
Loading

0 comments on commit 66a66bb

Please sign in to comment.