package rhogenwizard.actions;
import org.eclipse.core.resources.IProject;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.window.Window;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
import rhogenwizard.BuildType;
import rhogenwizard.DialogUtils;
import rhogenwizard.PlatformType;
import rhogenwizard.builder.rhodes.ConfigProductionBuildDialog;
import rhogenwizard.sdk.task.LocalProductionBuildTask;
public class ProductionBuildAction implements IWorkbenchWindowActionDelegate
{
private IWorkbenchWindow window;
@Override
public void run(IAction action)
{
if (!ConfigProductionBuildDialog.thereAreRhomobileProjects())
{
DialogUtils.error("Error", "There are no RhoMobile projects.");
return;
}
ConfigProductionBuildDialog dialog = new ConfigProductionBuildDialog(window.getShell());
dialog.create();
if (dialog.open() == Window.OK)
{
IProject project = dialog.project();
PlatformType platformType = dialog.platformType();
BuildType buildType = dialog.buildType ();
assert platformType != PlatformType.eUnknown;
assert buildType != BuildType .eUnknown;
String workDir = project.getLocation().toOSString();
switch (buildType) {
case eLocal:
new LocalProductionBuildTask(workDir, platformType)
.makeJob("Production build (" + project.getName() + ")")
.schedule();
break;
}
}
}
@Override
public void selectionChanged(IAction action, ISelection selection)
{
}
@Override
public void dispose()
{
}
@Override
public void init(IWorkbenchWindow window)
{
this.window = window;
}
}