/*
* Copyright (c) 2005-2008 Substance Kirill Grouchnikov. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* o Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* o Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* o Neither the name of Substance Kirill Grouchnikov nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package test.check;
import java.awt.Event;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.util.LinkedList;
import java.util.Map;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JSeparator;
import javax.swing.KeyStroke;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import org.pushingpixels.substance.api.ColorSchemeTransform;
import org.pushingpixels.substance.api.ComponentState;
import org.pushingpixels.substance.api.DecorationAreaType;
import org.pushingpixels.substance.api.SubstanceColorScheme;
import org.pushingpixels.substance.api.SubstanceColorSchemeBundle;
import org.pushingpixels.substance.api.SubstanceLookAndFeel;
import org.pushingpixels.substance.api.SubstanceSkin;
import org.pushingpixels.substance.api.colorscheme.LightGrayColorScheme;
import org.pushingpixels.substance.api.colorscheme.MetallicColorScheme;
import org.pushingpixels.substance.api.colorscheme.OrangeColorScheme;
import org.pushingpixels.substance.api.painter.border.ClassicBorderPainter;
import org.pushingpixels.substance.api.painter.decoration.ArcDecorationPainter;
import org.pushingpixels.substance.api.painter.fill.GlassFillPainter;
import org.pushingpixels.substance.api.painter.highlight.GlassHighlightPainter;
import org.pushingpixels.substance.api.shaper.ClassicButtonShaper;
import org.pushingpixels.substance.api.skin.SkinInfo;
import test.Check;
import test.check.svg.flags.ar;
import test.check.svg.flags.bg;
import test.check.svg.flags.br;
import test.check.svg.flags.ca;
import test.check.svg.flags.cn;
import test.check.svg.flags.cz;
import test.check.svg.flags.de;
import test.check.svg.flags.dk;
import test.check.svg.flags.es;
import test.check.svg.flags.fi;
import test.check.svg.flags.fr;
import test.check.svg.flags.gr;
import test.check.svg.flags.hk;
import test.check.svg.flags.hu;
import test.check.svg.flags.il;
import test.check.svg.flags.it;
import test.check.svg.flags.jp;
import test.check.svg.flags.mx;
import test.check.svg.flags.nl;
import test.check.svg.flags.no;
import test.check.svg.flags.pl;
import test.check.svg.flags.pt;
import test.check.svg.flags.ro;
import test.check.svg.flags.ru;
import test.check.svg.flags.sa;
import test.check.svg.flags.se;
import test.check.svg.flags.th;
import test.check.svg.flags.tr;
import test.check.svg.flags.tw;
import test.check.svg.flags.us;
import test.check.svg.flags.vn;
/**
* Factory that creates menus for the test applications.
*
* @author Kirill Grouchnikov
*/
public class SampleMenuFactory {
/**
* Returns a sample test menu.
*
* @return Sample test menu.
*/
public static JMenu getTestMenu() {
JMenu testMenu = new JMenu("Test");
testMenu.setMnemonic('1');
int mcount = 0;
for (LinkedList<JMenuItem> miList : getTestMenuItems()) {
if (mcount > 0) {
if (mcount % 2 == 0)
testMenu.addSeparator();
else
testMenu.add(new JSeparator());
}
for (JMenuItem menuItem : miList) {
testMenu.add(menuItem);
}
mcount++;
}
return testMenu;
}
/**
* Returns menu items for a sample test menu.
*
* @return Menu items for a sample test menu.
*/
public static LinkedList<LinkedList<JMenuItem>> getTestMenuItems() {
LinkedList<LinkedList<JMenuItem>> result = new LinkedList<LinkedList<JMenuItem>>();
LinkedList<JMenuItem> list1 = new LinkedList<JMenuItem>();
final JMenuItem jmi1 = new JMenuItem("Menu item enabled", Check.configure(new se(), 21, 16));
jmi1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, Event.CTRL_MASK));
JMenuItem jmi2 = new JMenuItem("Menu item disabled");
jmi2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B, Event.CTRL_MASK | Event.ALT_MASK));
jmi2.setEnabled(false);
list1.add(jmi1);
list1.add(jmi2);
result.add(list1);
LinkedList<JMenuItem> list2 = new LinkedList<JMenuItem>();
final JCheckBoxMenuItem jcbmi1 = new JCheckBoxMenuItem("Check enabled selected");
jcbmi1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, Event.CTRL_MASK));
jcbmi1.setSelected(true);
JCheckBoxMenuItem jcbmi2 = new JCheckBoxMenuItem("Check enabled unselected", Check.configure(new br(), 21, 16));
jcbmi2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D, Event.CTRL_MASK));
jcbmi2.setSelected(false);
JCheckBoxMenuItem jcbmi3 = new JCheckBoxMenuItem("Check disabled selected");
jcbmi3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E, Event.CTRL_MASK));
jcbmi3.setSelected(true);
jcbmi3.setEnabled(false);
final JCheckBoxMenuItem jcbmi4 = new JCheckBoxMenuItem("Check disabled unselected");
jcbmi4.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, Event.CTRL_MASK));
jcbmi4.setSelected(false);
jcbmi4.setEnabled(false);
list2.add(jcbmi1);
list2.add(jcbmi2);
list2.add(jcbmi3);
list2.add(jcbmi4);
result.add(list2);
LinkedList<JMenuItem> list3 = new LinkedList<JMenuItem>();
final JRadioButtonMenuItem jrbmi1 = new JRadioButtonMenuItem("Radio enabled selected",
Check.configure(new il(), 21, 16));
jrbmi1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G, Event.CTRL_MASK));
jrbmi1.setSelected(true);
JRadioButtonMenuItem jrbmi2 = new JRadioButtonMenuItem("Radio enabled unselected");
jrbmi2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H, Event.CTRL_MASK));
jrbmi2.setSelected(false);
ButtonGroup bgRadioMenu1 = new ButtonGroup();
bgRadioMenu1.add(jrbmi1);
bgRadioMenu1.add(jrbmi2);
JRadioButtonMenuItem jrbmi3 = new JRadioButtonMenuItem("Radio disabled selected");
jrbmi3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_I, Event.CTRL_MASK));
jrbmi3.setSelected(true);
jrbmi3.setEnabled(false);
JRadioButtonMenuItem jrbmi4 = new JRadioButtonMenuItem("Radio disabled unselected");
jrbmi4.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_J, Event.CTRL_MASK));
jrbmi4.setSelected(false);
jrbmi4.setEnabled(false);
ButtonGroup bgRadioMenu2 = new ButtonGroup();
bgRadioMenu2.add(jrbmi3);
bgRadioMenu2.add(jrbmi4);
list3.add(jrbmi1);
list3.add(jrbmi2);
list3.add(jrbmi3);
list3.add(jrbmi4);
result.add(list3);
LinkedList<JMenuItem> list4 = new LinkedList<JMenuItem>();
JMenu submenu1 = new JMenu("submenu1");
submenu1.setIcon(Check.configure(new de(), 21, 16));
submenu1.add(new JMenuItem("submenu item1", Check.configure(new fi(), 21, 16)));
submenu1.add(new JMenuItem("submenu item2"));
submenu1.add(new JMenuItem("submenu item3"));
JMenu submenu11 = new JMenu("submenu1-1");
submenu11.add(new JMenuItem("submenu item111"));
submenu11.add(new JMenuItem("submenu item112"));
submenu11.add(new JMenuItem("submenu item113"));
submenu11.add(new JMenuItem("submenu item114", Check.configure(new fr(), 21, 16)));
submenu1.add(submenu11);
JMenu submenu12 = new JMenu("submenu1-2");
submenu12.add(new JMenuItem("submenu item121", Check.configure(new jp(), 21, 16)));
submenu12.add(new JMenuItem("submenu item122"));
submenu12.add(new JMenuItem("submenu item123"));
submenu12.add(new JMenuItem("submenu item124"));
submenu1.add(submenu12);
JMenu submenu13 = new JMenu("submenu1-3");
submenu13.add(new JMenuItem("submenu item131"));
submenu13.add(new JMenuItem("submenu item132"));
submenu13.add(new JMenuItem("submenu item133"));
submenu13.add(new JMenuItem("submenu item134"));
submenu13.add(new JMenuItem("submenu item135"));
submenu1.add(submenu13);
list4.add(submenu1);
JMenu submenu2 = new JMenu("submenu2");
submenu2.add(new JMenuItem("submenu item1"));
submenu2.add(new JMenuItem("submenu item2"));
submenu2.add(new JMenuItem("submenu item3"));
JMenu submenu21 = new JMenu("submenu2-1");
submenu21.add(new JMenuItem("submenu item211"));
submenu21.add(new JMenuItem("submenu item212"));
submenu21.add(new JMenuItem("submenu item213"));
submenu21.add(new JMenuItem("submenu item214"));
submenu2.add(submenu21);
JMenu submenu22 = new JMenu("submenu2-2");
submenu22.add(new JMenuItem("submenu item221"));
submenu22.add(new JMenuItem("submenu item222"));
submenu22.add(new JMenuItem("submenu item223"));
submenu22.add(new JMenuItem("submenu item224"));
submenu2.add(submenu22);
JMenu submenu23 = new JMenu("submenu2-3");
submenu23.add(new JMenuItem("submenu item231"));
submenu23.add(new JMenuItem("submenu item232"));
submenu23.add(new JMenuItem("submenu item233"));
submenu23.add(new JMenuItem("submenu item234"));
submenu2.add(submenu23);
list4.add(submenu2);
JMenu submenu3 = new JMenu("submenu3 (disabled)");
submenu3.setEnabled(false);
list4.add(submenu3);
result.add(list4);
return result;
}
/**
* Returns menu for setting skins.
*
* @return Menu for setting skins.
*/
public static JMenu getSkinMenu() {
JMenu jmSkin = new JMenu("Skins");
Map<String, SkinInfo> skinMap = SubstanceLookAndFeel.getAllSkins();
for (final Map.Entry<String, SkinInfo> entry : skinMap.entrySet()) {
JMenuItem jmiSkin = new JMenuItem(entry.getValue().getDisplayName());
jmiSkin.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String skinClassName = entry.getValue().getClassName();
boolean status = SubstanceLookAndFeel.setSkin(skinClassName);
if (!status) {
System.out.println("Failed to set " + skinClassName);
}
}
});
jmSkin.add(jmiSkin);
}
jmSkin.addSeparator();
final CustomSkin customSkin = new CustomSkin();
JMenuItem jmiSkin = new JMenuItem(customSkin.getDisplayName());
jmiSkin.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
SubstanceLookAndFeel.setSkin(customSkin);
}
});
jmSkin.add(jmiSkin);
return jmSkin;
}
protected static class CustomSkin extends SubstanceSkin {
@Override
public String getDisplayName() {
return "Custom";
}
public CustomSkin() {
SubstanceColorScheme activeScheme = new OrangeColorScheme().shade(0.2).invert();
SubstanceColorScheme enabledScheme = new MetallicColorScheme();
SubstanceColorScheme disabledScheme = new LightGrayColorScheme();
SubstanceColorSchemeBundle defaultSchemeBundle = new SubstanceColorSchemeBundle(activeScheme, enabledScheme,
disabledScheme);
defaultSchemeBundle.registerHighlightColorScheme(activeScheme, 0.6f, ComponentState.ROLLOVER_UNSELECTED);
defaultSchemeBundle.registerHighlightColorScheme(activeScheme, 0.8f, ComponentState.SELECTED);
defaultSchemeBundle.registerHighlightColorScheme(activeScheme, 0.95f, ComponentState.ROLLOVER_SELECTED);
defaultSchemeBundle.registerHighlightColorScheme(activeScheme, 0.8f, ComponentState.ARMED,
ComponentState.ROLLOVER_ARMED);
this.registerDecorationAreaSchemeBundle(defaultSchemeBundle, DecorationAreaType.NONE);
SubstanceColorSchemeBundle headerSchemeBundle = new SubstanceColorSchemeBundle(activeScheme.saturate(0.3),
activeScheme, disabledScheme);
this.registerDecorationAreaSchemeBundle(headerSchemeBundle, headerSchemeBundle.getActiveColorScheme(),
DecorationAreaType.PRIMARY_TITLE_PANE, DecorationAreaType.SECONDARY_TITLE_PANE,
DecorationAreaType.HEADER);
this.borderPainter = new ClassicBorderPainter();
this.fillPainter = new GlassFillPainter();
this.buttonShaper = new ClassicButtonShaper();
this.decorationPainter = new ArcDecorationPainter();
this.highlightPainter = new GlassHighlightPainter();
this.tabFadeStart = 1.0f;
this.tabFadeEnd = 1.0f;
}
}
public static JMenu getTransformMenu() {
JMenu jmTransform = new JMenu("Transforms");
JMenuItem itemShade = new JMenuItem("Shade 10%");
itemShade.addActionListener(new SkinChanger(
(SubstanceColorScheme scheme) -> scheme.shade(0.1), "Shaded current"));
jmTransform.add(itemShade);
JMenuItem itemTone = new JMenuItem("Tone 10%");
itemTone.addActionListener(new SkinChanger(
(SubstanceColorScheme scheme) -> scheme.tone(0.1), "Toned current"));
jmTransform.add(itemTone);
JMenuItem itemTint = new JMenuItem("Tint 10%");
itemTint.addActionListener(new SkinChanger(
(SubstanceColorScheme scheme) -> scheme.tint(0.1), "Tinted current"));
jmTransform.add(itemTint);
JMenuItem itemHueShift = new JMenuItem("Hue shift 10%");
itemHueShift.addActionListener(new SkinChanger(
(SubstanceColorScheme scheme) -> scheme.hueShift(0.1), "Hue shifted current"));
jmTransform.add(itemHueShift);
JMenuItem itemSaturate = new JMenuItem("Saturate 10%");
itemSaturate.addActionListener(new SkinChanger(
(SubstanceColorScheme scheme) -> scheme.saturate(0.1), "Saturated current"));
jmTransform.add(itemSaturate);
JMenuItem itemDesaturate = new JMenuItem("Desaturate 10%");
itemDesaturate.addActionListener(new SkinChanger(
(SubstanceColorScheme scheme) -> scheme.saturate(-0.1), "Desaturated current"));
jmTransform.add(itemDesaturate);
JMenuItem itemNegate = new JMenuItem("Negate");
itemNegate.addActionListener(new SkinChanger(
(SubstanceColorScheme scheme) -> scheme.negate(), "Negated current"));
jmTransform.add(itemNegate);
JMenuItem itemInvert = new JMenuItem("Invert");
itemInvert.addActionListener(new SkinChanger(
(SubstanceColorScheme scheme) -> scheme.invert(), "Inverted current"));
jmTransform.add(itemInvert);
return jmTransform;
}
public static JMenu getLookAndFeelMenu(JFrame frame) {
JMenu lafMenu = new JMenu("Look & feel");
JMenu substanceMenus = new JMenu("Substance family");
// for (Map.Entry<String, SkinInfo> substanceSkinInfo :
// SubstanceLookAndFeel
// .getAllSkins().entrySet()) {
// substanceMenus.add(SubstanceLafChanger.getMenuItem(frame,
// substanceSkinInfo.getValue().getDisplayName(),
// substanceSkinInfo.getValue().getClassName()));
// }
substanceMenus.add(SubstanceLafChanger.getMenuItem(frame, "Autumn",
"org.pushingpixels.substance.api.skin.SubstanceAutumnLookAndFeel"));
substanceMenus.add(SubstanceLafChanger.getMenuItem(frame, "Business",
"org.pushingpixels.substance.api.skin.SubstanceBusinessLookAndFeel"));
substanceMenus.add(SubstanceLafChanger.getMenuItem(frame, "Business Black Steel",
"org.pushingpixels.substance.api.skin.SubstanceBusinessBlackSteelLookAndFeel"));
substanceMenus.add(SubstanceLafChanger.getMenuItem(frame, "Business Blue Steel",
"org.pushingpixels.substance.api.skin.SubstanceBusinessBlueSteelLookAndFeel"));
substanceMenus.add(SubstanceLafChanger.getMenuItem(frame, "Cerulean",
"org.pushingpixels.substance.api.skin.SubstanceCeruleanLookAndFeel"));
substanceMenus.add(SubstanceLafChanger.getMenuItem(frame, "Creme",
"org.pushingpixels.substance.api.skin.SubstanceCremeLookAndFeel"));
substanceMenus.add(SubstanceLafChanger.getMenuItem(frame, "Creme Coffee",
"org.pushingpixels.substance.api.skin.SubstanceCremeCoffeeLookAndFeel"));
substanceMenus.add(SubstanceLafChanger.getMenuItem(frame, "Dust",
"org.pushingpixels.substance.api.skin.SubstanceDustLookAndFeel"));
substanceMenus.add(SubstanceLafChanger.getMenuItem(frame, "Dust Coffee",
"org.pushingpixels.substance.api.skin.SubstanceDustCoffeeLookAndFeel"));
substanceMenus.add(SubstanceLafChanger.getMenuItem(frame, "Gemini",
"org.pushingpixels.substance.api.skin.SubstanceGeminiLookAndFeel"));
substanceMenus.add(SubstanceLafChanger.getMenuItem(frame, "Mariner",
"org.pushingpixels.substance.api.skin.SubstanceMarinerLookAndFeel"));
substanceMenus.add(SubstanceLafChanger.getMenuItem(frame, "Mist Aqua",
"org.pushingpixels.substance.api.skin.SubstanceMistAquaLookAndFeel"));
substanceMenus.add(SubstanceLafChanger.getMenuItem(frame, "Mist Silver",
"org.pushingpixels.substance.api.skin.SubstanceMistSilverLookAndFeel"));
substanceMenus.add(SubstanceLafChanger.getMenuItem(frame, "Moderate",
"org.pushingpixels.substance.api.skin.SubstanceModerateLookAndFeel"));
substanceMenus.add(SubstanceLafChanger.getMenuItem(frame, "Nebula",
"org.pushingpixels.substance.api.skin.SubstanceNebulaLookAndFeel"));
substanceMenus.add(SubstanceLafChanger.getMenuItem(frame, "Nebula Brick Wall",
"org.pushingpixels.substance.api.skin.SubstanceNebulaBrickWallLookAndFeel"));
substanceMenus.add(SubstanceLafChanger.getMenuItem(frame, "Office Black 2007",
"org.pushingpixels.substance.api.skin.SubstanceOfficeBlack2007LookAndFeel"));
substanceMenus.add(SubstanceLafChanger.getMenuItem(frame, "Office Silver 2007",
"org.pushingpixels.substance.api.skin.SubstanceOfficeSilver2007LookAndFeel"));
substanceMenus.add(SubstanceLafChanger.getMenuItem(frame, "Sahara",
"org.pushingpixels.substance.api.skin.SubstanceSaharaLookAndFeel"));
substanceMenus.addSeparator();
substanceMenus.add(SubstanceLafChanger.getMenuItem(frame, "Office Blue 2007",
"org.pushingpixels.substance.api.skin.SubstanceOfficeBlue2007LookAndFeel"));
substanceMenus.add(SubstanceLafChanger.getMenuItem(frame, "Magellan",
"org.pushingpixels.substance.api.skin.SubstanceMagellanLookAndFeel"));
substanceMenus.addSeparator();
substanceMenus.add(SubstanceLafChanger.getMenuItem(frame, "Challenger Deep",
"org.pushingpixels.substance.api.skin.SubstanceChallengerDeepLookAndFeel"));
substanceMenus.add(SubstanceLafChanger.getMenuItem(frame, "Emerald Dusk",
"org.pushingpixels.substance.api.skin.SubstanceEmeraldDuskLookAndFeel"));
substanceMenus.add(SubstanceLafChanger.getMenuItem(frame, "Magma",
"org.pushingpixels.substance.api.skin.SubstanceMagmaLookAndFeel"));
substanceMenus.add(SubstanceLafChanger.getMenuItem(frame, "Raven",
"org.pushingpixels.substance.api.skin.SubstanceRavenLookAndFeel"));
substanceMenus.add(SubstanceLafChanger.getMenuItem(frame, "Graphite",
"org.pushingpixels.substance.api.skin.SubstanceGraphiteLookAndFeel"));
substanceMenus.add(SubstanceLafChanger.getMenuItem(frame, "Graphite Glass",
"org.pushingpixels.substance.api.skin.SubstanceGraphiteGlassLookAndFeel"));
substanceMenus.add(SubstanceLafChanger.getMenuItem(frame, "Graphite Aqua",
"org.pushingpixels.substance.api.skin.SubstanceGraphiteAquaLookAndFeel"));
substanceMenus.add(SubstanceLafChanger.getMenuItem(frame, "Graphite Gold",
"org.pushingpixels.substance.api.skin.SubstanceGraphiteGoldLookAndFeel"));
substanceMenus.add(SubstanceLafChanger.getMenuItem(frame, "Graphite Chalk",
"org.pushingpixels.substance.api.skin.SubstanceGraphiteChalkLookAndFeel"));
substanceMenus.add(SubstanceLafChanger.getMenuItem(frame, "Twilight",
"org.pushingpixels.substance.api.skin.SubstanceTwilightLookAndFeel"));
lafMenu.add(substanceMenus);
lafMenu.addSeparator();
JMenu coreLafMenus = new JMenu("Core LAFs");
lafMenu.add(coreLafMenus);
coreLafMenus.add(SubstanceLafChanger.getMenuItem(frame, "System", UIManager.getSystemLookAndFeelClassName()));
coreLafMenus.add(SubstanceLafChanger.getMenuItem(frame, "Metal", "javax.swing.plaf.metal.MetalLookAndFeel"));
coreLafMenus.add(SubstanceLafChanger.getMenuItem(frame, "Windows",
"com.sun.java.swing.plaf.windows.WindowsLookAndFeel"));
coreLafMenus.add(SubstanceLafChanger.getMenuItem(frame, "Windows Classic",
"com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel"));
coreLafMenus
.add(SubstanceLafChanger.getMenuItem(frame, "Motif", "com.sun.java.swing.plaf.motif.MotifLookAndFeel"));
coreLafMenus.add(
SubstanceLafChanger.getMenuItem(frame, "Nimbus", "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"));
JMenu customLafMenus = new JMenu("Custom LAFs");
lafMenu.add(customLafMenus);
JMenu jgoodiesMenu = new JMenu("JGoodies family");
customLafMenus.add(jgoodiesMenu);
jgoodiesMenu.add(SubstanceLafChanger.getMenuItem(frame, "JGoodies Plastic",
"com.jgoodies.looks.plastic.PlasticLookAndFeel"));
jgoodiesMenu.add(SubstanceLafChanger.getMenuItem(frame, "JGoodies PlasticXP",
"com.jgoodies.looks.plastic.PlasticXPLookAndFeel"));
jgoodiesMenu.add(SubstanceLafChanger.getMenuItem(frame, "JGoodies Plastic3D",
"com.jgoodies.looks.plastic.Plastic3DLookAndFeel"));
jgoodiesMenu.add(SubstanceLafChanger.getMenuItem(frame, "JGoodies Windows",
"com.jgoodies.looks.windows.WindowsLookAndFeel"));
JMenu jtattooMenu = new JMenu("JTattoo family");
customLafMenus.add(jtattooMenu);
jtattooMenu.add(
SubstanceLafChanger.getMenuItem(frame, "JTattoo Acryl", "com.jtattoo.plaf.acryl.AcrylLookAndFeel"));
jtattooMenu
.add(SubstanceLafChanger.getMenuItem(frame, "JTattoo Aero", "com.jtattoo.plaf.aero.AeroLookAndFeel"));
jtattooMenu.add(SubstanceLafChanger.getMenuItem(frame, "JTattoo Aluminium",
"com.jtattoo.plaf.aluminium.AluminiumLookAndFeel"));
jtattooMenu.add(SubstanceLafChanger.getMenuItem(frame, "JTattoo Bernstein",
"com.jtattoo.plaf.bernstein.BernsteinLookAndFeel"));
jtattooMenu
.add(SubstanceLafChanger.getMenuItem(frame, "JTattoo Fast", "com.jtattoo.plaf.fast.FastLookAndFeel"));
jtattooMenu
.add(SubstanceLafChanger.getMenuItem(frame, "JTattoo HiFi", "com.jtattoo.plaf.hifi.HiFiLookAndFeel"));
jtattooMenu
.add(SubstanceLafChanger.getMenuItem(frame, "JTattoo Luna", "com.jtattoo.plaf.luna.LunaLookAndFeel"));
jtattooMenu.add(
SubstanceLafChanger.getMenuItem(frame, "JTattoo McWin", "com.jtattoo.plaf.mcwin.McWinLookAndFeel"));
jtattooMenu
.add(SubstanceLafChanger.getMenuItem(frame, "JTattoo Mint", "com.jtattoo.plaf.mint.MintLookAndFeel"));
jtattooMenu.add(
SubstanceLafChanger.getMenuItem(frame, "JTattoo Smart", "com.jtattoo.plaf.smart.SmartLookAndFeel"));
JMenu syntheticaMenu = new JMenu("Synthetica family");
customLafMenus.add(syntheticaMenu);
syntheticaMenu.add(SubstanceLafChanger.getMenuItem(frame, "Synthetica base",
"de.javasoft.plaf.synthetica.SyntheticaStandardLookAndFeel"));
syntheticaMenu.add(SubstanceLafChanger.getMenuItem(frame, "Synthetica BlackEye",
"de.javasoft.plaf.synthetica.SyntheticaBlackEyeLookAndFeel"));
syntheticaMenu.add(SubstanceLafChanger.getMenuItem(frame, "Synthetica BlackMoon",
"de.javasoft.plaf.synthetica.SyntheticaBlackMoonLookAndFeel"));
syntheticaMenu.add(SubstanceLafChanger.getMenuItem(frame, "Synthetica BlackStar",
"de.javasoft.plaf.synthetica.SyntheticaBlackStarLookAndFeel"));
syntheticaMenu.add(SubstanceLafChanger.getMenuItem(frame, "Synthetica BlueIce",
"de.javasoft.plaf.synthetica.SyntheticaBlueIceLookAndFeel"));
syntheticaMenu.add(SubstanceLafChanger.getMenuItem(frame, "Synthetica BlueMoon",
"de.javasoft.plaf.synthetica.SyntheticaBlueMoonLookAndFeel"));
syntheticaMenu.add(SubstanceLafChanger.getMenuItem(frame, "Synthetica BlueSteel",
"de.javasoft.plaf.synthetica.SyntheticaBlueSteelLookAndFeel"));
syntheticaMenu.add(SubstanceLafChanger.getMenuItem(frame, "Synthetica GreenDream",
"de.javasoft.plaf.synthetica.SyntheticaGreenDreamLookAndFeel"));
syntheticaMenu.add(SubstanceLafChanger.getMenuItem(frame, "Synthetica MauveMetallic",
"de.javasoft.plaf.synthetica.SyntheticaMauveMetallicLookAndFeel"));
syntheticaMenu.add(SubstanceLafChanger.getMenuItem(frame, "Synthetica OrangeMetallic",
"de.javasoft.plaf.synthetica.SyntheticaOrangeMetallicLookAndFeel"));
syntheticaMenu.add(SubstanceLafChanger.getMenuItem(frame, "Synthetica SkyMetallic",
"de.javasoft.plaf.synthetica.SyntheticaSkyMetallicLookAndFeel"));
syntheticaMenu.add(SubstanceLafChanger.getMenuItem(frame, "Synthetica SilverMoon",
"de.javasoft.plaf.synthetica.SyntheticaSilverMoonLookAndFeel"));
syntheticaMenu.add(SubstanceLafChanger.getMenuItem(frame, "Synthetica WhiteVision",
"de.javasoft.plaf.synthetica.SyntheticaWhiteVisionLookAndFeel"));
JMenu officeMenu = new JMenu("Office family");
customLafMenus.add(officeMenu);
officeMenu.add(SubstanceLafChanger.getMenuItem(frame, "Office 2003",
"org.fife.plaf.Office2003.Office2003LookAndFeel"));
officeMenu
.add(SubstanceLafChanger.getMenuItem(frame, "Office XP", "org.fife.plaf.OfficeXP.OfficeXPLookAndFeel"));
officeMenu.add(SubstanceLafChanger.getMenuItem(frame, "Visual Studio 2005",
"org.fife.plaf.VisualStudio2005.VisualStudio2005LookAndFeel"));
customLafMenus.add(SubstanceLafChanger.getMenuItem(frame, "A03", "a03.swing.plaf.A03LookAndFeel"));
customLafMenus.add(SubstanceLafChanger.getMenuItem(frame, "Alloy", "com.incors.plaf.alloy.AlloyLookAndFeel"));
customLafMenus.add(SubstanceLafChanger.getMenuItem(frame, "Cezanne Textile",
"de.centigrade.laf.textile.TextileLookAndFeel"));
customLafMenus.add(SubstanceLafChanger.getMenuItem(frame, "Darcula",
"com.bulenkov.darcula.DarculaLaf"));
customLafMenus
.add(SubstanceLafChanger.getMenuItem(frame, "EaSynth", "com.easynth.lookandfeel.EaSynthLookAndFeel"));
customLafMenus.add(SubstanceLafChanger.getMenuItem(frame, "FH", "com.shfarr.ui.plaf.fh.FhLookAndFeel"));
customLafMenus.add(SubstanceLafChanger.getMenuItem(frame, "Hippo", "se.diod.hippo.plaf.HippoLookAndFeel"));
customLafMenus
.add(SubstanceLafChanger.getMenuItem(frame, "InfoNode", "net.infonode.gui.laf.InfoNodeLookAndFeel"));
customLafMenus.add(SubstanceLafChanger.getMenuItem(frame, "Kuntstoff",
"com.incors.plaf.kunststoff.KunststoffLookAndFeel"));
customLafMenus.add(SubstanceLafChanger.getMenuItem(frame, "Liquid", "com.birosoft.liquid.LiquidLookAndFeel"));
customLafMenus.add(SubstanceLafChanger.getMenuItem(frame, "Lipstik", "com.lipstikLF.LipstikLookAndFeel"));
customLafMenus.add(
SubstanceLafChanger.getMenuItem(frame, "Metouia", "net.sourceforge.mlf.metouia.MetouiaLookAndFeel"));
customLafMenus
.add(SubstanceLafChanger.getMenuItem(frame, "Napkin", "net.sourceforge.napkinlaf.NapkinLookAndFeel"));
customLafMenus.add(
SubstanceLafChanger.getMenuItem(frame, "Nimbus", "org.jdesktop.swingx.plaf.nimbus.NimbusLookAndFeel"));
customLafMenus.add(SubstanceLafChanger.getMenuItem(frame, "NimROD", "com.nilo.plaf.nimrod.NimRODLookAndFeel"));
customLafMenus.add(
SubstanceLafChanger.getMenuItem(frame, "Oyoaha", "com.oyoaha.swing.plaf.oyoaha.OyoahaLookAndFeel"));
customLafMenus.add(SubstanceLafChanger.getMenuItem(frame, "Pagosoft", "com.pagosoft.plaf.PgsLookAndFeel"));
customLafMenus
.add(SubstanceLafChanger.getMenuItem(frame, "Quaqua", "ch.randelshofer.quaqua.QuaquaLookAndFeel"));
customLafMenus.add(
SubstanceLafChanger.getMenuItem(frame, "Sea Glass", "com.seaglasslookandfeel.SeaGlassLookAndFeel"));
customLafMenus.add(SubstanceLafChanger.getMenuItem(frame, "Simple", "com.memoire.slaf.SlafLookAndFeel"));
customLafMenus.add(SubstanceLafChanger.getMenuItem(frame, "Skin", "com.l2fprod.gui.plaf.skin.SkinLookAndFeel"));
customLafMenus.add(SubstanceLafChanger.getMenuItem(frame, "Smooth Metal", "smooth.metal.SmoothLookAndFeel"));
customLafMenus.add(
SubstanceLafChanger.getMenuItem(frame, "Squareness", "net.beeger.squareness.SquarenessLookAndFeel"));
customLafMenus
.add(SubstanceLafChanger.getMenuItem(frame, "Tiny", "de.muntjak.tinylookandfeel.TinyLookAndFeel"));
customLafMenus.add(SubstanceLafChanger.getMenuItem(frame, "Tonic", "com.digitprop.tonic.TonicLookAndFeel"));
customLafMenus.add(SubstanceLafChanger.getMenuItem(frame, "Trendy", "com.Trendy.swing.plaf.TrendyLookAndFeel"));
lafMenu.addSeparator();
JMenu localeMenus = new JMenu("Change locale");
lafMenu.add(localeMenus);
// Locale changing
JMenuItem localeArabic = new JMenuItem("Arabic Locale", Check.configure(new sa(), 21, 16));
localeArabic.addActionListener(new MyLocaleChangeListener("ar", "AR", frame));
JMenuItem localeBulgarian = new JMenuItem("Bulgarian Locale", Check.configure(new bg(), 21, 16));
localeBulgarian.addActionListener(new MyLocaleChangeListener("bg", "BG", frame));
JMenuItem localeChinese = new JMenuItem("Chinese (Simplified) Locale", Check.configure(new cn(), 21, 16));
localeChinese.addActionListener(new MyLocaleChangeListener("zh", "CN", frame));
JMenuItem localeChineseHK = new JMenuItem("Chinese (Hong Kong) Locale", Check.configure(new hk(), 21, 16));
localeChineseHK.addActionListener(new MyLocaleChangeListener("zh", "HK", frame));
JMenuItem localeChineseTW = new JMenuItem("Chinese (Taiwan) Locale", Check.configure(new tw(), 21, 16));
localeChineseTW.addActionListener(new MyLocaleChangeListener("zh", "TW", frame));
JMenuItem localeCzech = new JMenuItem("Czech Locale", Check.configure(new cz(), 21, 16));
localeCzech.addActionListener(new MyLocaleChangeListener("cs", "CZ", frame));
JMenuItem localeDanish = new JMenuItem("Danish Locale", Check.configure(new dk(), 21, 16));
localeDanish.addActionListener(new MyLocaleChangeListener("da", "DK", frame));
JMenuItem localeDutch = new JMenuItem("Dutch Locale", Check.configure(new nl(), 21, 16));
localeDutch.addActionListener(new MyLocaleChangeListener("nl", "NL", frame));
JMenuItem localeEnglish = new JMenuItem("English Locale", Check.configure(new us(), 21, 16));
localeEnglish.addActionListener(new MyLocaleChangeListener("en", "US", frame));
JMenuItem localeFinnish = new JMenuItem("Finnish Locale", Check.configure(new fi(), 21, 16));
localeFinnish.addActionListener(new MyLocaleChangeListener("fi", "FI", frame));
JMenuItem localeFrench = new JMenuItem("French Locale", Check.configure(new fr(), 21, 16));
localeFrench.addActionListener(new MyLocaleChangeListener("fr", "FR", frame));
JMenuItem localeFrenchCA = new JMenuItem("French (Canada) Locale", Check.configure(new ca(), 21, 16));
localeFrenchCA.addActionListener(new MyLocaleChangeListener("fr", "CA", frame));
JMenuItem localeGerman = new JMenuItem("German Locale", Check.configure(new de(), 21, 16));
localeGerman.addActionListener(new MyLocaleChangeListener("de", "DE", frame));
JMenuItem localeGreek = new JMenuItem("Greek Locale", Check.configure(new gr(), 21, 16));
localeGreek.addActionListener(new MyLocaleChangeListener("el", "GR", frame));
JMenuItem localeHebrew = new JMenuItem("Hebrew Locale", Check.configure(new il(), 21, 16));
localeHebrew.addActionListener(new MyLocaleChangeListener("iw", "IL", frame));
JMenuItem localeHungarian = new JMenuItem("Hungarian Locale", Check.configure(new hu(), 21, 16));
localeHungarian.addActionListener(new MyLocaleChangeListener("hu", "HU", frame));
JMenuItem localeItalian = new JMenuItem("Italian Locale", Check.configure(new it(), 21, 16));
localeItalian.addActionListener(new MyLocaleChangeListener("it", "IT", frame));
JMenuItem localeJapanese = new JMenuItem("Japanese Locale", Check.configure(new jp(), 21, 16));
localeJapanese.addActionListener(new MyLocaleChangeListener("ja", "JP", frame));
JMenuItem localeNorwegian = new JMenuItem("Norwegian Locale", Check.configure(new no(), 21, 16));
localeNorwegian.addActionListener(new MyLocaleChangeListener("no", "NO", frame));
JMenuItem localePolish = new JMenuItem("Polish Locale", Check.configure(new pl(), 21, 16));
localePolish.addActionListener(new MyLocaleChangeListener("pl", "PL", frame));
JMenuItem localePortuguese = new JMenuItem("Portuguese Locale", Check.configure(new pt(), 21, 16));
localePortuguese.addActionListener(new MyLocaleChangeListener("pt", "PT", frame));
JMenuItem localePortugueseBR = new JMenuItem("Portuguese (Brazil) Locale", Check.configure(new br(), 21, 16));
localePortugueseBR.addActionListener(new MyLocaleChangeListener("pt", "BR", frame));
JMenuItem localeRomanian = new JMenuItem("Romanian Locale", Check.configure(new ro(), 21, 16));
localeRomanian.addActionListener(new MyLocaleChangeListener("ro", "RO", frame));
JMenuItem localeRussian = new JMenuItem("Russian Locale", Check.configure(new ru(), 21, 16));
localeRussian.addActionListener(new MyLocaleChangeListener("ru", "RU", frame));
JMenuItem localeSpanish = new JMenuItem("Spanish Locale", Check.configure(new es(), 21, 16));
localeSpanish.addActionListener(new MyLocaleChangeListener("es", "ES", frame));
JMenuItem localeSpanishAR = new JMenuItem("Spanish (Argentina) Locale", Check.configure(new ar(), 21, 16));
localeSpanishAR.addActionListener(new MyLocaleChangeListener("es", "AR", frame));
JMenuItem localeSpanishMX = new JMenuItem("Spanish (Mexico) Locale", Check.configure(new mx(), 21, 16));
localeSpanishMX.addActionListener(new MyLocaleChangeListener("es", "MX", frame));
JMenuItem localeSwedish = new JMenuItem("Swedish Locale", Check.configure(new se(), 21, 16));
localeSwedish.addActionListener(new MyLocaleChangeListener("sv", "SE", frame));
JMenuItem localeThai = new JMenuItem("Thai Locale", Check.configure(new th(), 21, 16));
localeThai.addActionListener(new MyLocaleChangeListener("th", "TH", frame));
JMenuItem localeTurkish = new JMenuItem("Turkish Locale", Check.configure(new tr(), 21, 16));
localeTurkish.addActionListener(new MyLocaleChangeListener("tr", "TR", frame));
JMenuItem localeVietnamese = new JMenuItem("Vietnamese Locale", Check.configure(new vn(), 21, 16));
localeVietnamese.addActionListener(new MyLocaleChangeListener("vi", "VN", frame));
localeMenus.add(localeEnglish);
localeMenus.add(localeArabic);
localeMenus.add(localeBulgarian);
localeMenus.add(localeChinese);
localeMenus.add(localeChineseHK);
localeMenus.add(localeChineseTW);
localeMenus.add(localeCzech);
localeMenus.add(localeDanish);
localeMenus.add(localeDutch);
localeMenus.add(localeFinnish);
localeMenus.add(localeFrench);
localeMenus.add(localeFrenchCA);
localeMenus.add(localeGerman);
localeMenus.add(localeGreek);
localeMenus.add(localeHebrew);
localeMenus.add(localeHungarian);
localeMenus.add(localeItalian);
localeMenus.add(localeJapanese);
localeMenus.add(localeNorwegian);
localeMenus.add(localePolish);
localeMenus.add(localePortuguese);
localeMenus.add(localePortugueseBR);
localeMenus.add(localeRomanian);
localeMenus.add(localeRussian);
localeMenus.add(localeSpanish);
localeMenus.add(localeSpanishAR);
localeMenus.add(localeSpanishMX);
localeMenus.add(localeSwedish);
localeMenus.add(localeThai);
localeMenus.add(localeTurkish);
localeMenus.add(localeVietnamese);
return lafMenu;
}
protected static class SkinChanger implements ActionListener {
protected ColorSchemeTransform transform;
protected String name;
public SkinChanger(ColorSchemeTransform transform, String name) {
super();
this.transform = transform;
this.name = name;
}
public void actionPerformed(ActionEvent e) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
SubstanceSkin newSkin = SubstanceLookAndFeel.getCurrentSkin(null).transform(transform, name);
SubstanceLookAndFeel.setSkin(newSkin);
}
});
}
}
}