001 package org.springframework.richclient.util;
002
003 import java.awt.Font;
004
005 import javax.swing.JLabel;
006 import javax.swing.SwingUtilities;
007 import javax.swing.UIManager;
008 import javax.swing.plaf.FontUIResource;
009
010 import org.springframework.richclient.application.Application;
011 import org.springframework.richclient.application.ApplicationWindow;
012 import org.springframework.richclient.command.ActionCommand;
013
014 import com.jgoodies.forms.layout.Sizes;
015
016 public class AdjustFontSizeCommand extends ActionCommand {
017 private double fontAdjustment = +1.0d;
018
019 public double getFontAdjustment() {
020 return this.fontAdjustment;
021 }
022
023 public void setFontAdjustment(final double fontAdjustment) {
024 this.fontAdjustment = fontAdjustment;
025 }
026
027 protected void adjustFont(final double adjustAmount) {
028 System.out.println(Sizes.getUnitConverter().dialogUnitYAsPixel(10, new JLabel()));
029 final Object[] objs = UIManager.getLookAndFeel().getDefaults().keySet().toArray();
030 for (int i = 0; i < objs.length; i++) {
031 if (objs[i].toString().toUpperCase().indexOf("FONT") != -1) {
032 final Font font = UIManager.getFont(objs[i]);
033 UIManager.put(objs[i], new FontUIResource(font.deriveFont((float)(font.getSize() + adjustAmount))));
034 }
035 }
036 System.out.println(Sizes.getUnitConverter().dialogUnitYAsPixel(10, new JLabel()));
037 ApplicationWindow[] applicationWindows = Application.instance().getWindowManager().getWindows();
038 for (int i = 0; i < applicationWindows.length; i++) {
039 ApplicationWindow window = applicationWindows[i];
040 SwingUtilities.updateComponentTreeUI(window.getControl());
041 window.getControl().repaint();
042 }
043 }
044
045 protected void doExecuteCommand() {
046 final double fontAdjustment;
047
048 final Object fontAdjustmentParam = getParameter("fontAdjustment");
049 if (fontAdjustmentParam != null) {
050 if (fontAdjustmentParam instanceof Number) {
051 fontAdjustment = ((Number)fontAdjustmentParam).doubleValue();
052 }
053 else {
054 fontAdjustment = Double.parseDouble(fontAdjustmentParam.toString());
055 }
056 }
057 else {
058 fontAdjustment = getFontAdjustment();
059 }
060
061 adjustFont(fontAdjustment);
062 }
063 }