|
@@ -10,16 +10,17 @@
|
|
|
*/
|
|
|
package org.yakindu.sct.generator.genmodel.ui.action;
|
|
|
|
|
|
-import java.io.IOException;
|
|
|
-import java.util.Collections;
|
|
|
import java.util.List;
|
|
|
|
|
|
import org.eclipse.core.resources.IFile;
|
|
|
+import org.eclipse.core.runtime.IProgressMonitor;
|
|
|
+import org.eclipse.core.runtime.IStatus;
|
|
|
+import org.eclipse.core.runtime.Status;
|
|
|
+import org.eclipse.core.runtime.jobs.Job;
|
|
|
import org.eclipse.emf.common.util.EList;
|
|
|
import org.eclipse.emf.common.util.URI;
|
|
|
import org.eclipse.emf.ecore.resource.Resource;
|
|
|
import org.eclipse.emf.ecore.resource.ResourceSet;
|
|
|
-import org.eclipse.emf.ecore.util.EcoreUtil;
|
|
|
import org.eclipse.jface.action.IAction;
|
|
|
import org.eclipse.jface.viewers.ISelection;
|
|
|
import org.eclipse.jface.viewers.StructuredSelection;
|
|
@@ -34,7 +35,6 @@ import org.yakindu.sct.generator.core.extensions.GeneratorExtensions.GeneratorDe
|
|
|
import org.yakindu.sct.model.sgen.FeatureParameterValue;
|
|
|
import org.yakindu.sct.model.sgen.GeneratorEntry;
|
|
|
import org.yakindu.sct.model.sgen.GeneratorModel;
|
|
|
-import org.yakindu.sct.model.sgen.SGenPackage;
|
|
|
import org.yakindu.sct.model.sgen.impl.FeatureParameterValueImpl;
|
|
|
|
|
|
import com.google.inject.Inject;
|
|
@@ -72,11 +72,20 @@ public class GenerateModelAction implements IObjectActionDelegate {
|
|
|
String generatorId = model.getGeneratorId();
|
|
|
GeneratorDescriptor description = GeneratorExtensions
|
|
|
.getGeneratorDescriptorForId(generatorId);
|
|
|
- ISCTGenerator generator = description.createGenerator();
|
|
|
- EList<GeneratorEntry> entries = model.getEntries();
|
|
|
- for (GeneratorEntry generatorEntry : entries) {
|
|
|
- generator.generate(generatorEntry);
|
|
|
- }
|
|
|
+ final ISCTGenerator generator = description.createGenerator();
|
|
|
+ final EList<GeneratorEntry> entries = model.getEntries();
|
|
|
+ Job generatorJob = new Job("Execute SCT Genmodel " + file.getName()) {
|
|
|
+ protected IStatus run(IProgressMonitor monitor) {
|
|
|
+ for (GeneratorEntry generatorEntry : entries) {
|
|
|
+ if (monitor.isCanceled()) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ generator.generate(generatorEntry);
|
|
|
+ }
|
|
|
+ return Status.OK_STATUS;
|
|
|
+ }
|
|
|
+ };
|
|
|
+ generatorJob.schedule();
|
|
|
|
|
|
}
|
|
|
|