package org.panlab.software.fstoolkit.wizards;
import org.eclipse.jface.dialogs.IDialogPage;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.panlab.software.fstoolkit.extensionpoint.WorkflowEnginesBrowser;
import FederationOffice.extensionInterfaces.IWorkflowEngine;
/**
* The "New" wizard page allows setting the container for the new file as well
* as the file name. The page will only accept file name without the extension
* OR with the extension that matches the expected one (mpe).
*/
public class SubmitFSDLRequestPageOne extends WizardPage {
// private Text fileText;
// private ISelection selection;
private Combo cmbEngines;
/**
* Constructor for SampleNewWizardPage.
*
* @param pageName
*/
public SubmitFSDLRequestPageOne(ISelection selection) {
super("wizardPage SubmitFSDLRequestPageOne");
setTitle("Submit FSDL file describing proposed implementation");
setDescription("The description of opened FSDL file with *.fsdl extension," +
"will be submitted for reservation and provisioning");
//this.selection = selection;
}
/**
* @see IDialogPage#createControl(Composite)
*/
public void createControl(Composite parent) {
//create page content
Composite container = new Composite(parent, SWT.NULL);
GridLayout layout = new GridLayout();
container.setLayout(layout);
layout.numColumns = 1;
layout.verticalSpacing = 9;
Label label = new Label(container, SWT.NULL);
label.setText("&Please choose a workflow engine:");// here to check extension points of plugins implementing an engine
cmbEngines = new Combo(container, SWT.VERTICAL | SWT.DROP_DOWN | SWT.BORDER | SWT.READ_ONLY);
//runWorkflowEngineExtension(cmbEngines);
//cmbEngines.get
for (IWorkflowEngine wEngine : WorkflowEnginesBrowser.getInstance().getWorkflowEngines()) {
cmbEngines.add(wEngine.getEngineName());
cmbEngines.setData(wEngine.getEngineName(), wEngine);
}
cmbEngines.select(0);
WorkflowEnginesBrowser.getInstance().setSelectedProvisioningEngine(
(IWorkflowEngine)cmbEngines.getData( cmbEngines.getText() ) );
cmbEngines.addSelectionListener( new SelectionListener() {
@Override
public void widgetSelected(SelectionEvent e) {
System.out.println(e.toString() );
IWorkflowEngine wengine = (IWorkflowEngine)e.widget.getData( ((Combo)e.widget).getText() );
WorkflowEnginesBrowser.getInstance().setSelectedProvisioningEngine(wengine );
}
@Override
public void widgetDefaultSelected(SelectionEvent e) {
// TODO Auto-generated method stub
}
});
// Text txt = new Text(container, SWT.BORDER| SWT.READ_ONLY | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL );
// GridData gridData = new GridData();
// gridData.widthHint=420;
// gridData.heightHint =200;
// txt.setLayoutData(gridData);
//what about if every resource broker has its own provisioning engine? Ans: He needs to provide a M2M engine proxy
//If we have hybrid scenarios, can we select different provisioning engines?
//Ans: This is not simple. It depends.The way that we can access the Prov Engine should
//be described probably in the Resource Broker/Federation Office model
setControl(container);
}
// public IWorkflowEngine getSelectedProvisioningEngine(){
// return (IWorkflowEngine)cmbEngines.getData( cmbEngines.getText() );
// }
}