diff --git a/app/src/processing/app/Base.java b/app/src/processing/app/Base.java index c930cc85f96..8c772de8f3e 100644 --- a/app/src/processing/app/Base.java +++ b/app/src/processing/app/Base.java @@ -1839,6 +1839,17 @@ public void handlePrefs() { dialog.setVisible(true); } + /** + * Adjust font size + */ + public void handleFontSizeChange(int change) { + String pieces[] = PApplet.split(PreferencesData.get("editor.font"), ','); + int newSize = Integer.parseInt(pieces[2]) + change; + pieces[2] = String.valueOf(newSize); + PreferencesData.set("editor.font", PApplet.join(pieces, ',')); + this.getEditors().forEach(processing.app.Editor::applyPreferences); + } + // XXX: Remove this method and make librariesIndexer non-static static public LibraryList getLibraries() { return BaseNoGui.librariesIndexer.getInstalledLibraries(); diff --git a/app/src/processing/app/Editor.java b/app/src/processing/app/Editor.java index e68ca47783b..4d2be279f23 100644 --- a/app/src/processing/app/Editor.java +++ b/app/src/processing/app/Editor.java @@ -1374,6 +1374,24 @@ public void actionPerformed(ActionEvent e) { menu.addSeparator(); + JMenuItem increaseFontSizeItem = newJMenuItem(tr("Increase Font Size"), '+'); + increaseFontSizeItem.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + base.handleFontSizeChange(1); + } + }); + menu.add(increaseFontSizeItem); + + JMenuItem decreaseFontSizeItem = newJMenuItem(tr("Decrease Font Size"), '-'); + decreaseFontSizeItem.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + base.handleFontSizeChange(-1); + } + }); + menu.add(decreaseFontSizeItem); + + menu.addSeparator(); + JMenuItem findItem = newJMenuItem(tr("Find..."), 'F'); findItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { diff --git a/app/src/processing/app/EditorTab.java b/app/src/processing/app/EditorTab.java index eab701d80a0..33dabdbbbc2 100644 --- a/app/src/processing/app/EditorTab.java +++ b/app/src/processing/app/EditorTab.java @@ -30,6 +30,9 @@ import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.MouseWheelListener; +import java.awt.event.MouseWheelEvent; + import java.io.IOException; import javax.swing.Action; @@ -64,7 +67,7 @@ /** * Single tab, editing a single file, in the main window. */ -public class EditorTab extends JPanel implements SketchFile.TextStorage { +public class EditorTab extends JPanel implements SketchFile.TextStorage, MouseWheelListener { protected Editor editor; protected SketchTextArea textarea; protected RTextScrollPane scrollPane; @@ -106,6 +109,7 @@ public EditorTab(Editor editor, SketchFile file, String contents) file.setStorage(this); applyPreferences(); add(scrollPane, BorderLayout.CENTER); + textarea.addMouseWheelListener(this); } private RSyntaxDocument createDocument(String contents) { @@ -178,6 +182,18 @@ private SketchTextArea createTextArea(RSyntaxDocument document) return textArea; } + public void mouseWheelMoved(MouseWheelEvent e) { + if (e.isControlDown()) { + if (e.getWheelRotation() < 0) { + editor.base.handleFontSizeChange(1); + } else { + editor.base.handleFontSizeChange(-1); + } + } else { + e.getComponent().getParent().dispatchEvent(e); + } + } + private void configurePopupMenu(final SketchTextArea textarea){ JPopupMenu menu = textarea.getPopupMenu();