/** * */ package org.nightlabs.jfire.reporting.ui.parameter.guifactory.jfireobjects; import javax.jdo.JDOHelper; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.nightlabs.jfire.base.ui.security.UserSearchComposite; import org.nightlabs.jfire.reporting.parameter.config.ValueProviderConfig; import org.nightlabs.jfire.reporting.ui.parameter.AbstractValueProviderGUI; import org.nightlabs.jfire.security.id.UserID; /** * @author Alexander Bieber <!-- alex [AT] nightlabs [DOT] de --> * */ public abstract class AbstractValueProviderGUIUser extends AbstractValueProviderGUI<UserID> { private UserSearchComposite searchComposite; /** * */ public AbstractValueProviderGUIUser(ValueProviderConfig valueProviderConfig) { super(valueProviderConfig); } /* (non-Javadoc) * @see org.nightlabs.jfire.reporting.ui.parameter.IValueProviderGUI#createGUI(org.eclipse.swt.widgets.Composite) */ public Control createGUI(Composite wrapper) { searchComposite = new UserSearchComposite(wrapper, SWT.NONE, getTypeFlags() | UserSearchComposite.FLAG_SEARCH_BUTTON); searchComposite.addSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(SelectionChangedEvent event) { notifyOutputChanged(); } }); return searchComposite; } protected abstract int getTypeFlags(); /* (non-Javadoc) * @see org.nightlabs.jfire.reporting.ui.parameter.IValueProviderGUI#getOutputValue() */ public UserID getOutputValue() { if (searchComposite.getSelectedUser() != null) return (UserID) JDOHelper.getObjectId(searchComposite.getSelectedUser()); return null; } /* (non-Javadoc) * @see org.nightlabs.jfire.reporting.ui.parameter.IValueProviderGUI#isAcquisitionComplete() */ public boolean isAcquisitionComplete() { return searchComposite.getSelectedUser() != null || getValueProviderConfig().isAllowNullOutputValue(); } /* (non-Javadoc) * @see org.nightlabs.jfire.reporting.ui.parameter.IValueProviderGUI#setInputParameterValue(java.lang.String, java.lang.Object) */ public void setInputParameterValue(String parameterID, Object value) { } }