001 /*
002 * Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
003 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
004 *
005 * This code is free software; you can redistribute it and/or modify it
006 * under the terms of the GNU General Public License version 2 only, as
007 * published by the Free Software Foundation. Sun designates this
008 * particular file as subject to the "Classpath" exception as provided
009 * by Sun in the LICENSE file that accompanied this code.
010 *
011 * This code is distributed in the hope that it will be useful, but WITHOUT
012 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
013 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
014 * version 2 for more details (a copy is included in the LICENSE file that
015 * accompanied this code).
016 *
017 * You should have received a copy of the GNU General Public License version
018 * 2 along with this work; if not, write to the Free Software Foundation,
019 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
020 *
021 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
022 * CA 95054 USA or visit www.sun.com if you need additional information or
023 * have any questions.
024 */
025
026 package javax.swing.plaf.basic;
027
028 import java.awt.*;
029 import javax.swing.*;
030 import javax.swing.border.*;
031 import javax.swing.plaf.*;
032 import java.awt.*;
033 import java.awt.event.*;
034
035 /**
036 * BasicPanel implementation
037 *
038 * @version 1.19 05/05/07
039 * @author Steve Wilson
040 */
041 public class BasicPanelUI extends PanelUI {
042
043 // Shared UI object
044 private static PanelUI panelUI;
045
046 public static ComponentUI createUI(JComponent c) {
047 if (panelUI == null) {
048 panelUI = new BasicPanelUI();
049 }
050 return panelUI;
051 }
052
053 public void installUI(JComponent c) {
054 JPanel p = (JPanel) c;
055 super .installUI(p);
056 installDefaults(p);
057 }
058
059 public void uninstallUI(JComponent c) {
060 JPanel p = (JPanel) c;
061 uninstallDefaults(p);
062 super .uninstallUI(c);
063 }
064
065 protected void installDefaults(JPanel p) {
066 LookAndFeel.installColorsAndFont(p, "Panel.background",
067 "Panel.foreground", "Panel.font");
068 LookAndFeel.installBorder(p, "Panel.border");
069 LookAndFeel.installProperty(p, "opaque", Boolean.TRUE);
070 }
071
072 protected void uninstallDefaults(JPanel p) {
073 LookAndFeel.uninstallBorder(p);
074 }
075
076 /**
077 * Returns the baseline.
078 *
079 * @throws NullPointerException {@inheritDoc}
080 * @throws IllegalArgumentException {@inheritDoc}
081 * @see javax.swing.JComponent#getBaseline(int, int)
082 * @since 1.6
083 */
084 public int getBaseline(JComponent c, int width, int height) {
085 super .getBaseline(c, width, height);
086 Border border = c.getBorder();
087 if (border instanceof AbstractBorder) {
088 return ((AbstractBorder) border).getBaseline(c, width,
089 height);
090 }
091 return -1;
092 }
093
094 /**
095 * Returns an enum indicating how the baseline of the component
096 * changes as the size changes.
097 *
098 * @throws NullPointerException {@inheritDoc}
099 * @see javax.swing.JComponent#getBaseline(int, int)
100 * @since 1.6
101 */
102 public Component.BaselineResizeBehavior getBaselineResizeBehavior(
103 JComponent c) {
104 super .getBaselineResizeBehavior(c);
105 Border border = c.getBorder();
106 if (border instanceof AbstractBorder) {
107 return ((AbstractBorder) border)
108 .getBaselineResizeBehavior(c);
109 }
110 return Component.BaselineResizeBehavior.OTHER;
111 }
112 }
|