diff options
author | Simon Rettberg | 2015-08-11 14:25:08 +0200 |
---|---|---|
committer | Simon Rettberg | 2015-08-11 14:25:08 +0200 |
commit | 7b5835e9ca985bca3b7df64f2a321f4a7f10e7b8 (patch) | |
tree | 14fa1dc3913389dd8c55b7e992884081d639dd5d /dozentenmodul/src/main/java/org/openslx/dozmod/App.java | |
parent | [client] BlockProgressBar: Proper label positioning, anti-alias text (diff) | |
download | tutor-module-7b5835e9ca985bca3b7df64f2a321f4a7f10e7b8.tar.gz tutor-module-7b5835e9ca985bca3b7df64f2a321f4a7f10e7b8.tar.xz tutor-module-7b5835e9ca985bca3b7df64f2a321f4a7f10e7b8.zip |
[client] Experimental code for adjusting font size
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/App.java')
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/App.java | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/App.java b/dozentenmodul/src/main/java/org/openslx/dozmod/App.java index 27766ad4..29e6d961 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/App.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/App.java @@ -1,11 +1,20 @@ package org.openslx.dozmod; +import java.awt.AWTEvent; +import java.awt.Font; +import java.awt.Toolkit; +import java.awt.event.AWTEventListener; +import java.awt.event.ComponentEvent; +import java.awt.event.ContainerEvent; import java.io.File; import java.io.IOException; +import java.util.HashSet; +import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.swing.SwingUtilities; +import javax.swing.UIDefaults; import javax.swing.UIManager; import org.apache.log4j.AppenderSkeleton; @@ -125,6 +134,10 @@ public class App { } catch (Exception e) { } } + // Adjust font size + if (System.getProperty("bigfont") != null) { + adjustFontSize(); + } // setup global thrift connection error handler before anything else // Set master server to use (TODO: make configurable via command line) @@ -151,6 +164,59 @@ public class App { Util.sleep(1000); } + private static void adjustFontSize() { + int size = determineDefaultFontSize(UIManager.getLookAndFeelDefaults()); + if (size == -1) { + size = determineDefaultFontSize(UIManager.getDefaults()); + } + if (size == -1) { + size = 12; + } + final int defaultSize = size; + Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() { + @Override + public void eventDispatched(AWTEvent event) { + if (event instanceof ContainerEvent && event instanceof ComponentEvent) { + ContainerEvent containerEvent = (ContainerEvent) event; + if (containerEvent.getID() == ContainerEvent.COMPONENT_ADDED) { + Font font = containerEvent.getChild().getFont(); + if (font != null && font.getSize() <= defaultSize) { + containerEvent.getChild().setFont( + new Font(font.getName(), font.getStyle(), font.getSize() * 2)); + } + } + } + } + }, AWTEvent.COMPONENT_EVENT_MASK | AWTEvent.CONTAINER_EVENT_MASK); + } + + private static int determineDefaultFontSize(UIDefaults defaults) { + if (defaults == null) + return -1; + int sizes[] = new int[100]; + Set<Object> keys = new HashSet<>(defaults.keySet()); + for (Object key : keys) { + if (key == null) + continue; + Object value = defaults.get(key); + if (value == null) + continue; + if (value instanceof Font) { + Font font = (Font) value; + if (font.getSize() > 0 && font.getSize() < sizes.length) { + sizes[font.getSize()]++; + } + } + } + int best = -1; + for (int index = 0; index < sizes.length; ++index) { + if (best == -1 || sizes[best] < sizes[index]) { + best = index; + } + } + return sizes[best]; + } + /** * Blocks as long as initialization is still going on. Currently this is * just the proxy setup, so this should be used before any network |