Index: javax/swing/plaf/metal/MetalTheme.java =================================================================== RCS file: javax/swing/plaf/metal/MetalTheme.java diff -N javax/swing/plaf/metal/MetalTheme.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ javax/swing/plaf/metal/MetalTheme.java 22 Dec 2004 16:52:33 -0000 @@ -0,0 +1,249 @@ +/* MetalTheme.java -- + Copyright (C) 2004 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + + + +package javax.swing.plaf.metal; + +import javax.swing.UIDefaults; +import javax.swing.plaf.ColorUIResource; + +public abstract class MetalTheme +{ + private ColorUIResource BLACK = new ColorUIResource(0, 0, 0); + private ColorUIResource WHITE = new ColorUIResource(255, 255, 255); + + public MetalTheme() + { + // Do nothing here. + } + + public abstract String getName(); + + public void addCustomEntriesToTable(UIDefaults table) + { + // Do nothing here. + // This method needs to be overloaded to actuall do something. + } + + public ColorUIResource getAcceleratorForeground() + { + return getPrimary1(); + } + + public ColorUIResource getAcceleratorSelectedForeground() + { + return getBlack(); + } + + public ColorUIResource getControl() + { + return getSecondary3(); + } + + public ColorUIResource getControlDarkShadow() + { + return getSecondary1(); + } + + public ColorUIResource getControlDisabled() + { + return getSecondary2(); + } + + public ColorUIResource getControlHighlight() + { + return getWhite(); + } + + public ColorUIResource getControlInfo() + { + return getBlack(); + } + + public ColorUIResource getControlShadow() + { + return getSecondary2(); + } + + public ColorUIResource getControlTextColor() + { + return getBlack(); + } + + public ColorUIResource getDesktopColor() + { + return getPrimary2(); + } + + public ColorUIResource getFocusColor() + { + return getPrimary2(); + } + + public ColorUIResource getHighlightedTextColor() + { + return getBlack(); + } + + public ColorUIResource getInactiveControlTextColor() + { + return getSecondary2(); + } + + public ColorUIResource getInactiveSystemTextColor() + { + return getSecondary2(); + } + + public ColorUIResource getMenuBackground() + { + return getSecondary3(); + } + + public ColorUIResource getMenuDisabledForeground() + { + return getSecondary2(); + } + + public ColorUIResource getMenuForeground() + { + return getBlack(); + } + + public ColorUIResource getMenuSelectedBackground() + { + return getPrimary2(); + } + + public ColorUIResource getMenuSelectedForeground() + { + return getBlack(); + } + + public ColorUIResource getPrimaryControl() + { + return getPrimary3(); + } + + public ColorUIResource getPrimaryControlDarkShadow() + { + return getPrimary1(); + } + + public ColorUIResource getPrimaryControlHighlight() + { + return getWhite(); + } + + public ColorUIResource getPrimaryControlInfo() + { + return getBlack(); + } + + public ColorUIResource getPrimaryControlShadow() + { + return getPrimary2(); + } + + public ColorUIResource getSeparatorBackground() + { + return getWhite(); + } + + public ColorUIResource getSeparatorForeground() + { + return getPrimary1(); + } + + public ColorUIResource getSystemTextColor() + { + return getBlack(); + } + + public ColorUIResource getTextHighlightColor() + { + return getPrimary3(); + } + + public ColorUIResource getUserTextColor() + { + return getBlack(); + } + + public ColorUIResource getWindowBackground() + { + return getWhite(); + } + + public ColorUIResource getWindowTitleBackground() + { + return getPrimary3(); + } + + public ColorUIResource getWindowTitleForeground() + { + return getBlack(); + } + + public ColorUIResource getWindowTitleInactiveBackground() + { + return getSecondary3(); + } + + public ColorUIResource getWindowTitleInactiveForeground() + { + return getBlack(); + } + + protected ColorUIResource getBlack() + { + return BLACK; + } + + protected ColorUIResource getWhite() + { + return WHITE; + } + + protected abstract ColorUIResource getPrimary1(); + protected abstract ColorUIResource getPrimary2(); + protected abstract ColorUIResource getPrimary3(); + protected abstract ColorUIResource getSecondary1(); + protected abstract ColorUIResource getSecondary2(); + protected abstract ColorUIResource getSecondary3(); +} Index: javax/swing/plaf/metal/DefaultMetalTheme.java =================================================================== RCS file: javax/swing/plaf/metal/DefaultMetalTheme.java diff -N javax/swing/plaf/metal/DefaultMetalTheme.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ javax/swing/plaf/metal/DefaultMetalTheme.java 22 Dec 2004 16:52:33 -0000 @@ -0,0 +1,91 @@ +/* DefaultMetalTheme.java -- + Copyright (C) 2004 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + + +package javax.swing.plaf.metal; + +import javax.swing.plaf.ColorUIResource; + +public class DefaultMetalTheme extends MetalTheme +{ + private static final ColorUIResource PRIMARY1 = new ColorUIResource(102, 102, 153); + private static final ColorUIResource PRIMARY2 = new ColorUIResource(153, 153, 204); + private static final ColorUIResource PRIMARY3 = new ColorUIResource(204, 204, 255); + private static final ColorUIResource SECONDARY1 = new ColorUIResource(102, 102, 102); + private static final ColorUIResource SECONDARY2 = new ColorUIResource(153, 153, 153); + private static final ColorUIResource SECONDARY3 = new ColorUIResource(204, 204, 204); + + public DefaultMetalTheme() + { + // Do nothing here. + } + + public String getName() + { + return "Steel"; + } + + protected ColorUIResource getPrimary1() + { + return PRIMARY1; + } + + protected ColorUIResource getPrimary2() + { + return PRIMARY2; + } + + protected ColorUIResource getPrimary3() + { + return PRIMARY3; + } + + protected ColorUIResource getSecondary1() + { + return SECONDARY1; + } + + protected ColorUIResource getSecondary2() + { + return SECONDARY2; + } + + protected ColorUIResource getSecondary3() + { + return SECONDARY3; + } +} Index: javax/swing/plaf/metal/MetalLookAndFeel.java =================================================================== RCS file: /cvsroot/classpath/classpath/javax/swing/plaf/metal/MetalLookAndFeel.java,v retrieving revision 1.7 diff -u -r1.7 MetalLookAndFeel.java --- javax/swing/plaf/metal/MetalLookAndFeel.java 22 Oct 2004 18:16:01 -0000 1.7 +++ javax/swing/plaf/metal/MetalLookAndFeel.java 22 Dec 2004 16:52:33 -0000 @@ -36,35 +36,244 @@ exception statement from your version. */ - package javax.swing.plaf.metal; import javax.swing.UIDefaults; +import javax.swing.plaf.ColorUIResource; import javax.swing.plaf.basic.BasicLookAndFeel; public class MetalLookAndFeel extends BasicLookAndFeel { private static final long serialVersionUID = 6680646159193457980L; - - public boolean isNativeLookAndFeel() { return true; } - public boolean isSupportedLookAndFeel() { return true; } - public String getDescription() { return "Metal look and feel"; } - public String getID() { return "MetalLookAndFeel"; } - public String getName() { return "MetalLookAndFeel"; } - - - UIDefaults LAF_defaults; - - public MetalLookAndFeel() - { - } - - public UIDefaults getDefaults() - { - if (LAF_defaults == null) - LAF_defaults = super.getDefaults(); - - // Returns the default values for this look and feel. - return LAF_defaults; - } - } + private static MetalTheme theme; + private UIDefaults LAF_defaults; + + public MetalLookAndFeel() + { + createDefaultTheme(); + } + + protected void createDefaultTheme() + { + setCurrentTheme(new DefaultMetalTheme()); + } + + public boolean isNativeLookAndFeel() + { + return true; + } + + public boolean isSupportedLookAndFeel() + { + return true; + } + + public String getDescription() + { + return "Metal look and feel"; + } + + public String getID() + { + return "MetalLookAndFeel"; + } + + public String getName() + { + return "MetalLookAndFeel"; + } + + public UIDefaults getDefaults() + { + if (LAF_defaults == null) + LAF_defaults = super.getDefaults(); + + // Returns the default values for this look and feel. + return LAF_defaults; + } + + public static ColorUIResource getAcceleratorForeground() + { + return theme.getAcceleratorForeground(); + } + + public static ColorUIResource getAcceleratorSelectedForeground() + { + return theme.getAcceleratorSelectedForeground(); + } + + public static ColorUIResource getBlack() + { + return theme.getBlack(); + } + + public static ColorUIResource getControl() + { + return theme.getControl(); + } + + public static ColorUIResource getControlDarkShadow() + { + return theme.getControlDarkShadow(); + } + + public static ColorUIResource getControlDisabled() + { + return theme.getControlDisabled(); + } + + public static ColorUIResource getControlHighlight() + { + return theme.getControlHighlight(); + } + + public static ColorUIResource getControlInfo() + { + return theme.getControlInfo(); + } + + public static ColorUIResource getControlShadow() + { + return theme.getControlShadow(); + } + + public static ColorUIResource getControlTextColor() + { + return theme.getControlTextColor(); + } + + public static ColorUIResource getDesktopColor() + { + return theme.getDesktopColor(); + } + + public static ColorUIResource getFocusColor() + { + return theme.getFocusColor(); + } + + public static ColorUIResource getHighlightedTextColor() + { + return theme.getHighlightedTextColor(); + } + + public static ColorUIResource getInactiveControlTextColor() + { + return theme.getInactiveControlTextColor(); + } + + public static ColorUIResource getInactiveSystemTextColor() + { + return theme.getInactiveSystemTextColor(); + } + + public static ColorUIResource getMenuBackground() + { + return theme.getMenuBackground(); + } + + public static ColorUIResource getMenuDisabledForeground() + { + return theme.getMenuDisabledForeground(); + } + + public static ColorUIResource getMenuForeground() + { + return theme.getMenuForeground(); + } + + public static ColorUIResource getMenuSelectedBackground() + { + return theme.getMenuSelectedBackground(); + } + + public static ColorUIResource getMenuSelectedForeground() + { + return theme.getMenuSelectedForeground(); + } + + public static ColorUIResource getPrimaryControl() + { + return theme.getPrimaryControl(); + } + + public static ColorUIResource getPrimaryControlDarkShadow() + { + return theme.getPrimaryControlDarkShadow(); + } + + public static ColorUIResource getPrimaryControlHighlight() + { + return theme.getPrimaryControlHighlight(); + } + + public static ColorUIResource getPrimaryControlInfo() + { + return theme.getPrimaryControlInfo(); + } + + public static ColorUIResource getPrimaryControlShadow() + { + return theme.getPrimaryControlShadow(); + } + + public static ColorUIResource getSeparatorBackground() + { + return theme.getSeparatorBackground(); + } + + public static ColorUIResource getSeparatorForeground() + { + return theme.getSeparatorForeground(); + } + + public static ColorUIResource getSystemTextColor() + { + return theme.getSystemTextColor(); + } + + public static ColorUIResource getTextHighlightColor() + { + return theme.getTextHighlightColor(); + } + + public static ColorUIResource getUserTextColor() + { + return theme.getUserTextColor(); + } + + public static ColorUIResource getWhite() + { + return theme.getWhite(); + } + + public static ColorUIResource getWindowBackground() + { + return theme.getWindowBackground(); + } + + public static ColorUIResource getWindowTitleBackground() + { + return theme.getWindowTitleBackground(); + } + + public static ColorUIResource getWindowTitleForeground() + { + return theme.getWindowTitleForeground(); + } + + public static ColorUIResource getWindowTitleInactiveBackground() + { + return theme.getWindowTitleInactiveBackground(); + } + + public static ColorUIResource getWindowTitleInactiveForeground() + { + return theme.getWindowTitleInactiveForeground(); + } + + public static void setCurrentTheme(MetalTheme theme) + { + MetalLookAndFeel.theme = theme; + } +}