/** * */ package org.javabuilders.swing.handler.property; import javax.swing.JMenuItem; import javax.swing.KeyStroke; import org.javabuilders.BuildException; import org.javabuilders.BuildProcess; import org.javabuilders.BuilderConfig; import org.javabuilders.InvalidPropertyValueException; import org.javabuilders.Node; import org.javabuilders.handler.AbstractPropertyHandler; import org.javabuilders.swing.SwingJavaBuilder; import org.javabuilders.swing.SwingJavaBuilderUtils; /** * JMenuItem.accelerator handler * @author Jacek Furmankiewicz */ public class JMenuItemAcceleratorHandler extends AbstractPropertyHandler { private static final JMenuItemAcceleratorHandler singleton = new JMenuItemAcceleratorHandler(); /** * Get singleton instance * @return Singleton */ public static JMenuItemAcceleratorHandler getInstance() { return singleton; } /** * Constructor */ public JMenuItemAcceleratorHandler() { super(SwingJavaBuilder.ACCELERATOR); } /** * Internal common method -> called from other places as well (like menu.text) * @param menuItem Menu item * @param text Accelerator text * @throws InvalidPropertyValueException */ void setAccelerator(Node node, String key, JMenuItem item, String accelerator) throws InvalidPropertyValueException { KeyStroke acc = SwingJavaBuilderUtils.getAccelerator(accelerator); if (acc != null) { item.setAccelerator(acc); } } /* (non-Javadoc) * @see org.javabuilders.handler.IPropertyHandler#handle(org.javabuilders.BuilderConfig, org.javabuilders.BuildResult, org.javabuilders.Node, java.lang.String) */ public void handle(BuilderConfig config, BuildProcess result, Node node, String key) throws BuildException { String accelerator = node.getStringProperty(key); JMenuItem item = (JMenuItem)node.getMainObject(); setAccelerator(node, key, item, accelerator); } /* (non-Javadoc) * @see org.javabuilders.IKeyValueConsumer#getApplicableClass() */ public Class<?> getApplicableClass() { return JMenuItem.class; } }