Math2mat
|
00001 00021 package m2m.frontend.actions; 00022 00023 import java.lang.reflect.InvocationTargetException; 00024 00025 import org.eclipse.core.runtime.IProgressMonitor; 00026 import org.eclipse.jface.dialogs.MessageDialog; 00027 import org.eclipse.jface.dialogs.ProgressMonitorDialog; 00028 import org.eclipse.jface.operation.IRunnableWithProgress; 00029 import org.eclipse.swt.widgets.Shell; 00030 import org.eclipse.ui.IWorkbench; 00031 import org.eclipse.ui.IWorkbenchWindow; 00032 import org.eclipse.ui.PlatformUI; 00033 00034 import m2m.backend.processing.Errors; 00035 import m2m.backend.processing.ExternalRuns; 00036 import m2m.backend.processing.ProgressMonitoring; 00037 import m2m.frontend.GraphicalProgressMonitoring; 00038 import m2m.frontend.ErrorProcessing; 00039 00040 public class RunAll extends M2MAction 00041 { 00046 public RunAll(IWorkbenchWindow window, String label) { 00047 super(window,label); 00048 setImageDescriptor(m2m.frontend.Activator.getImageDescriptor("/icons/icon_play.png")); 00049 00050 // The id is used to refer to the action in a menu or toolbar 00051 setId(ICommandIds.CMD_RUNALL); 00052 00053 // Associate the action with a pre-defined command, to allow key bindings. 00054 setActionDefinitionId(ICommandIds.CMD_RUNALL); 00055 } 00056 00057 00058 public void execute(IProgressMonitor monitor) 00059 { 00060 Errors.clearError(); 00061 monitor.beginTask("Running all",100+editor.getM2MProject().getSimulationProperties().getNumberOfSamples()); 00062 GraphicalProgressMonitoring mon=new GraphicalProgressMonitoring(); 00063 mon.setIProgressMonitor(monitor); 00064 editor.getM2MProject().monitoring=mon; 00065 ExternalRuns.runAll(editor.getM2MProject()); 00066 ErrorProcessing.processLastError(editor.getShell().getDisplay()); 00067 00068 editor.getM2MProject().monitoring=new ProgressMonitoring(); 00069 00070 } 00074 public void run() 00075 { 00076 00077 if (!getEditor("Error","Select the tab with the m2m code")) 00078 return; 00079 00080 if (editor.getParseDone()) 00081 { 00082 activateConsole(); 00083 00084 00085 IRunnableWithProgress op = new IRunnableWithProgress() { 00086 public void run(IProgressMonitor monitor) { 00087 execute(monitor); 00088 } 00089 }; 00090 IWorkbench wb = PlatformUI.getWorkbench(); 00091 IWorkbenchWindow win = wb.getActiveWorkbenchWindow(); 00092 Shell shell = win != null ? win.getShell() : null; 00093 try { 00094 new ProgressMonitorDialog(shell).run(true, false, op); 00095 } catch (InvocationTargetException e) { 00096 // TODO Auto-generated catch block 00097 e.printStackTrace(); 00098 } catch (InterruptedException e) { 00099 // TODO Auto-generated catch block 00100 e.printStackTrace(); 00101 } 00102 00103 00104 /* 00105 Shell shell=new Shell(); 00106 00107 00108 // Create a smooth progress bar 00109 ProgressBar pb1 = new ProgressBar(shell, SWT.HORIZONTAL | SWT.SMOOTH); 00110 pb1.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); 00111 pb1.setMinimum(0); 00112 pb1.setMaximum(30); 00113 pb1.setSelection(10); 00114 shell.open(); 00115 */ 00116 00117 /* Launch the octaveThread */ 00118 // RunAllThread runAllThread = new RunAllThread(editor,editor.getM2MProject()); 00119 // runAllThread.start(); 00120 } 00121 else 00122 MessageDialog.openError(window.getShell(), "Parsing error", "Parse the file to get inputs and outputs before trying to launch Octave"); 00123 } 00124 }