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 }