package org.javabuilders.swt.handler.event;
import static org.javabuilders.swt.SwtJavaBuilder.ON_SELECTION;
import java.util.List;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.MenuItem;
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.util.BuilderUtils;
/**
* Handler for menu selection listener
* @author Jacek Furmankiewicz
*
*/
public class MenuItemSelectionListenerHandler extends AbstractPropertyHandler implements IPropertyList {
private final static MenuItemSelectionListenerHandler singleton = new MenuItemSelectionListenerHandler();
private final static List<ValueListDefinition> defs = ValueListDefinition.getCommonEventDefinitions(SelectionEvent.class);
/**
* @return Singleton
*/
public static MenuItemSelectionListenerHandler getInstance() {return singleton;}
/**
* Constructor
*/
private MenuItemSelectionListenerHandler() {
super(ON_SELECTION);
}
/* (non-Javadoc)
* @see org.javabuilders.handler.IPropertyHandler#handle(org.javabuilders.BuilderConfig, org.javabuilders.BuildProcess, org.javabuilders.Node, java.lang.String)
*/
@SuppressWarnings("unchecked")
public void handle(BuilderConfig config, final BuildProcess process, Node node,
String key) throws BuildException {
final MenuItem target = (MenuItem)node.getMainObject();
final Values<String,ObjectMethod> values = (Values<String, ObjectMethod>) node.getProperty(key);
if (values.size() > 0) {
target.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
BuilderUtils.invokeCallerEventMethods(process.getBuildResult(), target, values.values(), e);
}
});
}
}
/* (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;
}
/* (non-Javadoc)
* @see org.javabuilders.IApplicable#getApplicableClass()
*/
public Class<MenuItem> getApplicableClass() {
return MenuItem.class;
}
}