package org.marketcetera.photon.strategy.engine.ui;
import org.eclipse.core.databinding.DataBindingContext;
import org.eclipse.core.databinding.observable.value.IObservableValue;
import org.eclipse.jface.databinding.dialog.DialogPageSupport;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.widgets.Composite;
import org.marketcetera.photon.commons.Validate;
import org.marketcetera.photon.commons.ui.databinding.CustomWizardPageSupport;
import org.marketcetera.photon.internal.strategy.engine.ui.DeployStrategyComposite;
import org.marketcetera.photon.strategy.engine.model.core.Strategy;
import org.marketcetera.photon.strategy.engine.model.core.StrategyEngine;
import org.marketcetera.util.misc.ClassVersion;
import com.google.common.collect.ImmutableList;
/* $License$ */
/**
* The wizard page that collects strategy deployment parameters.
*
* @author <a href="mailto:will@marketcetera.com">Will Horn</a>
* @version $Id: DeployStrategyWizardPage.java 16154 2012-07-14 16:34:05Z colin $
* @since 2.0.0
*/
@ClassVersion("$Id: DeployStrategyWizardPage.java 16154 2012-07-14 16:34:05Z colin $")
public final class DeployStrategyWizardPage extends WizardPage {
/*
* unit tested with DeployStrategyWizard
*/
private final Strategy mStrategy;
private final IObservableValue mEngine;
private final ImmutableList<StrategyEngine> mAvailableEngines;
private final ScriptSelectionButton[] mButtons;
private final DataBindingContext mDataBindingContext;
private DialogPageSupport mWizardSupport;
/**
* Constructor.
*
* @param strategy
* the strategy model
* @param engine
* the engine model
* @param availableEngines
* the available engines
* @param buttons
* the buttons used to assist in strategy script selection
* @throws IllegalArgumentException
* if any parameter is null, or if availableEngines or buttons
* contains null elements
*/
public DeployStrategyWizardPage(Strategy strategy, IObservableValue engine,
ImmutableList<StrategyEngine> availableEngines,
ScriptSelectionButton... buttons) {
super(DeployStrategyWizardPage.class.getName());
Validate.notNull(strategy, "strategy", //$NON-NLS-1$
engine, "engine"); //$NON-NLS-1$
Validate.noNullElements(availableEngines, "availableEngines"); //$NON-NLS-1$
Validate.noNullElements(buttons, "buttons"); //$NON-NLS-1$
setImageDescriptor(StrategyEngineImage.DEPLOY_WIZARD_WIZBAN
.getImageDescriptor());
setTitle(Messages.DEPLOY_STRATEGY_WIZARD_PAGE__TITLE.getText());
setDescription(Messages.DEPLOY_STRATEGY_WIZARD_PAGE__DESCRIPTION
.getText());
mStrategy = strategy;
mEngine = engine;
mAvailableEngines = availableEngines;
mButtons = buttons;
mDataBindingContext = new DataBindingContext();
}
@Override
public void createControl(Composite parent) {
mWizardSupport = CustomWizardPageSupport.create(this,
mDataBindingContext);
setControl(new DeployStrategyComposite(parent, mDataBindingContext,
mStrategy, mAvailableEngines.toArray(new StrategyEngine[0]),
mEngine, mButtons));
}
@Override
public void dispose() {
mWizardSupport.dispose();
if (mDataBindingContext != null) {
mDataBindingContext.dispose();
}
}
}