/*
* @(#)XertoWindowsUtils.java 6/13/2005
*
* Copyright 2002 - 2005 JIDE Software Inc. All rights reserved.
*/
package com.jidesoft.plaf.xerto;
import com.jidesoft.icons.IconsFactory;
import com.jidesoft.icons.JideIconsFactory;
import com.jidesoft.icons.MenuCheckIcon;
import com.jidesoft.plaf.ExtWindowsDesktopProperty;
import com.jidesoft.plaf.LookAndFeelFactory;
import com.jidesoft.plaf.UIDefaultsLookup;
import com.jidesoft.plaf.WindowsDesktopProperty;
import com.jidesoft.plaf.basic.Painter;
import com.jidesoft.plaf.basic.ThemePainter;
import com.jidesoft.plaf.office2003.Office2003WindowsUtils;
import com.jidesoft.plaf.vsnet.ConvertListener;
import com.jidesoft.plaf.vsnet.HeaderCellBorder;
import com.jidesoft.plaf.vsnet.ResizeFrameBorder;
import com.jidesoft.plaf.vsnet.VsnetLookAndFeelExtension;
import com.jidesoft.plaf.windows.WindowsIconFactory;
import com.jidesoft.swing.JideSwingUtilities;
import com.jidesoft.swing.JideTabbedPane;
import com.jidesoft.utils.SecurityUtils;
import javax.swing.*;
import javax.swing.plaf.BorderUIResource;
import javax.swing.plaf.ColorUIResource;
import javax.swing.plaf.InsetsUIResource;
import javax.swing.plaf.basic.BasicBorders;
import java.awt.*;
/**
* Initialize the uiClassID to BasicComponentUI mapping for JIDE components using Xerto style for WindowsLookAndFeel.
* Xerto Style is designed by Xerto at http://www.xerto.com.
*/
public class XertoWindowsUtils extends Office2003WindowsUtils {
/**
* Initializes class defaults with menu components UIDefaults.
*
* @param table ui default table
*/
public static void initClassDefaultsWithMenu(UIDefaults table) {
VsnetLookAndFeelExtension.initClassDefaultsWithMenu(table);
initClassDefaults(table);
}
/**
* Initializes class defaults with menu components UIDefaults.
*
* @param table ui default table
*/
public static void initClassDefaults(UIDefaults table) {
Office2003WindowsUtils.initClassDefaults(table, false);
initClassDefaultsForXerto(table);
}
private static void initClassDefaultsForXerto(UIDefaults table) {
int products = LookAndFeelFactory.getProductsUsed();
final String xertoPackageName = "com.jidesoft.plaf.xerto.";
if ((products & PRODUCT_COMPONENTS) != 0) {
table.put("CollapsiblePaneUI", xertoPackageName + "XertoCollapsiblePaneUI");
}
if ((products & PRODUCT_DOCK) != 0) {
table.put("SidePaneUI", xertoPackageName + "XertoSidePaneUI");
table.put("DockableFrameUI", xertoPackageName + "XertoDockableFrameUI");
}
}
/**
* Initializes components defaults.
*
* @param table ui default table
*/
public static void initComponentDefaultsWithMenu(UIDefaults table) {
/// always want shading
System.setProperty("shadingtheme", "true");
Toolkit toolkit = Toolkit.getDefaultToolkit();
WindowsDesktopProperty defaultHighlightColor = new WindowsDesktopProperty("win.3d.lightColor", UIDefaultsLookup.get("controlHighlight"), toolkit);
WindowsDesktopProperty selectionBackgroundColor = new WindowsDesktopProperty("win.item.highlightColor", UIDefaultsLookup.get("controlShadow"), toolkit);
WindowsDesktopProperty menuTextColor = new WindowsDesktopProperty("win.menu.textColor", UIDefaultsLookup.get("control"), toolkit);
Object menuFont = JideSwingUtilities.getMenuFont(toolkit, table);
Object menuSelectionBackground = new ExtWindowsDesktopProperty(//Actual color 182, 189, 210
new String[]{"win.item.highlightColor"}, new Object[]{UIDefaultsLookup.get("controlShadow")}, toolkit, new ConvertListener() {
public Object convert(Object[] obj) {
return new ColorUIResource(XertoUtils.getMenuSelectionColor((Color) obj[0]));
}
});
Object menuBackground = new ExtWindowsDesktopProperty(//Actual color 249, 248, 247
new String[]{"win.3d.backgroundColor"}, new Object[]{UIDefaultsLookup.get("control")}, toolkit, new ConvertListener() {
public Object convert(Object[] obj) {
return new ColorUIResource(XertoUtils.getMenuBackgroundColor((Color) obj[0]));
}
});
Object separatorColor = new ExtWindowsDesktopProperty(// Not exactly right
new String[]{"win.3d.shadowColor"}, new Object[]{UIDefaultsLookup.get("controlShadow")}, toolkit, new ConvertListener() {
public Object convert(Object[] obj) {
return new ColorUIResource(((Color) obj[0]).brighter());
}
});
Object[] uiDefaults = {
"PopupMenuSeparator.foreground", separatorColor,
"PopupMenuSeparator.background", menuBackground,
"CheckBoxMenuItem.checkIcon", new MenuCheckIcon(JideIconsFactory.getImageIcon(JideIconsFactory.MENU_CHECKBOX_VSNET)),
"CheckBoxMenuItem.selectionBackground", menuSelectionBackground,
"CheckBoxMenuItem.selectionForeground", menuTextColor,
"CheckBoxMenuItem.acceleratorSelectionForeground", menuTextColor,
"CheckBoxMenuItem.mouseHoverBackground", menuSelectionBackground,
"CheckBoxMenuItem.mouseHoverBorder", new BorderUIResource(BorderFactory.createLineBorder(new Color(10, 36, 106))),
"CheckBoxMenuItem.margin", new InsetsUIResource(3, 0, 3, 0),
"CheckBoxMenuItem.font", menuFont,
"CheckBoxMenuItem.acceleratorFont", menuFont,
"CheckBoxMenuItem.textIconGap", 8,
"RadioButtonMenuItem.checkIcon", new MenuCheckIcon(JideIconsFactory.getImageIcon(JideIconsFactory.MENU_CHECKBOX_VSNET)),
"RadioButtonMenuItem.selectionBackground", menuSelectionBackground,
"RadioButtonMenuItem.selectionForeground", menuTextColor,
"RadioButtonMenuItem.acceleratorSelectionForeground", menuTextColor,
"RadioButtonMenuItem.mouseHoverBackground", menuSelectionBackground,
"RadioButtonMenuItem.mouseHoverBorder", new BorderUIResource(BorderFactory.createLineBorder(new Color(10, 36, 106))),
"RadioButtonMenuItem.margin", new InsetsUIResource(3, 0, 3, 0),
"RadioButtonMenuItem.font", menuFont,
"RadioButtonMenuItem.acceleratorFont", menuFont,
"RadioButtonMenuItem.textIconGap", 8,
"MenuBar.border", new BorderUIResource(BorderFactory.createEmptyBorder(2, 2, 2, 2)),
// "MenuBar.border", new BorderUIResource(BorderFactory.createCompoundBorder(
// new PartialEtchedBorder(PartialEtchedBorder.LOWERED, PartialSide.SOUTH),
// BorderFactory.createEmptyBorder(2, 2, 2, 2))),
"Menu.selectionBackground", menuSelectionBackground,
"Menu.selectionForeground", menuTextColor,
"Menu.mouseHoverBackground", menuSelectionBackground,
"Menu.mouseHoverBorder", new BorderUIResource(BorderFactory.createLineBorder(new Color(10, 36, 106))),
"Menu.margin", new InsetsUIResource(2, 7, 1, 7),
"Menu.checkIcon", new MenuCheckIcon(JideIconsFactory.getImageIcon(JideIconsFactory.MENU_CHECKBOX_VSNET)),
"Menu.textIconGap", 2,
"Menu.font", menuFont,
"Menu.acceleratorFont", menuFont,
"Menu.submenuPopupOffsetX", 0,
"Menu.submenuPopupOffsetY", 0,
"PopupMenu.border", new BorderUIResource(BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(new Color(102, 102, 102)), BorderFactory.createEmptyBorder(1, 1, 1, 1))),
"MenuItem.checkIcon", new MenuCheckIcon(JideIconsFactory.getImageIcon(JideIconsFactory.MENU_CHECKBOX_VSNET)),
"MenuItem.selectionBackground", menuSelectionBackground,
"MenuItem.selectionForeground", menuTextColor,
"MenuItem.acceleratorSelectionForeground", menuTextColor,
"MenuItem.background", menuBackground,
"MenuItem.selectionBorderColor", selectionBackgroundColor,
"MenuItem.shadowWidth", 24,
"MenuItem.shadowColor", defaultHighlightColor, // TODO: not exactly. The actual one a little bit brighter than it
"MenuItem.textIconGap", 8,
"MenuItem.accelEndGap", 18,
"MenuItem.margin", new InsetsUIResource(4, 0, 3, 0),
"MenuItem.font", menuFont,
"MenuItem.acceleratorFont", menuFont
};
table.putDefaults(uiDefaults);
initComponentDefaults(table);
UIDefaultsLookup.put(table, "Theme.painter", XertoPainter.getInstance());
// since it used BasicPainter, make sure it is after Theme.Painter is set first.
Object popupMenuBorder = new ExtWindowsDesktopProperty(new String[]{"null"}, new Object[]{((ThemePainter) UIDefaultsLookup.get("Theme.painter")).getMenuItemBorderColor()}, toolkit, new ConvertListener() {
public Object convert(Object[] obj) {
return new BorderUIResource(BorderFactory.createCompoundBorder(BorderFactory.createLineBorder((Color) obj[0]), BorderFactory.createEmptyBorder(1, 1, 1, 1)));
}
});
table.put("PopupMenu.border", popupMenuBorder);
}
/**
* Initializes components defaults with menu components UIDefaults.
*
* @param table ui default table
*/
public static void initComponentDefaults(UIDefaults table) {
/// always want shading
System.setProperty("shadingtheme", "true");
Toolkit toolkit = Toolkit.getDefaultToolkit();
WindowsDesktopProperty defaultHighlightColor = new WindowsDesktopProperty("win.3d.lightColor", UIDefaultsLookup.get("controlHighlight"), toolkit);
WindowsDesktopProperty defaultLtHighlightColor = new WindowsDesktopProperty("win.3d.highlightColor", UIDefaultsLookup.get("controlLtHighlight"), toolkit);
WindowsDesktopProperty selectionBackgroundColor = new WindowsDesktopProperty("win.item.highlightColor", UIDefaultsLookup.get("controlShadow"), toolkit);
WindowsDesktopProperty mdiBackgroundColor = new WindowsDesktopProperty("win.mdi.backgroundColor", UIDefaultsLookup.get("controlShadow"), toolkit);
WindowsDesktopProperty menuTextColor = new WindowsDesktopProperty("win.menu.textColor", UIDefaultsLookup.get("controlText"), toolkit);
WindowsDesktopProperty defaultTextColor = new WindowsDesktopProperty("win.button.textColor", UIDefaultsLookup.get("controlText"), toolkit);
WindowsDesktopProperty defaultBackgroundColor = new WindowsDesktopProperty("win.3d.backgroundColor", UIDefaultsLookup.get("control"), toolkit);
WindowsDesktopProperty defaultShadowColor = new WindowsDesktopProperty("win.3d.shadowColor", UIDefaultsLookup.get("controlShadow"), toolkit);
WindowsDesktopProperty defaultDarkShadowColor = new WindowsDesktopProperty("win.3d.darkShadowColor", UIDefaultsLookup.get("controlDkShadow"), toolkit);
WindowsDesktopProperty activeTitleBackgroundColor = new WindowsDesktopProperty("win.frame.activeCaptionColor", UIDefaultsLookup.get("activeCaption"), toolkit);
WindowsDesktopProperty activeTitleTextColor = new WindowsDesktopProperty("win.frame.captionTextColor", UIDefaultsLookup.get("activeCaptionText"), toolkit);
WindowsDesktopProperty highContrast = new WindowsDesktopProperty("win.highContrast.on", UIDefaultsLookup.get("highContrast"), toolkit);
Object singleLineBorder = new ExtWindowsDesktopProperty(new String[]{"win.3d.shadowColor"}, new Object[]{UIDefaultsLookup.get("controlShadow")}, toolkit, new ConvertListener() {
public Object convert(Object[] obj) {
return new BorderUIResource(BorderFactory.createLineBorder((Color) obj[0]));
}
});
Object controlFont = JideSwingUtilities.getControlFont(toolkit, table);
Object toolbarFont = JideSwingUtilities.getMenuFont(toolkit, table);
Object boldFont = JideSwingUtilities.getBoldFont(toolkit, table);
Object resizeBorder = new ExtWindowsDesktopProperty(new String[]{"win.3d.lightColor", "win.3d.highlightColor", "win.3d.shadowColor", "win.3d.darkShadowColor"},
new Object[]{UIDefaultsLookup.get("control"), UIDefaultsLookup.get("controlLtHighlight"), UIDefaultsLookup.get("controlShadow"), UIDefaultsLookup.get("controlDkShadow")}, toolkit, new ConvertListener() {
public Object convert(Object[] obj) {
return new XertoFrameBorder(new Insets(4, 4, 4, 4));
}
});
Object defaultFormBackground = new ExtWindowsDesktopProperty(new String[]{"win.3d.backgroundColor"}, new Object[]{UIDefaultsLookup.get("control")}, toolkit, new ConvertListener() {
public Object convert(Object[] obj) {
return new ColorUIResource(XertoUtils.getDefaultBackgroundColor((Color) obj[0]));
}
});
Object inactiveTabForground = new ExtWindowsDesktopProperty(// Not exactly right
new String[]{"win.3d.shadowColor"}, new Object[]{UIDefaultsLookup.get("controlShadow")}, toolkit, new ConvertListener() {
public Object convert(Object[] obj) {
return new ColorUIResource(((Color) obj[0]).darker());
}
});
Object focusedButtonColor = new ExtWindowsDesktopProperty(new String[]{"win.item.highlightColor"}, new Object[]{UIDefaultsLookup.get("textHighlight")}, toolkit, new ConvertListener() {
public Object convert(Object[] obj) {
return new ColorUIResource(XertoUtils.getFocusedButtonColor((Color) obj[0]));
}
});
Object selectedAndFocusedButtonColor = new ExtWindowsDesktopProperty(new String[]{"win.item.highlightColor"}, new Object[]{UIDefaultsLookup.get("textHighlight")}, toolkit, new ConvertListener() {
public Object convert(Object[] obj) {
return new ColorUIResource(XertoUtils.getSelectedAndFocusedButtonColor((Color) obj[0]));
}
});
Object selectedButtonColor = new ExtWindowsDesktopProperty(new String[]{"win.item.highlightColor"}, new Object[]{UIDefaultsLookup.get("textHighlight")}, toolkit, new ConvertListener() {
public Object convert(Object[] obj) {
return new ColorUIResource(XertoUtils.getSelectedButtonColor((Color) obj[0]));
}
});
Object gripperForeground = new ExtWindowsDesktopProperty(new String[]{"win.3d.backgroundColor"}, new Object[]{UIDefaultsLookup.get("control")}, toolkit, new ConvertListener() {
public Object convert(Object[] obj) {
return new ColorUIResource(XertoUtils.getGripperForegroundColor((Color) obj[0]));
}
});
Object commandBarBackground = new ExtWindowsDesktopProperty(new String[]{"win.3d.backgroundColor"}, new Object[]{UIDefaultsLookup.get("control")}, toolkit, new ConvertListener() {
public Object convert(Object[] obj) {
return new ColorUIResource(XertoUtils.getToolBarBackgroundColor((Color) obj[0]));
}
});
Painter gripperPainter = new Painter() {
public void paint(JComponent c, Graphics g, Rectangle rect, int orientation, int state) {
Object p = UIDefaultsLookup.get("Theme.painter");
if (p instanceof ThemePainter) {
((ThemePainter) p).paintGripper(c, g, rect, orientation, state);
}
else {
XertoPainter.getInstance().paintGripper(c, g, rect, orientation, state);
}
}
};
Object buttonBorder = new BasicBorders.MarginBorder();
Object[] uiDefaults = new Object[]{
"Theme.highContrast", highContrast,
"Content.background", defaultBackgroundColor,
"JideScrollPane.border", singleLineBorder,
"JideButton.selectedAndFocusedBackground", selectedAndFocusedButtonColor,
"JideButton.focusedBackground", focusedButtonColor,
"JideButton.selectedBackground", selectedButtonColor,
"JideButton.borderColor", selectionBackgroundColor,
"JideButton.font", controlFont,
"JideButton.background", defaultBackgroundColor,
"JideButton.foreground", defaultTextColor,
"JideButton.shadow", defaultShadowColor,
"JideButton.darkShadow", defaultDarkShadowColor,
"JideButton.light", defaultHighlightColor,
"JideButton.highlight", defaultLtHighlightColor,
"JideButton.border", buttonBorder,
"JideButton.margin", new InsetsUIResource(3, 3, 3, 3),
"JideButton.textIconGap", 4,
"JideButton.textShiftOffset", 0,
"JideButton.focusInputMap", new UIDefaults.LazyInputMap(new Object[]{
"SPACE", "pressed",
"released SPACE", "released",
"ENTER", "pressed",
"released ENTER", "released" // no last two for metal
}),
"TristateCheckBox.icon", WindowsIconFactory.getCheckBoxIcon(),
"JideSplitPane.dividerSize", 3,
"JideSplitPaneDivider.border", new BorderUIResource(BorderFactory.createEmptyBorder()),
"JideSplitPaneDivider.background", defaultBackgroundColor,
"JideSplitPaneDivider.gripperPainter", gripperPainter,
"JideTabbedPane.defaultTabShape", JideTabbedPane.SHAPE_ROUNDED_VSNET,
"JideTabbedPane.defaultResizeMode", JideTabbedPane.RESIZE_MODE_NONE,
"JideTabbedPane.defaultTabColorTheme", JideTabbedPane.COLOR_THEME_OFFICE2003,
"JideTabbedPane.tabRectPadding", 2,
"JideTabbedPane.closeButtonMarginHorizonal", 3,
"JideTabbedPane.closeButtonMarginVertical", 3,
"JideTabbedPane.textMarginVertical", 4,
"JideTabbedPane.noIconMargin", 2,
"JideTabbedPane.iconMargin", 5,
"JideTabbedPane.textPadding", 6,
"JideTabbedPane.buttonSize", 18,
"JideTabbedPane.buttonMargin", 5,
"JideTabbedPane.fitStyleBoundSize", 8,
"JideTabbedPane.fitStyleFirstTabMargin", 4,
"JideTabbedPane.fitStyleIconMinWidth", 24,
"JideTabbedPane.fitStyleTextMinWidth", 16,
"JideTabbedPane.compressedStyleNoIconRectSize", 24,
"JideTabbedPane.compressedStyleIconMargin", 12,
"JideTabbedPane.compressedStyleCloseButtonMarginHorizontal", 0,
"JideTabbedPane.compressedStyleCloseButtonMarginVertical", 0,
"JideTabbedPane.fixedStyleRectSize", 60,
"JideTabbedPane.closeButtonMargin", 2,
"JideTabbedPane.gripLeftMargin", 4,
"JideTabbedPane.closeButtonMarginSize", 6,
"JideTabbedPane.closeButtonLeftMargin", 2,
"JideTabbedPane.closeButtonRightMargin", 2,
"JideTabbedPane.defaultTabBorderShadowColor", new ColorUIResource(115, 109, 99),
"JideTabbedPane.gripperPainter", gripperPainter,
"JideTabbedPane.border", new BorderUIResource(BorderFactory.createEmptyBorder(0, 0, 0, 0)),
"JideTabbedPane.background", new ColorUIResource(XertoUtils.getControlColor()),
"JideTabbedPane.foreground", new ColorUIResource(XertoUtils.getTabForgroundColor()),
"JideTabbedPane.light", defaultHighlightColor,
"JideTabbedPane.highlight", defaultLtHighlightColor,
"JideTabbedPane.shadow", defaultShadowColor,
"JideTabbedPane.darkShadow", new ColorUIResource(Color.GRAY),
"JideTabbedPane.tabInsets", new InsetsUIResource(1, 4, 1, 4),
"JideTabbedPane.contentBorderInsets", new InsetsUIResource(1, 1, 1, 1),
"JideTabbedPane.ignoreContentBorderInsetsIfNoTabs", Boolean.FALSE,
"JideTabbedPane.tabAreaInsets", new InsetsUIResource(2, 4, 0, 4),
"JideTabbedPane.tabAreaBackground", new ColorUIResource(XertoUtils.getApplicationFrameBackgroundColor()),
"JideTabbedPane.tabAreaBackgroundLt", defaultLtHighlightColor,
"JideTabbedPane.tabAreaBackgroundDk", defaultBackgroundColor,
"JideTabbedPane.tabRunOverlay", 2,
"JideTabbedPane.font", controlFont,
"JideTabbedPane.selectedTabFont", controlFont,
"JideTabbedPane.selectedTabTextForeground", new ColorUIResource(XertoUtils.getTabForgroundColor()),
"JideTabbedPane.unselectedTabTextForeground", inactiveTabForground,
"JideTabbedPane.selectedTabBackground", new ColorUIResource(XertoUtils.getSelectedTabBackgroundColor()),
"JideTabbedPane.selectedTabBackgroundLt", new ColorUIResource(230, 139, 44),
"JideTabbedPane.selectedTabBackgroundDk", new ColorUIResource(255, 199, 60),
"JideTabbedPane.tabListBackground", UIDefaultsLookup.getColor("List.background"),
"JideTabbedPane.textIconGap", 4,
"JideTabbedPane.showIconOnTab", Boolean.TRUE,
"JideTabbedPane.showCloseButtonOnTab", Boolean.FALSE,
"JideTabbedPane.closeButtonAlignment", SwingConstants.TRAILING,
"JideTabbedPane.focusInputMap",
new UIDefaults.LazyInputMap(new Object[]{
"RIGHT", "navigateRight",
"KP_RIGHT", "navigateRight",
"LEFT", "navigateLeft",
"KP_LEFT", "navigateLeft",
"UP", "navigateUp",
"KP_UP", "navigateUp",
"DOWN", "navigateDown",
"KP_DOWN", "navigateDown",
"ctrl DOWN", "requestFocusForVisibleComponent",
"ctrl KP_DOWN", "requestFocusForVisibleComponent",
}),
"JideTabbedPane.ancestorInputMap",
new UIDefaults.LazyInputMap(new Object[]{
"ctrl PAGE_DOWN", "navigatePageDown",
"ctrl PAGE_UP", "navigatePageUp",
"ctrl UP", "requestFocus",
"ctrl KP_UP", "requestFocus",
}),
"ButtonPanel.order", "ACO",
"ButtonPanel.oppositeOrder", "H",
"ButtonPanel.buttonGap", 6,
"ButtonPanel.groupGap", 6,
"ButtonPanel.minButtonWidth", 75,
"JideSplitButton.font", controlFont,
"JideSplitButton.margin", new InsetsUIResource(3, 3, 3, 7),
"JideSplitButton.border", buttonBorder,
"JideSplitButton.borderPainted", Boolean.FALSE,
"JideSplitButton.textIconGap", 4,
"JideSplitButton.selectionForeground", menuTextColor,
"JideSplitButton.focusInputMap", new UIDefaults.LazyInputMap(new Object[]{
"SPACE", "pressed",
"released SPACE", "released",
"ENTER", "pressed",
"released ENTER", "released", // no these two for metal
"DOWN", "downPressed",
"released DOWN", "downReleased",
}),
"Cursor.hsplit", JideIconsFactory.getImageIcon(JideIconsFactory.Cursor.HSPLIT),
"Cursor.vsplit", JideIconsFactory.getImageIcon(JideIconsFactory.Cursor.VSPLIT),
"Cursor.north", JideIconsFactory.getImageIcon(JideIconsFactory.Cursor.NORTH),
"Cursor.south", JideIconsFactory.getImageIcon(JideIconsFactory.Cursor.SOUTH),
"Cursor.east", JideIconsFactory.getImageIcon(JideIconsFactory.Cursor.EAST),
"Cursor.west", JideIconsFactory.getImageIcon(JideIconsFactory.Cursor.WEST),
"Cursor.tab", JideIconsFactory.getImageIcon(JideIconsFactory.Cursor.TAB),
"Cursor.float", JideIconsFactory.getImageIcon(JideIconsFactory.Cursor.FLOAT),
"Cursor.vertical", JideIconsFactory.getImageIcon(JideIconsFactory.Cursor.VERTICAL),
"Cursor.horizontal", JideIconsFactory.getImageIcon(JideIconsFactory.Cursor.HORIZONTAL),
"Cursor.delete", JideIconsFactory.getImageIcon(JideIconsFactory.Cursor.DELETE),
"Cursor.drag", JideIconsFactory.getImageIcon(JideIconsFactory.Cursor.DROP),
"Cursor.dragStop", JideIconsFactory.getImageIcon(JideIconsFactory.Cursor.NODROP),
"Cursor.dragText", JideIconsFactory.getImageIcon(JideIconsFactory.Cursor.DROP_TEXT),
"Cursor.dragTextStop", JideIconsFactory.getImageIcon(JideIconsFactory.Cursor.NODROP_TEXT),
"Cursor.percentage", JideIconsFactory.getImageIcon(JideIconsFactory.Cursor.PERCENTAGE),
"Cursor.moveEast", JideIconsFactory.getImageIcon(JideIconsFactory.Cursor.MOVE_EAST),
"Cursor.moveWest", JideIconsFactory.getImageIcon(JideIconsFactory.Cursor.MOVE_WEST),
"Gripper.size", 8,
"Gripper.foreground", gripperForeground,
"Gripper.painter", gripperPainter,
"HeaderBox.background", defaultBackgroundColor,
"Icon.floating", Boolean.FALSE,
"Resizable.resizeBorder", resizeBorder,
"TextArea.font", controlFont,
};
table.putDefaults(uiDefaults);
int products = LookAndFeelFactory.getProductsUsed();
if ((products & PRODUCT_DOCK) != 0) {
ImageIcon titleButtonImage = IconsFactory.getImageIcon(XertoWindowsUtils.class, "icons/title_buttons_xerto.gif"); // 10 x 10 x 8
final int titleButtonSize = 10;
FrameBorder frameBorder = new FrameBorder();
boolean useShadowBorder = "true".equals(SecurityUtils.getProperty("jide.shadeSlidingBorder", "false"));
Object slidingEastFrameBorder = new ExtWindowsDesktopProperty(new String[]{"win.3d.lightColor", "win.3d.highlightColor", "win.3d.shadowColor", "win.3d.darkShadowColor"},
new Object[]{UIDefaultsLookup.get("control"), UIDefaultsLookup.get("controlLtHighlight"), UIDefaultsLookup.get("controlShadow"), UIDefaultsLookup.get("controlDkShadow")}, toolkit, new ConvertListener() {
public Object convert(Object[] obj) {
return new SlidingFrameBorder((Color) obj[0], (Color) obj[1], (Color) obj[2], (Color) obj[3],
new Insets(1, SlidingFrameBorder.SHADOW_SIZE + 5, 1, 0));
}
});
Object slidingWestFrameBorder = new ExtWindowsDesktopProperty(new String[]{"win.3d.lightColor", "win.3d.highlightColor", "win.3d.shadowColor", "win.3d.darkShadowColor"},
new Object[]{UIDefaultsLookup.get("control"), UIDefaultsLookup.get("controlLtHighlight"), UIDefaultsLookup.get("controlShadow"), UIDefaultsLookup.get("controlDkShadow")}, toolkit, new ConvertListener() {
public Object convert(Object[] obj) {
return new SlidingFrameBorder((Color) obj[0], (Color) obj[1], (Color) obj[2], (Color) obj[3],
new Insets(1, 0, 1, SlidingFrameBorder.SHADOW_SIZE + 5));
}
});
Object slidingNorthFrameBorder = new ExtWindowsDesktopProperty(new String[]{"win.3d.lightColor", "win.3d.highlightColor", "win.3d.shadowColor", "win.3d.darkShadowColor"},
new Object[]{UIDefaultsLookup.get("control"), UIDefaultsLookup.get("controlLtHighlight"), UIDefaultsLookup.get("controlShadow"), UIDefaultsLookup.get("controlDkShadow")}, toolkit, new ConvertListener() {
public Object convert(Object[] obj) {
return new SlidingFrameBorder((Color) obj[0], (Color) obj[1], (Color) obj[2], (Color) obj[3],
new Insets(0, 1, SlidingFrameBorder.SHADOW_SIZE + 5, 1));
}
});
Object slidingSouthFrameBorder = new ExtWindowsDesktopProperty(new String[]{"win.3d.lightColor", "win.3d.highlightColor", "win.3d.shadowColor", "win.3d.darkShadowColor"},
new Object[]{UIDefaultsLookup.get("control"), UIDefaultsLookup.get("controlLtHighlight"), UIDefaultsLookup.get("controlShadow"), UIDefaultsLookup.get("controlDkShadow")}, toolkit, new ConvertListener() {
public Object convert(Object[] obj) {
return new SlidingFrameBorder((Color) obj[0], (Color) obj[1], (Color) obj[2], (Color) obj[3],
new Insets(SlidingFrameBorder.SHADOW_SIZE + 5, 1, 0, 1));
}
});
Object slidingEastFrameBorder2 = new ExtWindowsDesktopProperty(new String[]{"win.3d.lightColor", "win.3d.highlightColor", "win.3d.shadowColor", "win.3d.darkShadowColor"},
new Object[]{UIDefaultsLookup.get("control"), UIDefaultsLookup.get("controlLtHighlight"), UIDefaultsLookup.get("controlShadow"), UIDefaultsLookup.get("controlDkShadow")}, toolkit, new ConvertListener() {
public Object convert(Object[] obj) {
return new ResizeFrameBorder((Color) obj[0], (Color) obj[1], (Color) obj[2], (Color) obj[3],
new Insets(0, 4, 0, 0));
}
});
Object slidingWestFrameBorder2 = new ExtWindowsDesktopProperty(new String[]{"win.3d.lightColor", "win.3d.highlightColor", "win.3d.shadowColor", "win.3d.darkShadowColor"},
new Object[]{UIDefaultsLookup.get("control"), UIDefaultsLookup.get("controlLtHighlight"), UIDefaultsLookup.get("controlShadow"), UIDefaultsLookup.get("controlDkShadow")}, toolkit, new ConvertListener() {
public Object convert(Object[] obj) {
return new ResizeFrameBorder((Color) obj[0], (Color) obj[1], (Color) obj[2], (Color) obj[3],
new Insets(0, 0, 0, 4));
}
});
Object slidingNorthFrameBorder2 = new ExtWindowsDesktopProperty(new String[]{"win.3d.lightColor", "win.3d.highlightColor", "win.3d.shadowColor", "win.3d.darkShadowColor"},
new Object[]{UIDefaultsLookup.get("control"), UIDefaultsLookup.get("controlLtHighlight"), UIDefaultsLookup.get("controlShadow"), UIDefaultsLookup.get("controlDkShadow")}, toolkit, new ConvertListener() {
public Object convert(Object[] obj) {
return new ResizeFrameBorder((Color) obj[0], (Color) obj[1], (Color) obj[2], (Color) obj[3],
new Insets(0, 0, 4, 0));
}
});
Object slidingSouthFrameBorder2 = new ExtWindowsDesktopProperty(new String[]{"win.3d.lightColor", "win.3d.highlightColor", "win.3d.shadowColor", "win.3d.darkShadowColor"},
new Object[]{UIDefaultsLookup.get("control"), UIDefaultsLookup.get("controlLtHighlight"), UIDefaultsLookup.get("controlShadow"), UIDefaultsLookup.get("controlDkShadow")}, toolkit, new ConvertListener() {
public Object convert(Object[] obj) {
return new ResizeFrameBorder((Color) obj[0], (Color) obj[1], (Color) obj[2], (Color) obj[3],
new Insets(4, 0, 0, 0));
}
});
uiDefaults = new Object[]{
// dock
"Workspace.background", mdiBackgroundColor,
"SidePane.margin", new InsetsUIResource(1, 1, 1, 1),
"SidePane.iconTextGap", 2,
"SidePane.textBorderGap", 13,
"SidePane.itemGap", 5,
"SidePane.groupGap", 13,
"SidePane.foreground", defaultDarkShadowColor,
"SidePane.background", new ColorUIResource(XertoUtils.getApplicationFrameBackgroundColor()),
"SidePane.lineColor", defaultShadowColor,
"SidePane.buttonBackground", new ColorUIResource(XertoUtils.getLightControlColor()),
"SidePane.selectedButtonBackground", selectedButtonColor,
"SidePane.selectedButtonForeground", defaultTextColor,
"SidePane.font", controlFont,
"SidePane.orientation", 1,
"SidePane.showSelectedTabText", Boolean.TRUE,
"SidePane.alwaysShowTabText", Boolean.FALSE,
"DockableFrame.defaultIcon", JideIconsFactory.getImageIcon(JideIconsFactory.DockableFrame.BLANK),
"DockableFrame.background", defaultBackgroundColor,
"DockableFrame.border", frameBorder,
"DockableFrame.floatingBorder", new BorderUIResource(BorderFactory.createLineBorder(XertoUtils.getFrameBorderColor())),
"DockableFrame.slidingEastBorder", useShadowBorder ? slidingEastFrameBorder : slidingEastFrameBorder2,
"DockableFrame.slidingWestBorder", useShadowBorder ? slidingWestFrameBorder : slidingWestFrameBorder2,
"DockableFrame.slidingNorthBorder", useShadowBorder ? slidingNorthFrameBorder : slidingNorthFrameBorder2,
"DockableFrame.slidingSouthBorder", useShadowBorder ? slidingSouthFrameBorder : slidingSouthFrameBorder2,
"DockableFrame.activeTitleBackground", activeTitleBackgroundColor,
"DockableFrame.activeTitleForeground", new ColorUIResource(Color.WHITE),
"DockableFrame.inactiveTitleBackground", defaultBackgroundColor,
"DockableFrame.inactiveTitleForeground", new ColorUIResource(Color.WHITE),
"DockableFrame.titleBorder", new BorderUIResource(BorderFactory.createEmptyBorder(1, 0, 1, 0)),
"DockableFrame.activeTitleBorderColor", activeTitleBackgroundColor,
"DockableFrame.inactiveTitleBorderColor", defaultShadowColor,
"DockableFrame.font", controlFont,
"DockableFrameTitlePane.gripperPainter", gripperPainter,
"DockableFrameTitlePane.font", controlFont,
"DockableFrameTitlePane.hideIcon", IconsFactory.getIcon(null, titleButtonImage, 0, 0, titleButtonSize, titleButtonSize),
"DockableFrameTitlePane.unfloatIcon", IconsFactory.getIcon(null, titleButtonImage, 0, titleButtonSize, titleButtonSize, titleButtonSize),
"DockableFrameTitlePane.floatIcon", IconsFactory.getIcon(null, titleButtonImage, 0, 2 * titleButtonSize, titleButtonSize, titleButtonSize),
"DockableFrameTitlePane.autohideIcon", IconsFactory.getIcon(null, titleButtonImage, 0, 3 * titleButtonSize, titleButtonSize, titleButtonSize),
"DockableFrameTitlePane.stopAutohideIcon", IconsFactory.getIcon(null, titleButtonImage, 0, 4 * titleButtonSize, titleButtonSize, titleButtonSize),
"DockableFrameTitlePane.hideAutohideIcon", IconsFactory.getIcon(null, titleButtonImage, 0, 5 * titleButtonSize, titleButtonSize, titleButtonSize),
"DockableFrameTitlePane.maximizeIcon", IconsFactory.getIcon(null, titleButtonImage, 0, 6 * titleButtonSize, titleButtonSize, titleButtonSize),
"DockableFrameTitlePane.restoreIcon", IconsFactory.getIcon(null, titleButtonImage, 0, 7 * titleButtonSize, titleButtonSize, titleButtonSize),
"DockableFrameTitlePane.titleBarComponent", Boolean.FALSE,
"DockableFrameTitlePane.alwaysShowAllButtons", Boolean.FALSE, // true if show all three buttons no matter if the buttons is available. false if only show buttons which is available
"DockableFrameTitlePane.buttonsAlignment", SwingConstants.TRAILING, // trailing or leading
"DockableFrameTitlePane.titleAlignment", SwingConstants.LEADING, // trailing or leading or center
"DockableFrameTitlePane.buttonGap", 0, // gap between buttons
"DockableFrameTitlePane.showIcon", Boolean.TRUE, // show icon or not, the alignment is the same as titleAlignment
"DockableFrameTitlePane.margin", new InsetsUIResource(0, 3, 0, 3), // gap
"Contour.color", new ColorUIResource(136, 136, 136),
"Contour.thickness", 4,
"ContentContainer.background", defaultFormBackground,
"ContentContainer.vgap", 3,
"ContentContainer.hgap", 3,
"DockingFramework.changeCursor", Boolean.FALSE,
"FrameContainer.contentBorderInsets", new InsetsUIResource(0, 0, 0, 0),
};
table.putDefaults(uiDefaults);
}
if ((products & PRODUCT_COMPONENTS) != 0) {
final int SIZE = 12;
final int MASK_SIZE = 12;
ImageIcon collapsiblePaneImage = IconsFactory.getImageIcon(XertoWindowsUtils.class, "icons/collapsible_pane_xerto.png"); // 12 x 12
ImageIcon collapsiblePaneMask = IconsFactory.getImageIcon(XertoWindowsUtils.class, "icons/collapsible_pane_mask.png"); // 12 x 12
ImageIcon normalIcon = IconsFactory.getIcon(null, collapsiblePaneImage, 0, 0, SIZE, SIZE);
ImageIcon emphasizedIcon = IconsFactory.getIcon(null, collapsiblePaneImage, SIZE, 0, SIZE, SIZE);
ImageIcon downMark = IconsFactory.getIcon(null, collapsiblePaneMask, 0, 0, MASK_SIZE, MASK_SIZE);
ImageIcon upMark = IconsFactory.getIcon(null, collapsiblePaneMask, 0, MASK_SIZE, MASK_SIZE, MASK_SIZE);
ColorUIResource collapsiblePaneBackground = new ColorUIResource(172, 168, 153);
uiDefaults = new Object[]{
// components
"CollapsiblePanes.border", new BorderUIResource(BorderFactory.createEmptyBorder(12, 12, 12, 12)),
"CollapsiblePanes.gap", 5,
"CollapsiblePane.background", collapsiblePaneBackground,
"CollapsiblePane.contentBackground", defaultLtHighlightColor,
"CollapsiblePane.foreground", new ColorUIResource(XertoUtils.getTextColor(collapsiblePaneBackground)),
"CollapsiblePane.emphasizedBackground", collapsiblePaneBackground,
"CollapsiblePane.emphasizedForeground", new ColorUIResource(XertoUtils.getTextColor(XertoUtils.getEmBaseColor(collapsiblePaneBackground))),
"CollapsiblePane.border", new BorderUIResource(BorderFactory.createEmptyBorder(0, 0, 0, 0)),
"CollapsiblePane.font", controlFont,
"CollapsiblePane.contentBorder", new BorderUIResource(BorderFactory.createEmptyBorder(8, 10, 8, 10)),
"CollapsiblePane.titleBorder", new BorderUIResource(BorderFactory.createEmptyBorder()),
"CollapsiblePane.titleFont", boldFont,
"CollapsiblePane.downIcon", IconsFactory.getOverlayIcon(null, normalIcon, downMark, SwingConstants.CENTER),
"CollapsiblePane.upIcon", IconsFactory.getOverlayIcon(null, normalIcon, upMark, SwingConstants.CENTER),
"CollapsiblePane.downIcon.emphasized", IconsFactory.getOverlayIcon(null, emphasizedIcon, downMark, SwingConstants.CENTER),
"CollapsiblePane.upIcon.emphasized", IconsFactory.getOverlayIcon(null, emphasizedIcon, upMark, SwingConstants.CENTER),
"CollapsiblePane.titleButtonBackground", normalIcon,
"CollapsiblePane.titleButtonBackground.emphasized", emphasizedIcon,
"StatusBarItem.border", new BorderUIResource(BorderFactory.createEmptyBorder(0, 1, 0, 1)),
"StatusBar.border", new StatusBarBorder(),
"StatusBar.gap", 2,
"StatusBar.background", defaultBackgroundColor,
"StatusBar.font", controlFont,
"MemoryStatusBarItem.fillColor", new ColorUIResource(236, 233, 176),
"DocumentPane.groupBorder", new BorderUIResource(BorderFactory.createLineBorder(Color.gray)),
"DocumentPane.newHorizontalGroupIcon", JideIconsFactory.getImageIcon(JideIconsFactory.WindowMenu.NEW_HORIZONTAL_TAB),
"DocumentPane.newVerticalGroupIcon", JideIconsFactory.getImageIcon(JideIconsFactory.WindowMenu.NEW_VERTICAL_TAB),
"DocumentPane.boldActiveTab", Boolean.FALSE,
};
table.putDefaults(uiDefaults);
}
if ((products & PRODUCT_ACTION) != 0) {
uiDefaults = new Object[]{
// action
"CommandBar.font", toolbarFont,
"CommandBar.background", commandBarBackground,
"CommandBar.foreground", defaultTextColor,
"CommandBar.shadow", defaultShadowColor,
"CommandBar.darkShadow", defaultDarkShadowColor,
"CommandBar.light", defaultHighlightColor,
"CommandBar.highlight", defaultLtHighlightColor,
"CommandBar.border", new BorderUIResource(BorderFactory.createEmptyBorder(1, 1, 1, 1)),
"CommandBar.borderVert", new BorderUIResource(BorderFactory.createEmptyBorder(1, 1, 1, 1)),
"CommandBar.borderFloating", new BorderUIResource(BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(UIDefaultsLookup.getColor("activeCaption"), 2),
BorderFactory.createEmptyBorder(1, 1, 1, 1))),
"CommandBar.ancestorInputMap",
new UIDefaults.LazyInputMap(new Object[]{
"UP", "navigateUp",
"KP_UP", "navigateUp",
"DOWN", "navigateDown",
"KP_DOWN", "navigateDown",
"LEFT", "navigateLeft",
"KP_LEFT", "navigateLeft",
"RIGHT", "navigateRight",
"KP_RIGHT", "navigateRight"
}),
"CommandBar.titleBarSize", 17,
"CommandBar.titleBarButtonGap", 1,
"CommandBar.titleBarBackground", activeTitleBackgroundColor,
"CommandBar.titleBarForeground", activeTitleTextColor,
"CommandBar.titleBarFont", boldFont,
"CommandBar.separatorSize", 5,
// *** Separator
"CommandBarSeparator.background", XertoUtils.getControlColor(),
"CommandBarSeparator.foreground", XertoUtils.getControlMidShadowColor(),
"Chevron.size", 11,
};
table.putDefaults(uiDefaults);
}
if ((products & PRODUCT_GRIDS) != 0) {
uiDefaults = new Object[]{
"NestedTableHeader.cellBorder", new HeaderCellBorder(),
"GroupList.ancestorInputMap", new UIDefaults.LazyInputMap(new Object[]{
"TAB", "selectNextGroup",
"shift TAB", "selectPreviousGroup",
}),
};
table.putDefaults(uiDefaults);
}
if ((products & PRODUCT_DIFF) != 0) {
uiDefaults = new Object[]{
"DiffMerge.changed", new ColorUIResource(196, 196, 255),
"DiffMerge.deleted", new ColorUIResource(200, 200, 200),
"DiffMerge.inserted", new ColorUIResource(196, 255, 196),
"DiffMerge.conflicted", new ColorUIResource(255, 153, 153),
};
table.putDefaults(uiDefaults);
}
if (!JideSwingUtilities.shouldUseSystemFont()) {
Object uiDefaultsFont[] = {
"TabbedPane.font", controlFont,
"TitledBorder.font", boldFont,
"TableHeader.font", controlFont,
"Table.font", controlFont,
"List.font", controlFont,
"Tree.font", controlFont,
"ToolTip.font", controlFont,
"CheckBox.font", controlFont,
"RadioButton.font", controlFont,
"Label.font", controlFont,
"Panel.font", controlFont,
"TextField.font", controlFont,
"ComboBox.font", controlFont,
"Button.font", controlFont
};
table.putDefaults(uiDefaultsFont);
}
UIDefaultsLookup.put(table, "Theme.painter", XertoPainter.getInstance());
}
}