package org.nightlabs.jfire.reporting.admin.parameter.ui.property;
import org.eclipse.ui.views.properties.IPropertyDescriptor;
import org.eclipse.ui.views.properties.PropertyDescriptor;
import org.nightlabs.base.ui.property.XTextPropertyDescriptor;
import org.nightlabs.jfire.reporting.admin.parameter.ui.editpart.ValueProviderConfigEditPart;
import org.nightlabs.jfire.reporting.admin.parameter.ui.notification.ModelNotificationManager;
import org.nightlabs.jfire.reporting.admin.parameter.ui.resource.Messages;
import org.nightlabs.jfire.reporting.parameter.ValueProvider;
import org.nightlabs.jfire.reporting.parameter.config.AcquisitionParameterConfig;
import org.nightlabs.jfire.reporting.parameter.config.ValueConsumer;
import org.nightlabs.jfire.reporting.parameter.config.ValueConsumerBinding;
import org.nightlabs.jfire.reporting.parameter.config.ValueProviderConfig;
import org.nightlabs.jfire.reporting.parameter.dao.ValueProviderDAO;
import org.nightlabs.jfire.reporting.parameter.id.ValueProviderID;
import org.nightlabs.progress.NullProgressMonitor;
/**
* @author Daniel.Mazurek [at] NightLabs [dot] de
*
*/
public class ValueConsumerBindingPropertySource
extends AbstractPropertySource
{
private ValueConsumerBinding binding;
public ValueConsumerBindingPropertySource(ValueConsumerBinding binding) {
this.binding = binding;
}
public Object getEditableValue() {
return binding;
}
public IPropertyDescriptor[] getPropertyDescriptors()
{
IPropertyDescriptor[] pds = new IPropertyDescriptor[2];
pds[0] = createConsumerPD();
pds[1] = createProviderPD();
return pds;
}
public Object getPropertyValue(Object id)
{
if (id.equals(ModelNotificationManager.PROP_PROVIDER))
{
ValueProvider valueProvider = getValueProvider(
binding.getProvider().getConfigValueProviderID());
return valueProvider.getName().getText();
}
else if (id.equals(ModelNotificationManager.PROP_CONSUMER))
{
ValueConsumer valueConsumer = binding.getConsumer();
if (valueConsumer instanceof ValueProviderConfig) {
ValueProviderConfig valueProviderConfig = (ValueProviderConfig) valueConsumer;
ValueProvider valueProvider = getValueProvider(
valueProviderConfig.getConfigValueProviderID());
return valueProvider.getName().getText();
}
if (valueConsumer instanceof AcquisitionParameterConfig) {
AcquisitionParameterConfig acquisitionParameterConfig = (AcquisitionParameterConfig) valueConsumer;
return acquisitionParameterConfig.getParameterID();
}
}
return null;
}
protected ValueProvider getValueProvider(ValueProviderID valueProviderID)
{
ValueProvider valueProvider = ValueProviderDAO.sharedInstance().getValueProvider(
valueProviderID,
ValueProviderConfigEditPart.FETCH_GROUPS,
new NullProgressMonitor());
return valueProvider;
}
public void setPropertyValue(Object arg0, Object arg1) {
}
protected IPropertyDescriptor createProviderPD()
{
PropertyDescriptor pd = new XTextPropertyDescriptor(
ModelNotificationManager.PROP_PROVIDER,
Messages.getString("org.nightlabs.jfire.reporting.admin.parameter.ui.property.ValueConsumerBindingPropertySource.propertyDescriptorProvider.name"), true); //$NON-NLS-1$
return pd;
}
protected IPropertyDescriptor createConsumerPD()
{
PropertyDescriptor pd = new XTextPropertyDescriptor(
ModelNotificationManager.PROP_CONSUMER,
Messages.getString("org.nightlabs.jfire.reporting.admin.parameter.ui.property.ValueConsumerBindingPropertySource.propertyDescriptorConsumer.name"), true); //$NON-NLS-1$
return pd;
}
}