From b4d16385cbbdb22d2309be0b5686f95f93596c79 Mon Sep 17 00:00:00 2001
From: SuspiciousActivity
<38253929+SuspiciousActivity@users.noreply.github.com>
Date: Wed, 27 Feb 2019 14:18:18 +0100
Subject: [PATCH] Added a dark theme
---
README.md | 2 +
src/me/ByteEdit/boxes/CompilationBox.java | 12 +--
src/me/ByteEdit/boxes/CompilationSuccess.java | 6 +-
src/me/ByteEdit/main/Main.java | 43 +++++++---
src/org/fife/eclipse.xml | 4 +-
src/org/fife/eclipse_dark.xml | 79 +++++++++++++++++++
6 files changed, 127 insertions(+), 19 deletions(-)
create mode 100644 src/org/fife/eclipse_dark.xml
diff --git a/README.md b/README.md
index fb24b18..9308566 100644
--- a/README.md
+++ b/README.md
@@ -19,3 +19,5 @@ To (un-)escape unicode characters, press CTRL + U.
To rename a field/method with attention to references in the selected line, press CTRL + R.
To quickly compile some java code, press CTRL + E.
+
+To switch between light and dark theme, press CTRL + B.
diff --git a/src/me/ByteEdit/boxes/CompilationBox.java b/src/me/ByteEdit/boxes/CompilationBox.java
index 43aeeaa..fcd1409 100644
--- a/src/me/ByteEdit/boxes/CompilationBox.java
+++ b/src/me/ByteEdit/boxes/CompilationBox.java
@@ -56,7 +56,7 @@ public class CompilationBox extends JFrame {
setBounds((int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 2 - 400),
(int) (Toolkit.getDefaultToolkit().getScreenSize().getHeight() / 2 - 200), 800, 400);
contentPane = new JPanel();
- contentPane.setBackground(Color.GRAY);
+ contentPane.setBackground(Main.dark ? Color.DARK_GRAY : Color.GRAY);
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(new BorderLayout(0, 0));
@@ -65,13 +65,13 @@ public class CompilationBox extends JFrame {
textArea.setEditable(true);
textArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVA);
textArea.setCodeFoldingEnabled(true);
- textArea.setBackground(Color.LIGHT_GRAY);
+ textArea.setBackground(Main.dark ? Color.DARK_GRAY : Color.LIGHT_GRAY);
RTextScrollPane scrollPane = new RTextScrollPane();
scrollPane.setViewportView(textArea);
scrollPane.setLineNumbersEnabled(true);
scrollPane.setFoldIndicatorEnabled(true);
- scrollPane.getGutter().setBackground(Color.LIGHT_GRAY);
+ scrollPane.getGutter().setBackground(Main.dark ? Color.DARK_GRAY : Color.LIGHT_GRAY);
contentPane.add(scrollPane);
KeyStroke ctrlS = KeyStroke.getKeyStroke(KeyEvent.VK_S, KeyEvent.CTRL_DOWN_MASK);
@@ -106,8 +106,10 @@ public class CompilationBox extends JFrame {
}
compiler.getTask(outWriter, null, null,
- Arrays.asList("-d", tmpFolder.getAbsolutePath(), "-classpath",
- Main.jarFile.getAbsolutePath()),
+ Main.jarFile != null
+ ? Arrays.asList("-d", tmpFolder.getAbsolutePath(), "-classpath",
+ Main.jarFile.getAbsolutePath())
+ : Arrays.asList("-d", tmpFolder.getAbsolutePath()),
null, Arrays.asList(new JavaSourceFromString("Compiled", source))).call();
String res = out.toString();
if (res.isEmpty()) {
diff --git a/src/me/ByteEdit/boxes/CompilationSuccess.java b/src/me/ByteEdit/boxes/CompilationSuccess.java
index 1e52d66..464288e 100644
--- a/src/me/ByteEdit/boxes/CompilationSuccess.java
+++ b/src/me/ByteEdit/boxes/CompilationSuccess.java
@@ -61,7 +61,7 @@ public class CompilationSuccess extends JFrame {
setBounds((int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 2 - 400),
(int) (Toolkit.getDefaultToolkit().getScreenSize().getHeight() / 2 - 200), 800, 400);
contentPane = new JPanel();
- contentPane.setBackground(Color.GRAY);
+ contentPane.setBackground(Main.dark ? Color.DARK_GRAY : Color.GRAY);
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(new BorderLayout(0, 0));
@@ -70,13 +70,13 @@ public class CompilationSuccess extends JFrame {
textArea.setEditable(true);
textArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVA_DISASSEMBLE);
textArea.setCodeFoldingEnabled(true);
- textArea.setBackground(Color.LIGHT_GRAY);
+ textArea.setBackground(Main.dark ? Color.DARK_GRAY : Color.LIGHT_GRAY);
RTextScrollPane scrollPane = new RTextScrollPane();
scrollPane.setViewportView(textArea);
scrollPane.setLineNumbersEnabled(true);
scrollPane.setFoldIndicatorEnabled(true);
- scrollPane.getGutter().setBackground(Color.LIGHT_GRAY);
+ scrollPane.getGutter().setBackground(Main.dark ? Color.DARK_GRAY : Color.LIGHT_GRAY);
contentPane.add(scrollPane);
}
}
diff --git a/src/me/ByteEdit/main/Main.java b/src/me/ByteEdit/main/Main.java
index fd45118..a6b2d04 100644
--- a/src/me/ByteEdit/main/Main.java
+++ b/src/me/ByteEdit/main/Main.java
@@ -187,13 +187,20 @@ public class Main extends JFrame {
return provider;
}
+ public static boolean dark = true;
+
/**
* Create the frame.
*/
public Main() {
INSTANCE = this;
+ File light = new File(System.getProperty("java.io.tmpdir") + File.pathSeparator + "ByteEditLight.conf");
+ if (light.exists()) {
+ dark = false;
+ }
try {
- theme = Theme.load(getClass().getClassLoader().getResourceAsStream("org/fife/eclipse.xml"));
+ theme = Theme.load(getClass().getClassLoader()
+ .getResourceAsStream(dark ? "org/fife/eclipse_dark.xml" : "org/fife/eclipse.xml"));
} catch (IOException e2) {
e2.printStackTrace();
}
@@ -214,12 +221,12 @@ public class Main extends JFrame {
e.printStackTrace();
}
contentPane = new JPanel();
- contentPane.setBackground(Color.GRAY);
+ contentPane.setBackground(dark ? Color.DARK_GRAY : Color.GRAY);
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(new GridLayout(0, 1, 0, 0));
JSplitPane splitPane = new JSplitPane();
- splitPane.setBackground(Color.GRAY);
+ splitPane.setBackground(dark ? Color.DARK_GRAY : Color.GRAY);
splitPane.setResizeWeight(0.2);
contentPane.add(splitPane);
JScrollPane scrollPane = new JScrollPane();
@@ -275,13 +282,13 @@ public class Main extends JFrame {
}
});
tree.setFont(new Font("Verdana", Font.PLAIN, 11));
- tree.setBackground(Color.LIGHT_GRAY);
+ tree.setBackground(dark ? Color.DARK_GRAY : Color.LIGHT_GRAY);
if (tree.getCellRenderer() instanceof DefaultTreeCellRenderer) {
final DefaultTreeCellRenderer renderer = (DefaultTreeCellRenderer) (tree.getCellRenderer());
- renderer.setBackgroundNonSelectionColor(Color.LIGHT_GRAY);
+ renderer.setBackgroundNonSelectionColor(dark ? Color.DARK_GRAY : Color.LIGHT_GRAY);
renderer.setBackgroundSelectionColor(Color.GRAY);
- renderer.setTextNonSelectionColor(Color.BLACK);
- renderer.setTextSelectionColor(Color.BLACK);
+ renderer.setTextNonSelectionColor(dark ? new Color(0xeeeeee) : Color.BLACK);
+ renderer.setTextSelectionColor(dark ? new Color(0xeeeeee) : Color.BLACK);
}
scrollPane.setViewportView(tree);
tree.addTreeSelectionListener(new TreeSelectionListener() {
@@ -400,7 +407,25 @@ public class Main extends JFrame {
KeyStroke ctrlU = KeyStroke.getKeyStroke(KeyEvent.VK_U, KeyEvent.CTRL_DOWN_MASK);
KeyStroke ctrlR = KeyStroke.getKeyStroke(KeyEvent.VK_R, KeyEvent.CTRL_DOWN_MASK);
KeyStroke ctrlE = KeyStroke.getKeyStroke(KeyEvent.VK_E, KeyEvent.CTRL_DOWN_MASK);
+ KeyStroke ctrlB = KeyStroke.getKeyStroke(KeyEvent.VK_B, KeyEvent.CTRL_DOWN_MASK);
// global
+ txtByteEditView.registerKeyboardAction(new ActionListener() {
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ if (light.exists())
+ light.delete();
+ else
+ try {
+ light.createNewFile();
+ } catch (IOException e1) {
+ }
+ dark = !dark;
+ JOptionPane.showMessageDialog(Main.this,
+ "Theme switched to " + (dark ? "Dark" : "Light") + ".\nPlease restart ByteEdit.",
+ "Theme changed", JOptionPane.INFORMATION_MESSAGE);
+ }
+ }, ctrlB, JComponent.WHEN_IN_FOCUSED_WINDOW);
txtByteEditView.registerKeyboardAction(new ActionListener() {
@Override
@@ -493,11 +518,11 @@ public class Main extends JFrame {
theme.apply(txtByteEditView);
splitPane.setRightComponent(scrollPane_ByteEdit);
- txtByteEditView.setBackground(Color.LIGHT_GRAY);
+ txtByteEditView.setBackground(dark ? Color.DARK_GRAY : Color.LIGHT_GRAY);
scrollPane_ByteEdit.setViewportView(txtByteEditView);
scrollPane_ByteEdit.setLineNumbersEnabled(true);
scrollPane_ByteEdit.setFoldIndicatorEnabled(true);
- scrollPane_ByteEdit.getGutter().setBackground(Color.LIGHT_GRAY);
+ scrollPane_ByteEdit.getGutter().setBackground(dark ? Color.DARK_GRAY : Color.LIGHT_GRAY);
}
private final Pattern jumpableInstructionPattern = Pattern.compile("^\t\t(?!//|\t+).+ .+");
diff --git a/src/org/fife/eclipse.xml b/src/org/fife/eclipse.xml
index 833ac4b..7b904f7 100644
--- a/src/org/fife/eclipse.xml
+++ b/src/org/fife/eclipse.xml
@@ -14,7 +14,7 @@
-
+
@@ -39,7 +39,7 @@
-
+
diff --git a/src/org/fife/eclipse_dark.xml b/src/org/fife/eclipse_dark.xml
new file mode 100644
index 0000000..edd62e7
--- /dev/null
+++ b/src/org/fife/eclipse_dark.xml
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+