KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jgoodies > looks > windows > WindowsButtonUI


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.windows;
32
33 import java.beans.PropertyChangeListener JavaDoc;
34
35 import javax.swing.AbstractButton JavaDoc;
36 import javax.swing.JComponent JavaDoc;
37 import javax.swing.plaf.ComponentUI JavaDoc;
38
39 import com.jgoodies.looks.LookUtils;
40 import com.jgoodies.looks.Options;
41 import com.jgoodies.looks.common.ButtonMarginListener;
42
43 /**
44  * The JGoodies Windows L&amp;F implementation of <code>ButtonUI</code>.
45  * It differs from its superclass in that it it listens to the
46  * <code>jgoodies.isNarrow</code> property to choose an appropriate margin.
47  *
48  * @author Karsten Lentzsch
49  * @version $Revision: 1.3 $
50  *
51  * @see com.jgoodies.looks.Options#IS_NARROW_KEY
52  */

53 public final class WindowsButtonUI extends com.sun.java.swing.plaf.windows.WindowsButtonUI {
54
55     private static final WindowsButtonUI INSTANCE = new WindowsButtonUI();
56
57     private PropertyChangeListener JavaDoc buttonMarginListener;
58     
59     public static ComponentUI JavaDoc createUI(JComponent JavaDoc b) {
60         return INSTANCE;
61     }
62
63     /**
64      * Installs defaults and honors the client property <code>isNarrow</code>.
65      */

66     protected void installDefaults(AbstractButton JavaDoc b) {
67         super.installDefaults(b);
68         LookUtils.installNarrowMargin(b, getPropertyPrefix());
69     }
70
71     /**
72      * Installs an extra listener for a change of the isNarrow property.
73      */

74     public void installListeners(AbstractButton JavaDoc b) {
75         super.installListeners(b);
76         if (buttonMarginListener == null) {
77             buttonMarginListener = new ButtonMarginListener(getPropertyPrefix());
78         }
79         b.addPropertyChangeListener(Options.IS_NARROW_KEY, buttonMarginListener);
80     }
81
82     /**
83      * Uninstalls the extra listener for a change of the isNarrow property.
84      */

85     public void uninstallListeners(AbstractButton JavaDoc b) {
86         super.uninstallListeners(b);
87         b.removePropertyChangeListener(buttonMarginListener);
88     }
89
90 }
Popular Tags