JIDE 3.5.15

com.jidesoft.plaf
Class LookAndFeelFactory

java.lang.Object
  extended by com.jidesoft.plaf.LookAndFeelFactory
All Implemented Interfaces:
ProductNames

public class LookAndFeelFactory
extends Object
implements ProductNames

JIDE Software created many new components that need their own ComponentUI classes and additional UIDefaults in UIDefaults table. LookAndFeelFactory can take the UIDefaults from any existing look and feel and add the extra UIDefaults JIDE components need.

Before using any JIDE components, please make you call one of the two LookAndFeelFactory.installJideExtension(...) methods. Basically, you set L&F using UIManager first just like before, then call installJideExtension. See code below for an example.

 UIManager.setLookAndFeel(WindowsLookAndFeel.class.getName()); // you need to catch the exceptions on this call.
 LookAndFeelFactory.installJideExtension();
 
LookAndFeelFactory.installJideExtension() method will check what kind of L&F you set and what operating system you are on and decide which style of JIDE extension it will install. Here is the rule. There is also another installJideExtension which takes an int style parameter. You can pass in EXTENSION_STYLE_VSNET, EXTENSION_STYLE_ECLIPSE, EXTENSION_STYLE_ECLIPSE3X, EXTENSION_STYLE_OFFICE2003, EXTENSION_STYLE_OFFICE2007, or EXTENSION_STYLE_XERTO, EXTENSION_STYLE_OFFICE2003_WITHOUT_MENU, EXTENSION_STYLE_OFFICE2007_WITHOUT_MENU, EXTENSION_STYLE_ECLIPSE_WITHOUT_MENU, EXTENSION_STYLE_ECLIPSE3X_WITHOUT_MENU. In the other word, you will make the choice of style instead of letting LookAndFeelFactory to decide one for you. Please note, there is no constant defined for AQUA_STYLE. The only way to use it is when you are using Aqua L&F or Quaqua L&F and you call installJideExtension() method, the one without parameter.

Another way is to call installDefaultLookAndFeelAndExtension() which will set the default L&Fs based on the OS and install JIDE extension.

LookAndFeelFactory supports a number of known L&Fs. Some are L&Fs in the JDK such as Metal, Windows, Aqua (on Apple JDK only), GTK. We also support some 3rd party L&Fs such as Plastic XP or Plastic 3D, Tonic, A03, Synthetica etc.

If you are using a 3rd party L&F we are not officially supporting, you might need to customize it. Here are two classes you can use - LookAndFeelFactory.UIDefaultsInitializer and LookAndFeelFactory.UIDefaultsCustomizer.

Let's start with UIDefaultsCustomizer. No matter what unknown L&F you are trying to use, LookAndFeelFactory's installJideExtension() will try to install the UIDefaults that JIDE components required. Hopefully JIDE will run on your L&F without any exception. But most likely, it won't look very good. That's why you need LookAndFeelFactory.UIDefaultsCustomizer to customize the UIDefaults.

Most likely, you will not need to use LookAndFeelFactory.UIDefaultsInitializer. The only exception is Synth L&F and any L&Fs based on it. The reason is we calculate all colors we will use in JIDE components from existing well-known UIDefaults. For example, we will use UIManagerLookup.getColor("activeCaption") to calculate a color that we can use in dockable frame's title pane. We will use UIManagerLookup.getColor("control") to calculate a color that we can use as background of JIDE component. Most L&Fs will fill those UIDefaults. However in Synth L&F, those UIDefaults may or may not have a valid value. You will end up with NPE later in the code when you call installJideExtension. In this case, you can add those extra UIDefaults in UIDefaultsInitializer. We will call it before installJideExtension is called so that those UIDefaults are there ready for us to use. This is how added support to GTK L&F and Synthetica L&F.

After you create your own UIDefaultsCustomizer or Initializer, you can call addUIDefaultsCustomizer(com.jidesoft.plaf.LookAndFeelFactory.UIDefaultsCustomizer) or addUIDefaultsInitializer(com.jidesoft.plaf.LookAndFeelFactory.UIDefaultsInitializer) which will make the customizer or the initializer triggered all the times. If you only want it to be used for a certain L&F, you should use registerDefaultCustomizer(String, String) or registerDefaultInitializer(String, String).

By default, we also use UIDefaultsCustomizer and UIDefaultsInitializer internally to provide support for non-standard L&Fs. However we look into the classes under "com.jidesoft.plaf" package for default customizers and initializers. For example, for PlasticXPLookAndFeel, the corresponding customizer is "oom.jidesoft.plaf.plasticxp.PlasticXPCustomizer". We basically take the L&F name "PlasticXP", append it after "com.jidesoft.plaf" using lower case to get package name, take the L&F name, append with "Customizer" to get the class name. We will look at PlasticXPLookAndFeel's super class which is PlasticLookAndFeel. The customizer corresponding to PlasticLookAndFeel is "com.jidesoft.plaf.plastic.PlasticCustomizer". This searching process continues till we find all super classes of a L&F. Then we start from its top-most super class and call the customizers one by one, if it is there. The src-plaf.jar or src-plaf-jdk7.jar contain some of these customizers. You could use this naming pattern to create the customizers so that you don't need to register them explicitly.

installJideExtension() method will only add the additional UIDefaults to current ClassLoader. If you have several class loaders in your system, you probably should tell the UIManager to use the class loader that called installJideExtension. Otherwise, you might some unexpected errors. Here is how to specify the class loaders.

 UIManager.put("ClassLoader", currentClass.getClassLoader()); // currentClass is the class where the code is.
 LookAndFeelFactory.installDefaultLookAndFeelAndExtension(); // or installJideExtension()
 


Nested Class Summary
static interface LookAndFeelFactory.UIDefaultsCustomizer
          An interface to make the customization of UIDefaults easier.
static interface LookAndFeelFactory.UIDefaultsInitializer
          An interface to make the initialization of UIDefaults easier.
 
Field Summary
static String A03_LNF
          Class name of A03 L&F.
static String ALLOY_LNF
          Class name of Alloy L&F.
static String AQUA_LNF
          Class name of Aqua L&F provided in Apple Mac OS X JDK.
static String AQUA_LNF_6
          Class name of Aqua L&F provided in Apple Mac OS X JDK.
static String BIZ_LNF
          Class name of Bizlaf L&F provided by Centigrade.
static int ECLIPSE_STYLE
          The same as EXTENSION_STYLE_ECLIPSE
static int ECLIPSE3X_STYLE
          The same as EXTENSION_STYLE_ECLIPSE
static int EXTENSION_STYLE_ECLIPSE
          A style that you can use with installJideExtension(int) method.
static int EXTENSION_STYLE_ECLIPSE_WITHOUT_MENU
          A style that you can use with installJideExtension(int) method.
static int EXTENSION_STYLE_ECLIPSE3X
          A style that you can use with installJideExtension(int) method.
static int EXTENSION_STYLE_ECLIPSE3X_WITHOUT_MENU
          A style that you can use with installJideExtension(int) method.
static int EXTENSION_STYLE_OFFICE2003
          A style that you can use with installJideExtension(int) method.
static int EXTENSION_STYLE_OFFICE2003_WITHOUT_MENU
          Deprecated. 
static int EXTENSION_STYLE_OFFICE2007
          A style that you can use with installJideExtension(int) method.
static int EXTENSION_STYLE_OFFICE2007_WITHOUT_MENU
          Deprecated. 
static int EXTENSION_STYLE_VSNET
          A style that you can use with installJideExtension(int) method.
static int EXTENSION_STYLE_VSNET_WITHOUT_MENU
          A style that you can use with installJideExtension(int) method.
static int EXTENSION_STYLE_XERTO
          A style that you can use with installJideExtension(int) method.
static int EXTENSION_STYLE_XERTO_WITHOUT_MENU
          A style that you can use with installJideExtension(int) method.
static String GTK_LNF
          Class name of GTK L&F provided by Sun JDK.
static String JIDE_EXTENSION_INSTALLED
          If installJideExtension is called, it will put an entry on UIDefaults table.
static String JIDE_STYLE_INSTALLED
          If installJideExtension is called, a JIDE style will be installed on UIDefaults table.
static String LAF_INSTALLED
           
static String LAF_NOT_INSTALLED
           
static String METAL_LNF
          Class name of Metal L&F provided in Sun JDK.
static String MOTIF_LNF
          Class name of Motif L&F provided by Sun JDK.
static String NIMBUS_LNF_NAME
          The name of Nimbus L&F.
static int OFFICE2003_STYLE
          The same as EXTENSION_STYLE_OFFICE2003
static int OFFICE2007_STYLE
          The same as EXTENSION_STYLE_OFFICE2007
static String PGS_LNF
          Class name of Pgs L&F.
static String PLASTIC3D_LNF
          Class name of Plastic3D L&F.
static String PLASTIC3D_LNF_1_3
          Deprecated. replaced by PLASTIC3D_LNF
static String PLASTICXP_LNF
          Class name of PlasticXP L&F.
static String QUAQUA_LNF
          Class name of Quaqua L&F.
static String SYNTH_LNF
          Class name of Synth L&F provided in Sun JDK.
static String SYNTHETICA_LNF
          Class name of Synthetica L&F.
static String SYNTHETICA_LNF_PREFIX
           
static String TONIC_LNF
          Class name of Tonic L&F.
static int VSNET_STYLE
          The same as EXTENSION_STYLE_VSNET
static int VSNET_STYLE_WITHOUT_MENU
          The same as EXTENSION_STYLE_VSNET_WITHOUT_MENU
static String WINDOWS_CLASSIC_LNF
          Class name of Windows L&F provided in Sun JDK.
static String WINDOWS_LNF
          Class name of Windows L&F provided in Sun JDK.
static int XERTO_STYLE
          The same as EXTENSION_STYLE_XERTO
static int XERTO_STYLE_WITHOUT_MENU
          The same as EXTENSION_STYLE_XERTO_WITHOUT_MENU
 
Fields inherited from interface com.jidesoft.utils.ProductNames
COMPONENT_PRODUCTS, PRODUCT_ACTION, PRODUCT_ALL, PRODUCT_CHARTS, PRODUCT_CODE_EDITOR, PRODUCT_COMMON, PRODUCT_COMPONENTS, PRODUCT_DASHBOARD, PRODUCT_DATAGRIDS, PRODUCT_DIALOGS, PRODUCT_DIFF, PRODUCT_DOCK, PRODUCT_ENTERPRISE_SUITE, PRODUCT_FEEDREADER, PRODUCT_GANTT_CHART, PRODUCT_GRIDS, PRODUCT_JDAF, PRODUCT_NAME_ACTION, PRODUCT_NAME_CHARTS, PRODUCT_NAME_CODE_EDITOR, PRODUCT_NAME_COMMON, PRODUCT_NAME_COMPONENTS, PRODUCT_NAME_DASHBOARD, PRODUCT_NAME_DATAGRIDS, PRODUCT_NAME_DIALOGS, PRODUCT_NAME_DIFF, PRODUCT_NAME_DOCK, PRODUCT_NAME_FEEDREADER, PRODUCT_NAME_GANTT_CHART, PRODUCT_NAME_GRIDS, PRODUCT_NAME_JDAF, PRODUCT_NAME_PIVOT, PRODUCT_NAME_SHORTCUT, PRODUCT_NAME_TREEMAP, PRODUCT_PIVOT, PRODUCT_PROFESSIONAL_SUITE, PRODUCT_SHORTCUT, PRODUCT_SOLUTION, PRODUCT_TREEMAP, PRODUCT_ULTIMATE_SUITE, SOLUTION_PRODUCTS
 
Constructor Summary
protected LookAndFeelFactory()
           
 
Method Summary
static void addUIDefaultsCustomizer(LookAndFeelFactory.UIDefaultsCustomizer uiDefaultsCustomizer)
          Adds your own UIDefaults customizer.
static void addUIDefaultsInitializer(LookAndFeelFactory.UIDefaultsInitializer uiDefaultsInitializer)
          Adds your own UIDefaults initializer.
static void clearDefaultCustomizers()
          Clears all registered customizers.
static void clearDefaultInitializers()
          Clears all registered initializers.
static int getDefaultStyle()
          Gets the default style.
static LookAndFeel getLookAndFeel()
          Gets current L&F.
static int getProductsUsed()
           
static int getStyle()
          Gets current style.
static LookAndFeelFactory.UIDefaultsCustomizer[] getUIDefaultsCustomizers()
          Gets all UIDefaults customizers.
static LookAndFeelFactory.UIDefaultsInitializer[] getUIDefaultsInitializers()
          Gets all UIDefaults initializers.
static ClassLoader getUIManagerClassLoader()
           
static void installDefaultLookAndFeel()
          Install the default L&F.
static void installDefaultLookAndFeelAndExtension()
          Install the default L&F.
static void installJideExtension()
          Adds additional UIDefaults JIDE needed to UIDefault table.
static void installJideExtension(int style)
          Add additional UIDefaults JIDE needed to UIDefaults table.
static void installJideExtension(UIDefaults uiDefaults, LookAndFeel lnf, int style)
          Installs the UIDefault needed by JIDE component to the uiDefaults table passed in.
static boolean isA03LnfInstalled()
          Returns whether A03 L&F is in classpath
static boolean isAlloyLnfInstalled()
          Returns whether alloy L&F is in classpath
static boolean isAquaLnfInstalled()
          Returns whether or not the Aqua L&F is in classpath.
static boolean isBizlafLnfInstalled()
          Returns whether Bizlaf L&F is in classpath
static boolean isCurrentLnfDecorated()
          Checks if the current L&F uses decorated frames.
static boolean isGTKLnfInstalled()
          Returns whether GTK L&F is in classpath
static boolean isJideExtensionInstalled()
          Checks if JIDE extension is installed.
static boolean isLnfInstalled(String lnfName)
          Returns whether or not the L&F is in classpath.
static boolean isLnfInUse(String lnf)
          Checks if the L&F is the L&F or a subclass of the L&F.
static boolean isLoadLookAndFeelClass()
          Gets the flag indicating if JIDE will try to load the LnF class when isLnfInstalled(String) is invoked.
static boolean isNimbusLnfInstalled()
          Returns whether or not the Nimbus L&F is in classpath.
static boolean isPgsLnfInstalled()
          Returns whether or not the Pgs L&F is in classpath.
static boolean isPlastic3D13LnfInstalled()
          Deprecated. replace by isPlastic3DLnfInstalled()
static boolean isPlastic3DLnfInstalled()
          Returns whether Plastic3D L&F is in classpath
static boolean isPlasticXPLnfInstalled()
          Returns whether PlasticXP L&F is in classpath
static boolean isQuaquaLnfInstalled()
          Returns whether or not the Quaqua L&F is in classpath.
static boolean isSyntheticaLnfInstalled()
          Returns whether or not the Synthetica L&F is in classpath.
static boolean isTonicLnfInstalled()
          Returns whether Tonic L&F is in classpath
static void main(String[] args)
           
static void overwriteDefaults(UIDefaults table, Object[] keyValueArray)
          Puts a list of UIDefault to the UIDefaults table.
static void putDefaults(UIDefaults table, Object[] keyValueArray)
          Puts a list of UIDefault to the UIDefaults table.
static void registerDefaultCustomizer(String lnfClassName, String customizerClassName)
          Registers a UIDefaultsCustomizer with a L&F.
static void registerDefaultInitializer(String lnfClassName, String initializerClassName)
          Registers a UIDefaultsInitializer with a L&F.
static void removeUIDefaultsCustomizer(LookAndFeelFactory.UIDefaultsCustomizer uiDefaultsCustomizer)
          Removes an existing UIDefaults customizer you added before.
static void removeUIDefaultsInitializer(LookAndFeelFactory.UIDefaultsInitializer uiDefaultsInitializer)
          Removes an existing UIDefaults initializer you added before.
static void setDefaultStyle(int defaultStyle)
          Sets the default style.
static void setLnfInstalled(String lnfName, boolean installed)
          Tells the LookAndFeelFactory whether a L&F is installed.
static void setLoadLookAndFeelClass(boolean loadLookAndFeelClass)
          Sets the flag indicating if JIDE will try to load the L&F class when isLnfInstalled(String) is invoked.
static void setProductsUsed(int productsUsed)
          Sets the products you will use.
static void unregisterDefaultCustomizer(String lnfClassName)
          Unregisters a UIDefaultCustomizer for L&F.
static void unregisterDefaultInitializer(String lnfClassName)
          Unregisters a UIDefaultsInitializer for L&F.
static void verifyDefaults(UIDefaults table, Object[] keyValueList)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

WINDOWS_CLASSIC_LNF

public static final String WINDOWS_CLASSIC_LNF
Class name of Windows L&F provided in Sun JDK.

See Also:
Constant Field Values

WINDOWS_LNF

public static final String WINDOWS_LNF
Class name of Windows L&F provided in Sun JDK.

See Also:
Constant Field Values

METAL_LNF

public static final String METAL_LNF
Class name of Metal L&F provided in Sun JDK.

See Also:
Constant Field Values

SYNTH_LNF

public static final String SYNTH_LNF
Class name of Synth L&F provided in Sun JDK.

See Also:
Constant Field Values

AQUA_LNF

public static final String AQUA_LNF
Class name of Aqua L&F provided in Apple Mac OS X JDK.

See Also:
Constant Field Values

AQUA_LNF_6

public static final String AQUA_LNF_6
Class name of Aqua L&F provided in Apple Mac OS X JDK. This is the new package since Java Update 6.

See Also:
Constant Field Values

QUAQUA_LNF

public static final String QUAQUA_LNF
Class name of Quaqua L&F.

See Also:
Constant Field Values

ALLOY_LNF

public static final String ALLOY_LNF
Class name of Alloy L&F.

See Also:
Constant Field Values

SYNTHETICA_LNF

public static final String SYNTHETICA_LNF
Class name of Synthetica L&F.

See Also:
Constant Field Values

SYNTHETICA_LNF_PREFIX

public static final String SYNTHETICA_LNF_PREFIX
See Also:
Constant Field Values

PLASTIC3D_LNF

public static final String PLASTIC3D_LNF
Class name of Plastic3D L&F.

See Also:
Constant Field Values

PLASTIC3D_LNF_1_3

@Deprecated
public static final String PLASTIC3D_LNF_1_3
Deprecated. replaced by PLASTIC3D_LNF
Class name of Plastic3D L&F after JGoodies Look 1.3 release.

See Also:
Constant Field Values

PLASTICXP_LNF

public static final String PLASTICXP_LNF
Class name of PlasticXP L&F.

See Also:
Constant Field Values

TONIC_LNF

public static final String TONIC_LNF
Class name of Tonic L&F.

See Also:
Constant Field Values

A03_LNF

public static final String A03_LNF
Class name of A03 L&F.

See Also:
Constant Field Values

PGS_LNF

public static final String PGS_LNF
Class name of Pgs L&F.

See Also:
Constant Field Values

GTK_LNF

public static final String GTK_LNF
Class name of GTK L&F provided by Sun JDK.

See Also:
Constant Field Values

MOTIF_LNF

public static final String MOTIF_LNF
Class name of Motif L&F provided by Sun JDK.

See Also:
Constant Field Values

BIZ_LNF

public static final String BIZ_LNF
Class name of Bizlaf L&F provided by Centigrade.

See Also:
Constant Field Values

NIMBUS_LNF_NAME

public static final String NIMBUS_LNF_NAME
The name of Nimbus L&F. We didn't create a constant for Nimbus is because the package name will be changed in JDK7 release

See Also:
Constant Field Values

VSNET_STYLE_WITHOUT_MENU

public static final int VSNET_STYLE_WITHOUT_MENU
The same as EXTENSION_STYLE_VSNET_WITHOUT_MENU

See Also:
EXTENSION_STYLE_VSNET_WITHOUT_MENU, Constant Field Values

VSNET_STYLE

public static final int VSNET_STYLE
The same as EXTENSION_STYLE_VSNET

See Also:
EXTENSION_STYLE_VSNET, Constant Field Values

ECLIPSE_STYLE

public static final int ECLIPSE_STYLE
The same as EXTENSION_STYLE_ECLIPSE

See Also:
EXTENSION_STYLE_ECLIPSE, Constant Field Values

OFFICE2003_STYLE

public static final int OFFICE2003_STYLE
The same as EXTENSION_STYLE_OFFICE2003

See Also:
EXTENSION_STYLE_OFFICE2003, Constant Field Values

XERTO_STYLE

public static final int XERTO_STYLE
The same as EXTENSION_STYLE_XERTO

See Also:
EXTENSION_STYLE_XERTO, Constant Field Values

XERTO_STYLE_WITHOUT_MENU

public static final int XERTO_STYLE_WITHOUT_MENU
The same as EXTENSION_STYLE_XERTO_WITHOUT_MENU

See Also:
EXTENSION_STYLE_XERTO_WITHOUT_MENU, Constant Field Values

ECLIPSE3X_STYLE

public static final int ECLIPSE3X_STYLE
The same as EXTENSION_STYLE_ECLIPSE

See Also:
EXTENSION_STYLE_ECLIPSE, Constant Field Values

OFFICE2007_STYLE

public static final int OFFICE2007_STYLE
The same as EXTENSION_STYLE_OFFICE2007

See Also:
EXTENSION_STYLE_OFFICE2007, Constant Field Values

EXTENSION_STYLE_VSNET_WITHOUT_MENU

public static final int EXTENSION_STYLE_VSNET_WITHOUT_MENU
A style that you can use with installJideExtension(int) method. This style is the same as VSNET_STYLE except it doesn't have menu related UIDefaults. You can only use this style if you didn't use any component from JIDE Action Framework.

See Also:
EXTENSION_STYLE_VSNET, Constant Field Values

EXTENSION_STYLE_VSNET

public static final int EXTENSION_STYLE_VSNET
A style that you can use with installJideExtension(int) method. This style mimics the visual style of Microsoft Visual Studio .NET for the toolbars, menus and dockable windows.

Vsnet style is a very simple style with no gradient. Although it works on almost all L&Fs in any operating systems, it looks the best on Windows 2000 or 98, or on Windows XP when XP theme is not on. If XP theme is on, we suggest you use Office2003 style or Xerto style. Since the style is so simple, it works with a lot of the 3rd party L&F such as Tonic, Pgs, Alloy etc without causing too much noise. That's why this is also the default style for any L&Fs we don't recognize when you call installJideExtension(), the one with out style parameter. If you would like another style to be used as the default style, you can call setDefaultStyle(int) method.

Here is the code to set to Windows L&F with Vsnet style extension.

 UIManager.setLookAndFeel(WindowsLookAndFeel.class.getName()); // you need to catch the
 exceptions on this call.
 LookAndFeelFactory.installJideExtension(LookAndFeelFactory.EXTENSION_STYLE_VSNET);
 
There is a special system property "shading theme" you can use. If you turn it on using the code below, you will see a gradient on dockable frame's title pane and rounded corner and gradient on the tabs of JideTabbedPane. So if the L&F you are using uses gradient, you can set this property to true to match with your L&F. For example, if you use Plastic3D L&F, turning this property on will look better.
 System.setProperty("shadingtheme", "true");
 

See Also:
Constant Field Values

EXTENSION_STYLE_ECLIPSE

public static final int EXTENSION_STYLE_ECLIPSE
A style that you can use with installJideExtension(int) method. This style mimics the visual style of Eclipse 2.x for the toolbars, menus and dockable windows.

Eclipse style works for almost all L&Fs and on any operating systems, although it looks the best on Windows. For any other operating systems we suggest you to use EXTENSION_STYLE_XERTO or EXTENSION_STYLE_VSNET.

Here is the code to set to any L&F with Eclipse style extension.

 UIManager.setLookAndFeel(AnyLookAndFeel.class.getName()); // you need to catch the
 exceptions
 on this call.
 LookAndFeelFactory.installJideExtension(LookAndFeelFactory.EXTENSION_STYLE_ECLIPSE);
 

See Also:
Constant Field Values

EXTENSION_STYLE_OFFICE2003

public static final int EXTENSION_STYLE_OFFICE2003
A style that you can use with installJideExtension(int) method. This style mimics the visual style of Microsoft Office2003 for the toolbars, menus and dockable windows.

Office2003 style looks great on Windows XP when Windows or Windows XP L&F from Sun JDK is used. It replicated the exact same style as Microsoft Office 2003, to give your end user a familiar visual style.

Here is the code to set to Windows L&F with Office2003 style extension.

 UIManager.setLookAndFeel(WindowsLookAndFeel.class.getName()); // you need to catch the
 exceptions on this call.
 LookAndFeelFactory.installJideExtension(LookAndFeelFactory.EXTENSION_STYLE_OFFICE2003);
 
It works either on any other Windows such asWindows 2000, Windows 98 etc. If you are on Windows XP, Office2003 style will change theme based on the theme setting in Windows Display Property. But if you are not on XP, Office2003 style will use the default gray theme only. You can force to change it using Office2003Painter.setColorName(String) method, but it won't look good as other non-JIDE components won't have the matching theme.

Office2003 style doesn't work on any operating systems other than Windows mainly because the design of Office2003 style is so centric to Windows that it doesn't look good on other operating systems.

See Also:
Constant Field Values

EXTENSION_STYLE_XERTO

public static final int EXTENSION_STYLE_XERTO
A style that you can use with installJideExtension(int) method. This style is created by Xerto (http://www.xerto.com) which is used in their Imagery product.

Xerto style looks great on Windows XP when Windows XP L&F from Sun JDK is used.

Here is the code to set to Windows L&F with Xerto style extension.

 UIManager.setLookAndFeel(WindowsLookAndFeel.class.getName()); // you need to catch the
 exceptions on this call.
 LookAndFeelFactory.installJideExtension(LookAndFeelFactory.EXTENSION_STYLE_XERTO);
 
Although it looks the best on Windows, Xerto style also supports Linux or Solaris if you use any L&Fs based on Metal L&F or Synth L&F. For example, we recommend you to use Xerto style as default if you use SyntheticaL&F, a L&F based on Synth. To use it, you basically replace WindowsLookAndFeel to the L&F you want to use in setLookAndFeel line above.

See Also:
Constant Field Values

EXTENSION_STYLE_ECLIPSE3X

public static final int EXTENSION_STYLE_ECLIPSE3X
A style that you can use with installJideExtension(int) method. This style mimics the visual style of Eclipse 3.x for the toolbars, menus and dockable windows.

Eclipse 3x style works for almost all L&Fs and on any operating systems, although it looks the best on Windows. For any other OS's we suggest you to use EXTENSION_STYLE_XERTO or EXTENSION_STYLE_VSNET.

 UIManager.setLookAndFeel(AnyLookAndFeel.class.getName()); // you need to catch the
 exceptions
 on this call.
 LookAndFeelFactory.installJideExtension(LookAndFeelFactory.EXTENSION_STYLE_ECLIPSE3X);
 

See Also:
Constant Field Values

EXTENSION_STYLE_XERTO_WITHOUT_MENU

public static final int EXTENSION_STYLE_XERTO_WITHOUT_MENU
A style that you can use with installJideExtension(int) method. This style is the same as XERTO_STYLE except it doesn't have menu related UIDefaults. You can only use this style if you didn't use any component from JIDE Action Framework. Please note, we only use menu extension for Xerto style when the underlying L&F is Windows L&F. If you are using L&F such as Metal or other 3rd party L&F based on Metal, XERTO_STYLE_WITHOUT_MENU will be used even you use XERTO_STYLE when calling to installJideExtension().

See Also:
EXTENSION_STYLE_XERTO, Constant Field Values

EXTENSION_STYLE_OFFICE2007

public static final int EXTENSION_STYLE_OFFICE2007
A style that you can use with installJideExtension(int) method. This style mimics the visual style of Microsoft Office2007 for the toolbars, menus and dockable windows.

Office2007 style looks great on Windows Vista when Windows L&F from Sun JDK is used. It replicated the exact same style as Microsoft Office 2007, to give your end user a familiar visual style.

Here is the code to set to Windows L&F with Office2007 style extension.

 UIManager.setLookAndFeel(WindowsLookAndFeel.class.getName()); // you need to catch the
 exceptions on this call.
 LookAndFeelFactory.installJideExtension(LookAndFeelFactory.EXTENSION_STYLE_OFFICE2007);
 

Office2007 style doesn't work on any operating systems other than Windows mainly because the design of Office2003 style is so centric to Windows that it doesn't look good on other operating systems.

Because we use some painting code that is only available in JDK6, Office 2007 style only runs if you are using JDK6 and above.

See Also:
Constant Field Values

EXTENSION_STYLE_OFFICE2003_WITHOUT_MENU

@Deprecated
public static final int EXTENSION_STYLE_OFFICE2003_WITHOUT_MENU
Deprecated. 
A style that you can use with installJideExtension(int) method. This style is the same as EXTENSION_STYLE_OFFICE2003 except it doesn't have menu related UIDefaults. You can only use this style if you didn't use any component from JIDE Action Framework.

See Also:
EXTENSION_STYLE_OFFICE2003, Constant Field Values

EXTENSION_STYLE_OFFICE2007_WITHOUT_MENU

@Deprecated
public static final int EXTENSION_STYLE_OFFICE2007_WITHOUT_MENU
Deprecated. 
A style that you can use with installJideExtension(int) method. This style is the same as EXTENSION_STYLE_OFFICE2007 except it doesn't have menu related UIDefaults. You can only use this style if you didn't use any component from JIDE Action Framework.

See Also:
EXTENSION_STYLE_OFFICE2007, Constant Field Values

EXTENSION_STYLE_ECLIPSE_WITHOUT_MENU

public static final int EXTENSION_STYLE_ECLIPSE_WITHOUT_MENU
A style that you can use with installJideExtension(int) method. This style is the same as EXTENSION_STYLE_ECLIPSE except it doesn't have menu related UIDefaults. You can only use this style if you didn't use any component from JIDE Action Framework.

See Also:
EXTENSION_STYLE_ECLIPSE3X, Constant Field Values

EXTENSION_STYLE_ECLIPSE3X_WITHOUT_MENU

public static final int EXTENSION_STYLE_ECLIPSE3X_WITHOUT_MENU
A style that you can use with installJideExtension(int) method. This style is the same as EXTENSION_STYLE_ECLIPSE3X except it doesn't have menu related UIDefaults. You can only use this style if you didn't use any component from JIDE Action Framework.

See Also:
EXTENSION_STYLE_ECLIPSE3X, Constant Field Values

JIDE_EXTENSION_INSTALLED

public static final String JIDE_EXTENSION_INSTALLED
If installJideExtension is called, it will put an entry on UIDefaults table. UIManagerLookup.getBoolean(JIDE_EXTENSION_INSTALLLED) will return true. You can also use isJideExtensionInstalled() to check the value instead of using UIManagerLookup.getBoolean(JIDE_EXTENSION_INSTALLLED).

See Also:
Constant Field Values

JIDE_STYLE_INSTALLED

public static final String JIDE_STYLE_INSTALLED
If installJideExtension is called, a JIDE style will be installed on UIDefaults table. If so, UIManagerLookup.getInt(JIDE_STYLE_INSTALLED) will return you the style that is installed. For example, if the value is 1, it means VSNET_STYLE is installed because 1 is the value of VSNET_STYLE.

See Also:
Constant Field Values

LAF_INSTALLED

public static final String LAF_INSTALLED
See Also:
Constant Field Values

LAF_NOT_INSTALLED

public static final String LAF_NOT_INSTALLED
See Also:
Constant Field Values
Constructor Detail

LookAndFeelFactory

protected LookAndFeelFactory()
Method Detail

getDefaultStyle

public static int getDefaultStyle()
Gets the default style. If you never set default style before, it will return OFFICE2003_STYLE if you are on Windows XP, L&F is instance of Windows L&F and XP theme is on. Otherwise, it will return VSNET_STYLE. If you set default style before, it will return whatever style you set.

Returns:
the default style.

setDefaultStyle

public static void setDefaultStyle(int defaultStyle)
Sets the default style. If you call this method to set a default style, installJideExtension() will use it as the default style.

Parameters:
defaultStyle - the default style.

installJideExtension

public static void installJideExtension()
Adds additional UIDefaults JIDE needed to UIDefault table. You must call this method every time switching look and feel. And call updateComponentTreeUI() in corresponding DockingManager or DockableBarManager after this call.

  try {
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
  }
  catch (ClassNotFoundException e) {
     e.printStackTrace();
  }
  catch (InstantiationException e) {
     e.printStackTrace();
  }
  catch (IllegalAccessException e) {
      e.printStackTrace();
  }
  catch (UnsupportedLookAndFeelException e) {
      e.printStackTrace();
  }
 

// to additional UIDefault for JIDE components LookAndFeelFactory.installJideExtension(); // use default style VSNET_STYLE. You can change to a different style using setDefaultStyle(int style) and then call this method. Or simply call installJideExtension(style).

// call updateComponentTreeUI frame.getDockableBarManager().updateComponentTreeUI(); frame.getDockingManager().updateComponentTreeUI();


installJideExtension

public static void installJideExtension(int style)
Add additional UIDefaults JIDE needed to UIDefaults table. You must call this method every time switching look and feel. And call updateComponentTreeUI() in corresponding DockingManager or DockableBarManager after this call.

  try {
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
  }
  catch (ClassNotFoundException e) {
     e.printStackTrace();
  }
  catch (InstantiationException e) {
     e.printStackTrace();
  }
  catch (IllegalAccessException e) {
      e.printStackTrace();
  }
  catch (UnsupportedLookAndFeelException e) {
      e.printStackTrace();
  }
 

// to add additional UIDefault for JIDE components LookAndFeelFactory.installJideExtension(LookAndFeelFactory.OFFICE2003_STYLE);

// call updateComponentTreeUI frame.getDockableBarManager().updateComponentTreeUI(); frame.getDockingManager().updateComponentTreeUI();

Parameters:
style - the style of the extension.

isJideExtensionInstalled

public static boolean isJideExtensionInstalled()
Checks if JIDE extension is installed. Please note, UIManager.setLookAndFeel() method will overwrite the whole UIDefaults table. So even you called installJideExtension() method before, UIManager.setLookAndFeel() method make isJideExtensionInstalled returning false.

Returns:
true if installed.

installJideExtension

public static void installJideExtension(UIDefaults uiDefaults,
                                        LookAndFeel lnf,
                                        int style)
Installs the UIDefault needed by JIDE component to the uiDefaults table passed in.

Parameters:
uiDefaults - the UIDefault tables where JIDE UIDefaults will be installed.
lnf - the LookAndFeel. This may have an effect on which set of JIDE UIDefaults we will install.
style - the style of the JIDE UIDefaults.

registerDefaultInitializer

public static void registerDefaultInitializer(String lnfClassName,
                                              String initializerClassName)
Registers a UIDefaultsInitializer with a L&F. Note that you can only register one initializer for a L&F.

Parameters:
lnfClassName - full class name of the L&F
initializerClassName - full class name of the UIDefaultInitializer

unregisterDefaultInitializer

public static void unregisterDefaultInitializer(String lnfClassName)
Unregisters a UIDefaultsInitializer for L&F.

Parameters:
lnfClassName - full class name of the L&F

clearDefaultInitializers

public static void clearDefaultInitializers()
Clears all registered initializers.


registerDefaultCustomizer

public static void registerDefaultCustomizer(String lnfClassName,
                                             String customizerClassName)
Registers a UIDefaultsCustomizer with a L&F. Note that you can only register one customizer for a L&F.

Parameters:
lnfClassName - full class name of the L&F
customizerClassName - full class name of the UIDefaultsCustomizer

unregisterDefaultCustomizer

public static void unregisterDefaultCustomizer(String lnfClassName)
Unregisters a UIDefaultCustomizer for L&F.

Parameters:
lnfClassName - full class name of the L&F

clearDefaultCustomizers

public static void clearDefaultCustomizers()
Clears all registered customizers.


isLnfInstalled

public static boolean isLnfInstalled(String lnfName)
Returns whether or not the L&F is in classpath. This method will check for pre-installed L&Fs using setLnfInstalled(String, boolean). If the L&F is not pre-installed, we will try to use class loader to load the class to determine if the L&F is installed. If you don't want us to load the class, you can call setLoadLookAndFeelClass(boolean) false. If so, we will solely depend on the setLnfInstalled method to determine if the L&F is installed.

Parameters:
lnfName - the L&F name.
Returns:
true if the L&F is in classpath, false otherwise

getUIManagerClassLoader

public static ClassLoader getUIManagerClassLoader()

isLnfInUse

public static boolean isLnfInUse(String lnf)
Checks if the L&F is the L&F or a subclass of the L&F.

Parameters:
lnf - the full class name of the L&F (including the package).
Returns:
true or false.

setLnfInstalled

public static void setLnfInstalled(String lnfName,
                                   boolean installed)
Tells the LookAndFeelFactory whether a L&F is installed. We will try to instantiate the class when isLnfInstalled(String) is called to determine if the class is in the class path. However you can call this method to tell if the L&F is available without us instantiating the class.

Parameters:
lnfName - the L&F name.
installed - true or false.

isAquaLnfInstalled

public static boolean isAquaLnfInstalled()
Returns whether or not the Aqua L&F is in classpath.

Returns:
true if aqua L&F is in classpath, false otherwise

isQuaquaLnfInstalled

public static boolean isQuaquaLnfInstalled()
Returns whether or not the Quaqua L&F is in classpath.

Returns:
true if Quaqua L&F is in classpath, false otherwise

isAlloyLnfInstalled

public static boolean isAlloyLnfInstalled()
Returns whether alloy L&F is in classpath

Returns:
true alloy L&F is in classpath, false otherwise

isBizlafLnfInstalled

public static boolean isBizlafLnfInstalled()
Returns whether Bizlaf L&F is in classpath

Returns:
true Bizlaf L&F is in classpath, false otherwise

isGTKLnfInstalled

public static boolean isGTKLnfInstalled()
Returns whether GTK L&F is in classpath

Returns:
true GTK L&F is in classpath, false otherwise

isPlastic3DLnfInstalled

public static boolean isPlastic3DLnfInstalled()
Returns whether Plastic3D L&F is in classpath

Returns:
true Plastic3D L&F is in classpath, false otherwise

isPlastic3D13LnfInstalled

@Deprecated
public static boolean isPlastic3D13LnfInstalled()
Deprecated. replace by isPlastic3DLnfInstalled()

Returns whether Plastic3D L&F is in classpath

Returns:
true Plastic3D L&F is in classpath, false otherwise

isPlasticXPLnfInstalled

public static boolean isPlasticXPLnfInstalled()
Returns whether PlasticXP L&F is in classpath

Returns:
true Plastic3D L&F is in classpath, false otherwise

isTonicLnfInstalled

public static boolean isTonicLnfInstalled()
Returns whether Tonic L&F is in classpath

Returns:
true Tonic L&F is in classpath, false otherwise

isA03LnfInstalled

public static boolean isA03LnfInstalled()
Returns whether A03 L&F is in classpath

Returns:
true A03 L&F is in classpath, false otherwise

isPgsLnfInstalled

public static boolean isPgsLnfInstalled()
Returns whether or not the Pgs L&F is in classpath.

Returns:
true if pgs L&F is in classpath, false otherwise

isSyntheticaLnfInstalled

public static boolean isSyntheticaLnfInstalled()
Returns whether or not the Synthetica L&F is in classpath.

Returns:
true if Synthetica L&F is in classpath, false otherwise

isNimbusLnfInstalled

public static boolean isNimbusLnfInstalled()
Returns whether or not the Nimbus L&F is in classpath.

Returns:
true if Nimbus L&F is in classpath, false otherwise

installDefaultLookAndFeelAndExtension

public static void installDefaultLookAndFeelAndExtension()
Install the default L&F. In this method, we will look at system property "swing.defaultlaf" first. If the value is set and it's not an instance of Synth L&F, we will use it. Otherwise, we will use Metal L&F is OS is Linux or UNIX and use UIManager.getSystemLookAndFeelClassName() for other OS. In addition, we will add JIDE extension to it.


installDefaultLookAndFeel

public static void installDefaultLookAndFeel()
Install the default L&F. In this method, we will look at system property "swing.defaultlaf" first. If the value is set and it's not an instance of Synth L&F, we will use it. Otherwise, we will use Metal L&F is OS is Linux or UNIX and use UIManager.getSystemLookAndFeelClassName() for other OS.


getLookAndFeel

public static LookAndFeel getLookAndFeel()
Gets current L&F.

Returns:
the current L&F.

getStyle

public static int getStyle()
Gets current style.

Returns:
the current style.

getUIDefaultsCustomizers

public static LookAndFeelFactory.UIDefaultsCustomizer[] getUIDefaultsCustomizers()
Gets all UIDefaults customizers.

Returns:
an array of UIDefaults customizers.

addUIDefaultsCustomizer

public static void addUIDefaultsCustomizer(LookAndFeelFactory.UIDefaultsCustomizer uiDefaultsCustomizer)
Adds your own UIDefaults customizer. You need to add it before installJideExtension() is called but the actual customize() code will be called after installJideExtension() is called.
 For example, we use "JideButton.font" as the UIDefault for the JideButton font. If you want
 to use another font, you can do
 LookAndFeelFactory.addUIDefaultsCustomizer(new LookAndFeelFactory.UIDefaultsCustomizer() {
     public void customize(UIDefaults defaults) {
         defaults.put("JideButton.font", whateverFont);
     }
 });
 LookAndFeelFactory.installJideExtension();
 

Parameters:
uiDefaultsCustomizer - the UIDefaultsCustomizer

removeUIDefaultsCustomizer

public static void removeUIDefaultsCustomizer(LookAndFeelFactory.UIDefaultsCustomizer uiDefaultsCustomizer)
Removes an existing UIDefaults customizer you added before.

Parameters:
uiDefaultsCustomizer - the UIDefaultsCustomizer

getUIDefaultsInitializers

public static LookAndFeelFactory.UIDefaultsInitializer[] getUIDefaultsInitializers()
Gets all UIDefaults initializers.

Returns:
an array of UIDefaults initializers.

addUIDefaultsInitializer

public static void addUIDefaultsInitializer(LookAndFeelFactory.UIDefaultsInitializer uiDefaultsInitializer)
Adds your own UIDefaults initializer. This initializer will be called before installJideExtension() is called.

Here is how you use it. For example, we use the color of UIDefault "activeCaption" to get the active title color which we will use for active title bar color in JIDE components. If the L&F you are using doesn't set this UIDefault, we might throw NPE later in the code. To avoid this, you call

 LookAndFeelFactory.addUIDefaultsInitializer(new LookAndFeelFactory.UIDefaultsInitializer() {
     public void initialize(UIDefaults defaults) {
         defaults.put("activeCaption", whateverColor);
     }
 });
 UIManager.setLookAndFeel(...); // set whatever L&F
 LookAndFeelFactory.installJideExtension(); // install the UIDefaults needed by the JIDE
 components
 

Parameters:
uiDefaultsInitializer - the UIDefaultsInitializer.

removeUIDefaultsInitializer

public static void removeUIDefaultsInitializer(LookAndFeelFactory.UIDefaultsInitializer uiDefaultsInitializer)
Removes an existing UIDefaults initializer you added before.

Parameters:
uiDefaultsInitializer - the UIDefaultsInitializer

verifyDefaults

public static void verifyDefaults(UIDefaults table,
                                  Object[] keyValueList)

putDefaults

public static void putDefaults(UIDefaults table,
                               Object[] keyValueArray)
Puts a list of UIDefault to the UIDefaults table. The keyValueList is an array with a key and value in pair. If the value is null, this method will remove the key from the table. If the table already has a value for the key, the new value will be ignored. This is the difference from putDefaults(javax.swing.UIDefaults, Object[]) method. You should use this method in LookAndFeelFactory.UIDefaultsInitializer so that it fills in the UIDefault value only when it is missing.

Parameters:
table - the ui defaults table
keyValueArray - the key value array. It is in the format of a key followed by a value.

overwriteDefaults

public static void overwriteDefaults(UIDefaults table,
                                     Object[] keyValueArray)
Puts a list of UIDefault to the UIDefaults table. The keyValueList is an array with a key and value in pair. If the value is null, this method will remove the key from the table. Otherwise, it will put the new value in even if the table already has a value for the key. This is the difference from putDefaults(javax.swing.UIDefaults, Object[]) method. You should use this method in LookAndFeelFactory.UIDefaultsCustomizer because you always want to override the existing value using the new value.

Parameters:
table - the ui defaults table
keyValueArray - the key value array. It is in the format of a key followed by a value.

getProductsUsed

public static int getProductsUsed()

setProductsUsed

public static void setProductsUsed(int productsUsed)
Sets the products you will use. This is needed so that LookAndFeelFactory knows what UIDefault to initialize. For example, if you use only JIDE Docking Framework and JIDE Grids, you should call setProductUsed(ProductNames.PRODUCT_DOCK | ProductNames.PRODUCT_GRIDS) so that we don't initialize UIDefaults needed by any other products. If you use this class as part of JIDE Common Layer open source project, you should call setProductUsed(ProductNames.PRODUCT_COMMON). If you want to use all JIDE products, you should call setProductUsed(ProductNames.PRODUCT_ALL)

Parameters:
productsUsed - a bit-wise OR of product values defined in ProductNames.

isCurrentLnfDecorated

public static boolean isCurrentLnfDecorated()
Checks if the current L&F uses decorated frames.

Returns:
true if the current L&F uses decorated frames. Otherwise false.

isLoadLookAndFeelClass

public static boolean isLoadLookAndFeelClass()
Gets the flag indicating if JIDE will try to load the LnF class when isLnfInstalled(String) is invoked.

Returns:
true if JIDE will try to load the LnF class. Otherwise false
Since:
3.2.0
See Also:
setLoadLookAndFeelClass(boolean)

setLoadLookAndFeelClass

public static void setLoadLookAndFeelClass(boolean loadLookAndFeelClass)
Sets the flag indicating if JIDE will try to load the L&F class when isLnfInstalled(String) is invoked.

By default, this flag is true. However, it may cause unexpected class loading, which may be a performance issue for web start applications. If this is a concern to your application, please try to set this flag to false and invoke setLnfInstalled(String, boolean) to make isLnfInstalled(String) returns correct value as you wish.

Parameters:
loadLookAndFeelClass - the flag
Since:
3.2.0

main

public static void main(String[] args)

JIDE 3.5.15