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 @@