/** * */ package org.javabuilders.swing.handler.event; import java.awt.Component; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.util.List; import org.javabuilders.BuildException; import org.javabuilders.BuildProcess; import org.javabuilders.BuilderConfig; import org.javabuilders.IPropertyList; import org.javabuilders.Node; import org.javabuilders.ValueListDefinition; import org.javabuilders.Values; import org.javabuilders.event.ObjectMethod; import org.javabuilders.handler.AbstractPropertyHandler; import org.javabuilders.swing.SwingJavaBuilder; import org.javabuilders.util.BuilderUtils; /** * Handles creating a KeyListener via the onKeyPressed, onKeyReleased, onKeyTyped events * @author Jacek Furmankiewicz * */ public class ComponentKeyListenerHandler extends AbstractPropertyHandler implements IPropertyList{ private final static ComponentKeyListenerHandler singleton = new ComponentKeyListenerHandler(); private final static List<ValueListDefinition> defs = ValueListDefinition.getCommonEventDefinitions(KeyEvent.class); /** * @return Singleton */ public static ComponentKeyListenerHandler getInstance() { return singleton; } /** * Constructor */ private ComponentKeyListenerHandler() { super(SwingJavaBuilder.ON_KEY_PRESSED,SwingJavaBuilder.ON_KEY_RELEASED, SwingJavaBuilder.ON_KEY_TYPED); } /* (non-Javadoc) * @see org.javabuilders.handler.IPropertyHandler#handle(org.javabuilders.BuilderConfig, org.javabuilders.BuildResult, org.javabuilders.Node, java.lang.String) */ @SuppressWarnings("unchecked") public void handle(final BuilderConfig config,final BuildProcess process, final Node node, String key) throws BuildException { Component component = (Component)node.getMainObject(); final Values<String,ObjectMethod> onKeyTypedList = (Values<String,ObjectMethod>)node.getProperty(SwingJavaBuilder.ON_KEY_TYPED); final Values<String,ObjectMethod> onKeyReleasedList = (Values<String,ObjectMethod>)node.getProperty(SwingJavaBuilder.ON_KEY_RELEASED); final Values<String,ObjectMethod> onKeyPressedList = (Values<String,ObjectMethod>)node.getProperty(SwingJavaBuilder.ON_KEY_PRESSED); component.addKeyListener(new KeyListener() { public void keyPressed(KeyEvent e) { if (onKeyPressedList != null && onKeyPressedList.size() > 0) { BuilderUtils.invokeCallerEventMethods(process.getBuildResult(), node, onKeyPressedList.values(), e); } } public void keyReleased(KeyEvent e) { if (onKeyReleasedList != null && onKeyReleasedList.size() > 0) { BuilderUtils.invokeCallerEventMethods(process.getBuildResult(), node, onKeyReleasedList.values(), e); } } public void keyTyped(KeyEvent e) { if (onKeyTypedList != null && onKeyTypedList.size() > 0) { BuilderUtils.invokeCallerEventMethods(process.getBuildResult(), node, onKeyTypedList.values(), e); } } }); } /* (non-Javadoc) * @see org.javabuilders.IKeyValueConsumer#getApplicableClass() */ public Class<?> getApplicableClass() { return Component.class; } /* (non-Javadoc) * @see org.javabuilders.IPropertyList#isList(java.lang.String) */ public boolean isList(String propertyName) { return true; } /* (non-Javadoc) * @see org.javabuilders.IPropertyList#getValueListDefinitions(java.lang.String) */ public List<ValueListDefinition> getValueListDefinitions(String propertyName) { return defs; } }