1 /*
2 * Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Sun designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Sun in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22 * CA 95054 USA or visit www.sun.com if you need additional information or
23 * have any questions.
24 */
25
26 package javax.swing.plaf.basic;
27
28 import java.awt;
29 import javax.swing;
30 import javax.swing.border;
31 import javax.swing.plaf;
32 import java.awt;
33 import java.awt.event;
34
35
36 /**
37 * BasicPanel implementation
38 *
39 * @author Steve Wilson
40 */
41 public class BasicPanelUI extends PanelUI {
42
43 // Shared UI object
44 private static PanelUI panelUI;
45
46 public static ComponentUI createUI(JComponent c) {
47 if(panelUI == null) {
48 panelUI = new BasicPanelUI();
49 }
50 return panelUI;
51 }
52
53 public void installUI(JComponent c) {
54 JPanel p = (JPanel)c;
55 super.installUI(p);
56 installDefaults(p);
57 }
58
59 public void uninstallUI(JComponent c) {
60 JPanel p = (JPanel)c;
61 uninstallDefaults(p);
62 super.uninstallUI(c);
63 }
64
65 protected void installDefaults(JPanel p) {
66 LookAndFeel.installColorsAndFont(p,
67 "Panel.background",
68 "Panel.foreground",
69 "Panel.font");
70 LookAndFeel.installBorder(p,"Panel.border");
71 LookAndFeel.installProperty(p, "opaque", Boolean.TRUE);
72 }
73
74 protected void uninstallDefaults(JPanel p) {
75 LookAndFeel.uninstallBorder(p);
76 }
77
78
79 /**
80 * Returns the baseline.
81 *
82 * @throws NullPointerException {@inheritDoc}
83 * @throws IllegalArgumentException {@inheritDoc}
84 * @see javax.swing.JComponent#getBaseline(int, int)
85 * @since 1.6
86 */
87 public int getBaseline(JComponent c, int width, int height) {
88 super.getBaseline(c, width, height);
89 Border border = c.getBorder();
90 if (border instanceof AbstractBorder) {
91 return ((AbstractBorder)border).getBaseline(c, width, height);
92 }
93 return -1;
94 }
95
96 /**
97 * Returns an enum indicating how the baseline of the component
98 * changes as the size changes.
99 *
100 * @throws NullPointerException {@inheritDoc}
101 * @see javax.swing.JComponent#getBaseline(int, int)
102 * @since 1.6
103 */
104 public Component.BaselineResizeBehavior getBaselineResizeBehavior(
105 JComponent c) {
106 super.getBaselineResizeBehavior(c);
107 Border border = c.getBorder();
108 if (border instanceof AbstractBorder) {
109 return ((AbstractBorder)border).getBaselineResizeBehavior(c);
110 }
111 return Component.BaselineResizeBehavior.OTHER;
112 }
113 }