package org.nightlabs.jfire.reporting.admin.parameter.ui.tool; import org.eclipse.gef.Request; import org.eclipse.gef.tools.CreationTool; import org.nightlabs.jfire.reporting.admin.parameter.ui.ModelCreationFactory; import org.nightlabs.jfire.reporting.admin.parameter.ui.request.ValueProviderCreateRequest; import org.nightlabs.jfire.reporting.parameter.ValueProvider; import org.nightlabs.jfire.reporting.parameter.config.ValueAcquisitionSetup; import org.nightlabs.jfire.reporting.ui.parameter.ValueProviderDialog; /** * @author Daniel.Mazurek [at] NightLabs [dot] de * */ public class ValueProviderTool extends CreationTool { public ValueProviderTool(ModelCreationFactory factory) { super(factory); valueAcquisitionSetup = factory.getSetup(); } @Override protected Request createTargetRequest() { ValueProviderCreateRequest request = new ValueProviderCreateRequest(); request.setFactory(getFactory()); return request; } protected ValueAcquisitionSetup valueAcquisitionSetup; public ValueProviderCreateRequest getValueProviderCreateRequest() { return (ValueProviderCreateRequest) getTargetRequest(); } private boolean creationInProgress = false; @Override protected void performCreation(int button) { creationInProgress = true; try { ValueProvider valueProvider = ValueProviderDialog.openDialog(); if (valueProvider != null) { getValueProviderCreateRequest().setValueProvider(valueProvider); getValueProviderCreateRequest().setValueAcquisitionSetup(valueAcquisitionSetup); super.performCreation(button); } } finally { creationInProgress = false; } } @Override protected boolean handleFocusLost() { if (creationInProgress) return false; return super.handleFocusLost(); } }