1 /* DefaultMetalTheme.java -- A modern theme for the Metal L&F 2 Copyright (C) 2005 Free Software Foundation, Inc. 3 4 This file is part of GNU Classpath. 5 6 GNU Classpath is free software; you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation; either version 2, or (at your option) 9 any later version. 10 11 GNU Classpath is distributed in the hope that it will be useful, but 12 WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with GNU Classpath; see the file COPYING. If not, write to the 18 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 19 02110-1301 USA. 20 21 Linking this library statically or dynamically with other modules is 22 making a combined work based on this library. Thus, the terms and 23 conditions of the GNU General Public License cover the whole 24 combination. 25 26 As a special exception, the copyright holders of this library give you 27 permission to link this library with independent modules to produce an 28 executable, regardless of the license terms of these independent 29 modules, and to copy and distribute the resulting executable under 30 terms of your choice, provided that you also meet, for each linked 31 independent module, the terms and conditions of the license of that 32 module. An independent module is a module which is not derived from 33 or based on this library. If you modify this library, you may extend 34 this exception to your version of the library, but you are not 35 obligated to do so. If you do not wish to do so, delete this 36 exception statement from your version. */ 37 38 package javax.swing.plaf.metal; 39 40 import java.awt.Color; 41 import java.awt.Insets; 42 import java.util.Arrays; 43 44 import javax.swing.UIDefaults; 45 import javax.swing.plaf.ColorUIResource; 46 import javax.swing.plaf.BorderUIResource.LineBorderUIResource; 47 48 /** 49 * A modern theme for the Metal Look & Feel. 50 * @since 1.5 51 * 52 * @author Roman Kennke (roman@kennke.org) 53 */ 54 public class OceanTheme extends DefaultMetalTheme 55 { 56 /** 57 * The OceanTheme value for black. 58 */ 59 static final ColorUIResource BLACK = new ColorUIResource(51, 51, 51); 60 61 /** 62 * The OceanTheme value for primary1. 63 */ 64 static final ColorUIResource PRIMARY1 = new ColorUIResource(99, 130, 191); 65 66 /** 67 * The OceanTheme value for primary1. 68 */ 69 static final ColorUIResource PRIMARY2 = new ColorUIResource(163, 184, 204); 70 71 /** 72 * The OceanTheme value for primary1. 73 */ 74 static final ColorUIResource PRIMARY3 = new ColorUIResource(184, 207, 229); 75 76 /** 77 * The OceanTheme value for secondary1. 78 */ 79 static final ColorUIResource SECONDARY1 = new ColorUIResource(122, 138, 153); 80 81 /** 82 * The OceanTheme value for secondary2. 83 */ 84 static final ColorUIResource SECONDARY2 = new ColorUIResource(184, 207, 229); 85 86 /** 87 * The OceanTheme value for secondary3. 88 */ 89 static final ColorUIResource SECONDARY3 = new ColorUIResource(238, 238, 238); 90 91 /** 92 * The OceanTheme value for inactive control text. 93 */ 94 static final ColorUIResource INACTIVE_CONTROL_TEXT = 95 new ColorUIResource(153, 153, 153); 96 97 /** 98 * Returns the name of this theme, "Ocean" 99 */ getName()100 public String getName() 101 { 102 return "Ocean"; 103 } 104 105 /** 106 * Returns the color for control text, which is the 107 * value of the theme's black value. 108 */ getControlTextColor()109 public ColorUIResource getControlTextColor() 110 { 111 return getBlack(); 112 } 113 114 /** 115 * Returns the desktop color, which is the theme's white color. 116 */ getDesktopColor()117 public ColorUIResource getDesktopColor() 118 { 119 return getWhite(); 120 } 121 122 /** 123 * Returns the color for inactive control text, which is the 124 * RGB value (153, 153, 153). 125 */ getInactiveControlTextColor()126 public ColorUIResource getInactiveControlTextColor() 127 { 128 return INACTIVE_CONTROL_TEXT; 129 } 130 131 /** 132 * Returns the OceanTheme's color for disabled menu foreground, 133 * 134 */ getMenuDisabledForeground()135 public ColorUIResource getMenuDisabledForeground() 136 { 137 return INACTIVE_CONTROL_TEXT; 138 } 139 140 141 /** 142 * Returns the OceanTheme's color for black, the RGB value 143 * (51, 51, 51). 144 * 145 * @return Returns the OceanTheme's value for black 146 */ getBlack()147 protected ColorUIResource getBlack() 148 { 149 return BLACK; 150 } 151 152 /** 153 * Return the OceanTheme's value for primary 1, the RGB value 154 * (99, 130, 191). 155 */ getPrimary1()156 protected ColorUIResource getPrimary1() 157 { 158 return PRIMARY1; 159 } 160 161 /** 162 * Return the OceanTheme's value for primary 2, the RGB value 163 * (163, 184, 204). 164 */ getPrimary2()165 protected ColorUIResource getPrimary2() 166 { 167 return PRIMARY2; 168 } 169 170 /** 171 * Return the OceanTheme's value for primary 1, the RGB value 172 * (184, 207, 229). 173 */ getPrimary3()174 protected ColorUIResource getPrimary3() 175 { 176 return PRIMARY3; 177 } 178 179 /** 180 * Return the OceanTheme's value for secondary 1, the RGB value 181 * (122, 138, 153). 182 */ getSecondary1()183 protected ColorUIResource getSecondary1() 184 { 185 return SECONDARY1; 186 } 187 188 /** 189 * Return the OceanTheme's value for secondary 2, the RGB value 190 * (184, 207, 229). 191 */ getSecondary2()192 protected ColorUIResource getSecondary2() 193 { 194 return SECONDARY2; 195 } 196 /** 197 * Return the OceanTheme's value for secondary 3, the RGB value 198 * (238, 238, 238). 199 */ getSecondary3()200 protected ColorUIResource getSecondary3() 201 { 202 return SECONDARY3; 203 } 204 205 /** 206 * Adds customized entries to the UIDefaults table. 207 * 208 * @param defaults the UI defaults table 209 */ addCustomEntriesToTable(UIDefaults defaults)210 public void addCustomEntriesToTable(UIDefaults defaults) 211 { 212 // Gradients. 213 defaults.put("Button.gradient", Arrays.asList(new Object[] 214 {new Float(0.3), new Float(0.0), new ColorUIResource(221, 232, 243), 215 new ColorUIResource(Color.WHITE), new ColorUIResource(184, 207, 229)})); 216 defaults.put("CheckBox.gradient", Arrays.asList(new Object[] 217 {new Float(0.3), new Float(0.0), new ColorUIResource(221, 232, 243), 218 new ColorUIResource(Color.WHITE), new ColorUIResource(184, 207, 229)})); 219 defaults.put("CheckBoxMenuItem.gradient", Arrays.asList(new Object[] 220 {new Float(0.3), new Float(0.0), new ColorUIResource(221, 232, 243), 221 new ColorUIResource(Color.WHITE), new ColorUIResource(184, 207, 229)})); 222 defaults.put("MenuBar.gradient", Arrays.asList(new Object[] 223 {new Float(1.0), new Float(0.0), new ColorUIResource(Color.WHITE), 224 new ColorUIResource(218, 218, 218), new ColorUIResource(218, 218, 218)})); 225 defaults.put("RadioButton.gradient", Arrays.asList(new Object[] 226 {new Float(0.3), new Float(0.0), new ColorUIResource(221, 232, 243), 227 new ColorUIResource(Color.WHITE), new ColorUIResource(184, 207, 229)})); 228 defaults.put("RadioButtonMenuItem.gradient", Arrays.asList(new Object[] 229 {new Float(0.3), new Float(0.0), new ColorUIResource(221, 232, 243), 230 new ColorUIResource(Color.WHITE), new ColorUIResource(184, 207, 229)})); 231 defaults.put("ScrollBar.gradient", Arrays.asList(new Object[] 232 {new Float(0.3), new Float(0.0), new ColorUIResource(221, 232, 243), 233 new ColorUIResource(Color.WHITE), new ColorUIResource(184, 207, 229)})); 234 defaults.put("Slider.gradient", Arrays.asList(new Object[] 235 {new Float(0.3), new Float(0.2), new ColorUIResource(200, 221, 242), 236 new ColorUIResource(Color.WHITE), new ColorUIResource(184, 207, 229)})); 237 defaults.put("Slider.focusGradient", Arrays.asList(new Object[] 238 {new Float(0.3), new Float(0.2), new ColorUIResource(200, 221, 242), 239 new ColorUIResource(Color.WHITE), new ColorUIResource(184, 207, 229)})); 240 defaults.put("ToggleButton.gradient", Arrays.asList(new Object[] 241 {new Float(0.3), new Float(0.0), new ColorUIResource(221, 232, 243), 242 new ColorUIResource(Color.WHITE), new ColorUIResource(184, 207, 229)})); 243 defaults.put("InternalFrame.activeTitleGradient", Arrays.asList(new Object[] 244 {new Float(0.3), new Float(0.0), new ColorUIResource(221, 232, 243), 245 new ColorUIResource(Color.WHITE), new ColorUIResource(184, 207, 229)})); 246 247 // Colors. 248 ColorUIResource c1 = new ColorUIResource(200, 221, 242); 249 ColorUIResource c2 = new ColorUIResource(153, 153, 153); 250 ColorUIResource c3 = new ColorUIResource(204, 204, 204); 251 ColorUIResource c4 = new ColorUIResource(210, 226, 239); 252 ColorUIResource c5 = new ColorUIResource(218, 218, 218); 253 defaults.put("Button.disabledToolBarBorderBackground", c3); 254 defaults.put("Button.toolBarBorderBackground", c2); 255 defaults.put("Label.disabledForeground", c2); 256 defaults.put("MenuBar.borderColor", c3); 257 defaults.put("Slider.altTrackColor", c4); 258 defaults.put("SplitPane.dividerFocusColor", c1); 259 defaults.put("TabbedPane.contentAreaColor", c1); 260 defaults.put("TabbedPane.borderHightlightColor", PRIMARY1); 261 defaults.put("TabbedPane.selected", c1); 262 defaults.put("TabbedPane.tabAreaBackground", c5); 263 defaults.put("TabbedPane.unselectedBackground", SECONDARY3); 264 defaults.put("Table.gridColor", SECONDARY1); 265 defaults.put("ToolBar.borderColor", c3); 266 defaults.put("Tree.selectionBorderColor", PRIMARY1); 267 268 // Borders. 269 defaults.put("List.focusCellHighlightBorder", 270 new LineBorderUIResource(getPrimary1())); 271 defaults.put("Table.focusCellHighlightBorder", 272 new LineBorderUIResource(getPrimary1())); 273 274 // Insets. 275 defaults.put("TabbedPane.contentBorderInsets", new Insets(4, 2, 3, 3)); 276 defaults.put("TabbedPane.tabAreaInsets", new Insets(2, 2, 0, 6)); 277 278 // Flags. 279 defaults.put("SplitPane.oneTouchButtonsOpaque", Boolean.FALSE); 280 defaults.put("Menu.opaque", Boolean.FALSE); 281 defaults.put("ToolBar.isRollover", Boolean.TRUE); 282 defaults.put("RadioButton.rollover", Boolean.TRUE); 283 defaults.put("CheckBox.rollover", Boolean.TRUE); 284 defaults.put("Button.rollover", Boolean.TRUE); 285 286 // Icons. 287 // FIXME: Add OceanTheme icons. 288 // defaults.put("Tree.leafIcon", XXX); 289 // defaults.put("Tree.expandedIcon", XXX); 290 // defaults.put("Tree.openIcon", XXX); 291 // defaults.put("Tree.closedIcon", XXX); 292 // defaults.put("Tree.collapsedIcon", XXX); 293 // defaults.put("FileChooser.newFolderIcon", XXX); 294 // defaults.put("FileChooser.homeFolderIcon", XXX); 295 // defaults.put("FileChooser.upFolderIcon", XXX); 296 // defaults.put("FileView.hardDriveIcon", XXX); 297 // defaults.put("FileView.floppyDriveIcon", XXX); 298 // defaults.put("FileView.fileIcon", XXX); 299 // defaults.put("FileView.computerIcon", XXX); 300 // defaults.put("FileView.directoryIcon", XXX); 301 // defaults.put("OptionPane.questionIcon", XXX); 302 // defaults.put("OptionPane.errorIcon", XXX); 303 // defaults.put("OptionPane.warningIcon", XXX); 304 // defaults.put("OptionPane.informationIcon", XXX); 305 // defaults.put("InternalFrame.icon", XXX); 306 // defaults.put("InternalFrame.closeIcon", XXX); 307 // defaults.put("InternalFrame.iconifyIcon", XXX); 308 // defaults.put("InternalFrame.minimizeIcon", XXX); 309 // defaults.put("InternalFrame.maximizeIcon", XXX); 310 // defaults.put("InternalFrame.paletteCloseIcon", XXX); 311 312 // UI classes. 313 defaults.put("MenuBarUI", "javax.swing.plaf.metal.MetalMenuBarUI"); 314 315 // Others. 316 defaults.put("Button.rolloverIconType", "ocean"); 317 } 318 } 319