package org.marketcetera.photon.internal.strategy.ui;
import java.util.List;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.resources.IFile;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.handlers.HandlerUtil;
import org.marketcetera.photon.strategy.engine.IStrategyEngines;
import org.marketcetera.photon.strategy.engine.model.core.Strategy;
import org.marketcetera.photon.strategy.engine.model.core.StrategyEngine;
import org.marketcetera.photon.strategy.engine.model.core.StrategyEngineCoreFactory;
import org.marketcetera.photon.strategy.engine.ui.DeployStrategyWizard;
import org.marketcetera.photon.strategy.engine.ui.workbench.AbstractDeployWizardHandler;
import org.marketcetera.photon.strategy.engine.ui.workbench.ws.StrategyEngineWorkspaceUI;
import org.marketcetera.util.misc.ClassVersion;
import com.google.inject.Inject;
import com.google.inject.Provider;
/* $License$ */
/**
* Handler for the {@code
* org.marketcetera.photon.strategy.engine.ui.workbench.deploy} command that
* deploys the selected {@link IFile}.
*
* @author <a href="mailto:will@marketcetera.com">Will Horn</a>
* @version $Id: DeployFileHandler.java 16154 2012-07-14 16:34:05Z colin $
* @since 2.0.0
*/
@ClassVersion("$Id: DeployFileHandler.java 16154 2012-07-14 16:34:05Z colin $")
public class DeployFileHandler extends AbstractDeployWizardHandler {
/**
* The prefix used to convert an IFile path to a platform resource URL.
*/
private static final String PLATFORM_RESOURCE_URL_PREFIX = "platform:/resource"; //$NON-NLS-1$
/**
* Constructor.
*
* @param enginesProvider
* the object that will provide the {@link IStrategyEngines} used
* to obtain the list of available engines
*/
@Inject
public DeployFileHandler(Provider<IStrategyEngines> enginesProvider) {
super(enginesProvider);
}
@Override
protected DeployStrategyWizard createWizard(ExecutionEvent event,
List<StrategyEngine> availableEngines) throws ExecutionException {
IFile script = (IFile) ((IStructuredSelection) HandlerUtil
.getCurrentSelectionChecked(event)).getFirstElement();
Strategy strategy = StrategyEngineCoreFactory.eINSTANCE
.createStrategy();
strategy.setScriptPath(PLATFORM_RESOURCE_URL_PREFIX
+ script.getFullPath().toString());
return StrategyEngineWorkspaceUI.createDeployStrategyWizard(strategy,
null, availableEngines);
}
}