In this example I’m showing how I use the LookAndFeelService in conjection with the EnvironmentService to configure the LAF defaults based on the runtime environment. The LookAndFeelModule allows me to configure various look and feel aspects based on the runtime environment.
The LookAndFeelModule is the starting point. You configure it and it configures the LookAndFeelService appropriately.
// create the module LookAndFeelModule lafModule = new LookAndFeelModule(); // set the default look and feel. lafModule.setDefaultLookAndFeel(UIManager.getSystemLookAndFeelClassName()); // now configure environment specific lafs lafModule.registerLookAndFeel(MacOSX.class, QuaquaLookAndFeel.class.getName());
I also use a replacement for JOptionPane that supports application wide and document specific option panes as required by the Mac. This too needs to be configured based on the environment we’re running on.
// Configure the MessagePaneProvider to use by default lafModule.setDefaultMessagePaneProvider(new GenericMessagePaneProvider()); // now configure environment specific MessagePane providers lafModule.registerMessagePaneProvider(MacOSX.class, new MacMessagePaneProvider());
Then I simply pass the module to my application launcher. The application retrieves the LookAndFeelService and invokes its configure method.
Launcher.launch(MyApplication.class, args, lafModule);
Of course instead of repeating this in every application I’ve created a default module implementation that’s preconfigured. So all I need do is:
Launcher.launch(MyApplication.class, args, new DefaultLookAndFeelModule());
And everything just works. Nice.