KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jgoodies > looks > common > MinimumSizedIcon


1 /*
2  * Copyright (c) 2001-2005 JGoodies Karsten Lentzsch. All Rights Reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are met:
6  *
7  * o Redistributions of source code must retain the above copyright notice,
8  * this list of conditions and the following disclaimer.
9  *
10  * o Redistributions in binary form must reproduce the above copyright notice,
11  * this list of conditions and the following disclaimer in the documentation
12  * and/or other materials provided with the distribution.
13  *
14  * o Neither the name of JGoodies Karsten Lentzsch nor the names of
15  * its contributors may be used to endorse or promote products derived
16  * from this software without specific prior written permission.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
20  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
22  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
25  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
26  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
27  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
28  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */

30
31 package com.jgoodies.looks.common;
32
33 import java.awt.Component JavaDoc;
34 import java.awt.Dimension JavaDoc;
35 import java.awt.Graphics JavaDoc;
36
37 import javax.swing.Icon JavaDoc;
38
39 import com.jgoodies.looks.Options;
40
41 /**
42  * An <code>Icon</code> with a minimum size that is read from the
43  * <code>UIManager</code> <code>defaultIconSize</code> key.
44  *
45  * @author Karsten Lentzsch
46  * @version $Revision: 1.2 $
47  */

48
49 public class MinimumSizedIcon implements Icon JavaDoc {
50     
51     private final Icon JavaDoc icon;
52     private final int width;
53     private final int height;
54     private final int xOffset;
55     private final int yOffset;
56     
57     
58     public MinimumSizedIcon() {
59         this(null);
60     }
61     
62     public MinimumSizedIcon(Icon JavaDoc icon) {
63         Dimension JavaDoc minimumSize = Options.getDefaultIconSize();
64         this.icon = icon;
65         int iconWidth = icon == null ? 0 : icon.getIconWidth();
66         int iconHeight = icon == null ? 0 : icon.getIconHeight();
67         width = Math.max(iconWidth, Math.max(20, minimumSize.width));
68         height = Math.max(iconHeight, Math.max(20, minimumSize.height));
69         xOffset = Math.max(0, (width - iconWidth) / 2);
70         yOffset = Math.max(0, (height - iconHeight) / 2);
71     }
72     
73     
74     public int getIconHeight() { return height; }
75     public int getIconWidth() { return width; }
76     
77     
78     public void paintIcon(Component JavaDoc c, Graphics JavaDoc g, int x, int y) {
79         if (icon != null)
80             icon.paintIcon(c, g, x + xOffset, y + yOffset);
81     }
82     
83     
84 }
Popular Tags