/**
* Copyright (c) 2009-2011, The HATS Consortium. All rights reserved.
* This file is licensed under the terms of the Modified BSD License.
*/
package org.absmodels.abs.plugin.actions;
import static org.absmodels.abs.plugin.actions.ActionUtils.getCurrentProject;
import static org.absmodels.abs.plugin.util.Constants.ACTION_EXEC_ID;
import static org.absmodels.abs.plugin.util.UtilityFunctions.saveEditors;
import static org.absmodels.abs.plugin.util.UtilityFunctions.showErrorMessage;
import java.io.File;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
import org.eclipse.ui.PartInitException;
public class MaudeCompilerAction implements IWorkbenchWindowActionDelegate{
IWorkbenchWindow window;
IProject project = null;
File destFolder;
@Override
public void run(IAction action){
boolean realTime = false;
IEditorPart editorPart = window.getActivePage().getActiveEditor();
try {
project = getCurrentProject(window, editorPart);
} catch (PartInitException e) {
}
//If no files or projects have been selected, show an error and abort
if(project == null || !project.exists()){
showErrorMessage("No project has been selected. Please open a file or select one in the project explorer.");
return;
}
//Create a new MaudeJob which will generate Maude code and (if run button was pressed) execute it
saveEditors(project, true);
final Job maudeJob = new MaudeJob(project, realTime, action.getId().equals(ACTION_EXEC_ID));
maudeJob.addJobChangeListener(new MaudeJobChangeListener(project));
maudeJob.schedule();
}
@Override
public void selectionChanged(IAction action, ISelection selection) {}
@Override
public void dispose() {}
@Override
public void init(IWorkbenchWindow window) {
this.window = window;
}
}