diff --git a/app/src/processing/app/Editor.java b/app/src/processing/app/Editor.java
index d5b2e035b..796e12bd5 100644
--- a/app/src/processing/app/Editor.java
+++ b/app/src/processing/app/Editor.java
@@ -253,11 +253,11 @@ public class Editor extends JFrame implements RunnerListener {
lineStatus = new EditorLineStatus(textarea);
consolePanel.add(lineStatus, BorderLayout.SOUTH);
- //scrollPane = new RTextScrollPane(textarea);
-
+ // RTextScrollPane
scrollPane = new RTextScrollPane(textarea, true);
scrollPane.setViewportBorder(BorderFactory.createEmptyBorder());
- scrollPane.setIconRowHeaderEnabled(true);
+ scrollPane.setLineNumbersEnabled(Preferences.getBoolean("editor.linenumbers"));
+ scrollPane.setIconRowHeaderEnabled(false);
Gutter gutter = scrollPane.getGutter();
gutter.setBookmarkingEnabled(false);
@@ -450,7 +450,7 @@ public class Editor extends JFrame implements RunnerListener {
saveMenuItem.setEnabled(!external);
saveAsMenuItem.setEnabled(!external);
- textarea.setMarginLineEnabled(PreferencesData.getBoolean("editor.linenumbers"));
+ scrollPane.setLineNumbersEnabled(PreferencesData.getBoolean("editor.linenumbers"));
if (external) {
// disable line highlight and turn off the caret when disabling
@@ -479,6 +479,8 @@ public class Editor extends JFrame implements RunnerListener {
//sketchbook.rebuildMenus();
// For 0126, moved into Base, which will notify all editors.
//base.rebuildMenusAsync();
+
+ textarea.setTheme(Preferences.get("editor.syntax_theme"));
}
@@ -956,6 +958,7 @@ public class Editor extends JFrame implements RunnerListener {
SketchTextArea textArea = new SketchTextArea();
textArea.requestFocusInWindow();
textArea.setMarkOccurrences(true);
+ textArea.setMarginLineEnabled(false);
textArea.setCodeFoldingEnabled(PreferencesData.getBoolean("editor.codefolding"));
textArea.setAntiAliasingEnabled(PreferencesData.getBoolean("editor.antialias"));
// textArea.setClearWhitespaceLinesEnabled(false);
diff --git a/app/src/processing/app/Preferences.java b/app/src/processing/app/Preferences.java
index e951f3e46..dd5da7eaa 100644
--- a/app/src/processing/app/Preferences.java
+++ b/app/src/processing/app/Preferences.java
@@ -230,6 +230,7 @@ public class Preferences {
JCheckBox autoAssociateBox;
JComboBox comboLanguage;
JComboBox comboWarnings;
+ JComboBox comboSyntaxThemes;
JCheckBox saveVerifyUploadBox;
JTextField proxyHTTPServer;
JTextField proxyHTTPPort;
@@ -357,7 +358,27 @@ public class Preferences {
fontSizeField.setText(String.valueOf(editorFont.getSize()));
top += d.height + GUI_BETWEEN;
+ // Syntax Coloring [ ]
+ box = Box.createHorizontalBox();
+ label = new JLabel(_("Syntax Coloring: "));
+ box.add(label);
+ String[] syntaxThemes = new String[]{"default","dark"};
+ comboSyntaxThemes = new JComboBox(syntaxThemes);
+ String currentTheme = PreferencesData.get("editor.syntax_theme", "default");
+ for (String item : syntaxThemes) {
+ if (currentTheme.equals(item)) {
+ comboSyntaxThemes.setSelectedItem(item);
+ }
+ }
+ box.add(comboSyntaxThemes);
+ pane.add(box);
+ d = box.getPreferredSize();
+ box.setForeground(Color.gray);
+ box.setBounds(left, top, d.width, d.height);
+ right = Math.max(right, left + d.width);
+ top += d.height + GUI_BETWEEN;
+
// Show verbose output during: [ ] compilation [ ] upload
box = Box.createHorizontalBox();
@@ -746,6 +767,7 @@ public class Preferences {
PreferencesData.set("sketchbook.path", newPath);
}
+ PreferencesData.set("editor.syntax_theme", comboSyntaxThemes.getSelectedItem().toString());
PreferencesData.setBoolean("editor.external", externalEditorBox.isSelected());
PreferencesData.setBoolean("update.check", checkUpdatesBox.isSelected());
PreferencesData.setBoolean("editor.save_on_verify", saveVerifyUploadBox.isSelected());
diff --git a/app/src/processing/app/syntax/SketchTextArea.java b/app/src/processing/app/syntax/SketchTextArea.java
index 61ee6559b..aff5adb5f 100644
--- a/app/src/processing/app/syntax/SketchTextArea.java
+++ b/app/src/processing/app/syntax/SketchTextArea.java
@@ -21,14 +21,12 @@ import javax.swing.text.Segment;
import javax.swing.undo.UndoManager;
import org.fife.ui.rsyntaxtextarea.*;
+import org.fife.ui.rsyntaxtextarea.Theme;
import org.fife.ui.rsyntaxtextarea.Token;
import org.fife.ui.rsyntaxtextarea.focusabletip.FocusableTip;
import org.fife.ui.rtextarea.RUndoManager;
-import processing.app.Base;
-import processing.app.BaseNoGui;
-import processing.app.EditorLineStatus;
-import processing.app.EditorListener;
+import processing.app.*;
/**
* Arduino Sketch code editor based on RSyntaxTextArea (http://fifesoft.com/rsyntaxtextarea)
@@ -57,9 +55,18 @@ public class SketchTextArea extends RSyntaxTextArea {
protected void installFeatures(){
+ setTheme(PreferencesData.get("editor.syntax_theme", "default"));
+
+ setLinkGenerator(new DocLinkGenerator());
+
+ fixControlTab();
+ installTokenMaker();
+ }
+
+ public void setTheme(String name){
FileInputStream defaultXmlInputStream = null;
try {
- defaultXmlInputStream = new FileInputStream(new File(BaseNoGui.getContentFile("lib"), "theme/syntax/default.xml"));
+ defaultXmlInputStream = new FileInputStream(new File(BaseNoGui.getContentFile("lib"), "theme/syntax/"+name+".xml"));
Theme theme = Theme.load(defaultXmlInputStream);
theme.apply(this);
} catch (IOException e) {
@@ -73,11 +80,6 @@ public class SketchTextArea extends RSyntaxTextArea {
}
}
}
-
- setLinkGenerator(new DocLinkGenerator());
-
- fixControlTab();
- installTokenMaker();
}
// Removing the default focus traversal keys
diff --git a/build/shared/lib/preferences.txt b/build/shared/lib/preferences.txt
index 5dfde1ce2..27c45c52e 100644
--- a/build/shared/lib/preferences.txt
+++ b/build/shared/lib/preferences.txt
@@ -86,6 +86,8 @@ editor.window.height.min = 290
# tested to be 515 on Windows XP, this leaves some room
#editor.window.height.min.windows = 530
+# Syntax coloring ( on lib/theme/syntax )
+editor.syntax_theme = default
# font size for editor
editor.font=Monospaced,plain,12
diff --git a/build/shared/lib/theme/syntax/dark.xml b/build/shared/lib/theme/syntax/dark.xml
new file mode 100644
index 000000000..c9283f38d
--- /dev/null
+++ b/build/shared/lib/theme/syntax/dark.xml
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build/shared/lib/theme/syntax/default.xml b/build/shared/lib/theme/syntax/default.xml
new file mode 100644
index 000000000..59cac7813
--- /dev/null
+++ b/build/shared/lib/theme/syntax/default.xml
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+