summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/App.java
diff options
context:
space:
mode:
authorSimon Rettberg2015-08-11 14:25:08 +0200
committerSimon Rettberg2015-08-11 14:25:08 +0200
commit7b5835e9ca985bca3b7df64f2a321f4a7f10e7b8 (patch)
tree14fa1dc3913389dd8c55b7e992884081d639dd5d /dozentenmodul/src/main/java/org/openslx/dozmod/App.java
parent[client] BlockProgressBar: Proper label positioning, anti-alias text (diff)
downloadtutor-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.java66
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