From 5018a1f9eb53becbe99aa6f69482ff8477c64b1a Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Sun, 8 Aug 2021 18:44:44 +0200 Subject: [PATCH] Theme Editor: increase/decrease editor font size --- .../themeeditor/FlatThemeEditorPane.java | 9 ++++ .../themeeditor/FlatThemeFileEditor.java | 53 +++++++++++++++++++ .../themeeditor/FlatThemeFileEditor.jfd | 21 ++++++++ 3 files changed, 83 insertions(+) diff --git a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeEditorPane.java b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeEditorPane.java index 0e1c0c1b..fe16226d 100644 --- a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeEditorPane.java +++ b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeEditorPane.java @@ -146,6 +146,15 @@ class FlatThemeEditorPane errorStrip.setCaretMarkerColor( UIManager.getColor( "FlatThemeEditorPane.errorstrip.caretMarkerColor" ) ); } + void updateFontSize( int sizeIncr ) { + Font defaultFont = RTextArea.getDefaultFont(); + Font font = defaultFont.deriveFont( (float) UIManager.getFont( "defaultFont" ).getSize() + sizeIncr ); + + textArea.setFont( font ); + textArea.setSyntaxScheme( new FlatSyntaxScheme( font ) ); + scrollPane.getGutter().setLineNumberFont( font ); + } + @Override public boolean requestFocusInWindow() { return textArea.requestFocusInWindow(); diff --git a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeFileEditor.java b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeFileEditor.java index 9346aa35..93f3b516 100644 --- a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeFileEditor.java +++ b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeFileEditor.java @@ -62,6 +62,7 @@ public class FlatThemeFileEditor private static final String KEY_RECENT_FILE = "recentFile"; private static final String KEY_WINDOW_BOUNDS = "windowBounds"; private static final String KEY_LAF = "laf"; + private static final String KEY_FONT_SIZE_INCR = "fontSizeIncr"; private File dir; private Preferences state; @@ -374,6 +375,33 @@ public class FlatThemeFileEditor } } + private void incrFontSize() { + applyFontSizeIncr( getFontSizeIncr() + 1 ); + } + + private void decrFontSize() { + applyFontSizeIncr( getFontSizeIncr() - 1 ); + } + + private void resetFontSize() { + applyFontSizeIncr( 0 ); + } + + private void applyFontSizeIncr( int sizeIncr ) { + if( sizeIncr < -5 ) + sizeIncr = -5; + if( sizeIncr == getFontSizeIncr() ) + return; + + for( FlatThemeEditorPane themeEditorPane : getThemeEditorPanes() ) + themeEditorPane.updateFontSize( sizeIncr ); + state.putInt( KEY_FONT_SIZE_INCR, sizeIncr ); + } + + private int getFontSizeIncr() { + return state.getInt( KEY_FONT_SIZE_INCR, 0 ); + } + private void restoreState() { state = Preferences.userRoot().node( PREFS_ROOT_PATH ); @@ -477,6 +505,9 @@ public class FlatThemeFileEditor viewMenu = new JMenu(); lightLafMenuItem = new JRadioButtonMenuItem(); darkLafMenuItem = new JRadioButtonMenuItem(); + incrFontSizeMenuItem = new JMenuItem(); + decrFontSizeMenuItem = new JMenuItem(); + resetFontSizeMenuItem = new JMenuItem(); windowMenu = new JMenu(); nextEditorMenuItem = new JMenuItem(); previousEditorMenuItem = new JMenuItem(); @@ -570,6 +601,25 @@ public class FlatThemeFileEditor darkLafMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F12, 0)); darkLafMenuItem.addActionListener(e -> darkLaf()); viewMenu.add(darkLafMenuItem); + viewMenu.addSeparator(); + + //---- incrFontSizeMenuItem ---- + incrFontSizeMenuItem.setText("Increase Font Size"); + incrFontSizeMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); + incrFontSizeMenuItem.addActionListener(e -> incrFontSize()); + viewMenu.add(incrFontSizeMenuItem); + + //---- decrFontSizeMenuItem ---- + decrFontSizeMenuItem.setText("Decrease Font Size"); + decrFontSizeMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); + decrFontSizeMenuItem.addActionListener(e -> decrFontSize()); + viewMenu.add(decrFontSizeMenuItem); + + //---- resetFontSizeMenuItem ---- + resetFontSizeMenuItem.setText("Reset Font Size"); + resetFontSizeMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_0, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); + resetFontSizeMenuItem.addActionListener(e -> resetFontSize()); + viewMenu.add(resetFontSizeMenuItem); } menuBar.add(viewMenu); @@ -650,6 +700,9 @@ public class FlatThemeFileEditor private JMenu viewMenu; private JRadioButtonMenuItem lightLafMenuItem; private JRadioButtonMenuItem darkLafMenuItem; + private JMenuItem incrFontSizeMenuItem; + private JMenuItem decrFontSizeMenuItem; + private JMenuItem resetFontSizeMenuItem; private JMenu windowMenu; private JMenuItem nextEditorMenuItem; private JMenuItem previousEditorMenuItem; diff --git a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeFileEditor.jfd b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeFileEditor.jfd index 88d5d5f1..982f2848 100644 --- a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeFileEditor.jfd +++ b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeFileEditor.jfd @@ -116,6 +116,27 @@ new FormModel { "accelerator": static javax.swing.KeyStroke getKeyStroke( 123, 0, false ) addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "darkLaf", false ) ) } ) + add( new FormComponent( "javax.swing.JPopupMenu$Separator" ) { + name: "separator2" + } ) + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "incrFontSizeMenuItem" + "text": "Increase Font Size" + "accelerator": static javax.swing.KeyStroke getKeyStroke( 521, 4226, false ) + addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "incrFontSize", false ) ) + } ) + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "decrFontSizeMenuItem" + "text": "Decrease Font Size" + "accelerator": static javax.swing.KeyStroke getKeyStroke( 45, 4226, false ) + addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "decrFontSize", false ) ) + } ) + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "resetFontSizeMenuItem" + "text": "Reset Font Size" + "accelerator": static javax.swing.KeyStroke getKeyStroke( 48, 4226, false ) + addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "resetFontSize", false ) ) + } ) } ) add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) { name: "windowMenu"