blob: c09d9f69ee3015fbb9b22f06eb9404e5b182fe94 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.netbeans.swing.plaf;
import org.netbeans.swing.plaf.util.GuaranteedValue;
import javax.swing.*;
import javax.swing.plaf.ColorUIResource;
import javax.swing.plaf.FontUIResource;
import java.awt.*;
import java.util.HashMap;
import java.util.Map;
import javax.swing.plaf.metal.MetalLookAndFeel;
/** Customization for all LFs. */
final class AllLFCustoms extends LFCustoms {
public Object[] createApplicationSpecificKeysAndValues () {
Object[] uiDefaults = {
//Tab control in case of unknown look and feel
TAB_ACTIVE_SELECTION_BACKGROUND,
new GuaranteedValue (new String[] {"Table.selectionBackground",
"info"}, Color.BLUE.brighter()),
TAB_ACTIVE_SELECTION_FOREGROUND,
new GuaranteedValue ("Table.selectionForeground",
Color.WHITE),
TAB_SELECTION_FOREGROUND,
new GuaranteedValue("textText", Color.BLACK),
//Likely to be the same for all look and feels - doesn't do anything
//exciting
EDITOR_TABBED_CONTAINER_UI,
"org.netbeans.swing.tabcontrol.plaf.DefaultTabbedContainerUI",
SLIDING_TAB_DISPLAYER_UI,
"org.netbeans.swing.tabcontrol.plaf.BasicSlidingTabDisplayerUI",
SLIDING_TAB_BUTTON_UI,
"org.netbeans.swing.tabcontrol.plaf.SlidingTabDisplayerButtonUI",
SLIDING_BUTTON_UI, "org.netbeans.swing.tabcontrol.SlidingButtonUI", //NOI18N
SCROLLPANE_BORDER_COLOR, new Color(127, 157, 185),
EDITOR_ERRORSTRIPE_SCROLLBAR_INSETS, new Insets(0, 0, 0, 0),
SPLIT_PANE_DIVIDER_SIZE_VERTICAL, new Integer(4),
SPLIT_PANE_DIVIDER_SIZE_HORIZONTAL, new Integer(4)
}; //NOI18N
return uiDefaults;
}
public Object[] createGuaranteedKeysAndValues () {
//ColorUIResource errorColor = new ColorUIResource(89, 79, 191);
// 65358: asked Red color for error messages
ColorUIResource errorColor = new ColorUIResource (255, 0, 0);
//#204598 - there's no cross-platform warning-like color...
ColorUIResource warningColor = new ColorUIResource(51 , 51, 51);
int fontsize = 11;
Integer in = (Integer) UIManager.get(CUSTOM_FONT_SIZE); //NOI18N
boolean hasCustomFontSize = in != null;
if (hasCustomFontSize) {
fontsize = in.intValue();
}
Object[] uiDefaults = {
//XXX once jdk 1.5 b2 is out, these can be deleted
"control", new GuaranteedValue ("control", Color.LIGHT_GRAY),
"controlShadow", new GuaranteedValue ("controlShadow", Color.GRAY),
"controlDkShadow", new GuaranteedValue ("controlDkShadow", Color.DARK_GRAY),
"textText", new GuaranteedValue ("textText", Color.BLACK),
"controlFont", new GuaranteedValue ("controlFont",
new Font ("Dialog", Font.PLAIN, fontsize)),
DEFAULT_FONT_SIZE, new Integer(11),
ERROR_FOREGROUND, new GuaranteedValue(ERROR_FOREGROUND, errorColor),
WARNING_FOREGROUND, new GuaranteedValue(WARNING_FOREGROUND, warningColor ),
};
return uiDefaults;
}
public static void initCustomFontSize (int uiFontSize) {
Font nbDialogPlain = new FontUIResource("Dialog", Font.PLAIN, uiFontSize); // NOI18N
Font nbDialogBold = new FontUIResource("Dialog", Font.BOLD, uiFontSize); // NOI18N
Font nbSerifPlain = new FontUIResource("Serif", Font.PLAIN, uiFontSize); // NOI18N
Font nbSansSerifPlain = new FontUIResource("SansSerif", Font.PLAIN, uiFontSize); // NOI18N
Font nbMonospacedPlain = new FontUIResource("Monospaced", Font.PLAIN, uiFontSize); // NOI18N
Map<Font, Font> fontTranslation = new HashMap<Font, Font>(5);
if( "Nimbus".equals( UIManager.getLookAndFeel().getID() ) ) { //NOI18N
switchFont("defaultFont", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
}
switchFont("controlFont", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("Button.font", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("ToggleButton.font", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("RadioButton.font", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("CheckBox.font", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("ColorChooser.font", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("ComboBox.font", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("Label.font", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("List.font", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("FileChooser.listFont", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("MenuBar.font", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("MenuItem.font", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("MenuItem.acceleratorFont", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("RadioButtonMenuItem.font", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("CheckBoxMenuItem.font", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("Menu.font", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("PopupMenu.font", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("OptionPane.font", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("OptionPane.messageFont", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("Panel.font", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("ProgressBar.font", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("ScrollPane.font", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("Viewport.font", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("TabbedPane.font", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("Table.font", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("TableHeader.font", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("TextField.font", fontTranslation, uiFontSize, nbSansSerifPlain); // NOI18N
switchFont("PasswordField.font", fontTranslation, uiFontSize, nbMonospacedPlain); // NOI18N
switchFont("TextArea.font", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("TextPane.font", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("EditorPane.font", fontTranslation, uiFontSize, nbSerifPlain); // NOI18N
switchFont("TitledBorder.font", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("ToolBar.font", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("ToolTip.font", fontTranslation, uiFontSize, nbSansSerifPlain); // NOI18N
switchFont("Tree.font", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("InternalFrame.titleFont", fontTranslation, uiFontSize, nbDialogBold); // NOI18N
switchFont("windowTitleFont", fontTranslation, uiFontSize, nbDialogBold); // NOI18N
switchFont("Spinner.font", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("FormattedTextField.font", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
switchFont("Slider.font", fontTranslation, uiFontSize, nbDialogPlain); // NOI18N
}
//#144402
private static final boolean isMetal = null != UIManager.getLookAndFeel()
&& UIManager.getLookAndFeel().getClass() == MetalLookAndFeel.class;
private static final boolean isWindows = null != UIManager.getLookAndFeel()
&& "Windows".equals( UIManager.getLookAndFeel().getID() );
private static void switchFont( String uiKey, Map<Font, Font> fontTranslation, int uiFontSize, Font defaultFont ) {
Font oldFont = UIManager.getFont(uiKey);
Font newFont = (null == oldFont || isMetal) ? defaultFont : fontTranslation.get(oldFont);
if( null == newFont ) {
if( isWindows ) {
newFont = oldFont.deriveFont( (float)uiFontSize );
} else {
newFont = new FontUIResource( oldFont.getFontName(), oldFont.getStyle(), uiFontSize );
}
fontTranslation.put( oldFont, newFont );
}
UIManager.put( uiKey, newFont );
}
}