Frames | No Frames |
1: /** 2: * ======================================== 3: * JFreeReport : a free Java report library 4: * ======================================== 5: * 6: * Project Info: http://reporting.pentaho.org/ 7: * 8: * (C) Copyright 2000-2007, by Object Refinery Limited, Pentaho Corporation and Contributors. 9: * 10: * This library is free software; you can redistribute it and/or modify it under the terms 11: * of the GNU Lesser General Public License as published by the Free Software Foundation; 12: * either version 2.1 of the License, or (at your option) any later version. 13: * 14: * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 15: * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16: * See the GNU Lesser General Public License for more details. 17: * 18: * You should have received a copy of the GNU Lesser General Public License along with this 19: * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, 20: * Boston, MA 02111-1307, USA. 21: * 22: * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 23: * in the United States and other countries.] 24: * 25: * ------------ 26: * $Id: WindowSizeLimiter.java 2725 2007-04-01 18:49:29Z taqua $ 27: * ------------ 28: * (C) Copyright 2000-2005, by Object Refinery Limited. 29: * (C) Copyright 2005-2007, by Pentaho Corporation. 30: */ 31: 32: package org.jfree.report.modules.gui.swing.common; 33: 34: import java.awt.Component; 35: import java.awt.Dimension; 36: import java.awt.event.ComponentAdapter; 37: import java.awt.event.ComponentEvent; 38: 39: /** 40: * A small helper class to limit the maximum size of an element to the elements maximum 41: * size. If the element is resized, the defined maximum size is enforced on the element. 42: * 43: * @author Thomas Morgner 44: */ 45: public class WindowSizeLimiter extends ComponentAdapter 46: { 47: /** 48: * The current source. 49: */ 50: private Object currentSource; 51: 52: /** 53: * Default-Constructor. 54: */ 55: public WindowSizeLimiter() 56: { 57: 58: } 59: 60: /** 61: * Invoked when the component's size changes. 62: * 63: * @param e the event. 64: */ 65: public void componentResized (final ComponentEvent e) 66: { 67: if (e.getSource() == currentSource) 68: { 69: return; 70: } 71: 72: if (e.getSource() instanceof Component) 73: { 74: currentSource = e.getSource(); 75: final Component c = (Component) e.getSource(); 76: final Dimension d = c.getMaximumSize(); 77: final Dimension s = c.getSize(); 78: if (s.width > d.width) 79: { 80: s.width = d.width; 81: } 82: if (s.height > d.height) 83: { 84: s.height = d.height; 85: } 86: c.setSize(s); 87: currentSource = null; 88: } 89: 90: } 91: }