KickJava   Java API By Example, From Geeks To Geeks.

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


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.PropertyChangeEvent JavaDoc;
34 import java.beans.PropertyChangeListener JavaDoc;
35
36 import javax.swing.JComponent JavaDoc;
37 import javax.swing.JScrollPane JavaDoc;
38 import javax.swing.LookAndFeel JavaDoc;
39 import javax.swing.plaf.ComponentUI JavaDoc;
40
41 import com.jgoodies.looks.Options;
42
43 /**
44  * The JGoodies Windows L&amp;F implementation of <code>ScrollPaneUI</code>.
45  * Installs an etched border if the client property
46  * <code>Options.IS_ETCHED_KEY</code> is set.
47  *
48  * @author Karsten Lentzsch
49  * @version $Revision: 1.2 $
50  *
51  * @see com.jgoodies.looks.Options#IS_ETCHED_KEY
52  */

53 public final class WindowsScrollPaneUI extends com.sun.java.swing.plaf.windows.WindowsScrollPaneUI {
54
55     private PropertyChangeListener JavaDoc borderStyleChangeHandler;
56
57     public static ComponentUI JavaDoc createUI(JComponent JavaDoc b) {
58         return new WindowsScrollPaneUI();
59     }
60
61     protected void installDefaults(JScrollPane JavaDoc scrollPane) {
62         super.installDefaults(scrollPane);
63         installEtchedBorder(scrollPane);
64     }
65
66     protected void installEtchedBorder(JScrollPane JavaDoc scrollPane) {
67         Object JavaDoc value = scrollPane.getClientProperty(Options.IS_ETCHED_KEY);
68         boolean hasEtchedBorder = Boolean.TRUE.equals(value);
69         LookAndFeel.installBorder(scrollPane,
70                 hasEtchedBorder
71                     ? "ScrollPane.etchedBorder"
72                     : "ScrollPane.border");
73     }
74
75
76     // Managing the Etched Property *******************************************
77

78     public void installListeners(JScrollPane JavaDoc scrollPane) {
79         super.installListeners(scrollPane);
80         borderStyleChangeHandler = new BorderStyleChangeHandler();
81         scrollPane.addPropertyChangeListener(Options.IS_ETCHED_KEY, borderStyleChangeHandler);
82     }
83
84     protected void uninstallListeners(JComponent JavaDoc c) {
85         ((JScrollPane JavaDoc) c).removePropertyChangeListener(Options.IS_ETCHED_KEY,
86                 borderStyleChangeHandler);
87         super.uninstallListeners(c);
88     }
89
90     private class BorderStyleChangeHandler implements PropertyChangeListener JavaDoc {
91
92         public void propertyChange(PropertyChangeEvent JavaDoc evt) {
93             JScrollPane JavaDoc scrollPane = (JScrollPane JavaDoc) evt.getSource();
94             installEtchedBorder(scrollPane);
95         }
96
97     }
98
99 }
Popular Tags