8000 Allow markup syntaxes when scripting language is none · scijava/script-editor@033abf3 · GitHub
[go: up one dir, main page]

Skip to content

Commit 033abf3

Browse files
committed
Allow markup syntaxes when scripting language is none
1 parent 1b8230e commit 033abf3

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

src/main/java/org/scijava/ui/swing/script/EditorPane.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,16 @@
5555
import java.util.regex.Pattern;
5656

5757
import javax.swing.Action;
58+
import javax.swing.ButtonGroup;
5859
import javax.swing.JMenu;
5960
import javax.swing.JMenuItem;
6061
import javax.swing.JOptionPane;
6162
import javax.swing.JPopupMenu;
63+
import javax.swing.JRadioButtonMenuItem;
6264
import javax.swing.JScrollPane;
6365
import javax.swing.JViewport;
6466
import javax.swing.KeyStroke;
67+
import javax.swing.SwingUtilities;
6568
import javax.swing.ToolTipManager;
6669
import javax.swing.UIManager;
6770
import javax.swing.event.DocumentEvent;
@@ -137,6 +140,7 @@ public class EditorPane extends RSyntaxTextArea implements DocumentListener {
137140
private boolean autoCompletionWithoutKey;
138141
private String supportStatus;
139142
private final ErrorParser errorHighlighter;
143+
private final JMenu noneLangSyntaxMenu;
140144

141145

142146
@Parameter
@@ -210,6 +214,7 @@ public void hyperlinkUpdate(final HyperlinkEvent hle) {
210214
getActionMap().put(RTextAreaEditorKit.rtaPrevBookmarkAction, new NextBookMarkActionImpl(RTextAreaEditorKit.rtaPrevBookmarkAction, false));
211215
getActionMap().put(RTextAreaEditorKit.rtaToggleBookmarkAction, new ToggleBookmarkAc 10000 tionImpl());
212216

217+
noneLangSyntaxMenu = geSyntaxForNoneLang();
213218
adjustPopupMenu();
214219

215220
ToolTipManager.sharedInstance().registerComponent(this);
@@ -274,6 +279,8 @@ private void adjustPopupMenu() {
274279
popup.add(menu);
275280
menu.add(getMenuItem("Open URL Under Cursor", new OpenLinkUnderCursor()));
276281
menu.add(getMenuItem("Search the Web for Selected Text", new SearchWebOnSelectedText()));
282+
popup.addSeparator();
283+
popup.add(noneLangSyntaxMenu);
277284
}
278285

279286
private JMenuItem getMenuItem(final String label, final RecordableTextAction a) {
@@ -285,6 +292,36 @@ private JMenuItem getMenuItem(final String label, final RecordableTextAction a)
285292
return item;
286293
}
287294

295+
private JMenu geSyntaxForNoneLang() {
296+
final JMenu menu = new JMenu("Non-executable Syntax");
297+
menu.setToolTipText("Markup languages when scripting language is none");
298+
final ButtonGroup bg = new ButtonGroup();
299+
menu.add(getSyntaxItem(bg, "None", SYNTAX_STYLE_NONE));
300+
bg.getElements().nextElement().setSelected(true); //select none
301+
menu.addSeparator();
302+
menu.add(getSyntaxItem(bg, "CSS", SYNTAX_STYLE_CSS));
303+
menu.add(getSyntaxItem(bg, "HTML", SYNTAX_STYLE_HTML));
304+
menu.add(getSyntaxItem(bg, "JSON", SYNTAX_STYLE_JSON));
305+
//menu.add(getSyntaxItem(bg, "sh", SYNTAX_STYLE_UNIX_SHELL));
306+
menu.add(getSyntaxItem(bg, "XML", SYNTAX_STYLE_XML));
307+
return menu;
308+
}
309+
310+
private JMenuItem getSyntaxItem(final ButtonGroup bg, final String label, final String syntaxId) {
311+
final JRadioButtonMenuItem item = new JRadioButtonMenuItem(label);
312+
bg.add(item);
313+
item.addActionListener(e -> {
314+
if (getCurrentLanguage() == null) {
315+
setSyntaxEditingStyle(syntaxId);
316+
} else {
317+
log.error("[BUG] Unknown state: Non-executable syntaxes cannot be applied to valid languages");
318+
bg.getElements().nextElement().setSelected(true); //select none
319+
setSyntaxEditingStyle(SYNTAX_STYLE_NONE);
320+
}
321+
});
322+
return item;
323+
}
324+
288325
@Override
289326
public void setTabSize(final int width) {
290327
if (getTabSize() != width) super.setTabSize(width);
@@ -672,6 +709,7 @@ protected void setLanguage(final ScriptLanguage language,
672709
setText(header += getText());
673710
}
674711

712+
noneLangSyntaxMenu.setEnabled(language == null);
675713
if ("None".equals(languageName) ) {
676714
supportStatus = "Active language: None";
677715
return; // no need to update console any further

0 commit comments

Comments
 (0)
0