diff --git a/src/main/java/com/annimon/imagetagger/logic/KeyProcessor.java b/src/main/java/com/annimon/imagetagger/logic/KeyProcessor.java index de7d1d0..1f37445 100644 --- a/src/main/java/com/annimon/imagetagger/logic/KeyProcessor.java +++ b/src/main/java/com/annimon/imagetagger/logic/KeyProcessor.java @@ -3,6 +3,8 @@ package com.annimon.imagetagger.logic; import com.annimon.imagetagger.beans.TagButton; import com.annimon.imagetagger.views.ImagePanel; import com.annimon.imagetagger.views.TagPanel; +import com.annimon.imagetagger.views.UIUtils; + import java.awt.*; import java.awt.event.KeyEvent; import java.util.List; @@ -55,6 +57,15 @@ public class KeyProcessor { case KeyEvent.VK_F3: changeBackground(); break; + // Ctrl+Plus / Ctrl+Minus + case KeyEvent.VK_ADD: + case KeyEvent.VK_EQUALS: + case KeyEvent.VK_MINUS: + if ((e.getModifiersEx() & KeyEvent.CTRL_DOWN_MASK) == 0) break; + final float delta = (e.getKeyCode() == KeyEvent.VK_MINUS) ? -0.5f : 0.5f; + UIUtils.changeFontSize(imagePanel, delta); + tagPanel.changeFontSize(delta); + break; default: final var key = getKeyAsString(e); if (keys.contains(key)) { diff --git a/src/main/java/com/annimon/imagetagger/views/TagPanel.java b/src/main/java/com/annimon/imagetagger/views/TagPanel.java index 0739b06..0dfea0d 100644 --- a/src/main/java/com/annimon/imagetagger/views/TagPanel.java +++ b/src/main/java/com/annimon/imagetagger/views/TagPanel.java @@ -2,6 +2,7 @@ package com.annimon.imagetagger.views; import com.annimon.imagetagger.beans.TagButton; import com.annimon.imagetagger.beans.TagButtonHolder; + import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -64,4 +65,9 @@ public class TagPanel extends JPanel { label.setToggled(containsTag); }); } + + public void changeFontSize(float delta) { + tagButtons.values().forEach(btn -> UIUtils.changeFontSize(btn.getLabel(), delta)); + UIUtils.changeFontSize(this, delta); + } } diff --git a/src/main/java/com/annimon/imagetagger/views/UIUtils.java b/src/main/java/com/annimon/imagetagger/views/UIUtils.java new file mode 100644 index 0000000..159a620 --- /dev/null +++ b/src/main/java/com/annimon/imagetagger/views/UIUtils.java @@ -0,0 +1,18 @@ +package com.annimon.imagetagger.views; + +import java.awt.*; + +public class UIUtils { + + public static void changeFontSize(Component component, float delta) { + final var font = component.getFont(); + if (font == null) return; + + final float size = font.getSize2D() + delta; + if (size <= 6) return; + if (size >= 32) return; + + component.setFont(font.deriveFont(size)); + component.repaint(); + } +}