diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/.classpath b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/.classpath
new file mode 100644
index 000000000..3906c3b82
--- /dev/null
+++ b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/.classpath
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/.project b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/.project
new file mode 100644
index 000000000..7545b8415
--- /dev/null
+++ b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/.project
@@ -0,0 +1,40 @@
+
+
+ org.eclipse.gemoc.event.commons.interpreter
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.xtext.ui.shared.xtextBuilder
+
+
+
+
+ fr.inria.diverse.k3.ui.k3Builder
+
+
+
+
+ org.eclipse.pde.ManifestBuilder
+
+
+
+
+ org.eclipse.pde.SchemaBuilder
+
+
+
+
+
+ fr.inria.diverse.k3.ui.k3Nature
+ org.eclipse.jdt.core.javanature
+ org.eclipse.xtext.ui.shared.xtextNature
+ org.eclipse.pde.PluginNature
+
+
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/.settings/org.eclipse.core.resources.prefs b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 000000000..896a9a53a
--- /dev/null
+++ b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/=UTF-8
\ No newline at end of file
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/META-INF/MANIFEST.MF b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..fa8219521
--- /dev/null
+++ b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/META-INF/MANIFEST.MF
@@ -0,0 +1,23 @@
+Manifest-Version: 1.0
+Bundle-SymbolicName: org.eclipse.gemoc.event.commons.interpreter; singleton:=true
+Export-Package: org.eclipse.gemoc.event.commons.interpreter.property,
+ org.eclipse.gemoc.event.commons.interpreter.scenario,
+ org.eclipse.gemoc.event.commons.interpreter
+Bundle-Name: org.eclipse.gemoc.event.commons.interpreter
+Bundle-Version: 1.0.0
+Bundle-ClassPath: .
+Require-Bundle: fr.inria.diverse.k3.al.annotationprocessor.plugin;bundle-version="3.0.0";visibility:=reexport,
+ org.eclipse.xtend.lib;bundle-version="2.6.0";visibility:=private,
+ org.eclipse.xtext.xbase.lib;bundle-version="2.6.0";visibility:=private,
+ com.google.guava;bundle-version="0.0.0";visibility:=private,
+ org.eclipse.emf.ecore.xmi;bundle-version="2.8.0";visibility:=reexport,
+ org.eclipse.emf.ecore;bundle-version="2.8.0";visibility:=reexport,
+ org.eclipse.emf.common;bundle-version="2.8.0";visibility:=reexport,
+ org.eclipse.gemoc.event.commons.model;bundle-version="0.0.0";visibility:=private,
+ org.eclipse.emf.transaction;bundle-version="1.9.0",
+ org.eclipse.gemoc.xdsmlframework.api;bundle-version="2.3.0",
+ org.eclipse.gemoc.trace.commons.model,
+ org.eclipse.ocl,
+ org.eclipse.ocl.ecore
+Bundle-ManifestVersion: 2
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/build.properties b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/build.properties
new file mode 100644
index 000000000..4c8ab5418
--- /dev/null
+++ b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/build.properties
@@ -0,0 +1,6 @@
+source.. = src/,\
+ xtend-gen/
+output.. = bin/
+bin.includes = plugin.xml,\
+ META-INF/,\
+ .
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/plugin.xml b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/plugin.xml
new file mode 100644
index 000000000..6037a2327
--- /dev/null
+++ b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/plugin.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/EventInstance.java b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/EventInstance.java
new file mode 100644
index 000000000..81e80525a
--- /dev/null
+++ b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/EventInstance.java
@@ -0,0 +1,27 @@
+package org.eclipse.gemoc.event.commons.interpreter;
+
+import java.util.Map;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.gemoc.event.commons.model.scenario.Event;
+
+public class EventInstance {
+
+ private final Event originalEvent;
+
+ private final Map parameters;
+
+ public EventInstance(Event originalEvent, Map parameters) {
+ this.originalEvent = originalEvent;
+ this.parameters = parameters;
+ }
+
+ public Event getOriginalEvent() {
+ return originalEvent;
+ }
+
+ public Map getParameters() {
+ return parameters;
+ }
+}
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/EventInterpreter.java b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/EventInterpreter.java
new file mode 100644
index 000000000..44666ebb8
--- /dev/null
+++ b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/EventInterpreter.java
@@ -0,0 +1,172 @@
+package org.eclipse.gemoc.event.commons.interpreter;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Queue;
+import java.util.Set;
+import java.util.concurrent.ConcurrentLinkedQueue;
+
+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.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+import org.eclipse.gemoc.event.commons.interpreter.property.PropertyMonitor;
+import org.eclipse.gemoc.event.commons.interpreter.scenario.ArbiterManager;
+import org.eclipse.gemoc.event.commons.interpreter.scenario.IArbiterManager;
+import org.eclipse.gemoc.event.commons.interpreter.scenario.IScenarioManager;
+import org.eclipse.gemoc.event.commons.interpreter.scenario.ScenarioManager;
+import org.eclipse.gemoc.event.commons.model.scenario.Arbiter;
+import org.eclipse.gemoc.event.commons.model.scenario.Scenario;
+import org.eclipse.gemoc.xdsmlframework.api.core.IExecutionEngine;
+
+public class EventInterpreter implements IEventInterpreter {
+
+ private Resource executedModel;
+
+ private final Queue eventQueue = new ConcurrentLinkedQueue<>();
+
+ private boolean canManageEvents = true;
+
+ private boolean waitForEvents = false;
+
+ private Thread t = null;
+
+ private IScenarioManager scenarioManager;
+
+ private IArbiterManager arbiterManager;
+
+ private IBehavioralAPI api;
+
+ @Override
+ public void queueEvent(EventInstance input) {
+ eventQueue.add((EventInstance) input);
+ if (t != null) {
+ synchronized (t) {
+ t.notify();
+ }
+ t = null;
+ }
+ }
+
+ @Override
+ public boolean canSendEvent(EventInstance event) {
+ return api.canSendEvent(event);
+ }
+
+ private List listeners = new ArrayList<>();
+
+ @Override
+ public void addListener(IEventInterpreterListener listener) {
+ listeners.add(listener);
+ }
+
+ @Override
+ public void removeListener(IEventInterpreterListener listener) {
+ listeners.remove(listener);
+ }
+
+ @Override
+ public void processEvents() {
+ if (canManageEvents) {
+ canManageEvents = false;
+ if (scenarioManager != null && !scenarioManager.isScenarioComplete()) {
+ if (waitForEvents && eventQueue.isEmpty()) {
+ throw new IllegalStateException("Event manager asked to wait for events while playing a scenario");
+ }
+ } else if (waitForEvents && eventQueue.isEmpty()) {
+ t = Thread.currentThread();
+ synchronized (t) {
+ try {
+ t.wait();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ waitForEvents = false;
+ }
+ EventInstance event = eventQueue.poll();
+ while (event != null) {
+ api.dispatchEvent(event);
+ event = eventQueue.poll();
+ }
+ canManageEvents = true;
+ }
+ }
+
+ @Override
+ public void waitForEvents() {
+ waitForEvents = true;
+ }
+
+ private Scenario> pendingScenario;
+
+ private Arbiter, ?, ?> pendingArbiter;
+
+ @Override
+ public void loadScenario(URI uri, ResourceSet resourceSet) {
+ Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("xmi", new XMIResourceFactoryImpl());
+ Resource resource = resourceSet.getResource(uri.trimFragment(), true);
+ EcoreUtil.resolveAll(resource);
+ if (uri.hasFragment()) {
+ pendingScenario = (Scenario>) resource.getEObject(uri.fragment());
+ } else {
+ pendingScenario = (Scenario>) resource.getContents().get(0);
+ }
+ }
+
+ @Override
+ public void loadArbiter(URI uri, ResourceSet resourceSet) {
+ Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("xmi", new XMIResourceFactoryImpl());
+ Resource resource = resourceSet.getResource(uri.trimFragment(), true);
+ EcoreUtil.resolveAll(resource);
+ if (uri.hasFragment()) {
+ pendingArbiter = (Arbiter, ?, ?>) resource.getEObject(uri.fragment());
+ } else {
+ pendingArbiter = (Arbiter, ?, ?>) resource.getContents().get(0);
+ }
+ }
+
+ @Override
+ public void engineAboutToStart(IExecutionEngine engine) {
+ executedModel = engine.getExecutionContext().getResourceModel();
+ if (pendingScenario != null) {
+ PropertyMonitor monitor = engine.getAddon(PropertyMonitor.class);
+ if (monitor != null) {
+ scenarioManager = new ScenarioManager(executedModel, this, monitor);
+ } else {
+
+ }
+ }
+ if (pendingArbiter != null) {
+ PropertyMonitor monitor = engine.getAddon(PropertyMonitor.class);
+ if (monitor != null) {
+ arbiterManager = new ArbiterManager(monitor);
+ } else {
+
+ }
+ }
+
+ final Set apis = engine.getAddonsTypedBy(IBehavioralAPI.class);
+ api = apis.iterator().next();
+ }
+
+ @Override
+ public void engineStarted(IExecutionEngine executionEngine) {
+ if (pendingScenario != null) {
+ scenarioManager.loadScenario(pendingScenario);
+ pendingScenario = null;
+ }
+ if (pendingArbiter != null) {
+ arbiterManager.loadArbiter(pendingArbiter);
+ pendingArbiter = null;
+ }
+ }
+
+ @Override
+ public void engineStopped(IExecutionEngine engine) {
+ if (scenarioManager != null) {
+ scenarioManager.saveScenarioReport();
+ }
+ }
+}
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/EventInterpreterRegistry.java b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/EventInterpreterRegistry.java
new file mode 100644
index 000000000..ca36e2b96
--- /dev/null
+++ b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/EventInterpreterRegistry.java
@@ -0,0 +1,38 @@
+package org.eclipse.gemoc.event.commons.interpreter;
+
+import java.util.HashSet;
+import java.util.Set;
+
+public class EventInterpreterRegistry {
+
+ private static EventInterpreterRegistry instance;
+
+ private Set registeredManagers;
+
+ private EventInterpreterRegistry () {
+ this.registeredManagers = new HashSet();
+ }
+
+ public static EventInterpreterRegistry getInstance() {
+ if(instance == null) {
+ instance = new EventInterpreterRegistry();
+ }
+ return instance;
+ }
+
+ public void registerManager(IEventInterpreter manager) {
+ if(manager != null) {
+ registeredManagers.add(manager);
+ }
+ }
+
+ public void unregisterManager(IEventInterpreter manager) {
+ if(manager != null) {
+ registeredManagers.remove(manager);
+ }
+ }
+
+ public IEventInterpreter findEventInterpreter() {
+ return registeredManagers.stream().findFirst().orElse(null);
+ }
+}
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/IBehavioralAPI.java b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/IBehavioralAPI.java
new file mode 100644
index 000000000..0429999d6
--- /dev/null
+++ b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/IBehavioralAPI.java
@@ -0,0 +1,16 @@
+package org.eclipse.gemoc.event.commons.interpreter;
+
+import java.util.Set;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.gemoc.xdsmlframework.api.core.IExecutionEngine;
+import org.eclipse.gemoc.xdsmlframework.api.engine_addon.IEngineAddon;
+
+public interface IBehavioralAPI extends IEngineAddon {
+
+ void dispatchEvent(EventInstance event);
+
+ boolean canSendEvent(EventInstance event);
+
+ Set getEventClasses();
+}
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/IEventInterpreter.java b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/IEventInterpreter.java
new file mode 100644
index 000000000..bcf855cab
--- /dev/null
+++ b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/IEventInterpreter.java
@@ -0,0 +1,24 @@
+package org.eclipse.gemoc.event.commons.interpreter;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.gemoc.xdsmlframework.api.engine_addon.IEngineAddon;
+
+public interface IEventInterpreter extends IEngineAddon {
+
+ void queueEvent(EventInstance event);
+
+ void processEvents();
+
+ void waitForEvents();
+
+ void loadScenario(URI uri, ResourceSet resourceSet);
+
+ void loadArbiter(URI arbiterURI, ResourceSet resourceSet);
+
+ void addListener(IEventInterpreterListener listener);
+
+ void removeListener(IEventInterpreterListener listener);
+
+ boolean canSendEvent(EventInstance event);
+}
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/IEventInterpreterListener.java b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/IEventInterpreterListener.java
new file mode 100644
index 000000000..c91467b94
--- /dev/null
+++ b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/IEventInterpreterListener.java
@@ -0,0 +1,8 @@
+package org.eclipse.gemoc.event.commons.interpreter;
+
+import org.eclipse.gemoc.event.commons.model.scenario.Event;
+
+public interface IEventInterpreterListener {
+
+ public void eventReceived(Event event);
+}
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/property/IPropertyListener.java b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/property/IPropertyListener.java
new file mode 100644
index 000000000..56e196850
--- /dev/null
+++ b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/property/IPropertyListener.java
@@ -0,0 +1,6 @@
+package org.eclipse.gemoc.event.commons.interpreter.property;
+
+public interface IPropertyListener {
+
+ void update(boolean propertyValue);
+}
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/property/IPropertyMonitor.java b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/property/IPropertyMonitor.java
new file mode 100644
index 000000000..cb71f7f83
--- /dev/null
+++ b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/property/IPropertyMonitor.java
@@ -0,0 +1,10 @@
+package org.eclipse.gemoc.event.commons.interpreter.property;
+
+import org.eclipse.gemoc.event.commons.model.property.Property;
+
+public interface IPropertyMonitor {
+
+ void monitorProperty(Property property, IPropertyListener listener);
+
+ void unmonitorProperty(Property property, IPropertyListener listener);
+}
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/property/PropertyMonitor.java b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/property/PropertyMonitor.java
new file mode 100644
index 000000000..7fa78af14
--- /dev/null
+++ b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/property/PropertyMonitor.java
@@ -0,0 +1,233 @@
+package org.eclipse.gemoc.event.commons.interpreter.property;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.function.Predicate;
+import java.util.stream.Collectors;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EParameter;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.gemoc.event.commons.interpreter.EventInstance;
+import org.eclipse.gemoc.event.commons.interpreter.IEventInterpreter;
+import org.eclipse.gemoc.event.commons.interpreter.scenario.ElementProviderAspect;
+import org.eclipse.gemoc.event.commons.model.property.CompositeProperty;
+import org.eclipse.gemoc.event.commons.model.property.EventPrecondition;
+import org.eclipse.gemoc.event.commons.model.property.Property;
+import org.eclipse.gemoc.event.commons.model.property.PropertyReference;
+import org.eclipse.gemoc.event.commons.model.property.StateProperty;
+import org.eclipse.gemoc.event.commons.model.property.StepProperty;
+import org.eclipse.gemoc.event.commons.model.property.Stepping;
+import org.eclipse.gemoc.event.commons.model.scenario.ElementProvider;
+import org.eclipse.gemoc.event.commons.model.scenario.Event;
+import org.eclipse.gemoc.trace.commons.model.trace.MSE;
+import org.eclipse.gemoc.trace.commons.model.trace.Step;
+import org.eclipse.gemoc.xdsmlframework.api.core.IExecutionEngine;
+import org.eclipse.gemoc.xdsmlframework.api.engine_addon.IEngineAddon;
+import org.eclipse.ocl.OCL;
+import org.eclipse.ocl.ecore.Constraint;
+import org.eclipse.ocl.ecore.EcoreEnvironmentFactory;
+import org.eclipse.ocl.helper.OCLHelper;
+
+public class PropertyMonitor implements IEngineAddon, IPropertyMonitor {
+
+ private Resource executedModel;
+
+ private final Map monitoredProperties = new HashMap<>();
+
+ private final Map> propertyListeners = new HashMap<>();
+
+ private final Set ongoingSteps = new HashSet<>();
+
+ private final Set endedSteps = new HashSet<>();
+
+ private final Set endingSteps = new HashSet<>();
+
+ private IEventInterpreter eventManager;
+
+ private boolean eventManagerAvailable = false;
+
+ private final OCL, EClassifier, ?, ?, ?, EParameter, ?, ?, ?, Constraint, EClass, EObject> ocl;
+ private final OCLHelper helper;
+
+ public PropertyMonitor() {
+ ocl = OCL.newInstance(EcoreEnvironmentFactory.INSTANCE);
+ helper = ocl.createOCLHelper();
+ }
+
+ private boolean monitor(Property property) {
+ if (property == null) {
+ return true;
+ }
+ boolean result = evaluateProperty(property);
+ monitoredProperties.put(property, result);
+ return result;
+ }
+
+ private boolean evaluateProperty(Property property) {
+ boolean result = false;
+ if (property instanceof StepProperty>) {
+ result = evaluateStepProperty((StepProperty>) property);
+ } else if (property instanceof StateProperty) {
+ result = evaluateStateProperty((StateProperty>) property);
+ } else if (property instanceof CompositeProperty>) {
+ result = evaluateCompositeProperty((CompositeProperty>) property);
+ } else if (property instanceof EventPrecondition>) {
+ result = evaluateEventPrecondition((EventPrecondition>) property);
+ } else {
+ result = evaluateProperty(((PropertyReference>) property).getReferencedProperty());
+ }
+ return result;
+ }
+
+ private void updateProperties() {
+ new HashSet<>(propertyListeners.entrySet()).stream().forEach(e -> {
+ final Property p = e.getKey();
+ if (monitoredProperties.get(p) != monitor(p)) {
+ final boolean newValue = monitoredProperties.get(p);
+ new ArrayList<>(e.getValue()).forEach(l -> l.update(newValue));
+ }
+ });
+ }
+
+ @Override
+ public void aboutToExecuteStep(IExecutionEngine engine, Step> stepToExecute) {
+ ongoingSteps.add(stepToExecute.getMseoccurrence().getMse());
+ endedSteps.addAll(endingSteps);
+ endingSteps.clear();
+ updateProperties();
+ }
+
+ @Override
+ public void stepExecuted(IExecutionEngine engine, Step> stepExecuted) {
+ endedSteps.addAll(endingSteps);
+ endingSteps.clear();
+ endingSteps.add(stepExecuted.getMseoccurrence().getMse());
+ updateProperties();
+ }
+
+ private boolean evaluateEventPrecondition(EventPrecondition> property) {
+ if (eventManagerAvailable) {
+ final EventInstance eventInstance = createEvent(property.getEvent());
+ return eventInstance != null && eventManager.canSendEvent(eventInstance);
+ }
+ return false;
+ }
+
+ private boolean evaluateCompositeProperty(CompositeProperty> property) {
+ final List list = property.getProperties().stream().map(p -> evaluateProperty(p))
+ .collect(Collectors.toList());
+ boolean result = false;
+ switch (property.getOperator()) {
+ case AND:
+ result = list.stream().allMatch(b -> b);
+ break;
+ case IMPLIES:
+ break;
+ case OR:
+ result = list.stream().anyMatch(b -> b);
+ break;
+ default:
+ break;
+ }
+ return result;
+ }
+
+ private boolean evaluateStepProperty(StepProperty> property) {
+ final EOperation operation = property.getOperation();
+ final EObject caller = ElementProviderAspect.resolve(property.getTargetProvider(), executedModel);
+ final Stepping stepping = property.getStepping();
+ final Predicate predicate = mse -> mse.getAction() == operation && mse.getCaller() == caller;
+ return stepping == Stepping.ONGOING && ongoingSteps.stream().anyMatch(predicate)
+ || stepping == Stepping.ENDED && endedSteps.stream().anyMatch(predicate)
+ || stepping == Stepping.ENDING && endingSteps.stream().anyMatch(predicate);
+ }
+
+ private boolean evaluateStateProperty(StateProperty> property) {
+ final List eventReceivers = new ArrayList<>();
+ final Object target = property.getTarget();
+ if (target == null) {
+ Set eClasses = new HashSet<>();
+ property.eClass().getEAllGenericSuperTypes().stream()
+ .forEach(t -> t.getETypeArguments().stream().forEach(a -> eClasses.add(a.getEClassifier())));
+ final Iterator it = executedModel.getAllContents();
+ while (it.hasNext()) {
+ EObject o = it.next();
+ if (eClasses.contains(o.eClass()) && StatePropertyAspect.evaluate(property, o)) {
+ eventReceivers.add(o);
+ }
+ }
+ } else {
+ final EObject target_cast = (EObject) target;
+ if (StatePropertyAspect.evaluate(property, target_cast)) {
+ eventReceivers.add(target_cast);
+ }
+ }
+ return !eventReceivers.isEmpty();
+ }
+
+ @Override
+ public void monitorProperty(Property property, IPropertyListener listener) {
+ List listeners = propertyListeners.get(property);
+ if (listeners == null) {
+ listeners = new ArrayList<>();
+ propertyListeners.put(property, listeners);
+ }
+ listeners.add(listener);
+ monitoredProperties.put(property, false);
+ // Should the property be evaluated immediately?
+ if (monitor(property)) {
+ listener.update(true);
+ }
+ }
+
+ @Override
+ public void unmonitorProperty(Property property, IPropertyListener listener) {
+ List listeners = propertyListeners.get(property);
+ if (listeners != null) {
+ listeners.remove(listener);
+ if (listeners.isEmpty()) {
+ propertyListeners.remove(property);
+ }
+ }
+ monitoredProperties.remove(property);
+ if (property instanceof CompositeProperty>) {
+ ((CompositeProperty>) property).getProperties().forEach(p -> monitoredProperties.remove(p));
+ }
+ }
+
+ @Override
+ public void engineAboutToStart(IExecutionEngine engine) {
+ executedModel = engine.getExecutionContext().getResourceModel();
+ eventManager = engine.getAddonsTypedBy(IEventInterpreter.class).stream().findFirst().orElse(null);
+ eventManagerAvailable = eventManager != null;
+ }
+
+ private EventInstance createEvent(Event originalEvent) {
+ final List eventParameterMatches = new ArrayList<>();
+ final Map parameters = new HashMap<>();
+ for (EStructuralFeature f : originalEvent.eClass().getEStructuralFeatures()) {
+ if (f instanceof EAttribute) {
+ parameters.put(f, originalEvent.eGet(f));
+ } else {
+ final ElementProvider> paramProvider = (ElementProvider>) originalEvent.eGet(f);
+ final EObject parameter = ElementProviderAspect.resolve(paramProvider, executedModel);
+ if (parameter != null) {
+ parameters.put(f, parameter);
+ eventParameterMatches.add(parameter);
+ }
+ }
+ }
+ return new EventInstance(originalEvent, parameters);
+ }
+}
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/property/propertyAspects.xtend b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/property/propertyAspects.xtend
new file mode 100644
index 000000000..550ebbbfb
--- /dev/null
+++ b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/property/propertyAspects.xtend
@@ -0,0 +1,295 @@
+package org.eclipse.gemoc.event.commons.interpreter.property
+
+import org.eclipse.gemoc.event.commons.model.property.BinaryProperty
+import org.eclipse.gemoc.event.commons.model.property.BooleanAttributeProperty
+import org.eclipse.gemoc.event.commons.model.property.ContainerReferenceProperty
+import org.eclipse.gemoc.event.commons.model.property.IntegerAttributeProperty
+import org.eclipse.gemoc.event.commons.model.property.ManyBooleanAttributeProperty
+import org.eclipse.gemoc.event.commons.model.property.ManyIntegerAttributeProperty
+import org.eclipse.gemoc.event.commons.model.property.ManyReferenceProperty
+import org.eclipse.gemoc.event.commons.model.property.ManyStringAttributeProperty
+import org.eclipse.gemoc.event.commons.model.property.SingleReferenceProperty
+import org.eclipse.gemoc.event.commons.model.property.StateProperty
+import org.eclipse.gemoc.event.commons.model.property.StringAttributeProperty
+import org.eclipse.gemoc.event.commons.model.property.UnaryProperty
+import fr.inria.diverse.k3.al.annotationprocessor.Aspect
+import fr.inria.diverse.k3.al.annotationprocessor.OverrideAspectMethod
+import java.util.Collections
+import java.util.HashSet
+import java.util.List
+import java.util.Set
+import org.eclipse.emf.ecore.EObject
+
+@Aspect(className=StateProperty)
+class StatePropertyAspect {
+ public def boolean evaluate(EObject o) {
+ false
+ }
+
+ public def Set extractDynamicTerms() {
+ return Collections.emptySet
+ }
+}
+
+@Aspect(className=SingleReferenceProperty)
+class SingleReferencePropertyAspect extends StatePropertyAspect {
+ @OverrideAspectMethod
+ public def boolean evaluate(EObject o) {
+ val eObject = o.eGet(_self.feature) as EObject
+ return _self.property.evaluate(eObject)
+ }
+
+ @OverrideAspectMethod
+ public def Set extractDynamicTerms() {
+ return Collections.emptySet
+ }
+}
+
+@Aspect(className=ContainerReferenceProperty)
+class ContainerReferencePropertyAspect extends StatePropertyAspect {
+ @OverrideAspectMethod
+ public def boolean evaluate(EObject o) {
+ val eObject = o.eContainer
+ return _self.property.evaluate(eObject)
+ }
+
+ @OverrideAspectMethod
+ public def Set extractDynamicTerms() {
+ return Collections.emptySet
+ }
+}
+
+@Aspect(className=UnaryProperty)
+class UnaryPropertyAspect extends StatePropertyAspect {
+ @OverrideAspectMethod
+ public def boolean evaluate(EObject o) {
+ var result = false
+ switch (_self.operator) {
+ case NOT: {
+ result = !_self.property.evaluate(o)
+ }
+ }
+ return result
+ }
+
+ @OverrideAspectMethod
+ public def Set extractDynamicTerms() {
+ return Collections.emptySet
+ }
+}
+
+@Aspect(className=BinaryProperty)
+class BinaryPropertyAspect extends StatePropertyAspect {
+ @OverrideAspectMethod
+ public def boolean evaluate(EObject o) {
+ var result = false
+ switch (_self.operator) {
+ case AND: {
+ result = _self.left.evaluate(o) && _self.right.evaluate(o)
+ }
+ case OR: {
+ result = _self.left.evaluate(o) || _self.right.evaluate(o)
+ }
+ case IMPLIES: {
+ result = !_self.left.evaluate(o) || _self.right.evaluate(o)
+ }
+ }
+ return result
+ }
+
+ @OverrideAspectMethod
+ public def Set extractDynamicTerms() {
+ return Collections.emptySet
+ }
+}
+
+@Aspect(className=ManyReferenceProperty)
+class ManyPropertyAspect extends StatePropertyAspect {
+ @OverrideAspectMethod
+ public def boolean evaluate(EObject o) {
+ val l = o.eGet(_self.feature) as List
+ switch (_self.quantifier) {
+ case EXISTS: {
+ if (_self.property != null) {
+ return l.exists[e|_self.property.evaluate(e)]
+ } else {
+ return !l.empty
+ }
+ }
+ case FORALL: {
+ return l.forall[e|_self.property.evaluate(e)]
+ }
+ }
+ }
+
+ @OverrideAspectMethod
+ public def Set extractDynamicTerms() {
+ return Collections.emptySet
+ }
+}
+
+@Aspect(className=BooleanAttributeProperty)
+class BooleanAttributePropertyAspect extends StatePropertyAspect {
+ @OverrideAspectMethod
+ public def boolean evaluate(EObject o) {
+ val i = o.eGet(_self.feature) as Integer
+ var result = false
+ switch (_self.operator) {
+ case EQUAL: {
+ result = i == _self.value
+ }
+ }
+ return result
+ }
+
+ @OverrideAspectMethod
+ public def Set extractDynamicTerms() {
+ return if (_self.feature.EAnnotations.exists[a|a.source == "aspect"]) {
+ new HashSet => [add(_self)]
+ } else {
+ Collections.emptySet
+ }
+ }
+}
+
+@Aspect(className=IntegerAttributeProperty)
+class IntegerAttributePropertyAspect extends StatePropertyAspect {
+ @OverrideAspectMethod
+ public def boolean evaluate(EObject o) {
+ val i = o.eGet(_self.feature) as Integer
+ var result = false
+ switch (_self.operator) {
+ case EQUAL: {
+ result = i == _self.value
+ }
+ }
+ return result
+ }
+
+ @OverrideAspectMethod
+ public def Set extractDynamicTerms() {
+ return if (_self.feature.EAnnotations.exists[a|a.source == "aspect"]) {
+ new HashSet => [add(_self)]
+ } else {
+ Collections.emptySet
+ }
+ }
+}
+
+@Aspect(className=StringAttributeProperty)
+class StringAttributePropertyAspect extends StatePropertyAspect {
+ @OverrideAspectMethod
+ public def boolean evaluate(EObject o) {
+ val i = o.eGet(_self.feature) as String
+ var result = false
+ switch (_self.operator) {
+ case EQUAL: {
+ result = i == _self.value
+ }
+ }
+ return result
+ }
+
+ @OverrideAspectMethod
+ public def Set extractDynamicTerms() {
+ return if (_self.feature.EAnnotations.exists[a|a.source == "aspect"]) {
+ new HashSet => [add(_self)]
+ } else {
+ Collections.emptySet
+ }
+ }
+}
+
+@Aspect(className=ManyBooleanAttributeProperty)
+class ManyBooleanAttributePropertyAspect extends StatePropertyAspect {
+ @OverrideAspectMethod
+ public def boolean evaluate(EObject o) {
+ val l = o.eGet(_self.feature) as List
+ var result = false
+ switch (_self.operator) {
+ case EQUAL: {
+ switch (_self.quantifier) {
+ case EXISTS: {
+ result = l.exists[i|i == _self.value]
+ }
+ case FORALL: {
+ result = l.forall[i|i == _self.value]
+ }
+ }
+ }
+ }
+ return result
+ }
+
+ @OverrideAspectMethod
+ public def Set extractDynamicTerms() {
+ return if (_self.feature.EAnnotations.exists[a|a.source == "aspect"]) {
+ new HashSet => [add(_self)]
+ } else {
+ Collections.emptySet
+ }
+ }
+}
+
+@Aspect(className=ManyIntegerAttributeProperty)
+class ManyIntegerAttributePropertyAspect extends StatePropertyAspect {
+ @OverrideAspectMethod
+ public def boolean evaluate(EObject o) {
+ val l = o.eGet(_self.feature) as List
+ var result = false
+ switch (_self.operator) {
+ case EQUAL: {
+ switch (_self.quantifier) {
+ case EXISTS: {
+ result = l.exists[i|i == _self.value]
+ }
+ case FORALL: {
+ result = l.forall[i|i == _self.value]
+ }
+ }
+ }
+ }
+ return result
+ }
+
+ @OverrideAspectMethod
+ public def Set extractDynamicTerms() {
+ return if (_self.feature.EAnnotations.exists[a|a.source == "aspect"]) {
+ new HashSet => [add(_self)]
+ } else {
+ Collections.emptySet
+ }
+ }
+}
+
+@Aspect(className=ManyStringAttributeProperty)
+class ManyStringAttributePropertyAspect extends StatePropertyAspect {
+ @OverrideAspectMethod
+ public def boolean evaluate(EObject o) {
+ val l = o.eGet(_self.feature) as List
+ var result = false
+ switch (_self.operator) {
+ case EQUAL: {
+ switch (_self.quantifier) {
+ case EXISTS: {
+ result = l.exists[i|i == _self.value]
+ }
+ case FORALL: {
+ result = l.forall[i|i == _self.value]
+ }
+ }
+ }
+ }
+ return result
+ }
+
+ @OverrideAspectMethod
+ public def Set extractDynamicTerms() {
+ return if (_self.feature.EAnnotations.exists[a|a.source == "aspect"]) {
+ new HashSet => [add(_self)]
+ } else {
+ Collections.emptySet
+ }
+ }
+}
+
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/scenario/ArbiterManager.java b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/scenario/ArbiterManager.java
new file mode 100644
index 000000000..2eb4dc349
--- /dev/null
+++ b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/scenario/ArbiterManager.java
@@ -0,0 +1,85 @@
+package org.eclipse.gemoc.event.commons.interpreter.scenario;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+
+import org.eclipse.gemoc.event.commons.interpreter.property.IPropertyListener;
+import org.eclipse.gemoc.event.commons.interpreter.property.IPropertyMonitor;
+import org.eclipse.gemoc.event.commons.model.scenario.Arbiter;
+import org.eclipse.gemoc.event.commons.model.scenario.ArbiterState;
+import org.eclipse.gemoc.event.commons.model.scenario.TruthValue;
+import org.eclipse.gemoc.event.commons.model.property.Property;
+
+public class ArbiterManager implements IArbiterManager {
+
+ private ArbiterState, ?> currentState;
+ private final IPropertyMonitor propertyMonitor;
+
+ public ArbiterManager(IPropertyMonitor propertyMonitor) {
+ this.propertyMonitor = propertyMonitor;
+ }
+
+ @Override
+ public TruthValue getTruthValue() {
+ return currentState.getTruthValue();
+ }
+
+ private void setupArbiterStatePropertyListeners(Arbiter, ?, ?> arbiter, ArbiterState, ?> state) {
+ final Map guards = new HashMap<>();
+ state.getOutgoingTransitions().forEach(t -> {
+ final Property property = t.getGuard();
+ IPropertyListener listener = new ArbiterTransitionGuardListener(arbiter, t.getTarget(), property, guards);
+ guards.put(property, listener);
+ });
+ new HashSet<>(guards.keySet()).forEach(p -> {
+ IPropertyListener l = guards.get(p);
+ if (l != null) {
+ propertyMonitor.monitorProperty(p, l);
+ }
+ });
+ }
+
+ @Override
+ public void loadArbiter(Arbiter, ?, ?> arbiter) {
+ currentState = arbiter.getInitialState();
+ setupArbiterStatePropertyListeners(arbiter, currentState);
+ }
+
+ private class ArbiterTransitionGuardListener implements IPropertyListener {
+
+ private final Arbiter, ?, ?> arbiter;
+ private final ArbiterState, ?> state;
+ private final Property property;
+ private Map guards = new HashMap<>();
+
+ public ArbiterTransitionGuardListener(Arbiter, ?, ?> arbiter, ArbiterState, ?> state, Property property, Map guards) {
+ this.arbiter = arbiter;
+ this.state = state;
+ this.property = property;
+ this.guards = guards;
+ }
+
+ @Override
+ public void update(boolean propertyValue) {
+ if (propertyValue) {
+ /* We stop monitoring the current guard as well as
+ * the guards of the other outgoing transitions of
+ * the previous state of the FSM.*/
+ propertyMonitor.unmonitorProperty(property, this);
+ currentState = state;
+ guards.forEach((p, l) -> propertyMonitor.unmonitorProperty(p, l));
+ guards.clear();
+ if (arbiter.getAcceptingStates().contains(currentState)) {
+ /* If the current state is an accepting state,
+ * we print the final verdict.*/
+ System.out.println("Arbiter has reached a verdict: " + currentState.getTruthValue());
+ } else {
+ /* Otherwise we start monitoring the guards of the outgoing
+ * transitions.*/
+ setupArbiterStatePropertyListeners(arbiter, state);
+ }
+ }
+ }
+ }
+}
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/scenario/IArbiterManager.java b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/scenario/IArbiterManager.java
new file mode 100644
index 000000000..d3a3f3730
--- /dev/null
+++ b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/scenario/IArbiterManager.java
@@ -0,0 +1,12 @@
+package org.eclipse.gemoc.event.commons.interpreter.scenario;
+
+import org.eclipse.gemoc.event.commons.model.scenario.Arbiter;
+import org.eclipse.gemoc.event.commons.model.scenario.TruthValue;
+
+public interface IArbiterManager {
+
+ TruthValue getTruthValue();
+
+ void loadArbiter(Arbiter, ?, ?> arbiter);
+
+}
\ No newline at end of file
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/scenario/IScenarioManager.java b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/scenario/IScenarioManager.java
new file mode 100644
index 000000000..c1708770f
--- /dev/null
+++ b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/scenario/IScenarioManager.java
@@ -0,0 +1,12 @@
+package org.eclipse.gemoc.event.commons.interpreter.scenario;
+
+import org.eclipse.gemoc.event.commons.model.scenario.Scenario;
+
+public interface IScenarioManager {
+
+ boolean isScenarioComplete();
+
+ void loadScenario(Scenario> scenario);
+
+ void saveScenarioReport();
+}
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/scenario/ScenarioManager.java b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/scenario/ScenarioManager.java
new file mode 100644
index 000000000..9c036a408
--- /dev/null
+++ b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/scenario/ScenarioManager.java
@@ -0,0 +1,309 @@
+package org.eclipse.gemoc.event.commons.interpreter.scenario;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.PlatformResourceURIHandlerImpl;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.RollbackException;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.emf.transaction.impl.EMFCommandTransaction;
+import org.eclipse.emf.transaction.impl.InternalTransactionalEditingDomain;
+import org.eclipse.gemoc.event.commons.interpreter.EventInstance;
+import org.eclipse.gemoc.event.commons.interpreter.IEventInterpreter;
+import org.eclipse.gemoc.event.commons.interpreter.property.IPropertyListener;
+import org.eclipse.gemoc.event.commons.interpreter.property.IPropertyMonitor;
+import org.eclipse.gemoc.event.commons.model.property.CompositeProperty;
+import org.eclipse.gemoc.event.commons.model.property.EventPrecondition;
+import org.eclipse.gemoc.event.commons.model.property.Property;
+import org.eclipse.gemoc.event.commons.model.property.PropertyFactory;
+import org.eclipse.gemoc.event.commons.model.property.PropertyReference;
+import org.eclipse.gemoc.event.commons.model.report.EventReport;
+import org.eclipse.gemoc.event.commons.model.report.Report;
+import org.eclipse.gemoc.event.commons.model.report.ReportFactory;
+import org.eclipse.gemoc.event.commons.model.scenario.ElementProvider;
+import org.eclipse.gemoc.event.commons.model.scenario.Event;
+import org.eclipse.gemoc.event.commons.model.scenario.EventOccurrence;
+import org.eclipse.gemoc.event.commons.model.scenario.Scenario;
+import org.eclipse.gemoc.event.commons.model.scenario.ScenarioElement;
+import org.eclipse.gemoc.event.commons.model.scenario.ScenarioFSM;
+import org.eclipse.gemoc.event.commons.model.scenario.ScenarioFSMState;
+
+public class ScenarioManager implements IScenarioManager {
+
+ private Scenario> scenario;
+ private final Resource executedModel;
+ private final IEventInterpreter eventManager;
+ private final IPropertyMonitor propertyMonitor;
+ private final List> currentElements = new ArrayList<>();
+ private final Report report = ReportFactory.eINSTANCE.createReport();
+ private final PropertyFactory propertyFactory = PropertyFactory.eINSTANCE;
+
+ public ScenarioManager(Resource executedModel, IEventInterpreter eventManager, IPropertyMonitor propertyMonitor) {
+ this.executedModel = executedModel;
+ this.eventManager = eventManager;
+ this.propertyMonitor = propertyMonitor;
+ }
+
+ public void loadScenario(Scenario> scenario) {
+ this.scenario = scenario;
+ this.scenario.getElements().forEach(element -> {
+ setupScenarioElementPropertyListeners(element);
+ });
+ }
+
+ private void setupScenarioElementPropertyListeners(ScenarioElement> element) {
+ currentElements.add(element);
+ final boolean isEvent = element instanceof EventOccurrence, ?>;
+ if (isEvent) {
+ handleEventOccurrence((EventOccurrence, ?>) element);
+ } else {
+ handleFSM((ScenarioFSM, ?, ?, ?>) element);
+ }
+ }
+
+ private void setupFSMStatePropertyListeners(ScenarioFSM, ?, ?, ?> fsm, ScenarioFSMState, ?> state) {
+ final Map fsmGuards = new HashMap<>();
+ state.getOutgoingTransitions().forEach(t -> {
+ final Property property = t.getGuard();
+ final Event event = t.getTarget().getEvent();
+ if (property != null && event != null) {
+ // If the FSM state sends an event, we add the event
+ // precondition to the guard of the transition by
+ // using a composite property.
+ final CompositeProperty compositeProperty = propertyFactory.createCompositeProperty();
+ final PropertyReference propertyReference = propertyFactory.createPropertyReference();
+ final EventPrecondition precondition = propertyFactory.createEventPrecondition();
+ propertyReference.setReferencedProperty(property);
+ precondition.setEvent(event);
+ compositeProperty.getProperties().add(propertyReference);
+ compositeProperty.getProperties().add(precondition);
+ IPropertyListener listener = new FSMGuardListener(fsm, t.getTarget(), compositeProperty, fsmGuards);
+ fsmGuards.put(compositeProperty, listener);
+ } else if (property != null) {
+ IPropertyListener listener = new FSMGuardListener(fsm, t.getTarget(), property, fsmGuards);
+ fsmGuards.put(property, listener);
+ } else if (event != null) {
+ final EventPrecondition precondition = propertyFactory.createEventPrecondition();
+ precondition.setEvent(event);
+ IPropertyListener listener = new FSMGuardListener(fsm, t.getTarget(), precondition, fsmGuards);
+ fsmGuards.put(precondition, listener);
+ } else {
+ // Degenerate case: no guard, no event precondition.
+ // Go directly to the target state?
+ fsmGuards.clear();
+ setupFSMStatePropertyListeners(fsm, t.getTarget());
+ }
+ });
+ new HashSet<>(fsmGuards.keySet()).forEach(p -> {
+ IPropertyListener l = fsmGuards.get(p);
+ if (l != null) {
+ propertyMonitor.monitorProperty(p, l);
+ }
+ });
+ }
+
+ private void handleEventOccurrence(EventOccurrence, ?> eventOccurrence) {
+ final EventPrecondition precondition = propertyFactory.createEventPrecondition();
+ precondition.setEvent((eventOccurrence).getEvent());
+ final Property property = eventOccurrence.getGuard();
+ if (property != null) {
+ // We create a composite property containing
+ // both the guard of the event and the event precondition.
+ final CompositeProperty compositeProperty = propertyFactory.createCompositeProperty();
+ final PropertyReference propertyReference = propertyFactory.createPropertyReference();
+ propertyReference.setReferencedProperty(property);
+ compositeProperty.getProperties().add(propertyReference);
+ compositeProperty.getProperties().add(precondition);
+ propertyMonitor.monitorProperty(compositeProperty, new ScenarioGuardListener(eventOccurrence, compositeProperty));
+ } else {
+ propertyMonitor.monitorProperty(precondition, new ScenarioGuardListener(eventOccurrence, precondition));
+ }
+ }
+
+ private void handleFSM(ScenarioFSM, ?, ?, ?> fsm) {
+ final ScenarioFSMState, ?> initialState = fsm.getInitialState();
+ final Property property = fsm.getGuard();
+ final Event event = initialState.getEvent();
+ if (event != null && property != null) {
+ // We create a composite property containing
+ // both the guard of the fsm and the event precondition
+ final CompositeProperty compositeProperty = propertyFactory.createCompositeProperty();
+ final PropertyReference propertyReference = propertyFactory.createPropertyReference();
+ final EventPrecondition precondition = propertyFactory.createEventPrecondition();
+ propertyReference.setReferencedProperty(property);
+ precondition.setEvent(event);
+ compositeProperty.getProperties().add(propertyReference);
+ compositeProperty.getProperties().add(precondition);
+ propertyMonitor.monitorProperty(compositeProperty, new ScenarioGuardListener(fsm, compositeProperty));
+ } else if (event != null) {
+ final EventPrecondition precondition = propertyFactory.createEventPrecondition();
+ precondition.setEvent(event);
+ propertyMonitor.monitorProperty(precondition, new ScenarioGuardListener(fsm, precondition));
+ } else if (property != null) {
+ propertyMonitor.monitorProperty(property, new ScenarioGuardListener(fsm, property));
+ } else {
+ setupFSMStatePropertyListeners(fsm, initialState);
+ }
+ }
+
+ private EventInstance createEvent(Event originalEvent) {
+ final List eventParameterMatches = new ArrayList<>();
+ final Map parameters = new HashMap<>();
+ for (EStructuralFeature f : originalEvent.eClass().getEStructuralFeatures()) {
+ if (f instanceof EAttribute) {
+ parameters.put(f, originalEvent.eGet(f));
+ } else {
+ final ElementProvider> paramProvider = (ElementProvider>) originalEvent.eGet(f);
+ final EObject parameter = ElementProviderAspect.resolve(paramProvider, executedModel);
+ if (parameter != null) {
+ parameters.put(f, parameter);
+ eventParameterMatches.add(parameter);
+ }
+ }
+ }
+ final EventReport eventReport = ReportFactory.eINSTANCE.createEventReport();
+ if (eventParameterMatches.size() > 1) {
+ eventReport.getMatches().addAll(eventParameterMatches.subList(1, eventParameterMatches.size() - 1));
+ }
+ eventReport.setEvent(originalEvent);
+ report.getEvents().add(eventReport);
+ return new EventInstance(originalEvent, parameters);
+ }
+
+ @Override
+ public boolean isScenarioComplete() {
+ return currentElements.isEmpty();
+ }
+
+ @Override
+ public void saveScenarioReport() {
+ final ResourceSet resourceSet = scenario.eResource().getResourceSet();
+ final TransactionalEditingDomain editingDomain = TransactionalEditingDomain.Factory.INSTANCE
+ .getEditingDomain(resourceSet);
+ final URI scenarioURI = scenario.eResource().getURI();
+ final URI reportURI = scenarioURI.trimFileExtension().appendFileExtension("report");
+ final Resource resource = resourceSet.createResource(reportURI);
+ final RecordingCommand command = new RecordingCommand(editingDomain) {
+ @Override
+ public void doExecute() {
+ resource.getContents().add(report);
+ }
+ };
+ EMFCommandTransaction transaction = new EMFCommandTransaction(command,
+ (InternalTransactionalEditingDomain) editingDomain, null);
+ try {
+ transaction.start();
+ command.execute();
+ transaction.commit();
+ } catch (InterruptedException | RollbackException e) {
+ e.printStackTrace();
+ }
+ try {
+ resource.save((new PlatformResourceURIHandlerImpl()).createOutputStream(reportURI, Collections.emptyMap()),
+ Collections.emptyMap());
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private class ScenarioGuardListener implements IPropertyListener {
+
+ private final ScenarioElement> element;
+ private final Property property;
+
+ public ScenarioGuardListener(ScenarioElement> element, Property property) {
+ this.element = element;
+ this.property = property;
+ }
+
+ @Override
+ public void update(boolean propertyValue) {
+ if (propertyValue) {
+ // We stop monitoring the guard of this scenario element.
+ propertyMonitor.unmonitorProperty(property, this);
+ if (element instanceof EventOccurrence, ?>) {
+ currentElements.remove(element);
+ currentElements.addAll(element.getNextElements());
+ final EventOccurrence, ?> eventOccurrence = (EventOccurrence, ?>) element;
+ eventManager.queueEvent(createEvent(eventOccurrence.getEvent()));
+ // We start monitoring the guards of the next elements in
+ // the scenario tree.
+ eventOccurrence.getNextElements().stream().forEach(e -> {
+ setupScenarioElementPropertyListeners(e);
+ });
+ } else {
+ // We do not monitor the guards of the next elements in the
+ // scenario tree yet because they must only be evaluated once the
+ // FSM reaches an accepting state.
+ final ScenarioFSM, ?, ?, ?> fsm = (ScenarioFSM, ?, ?, ?>) element;
+ final Event event = fsm.getInitialState().getEvent();
+ if (event != null) {
+ eventManager.queueEvent(createEvent(event));
+ }
+ setupFSMStatePropertyListeners(fsm, fsm.getInitialState());
+ }
+ }
+ }
+ }
+
+ private class FSMGuardListener implements IPropertyListener {
+
+ private final ScenarioFSM, ?, ?, ?> fsm;
+ private final ScenarioFSMState, ?> state;
+ private final Property property;
+ private Map fsmGuards = new HashMap<>();
+
+ public FSMGuardListener(ScenarioFSM, ?, ?, ?> fsm, ScenarioFSMState, ?> state, Property property,
+ Map fsmGuards) {
+ this.fsm = fsm;
+ this.state = state;
+ this.property = property;
+ this.fsmGuards = fsmGuards;
+ }
+
+ @Override
+ public void update(boolean propertyValue) {
+ if (propertyValue) {
+ // We send the event associated to the newly reached state of
+ // the FSM, if any. We do not have to check if it can be sent
+ // as this check is part of the guard of the incoming transition.
+ final Event event = state.getEvent();
+ if (event != null) {
+ eventManager.queueEvent(createEvent(event));
+ }
+ // We stop monitoring the current guard as well as
+ // the guards of the other outgoing transitions of
+ // the previous state of the FSM.
+ propertyMonitor.unmonitorProperty(property, this);
+ fsmGuards.forEach((p, l) -> propertyMonitor.unmonitorProperty(p, l));
+ fsmGuards.clear();
+ if (fsm.getAcceptingStates().contains(state)) {
+ // The FSM has reached an accepting state, thus we start
+ // monitoring the guards of the next elements in the
+ // scenario tree.
+ currentElements.remove(fsm);
+ currentElements.addAll(fsm.getNextElements());
+ fsm.getNextElements().stream().forEach(e -> {
+ setupScenarioElementPropertyListeners(e);
+ });
+ } else {
+ // Otherwise we start monitoring the guards of the outgoing
+ // transitions.
+ setupFSMStatePropertyListeners(fsm, state);
+ }
+ }
+ }
+ }
+}
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/scenario/scenarioAspects.xtend b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/scenario/scenarioAspects.xtend
new file mode 100644
index 000000000..e342e7ed6
--- /dev/null
+++ b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.interpreter/src/org/eclipse/gemoc/event/commons/interpreter/scenario/scenarioAspects.xtend
@@ -0,0 +1,36 @@
+package org.eclipse.gemoc.event.commons.interpreter.scenario
+
+import org.eclipse.gemoc.event.commons.model.scenario.ElementProvider
+import org.eclipse.gemoc.event.commons.model.scenario.ElementQuery
+import org.eclipse.gemoc.event.commons.model.scenario.ElementReference
+import fr.inria.diverse.k3.al.annotationprocessor.Aspect
+import org.eclipse.emf.ecore.resource.Resource
+import org.eclipse.emf.ecore.EObject
+import fr.inria.diverse.k3.al.annotationprocessor.OverrideAspectMethod
+import org.eclipse.gemoc.event.commons.interpreter.property.StatePropertyAspect
+
+@Aspect(className=ElementProvider)
+class ElementProviderAspect {
+ public def EObject resolve(Resource r) {
+ return null
+ }
+}
+
+@Aspect(className=ElementReference)
+class ElementReferenceAspect extends ElementProviderAspect {
+ @OverrideAspectMethod
+ public def EObject resolve(Resource r) {
+ return _self.element as EObject
+ }
+}
+
+@Aspect(className=ElementQuery)
+class ElementQueryAspect extends ElementProviderAspect {
+ @OverrideAspectMethod
+ public def EObject resolve(Resource r) {
+ val queriedType = _self.eClass.EGenericSuperTypes.head.ETypeArguments.head.EClassifier
+ return r.allContents.filter[o|(o.eClass == queriedType || o.eClass.EAllSuperTypes.contains(queriedType))
+ && StatePropertyAspect.evaluate(_self.query, o)
+ ].head
+ }
+}
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/.classpath b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/.classpath
new file mode 100644
index 000000000..22f30643c
--- /dev/null
+++ b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/.classpath
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/.project b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/.project
new file mode 100644
index 000000000..808e9cd0d
--- /dev/null
+++ b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/.project
@@ -0,0 +1,28 @@
+
+
+ org.eclipse.gemoc.event.commons.model.edit
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.pde.ManifestBuilder
+
+
+
+
+ org.eclipse.pde.SchemaBuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+ org.eclipse.pde.PluginNature
+
+
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/META-INF/MANIFEST.MF b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..0a450e2ea
--- /dev/null
+++ b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.gemoc.event.commons.model.edit;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.gemoc.event.commons.model.report.provider.ReportEditPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.gemoc.event.commons.model.property.provider,
+ org.eclipse.gemoc.event.commons.model.scenario.provider,
+ org.eclipse.gemoc.event.commons.model.arbiter.provider,
+ org.eclipse.gemoc.event.commons.model.report.provider
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.gemoc.event.commons.model;visibility:=reexport,
+ org.eclipse.emf.edit;visibility:=reexport,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.emf.ecore.edit;visibility:=reexport,
+ org.eclipse.gemoc.event.commons.model.edit;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/build.properties b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/build.properties
new file mode 100644
index 000000000..6e3e902e8
--- /dev/null
+++ b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/build.properties
@@ -0,0 +1,10 @@
+#
+
+bin.includes = .,\
+ icons/,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateArbiterTransition_guard_CompositeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateArbiterTransition_guard_CompositeProperty.gif
new file mode 100644
index 000000000..bee89db72
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateArbiterTransition_guard_CompositeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateArbiterTransition_guard_ContainerReferenceProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateArbiterTransition_guard_ContainerReferenceProperty.gif
new file mode 100644
index 000000000..7ae2ea992
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateArbiterTransition_guard_ContainerReferenceProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateArbiterTransition_guard_EventPrecondition.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateArbiterTransition_guard_EventPrecondition.gif
new file mode 100644
index 000000000..4a574b113
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateArbiterTransition_guard_EventPrecondition.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateArbiterTransition_guard_ManyBooleanAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateArbiterTransition_guard_ManyBooleanAttributeProperty.gif
new file mode 100644
index 000000000..73a111cde
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateArbiterTransition_guard_ManyBooleanAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateArbiterTransition_guard_ManyIntegerAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateArbiterTransition_guard_ManyIntegerAttributeProperty.gif
new file mode 100644
index 000000000..b03123db0
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateArbiterTransition_guard_ManyIntegerAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateArbiterTransition_guard_ManyStringAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateArbiterTransition_guard_ManyStringAttributeProperty.gif
new file mode 100644
index 000000000..921b65a46
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateArbiterTransition_guard_ManyStringAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateArbiterTransition_guard_PropertyReference.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateArbiterTransition_guard_PropertyReference.gif
new file mode 100644
index 000000000..09741e808
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateArbiterTransition_guard_PropertyReference.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateArbiter_states_ArbiterState.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateArbiter_states_ArbiterState.gif
new file mode 100644
index 000000000..83994f32f
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateArbiter_states_ArbiterState.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateArbiter_transitions_ArbiterTransition.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateArbiter_transitions_ArbiterTransition.gif
new file mode 100644
index 000000000..633561b32
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateArbiter_transitions_ArbiterTransition.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateBinaryProperty_left_ContainerReferenceProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateBinaryProperty_left_ContainerReferenceProperty.gif
new file mode 100644
index 000000000..5452ecdc3
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateBinaryProperty_left_ContainerReferenceProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateBinaryProperty_left_ManyBooleanAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateBinaryProperty_left_ManyBooleanAttributeProperty.gif
new file mode 100644
index 000000000..5a0697e63
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateBinaryProperty_left_ManyBooleanAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateBinaryProperty_left_ManyIntegerAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateBinaryProperty_left_ManyIntegerAttributeProperty.gif
new file mode 100644
index 000000000..d02196365
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateBinaryProperty_left_ManyIntegerAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateBinaryProperty_left_ManyStringAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateBinaryProperty_left_ManyStringAttributeProperty.gif
new file mode 100644
index 000000000..6dffd43dc
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateBinaryProperty_left_ManyStringAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateBinaryProperty_right_ContainerReferenceProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateBinaryProperty_right_ContainerReferenceProperty.gif
new file mode 100644
index 000000000..5452ecdc3
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateBinaryProperty_right_ContainerReferenceProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateBinaryProperty_right_ManyBooleanAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateBinaryProperty_right_ManyBooleanAttributeProperty.gif
new file mode 100644
index 000000000..5a0697e63
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateBinaryProperty_right_ManyBooleanAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateBinaryProperty_right_ManyIntegerAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateBinaryProperty_right_ManyIntegerAttributeProperty.gif
new file mode 100644
index 000000000..d02196365
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateBinaryProperty_right_ManyIntegerAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateBinaryProperty_right_ManyStringAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateBinaryProperty_right_ManyStringAttributeProperty.gif
new file mode 100644
index 000000000..6dffd43dc
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateBinaryProperty_right_ManyStringAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateCompositeProperty_properties_CompositeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateCompositeProperty_properties_CompositeProperty.gif
new file mode 100644
index 000000000..cb3d509b1
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateCompositeProperty_properties_CompositeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateCompositeProperty_properties_ContainerReferenceProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateCompositeProperty_properties_ContainerReferenceProperty.gif
new file mode 100644
index 000000000..52da91872
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateCompositeProperty_properties_ContainerReferenceProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateCompositeProperty_properties_EventPrecondition.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateCompositeProperty_properties_EventPrecondition.gif
new file mode 100644
index 000000000..9f85940dd
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateCompositeProperty_properties_EventPrecondition.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateCompositeProperty_properties_ManyBooleanAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateCompositeProperty_properties_ManyBooleanAttributeProperty.gif
new file mode 100644
index 000000000..457a69826
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateCompositeProperty_properties_ManyBooleanAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateCompositeProperty_properties_ManyIntegerAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateCompositeProperty_properties_ManyIntegerAttributeProperty.gif
new file mode 100644
index 000000000..40c20f76e
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateCompositeProperty_properties_ManyIntegerAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateCompositeProperty_properties_ManyStringAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateCompositeProperty_properties_ManyStringAttributeProperty.gif
new file mode 100644
index 000000000..46075d88b
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateCompositeProperty_properties_ManyStringAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateCompositeProperty_properties_PropertyReference.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateCompositeProperty_properties_PropertyReference.gif
new file mode 100644
index 000000000..20e544750
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateCompositeProperty_properties_PropertyReference.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateContainerReferenceProperty_property_ContainerReferenceProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateContainerReferenceProperty_property_ContainerReferenceProperty.gif
new file mode 100644
index 000000000..3070b3d0c
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateContainerReferenceProperty_property_ContainerReferenceProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateContainerReferenceProperty_property_ManyBooleanAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateContainerReferenceProperty_property_ManyBooleanAttributeProperty.gif
new file mode 100644
index 000000000..91a611a1d
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateContainerReferenceProperty_property_ManyBooleanAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateContainerReferenceProperty_property_ManyIntegerAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateContainerReferenceProperty_property_ManyIntegerAttributeProperty.gif
new file mode 100644
index 000000000..d72e36b9e
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateContainerReferenceProperty_property_ManyIntegerAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateContainerReferenceProperty_property_ManyStringAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateContainerReferenceProperty_property_ManyStringAttributeProperty.gif
new file mode 100644
index 000000000..548b80529
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateContainerReferenceProperty_property_ManyStringAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateElementQuery_query_ContainerReferenceProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateElementQuery_query_ContainerReferenceProperty.gif
new file mode 100644
index 000000000..974a35b1e
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateElementQuery_query_ContainerReferenceProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateElementQuery_query_ManyBooleanAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateElementQuery_query_ManyBooleanAttributeProperty.gif
new file mode 100644
index 000000000..c4524ef70
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateElementQuery_query_ManyBooleanAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateElementQuery_query_ManyIntegerAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateElementQuery_query_ManyIntegerAttributeProperty.gif
new file mode 100644
index 000000000..585fa351b
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateElementQuery_query_ManyIntegerAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateElementQuery_query_ManyStringAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateElementQuery_query_ManyStringAttributeProperty.gif
new file mode 100644
index 000000000..294bcb2d2
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateElementQuery_query_ManyStringAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateManyReferenceProperty_property_ContainerReferenceProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateManyReferenceProperty_property_ContainerReferenceProperty.gif
new file mode 100644
index 000000000..3070b3d0c
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateManyReferenceProperty_property_ContainerReferenceProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateManyReferenceProperty_property_ManyBooleanAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateManyReferenceProperty_property_ManyBooleanAttributeProperty.gif
new file mode 100644
index 000000000..91a611a1d
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateManyReferenceProperty_property_ManyBooleanAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateManyReferenceProperty_property_ManyIntegerAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateManyReferenceProperty_property_ManyIntegerAttributeProperty.gif
new file mode 100644
index 000000000..d72e36b9e
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateManyReferenceProperty_property_ManyIntegerAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateManyReferenceProperty_property_ManyStringAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateManyReferenceProperty_property_ManyStringAttributeProperty.gif
new file mode 100644
index 000000000..548b80529
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateManyReferenceProperty_property_ManyStringAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateNextProperty_formula_AbstractProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateNextProperty_formula_AbstractProperty.gif
new file mode 100644
index 000000000..8a4acfb07
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateNextProperty_formula_AbstractProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateNextProperty_formula_CompositeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateNextProperty_formula_CompositeProperty.gif
new file mode 100644
index 000000000..c200e691a
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateNextProperty_formula_CompositeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateNextProperty_formula_ContainerReferenceProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateNextProperty_formula_ContainerReferenceProperty.gif
new file mode 100644
index 000000000..5f8c2018a
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateNextProperty_formula_ContainerReferenceProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateNextProperty_formula_EventPrecondition.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateNextProperty_formula_EventPrecondition.gif
new file mode 100644
index 000000000..8eb45613d
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateNextProperty_formula_EventPrecondition.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateNextProperty_formula_ManyBooleanAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateNextProperty_formula_ManyBooleanAttributeProperty.gif
new file mode 100644
index 000000000..860276f4b
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateNextProperty_formula_ManyBooleanAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateNextProperty_formula_ManyIntegerAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateNextProperty_formula_ManyIntegerAttributeProperty.gif
new file mode 100644
index 000000000..214650428
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateNextProperty_formula_ManyIntegerAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateNextProperty_formula_ManyStringAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateNextProperty_formula_ManyStringAttributeProperty.gif
new file mode 100644
index 000000000..bf50c763b
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateNextProperty_formula_ManyStringAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateNextProperty_formula_PropertyReference.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateNextProperty_formula_PropertyReference.gif
new file mode 100644
index 000000000..ed60866cc
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateNextProperty_formula_PropertyReference.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_leftFormula_AbstractProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_leftFormula_AbstractProperty.gif
new file mode 100644
index 000000000..671249c15
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_leftFormula_AbstractProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_leftFormula_CompositeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_leftFormula_CompositeProperty.gif
new file mode 100644
index 000000000..8524da45c
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_leftFormula_CompositeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_leftFormula_ContainerReferenceProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_leftFormula_ContainerReferenceProperty.gif
new file mode 100644
index 000000000..b60215a01
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_leftFormula_ContainerReferenceProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_leftFormula_EventPrecondition.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_leftFormula_EventPrecondition.gif
new file mode 100644
index 000000000..2f084ae6e
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_leftFormula_EventPrecondition.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_leftFormula_ManyBooleanAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_leftFormula_ManyBooleanAttributeProperty.gif
new file mode 100644
index 000000000..e2efc630b
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_leftFormula_ManyBooleanAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_leftFormula_ManyIntegerAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_leftFormula_ManyIntegerAttributeProperty.gif
new file mode 100644
index 000000000..eeaa06b98
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_leftFormula_ManyIntegerAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_leftFormula_ManyStringAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_leftFormula_ManyStringAttributeProperty.gif
new file mode 100644
index 000000000..31cb2e2c3
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_leftFormula_ManyStringAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_leftFormula_PropertyReference.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_leftFormula_PropertyReference.gif
new file mode 100644
index 000000000..9cb21a65f
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_leftFormula_PropertyReference.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_rightFormula_AbstractProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_rightFormula_AbstractProperty.gif
new file mode 100644
index 000000000..671249c15
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_rightFormula_AbstractProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_rightFormula_CompositeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_rightFormula_CompositeProperty.gif
new file mode 100644
index 000000000..8524da45c
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_rightFormula_CompositeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_rightFormula_ContainerReferenceProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_rightFormula_ContainerReferenceProperty.gif
new file mode 100644
index 000000000..b60215a01
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_rightFormula_ContainerReferenceProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_rightFormula_EventPrecondition.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_rightFormula_EventPrecondition.gif
new file mode 100644
index 000000000..2f084ae6e
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_rightFormula_EventPrecondition.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_rightFormula_ManyBooleanAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_rightFormula_ManyBooleanAttributeProperty.gif
new file mode 100644
index 000000000..e2efc630b
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_rightFormula_ManyBooleanAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_rightFormula_ManyIntegerAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_rightFormula_ManyIntegerAttributeProperty.gif
new file mode 100644
index 000000000..eeaa06b98
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_rightFormula_ManyIntegerAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_rightFormula_ManyStringAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_rightFormula_ManyStringAttributeProperty.gif
new file mode 100644
index 000000000..31cb2e2c3
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_rightFormula_ManyStringAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_rightFormula_PropertyReference.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_rightFormula_PropertyReference.gif
new file mode 100644
index 000000000..9cb21a65f
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReleaseProperty_rightFormula_PropertyReference.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReport_events_EventReport.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReport_events_EventReport.gif
new file mode 100644
index 000000000..16dbb0e67
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateReport_events_EventReport.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioElement_guard_CompositeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioElement_guard_CompositeProperty.gif
new file mode 100644
index 000000000..b42028e70
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioElement_guard_CompositeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioElement_guard_ContainerReferenceProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioElement_guard_ContainerReferenceProperty.gif
new file mode 100644
index 000000000..9a7f5b855
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioElement_guard_ContainerReferenceProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioElement_guard_EventPrecondition.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioElement_guard_EventPrecondition.gif
new file mode 100644
index 000000000..06d2414c1
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioElement_guard_EventPrecondition.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioElement_guard_ManyBooleanAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioElement_guard_ManyBooleanAttributeProperty.gif
new file mode 100644
index 000000000..a47b32b7d
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioElement_guard_ManyBooleanAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioElement_guard_ManyIntegerAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioElement_guard_ManyIntegerAttributeProperty.gif
new file mode 100644
index 000000000..08ad00b36
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioElement_guard_ManyIntegerAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioElement_guard_ManyStringAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioElement_guard_ManyStringAttributeProperty.gif
new file mode 100644
index 000000000..cba39ba89
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioElement_guard_ManyStringAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioElement_guard_PropertyReference.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioElement_guard_PropertyReference.gif
new file mode 100644
index 000000000..697418091
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioElement_guard_PropertyReference.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioFSMTransition_guard_CompositeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioFSMTransition_guard_CompositeProperty.gif
new file mode 100644
index 000000000..8cd9cfa90
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioFSMTransition_guard_CompositeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioFSMTransition_guard_ContainerReferenceProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioFSMTransition_guard_ContainerReferenceProperty.gif
new file mode 100644
index 000000000..9dc67ff8b
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioFSMTransition_guard_ContainerReferenceProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioFSMTransition_guard_EventPrecondition.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioFSMTransition_guard_EventPrecondition.gif
new file mode 100644
index 000000000..424142efc
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioFSMTransition_guard_EventPrecondition.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioFSMTransition_guard_ManyBooleanAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioFSMTransition_guard_ManyBooleanAttributeProperty.gif
new file mode 100644
index 000000000..95a524524
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioFSMTransition_guard_ManyBooleanAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioFSMTransition_guard_ManyIntegerAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioFSMTransition_guard_ManyIntegerAttributeProperty.gif
new file mode 100644
index 000000000..7f8e88eb1
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioFSMTransition_guard_ManyIntegerAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioFSMTransition_guard_ManyStringAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioFSMTransition_guard_ManyStringAttributeProperty.gif
new file mode 100644
index 000000000..84d142dae
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioFSMTransition_guard_ManyStringAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioFSMTransition_guard_PropertyReference.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioFSMTransition_guard_PropertyReference.gif
new file mode 100644
index 000000000..d8233b0ff
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateScenarioFSMTransition_guard_PropertyReference.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateSingleReferenceProperty_property_ContainerReferenceProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateSingleReferenceProperty_property_ContainerReferenceProperty.gif
new file mode 100644
index 000000000..6966d766e
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateSingleReferenceProperty_property_ContainerReferenceProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateSingleReferenceProperty_property_ManyBooleanAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateSingleReferenceProperty_property_ManyBooleanAttributeProperty.gif
new file mode 100644
index 000000000..3b01cc94e
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateSingleReferenceProperty_property_ManyBooleanAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateSingleReferenceProperty_property_ManyIntegerAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateSingleReferenceProperty_property_ManyIntegerAttributeProperty.gif
new file mode 100644
index 000000000..bc083830b
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateSingleReferenceProperty_property_ManyIntegerAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateSingleReferenceProperty_property_ManyStringAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateSingleReferenceProperty_property_ManyStringAttributeProperty.gif
new file mode 100644
index 000000000..eab3c353c
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateSingleReferenceProperty_property_ManyStringAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUnaryProperty_property_ContainerReferenceProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUnaryProperty_property_ContainerReferenceProperty.gif
new file mode 100644
index 000000000..4375ccf68
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUnaryProperty_property_ContainerReferenceProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUnaryProperty_property_ManyBooleanAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUnaryProperty_property_ManyBooleanAttributeProperty.gif
new file mode 100644
index 000000000..34d830378
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUnaryProperty_property_ManyBooleanAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUnaryProperty_property_ManyIntegerAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUnaryProperty_property_ManyIntegerAttributeProperty.gif
new file mode 100644
index 000000000..62a122668
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUnaryProperty_property_ManyIntegerAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUnaryProperty_property_ManyStringAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUnaryProperty_property_ManyStringAttributeProperty.gif
new file mode 100644
index 000000000..4df8fc516
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUnaryProperty_property_ManyStringAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_leftFormula_AbstractProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_leftFormula_AbstractProperty.gif
new file mode 100644
index 000000000..d3e8153c5
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_leftFormula_AbstractProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_leftFormula_CompositeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_leftFormula_CompositeProperty.gif
new file mode 100644
index 000000000..12d45aab7
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_leftFormula_CompositeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_leftFormula_ContainerReferenceProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_leftFormula_ContainerReferenceProperty.gif
new file mode 100644
index 000000000..83994f32f
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_leftFormula_ContainerReferenceProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_leftFormula_EventPrecondition.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_leftFormula_EventPrecondition.gif
new file mode 100644
index 000000000..9f36b38d3
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_leftFormula_EventPrecondition.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_leftFormula_ManyBooleanAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_leftFormula_ManyBooleanAttributeProperty.gif
new file mode 100644
index 000000000..582e5bbcc
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_leftFormula_ManyBooleanAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_leftFormula_ManyIntegerAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_leftFormula_ManyIntegerAttributeProperty.gif
new file mode 100644
index 000000000..a1e0e46fa
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_leftFormula_ManyIntegerAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_leftFormula_ManyStringAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_leftFormula_ManyStringAttributeProperty.gif
new file mode 100644
index 000000000..b8713703c
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_leftFormula_ManyStringAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_leftFormula_PropertyReference.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_leftFormula_PropertyReference.gif
new file mode 100644
index 000000000..633561b32
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_leftFormula_PropertyReference.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_rightFormula_AbstractProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_rightFormula_AbstractProperty.gif
new file mode 100644
index 000000000..d3e8153c5
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_rightFormula_AbstractProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_rightFormula_CompositeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_rightFormula_CompositeProperty.gif
new file mode 100644
index 000000000..12d45aab7
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_rightFormula_CompositeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_rightFormula_ContainerReferenceProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_rightFormula_ContainerReferenceProperty.gif
new file mode 100644
index 000000000..83994f32f
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_rightFormula_ContainerReferenceProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_rightFormula_EventPrecondition.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_rightFormula_EventPrecondition.gif
new file mode 100644
index 000000000..9f36b38d3
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_rightFormula_EventPrecondition.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_rightFormula_ManyBooleanAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_rightFormula_ManyBooleanAttributeProperty.gif
new file mode 100644
index 000000000..582e5bbcc
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_rightFormula_ManyBooleanAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_rightFormula_ManyIntegerAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_rightFormula_ManyIntegerAttributeProperty.gif
new file mode 100644
index 000000000..a1e0e46fa
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_rightFormula_ManyIntegerAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_rightFormula_ManyStringAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_rightFormula_ManyStringAttributeProperty.gif
new file mode 100644
index 000000000..b8713703c
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_rightFormula_ManyStringAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_rightFormula_PropertyReference.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_rightFormula_PropertyReference.gif
new file mode 100644
index 000000000..633561b32
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/ctool16/CreateUntilProperty_rightFormula_PropertyReference.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/AbstractProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/AbstractProperty.gif
new file mode 100644
index 000000000..ef56c1408
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/AbstractProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/Arbiter.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/Arbiter.gif
new file mode 100644
index 000000000..83afb9b3c
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/Arbiter.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/ArbiterState.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/ArbiterState.gif
new file mode 100644
index 000000000..e4b530eca
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/ArbiterState.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/ArbiterTransition.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/ArbiterTransition.gif
new file mode 100644
index 000000000..98b351f1c
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/ArbiterTransition.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/CompositeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/CompositeProperty.gif
new file mode 100644
index 000000000..904159880
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/CompositeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/ContainerReferenceProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/ContainerReferenceProperty.gif
new file mode 100644
index 000000000..e4b530eca
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/ContainerReferenceProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/Event.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/Event.gif
new file mode 100644
index 000000000..e4b530eca
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/Event.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/EventPrecondition.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/EventPrecondition.gif
new file mode 100644
index 000000000..ea58a657d
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/EventPrecondition.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/EventReport.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/EventReport.gif
new file mode 100644
index 000000000..d3dc5a9ad
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/EventReport.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/ManyBooleanAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/ManyBooleanAttributeProperty.gif
new file mode 100644
index 000000000..33854e98c
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/ManyBooleanAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/ManyIntegerAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/ManyIntegerAttributeProperty.gif
new file mode 100644
index 000000000..a3908bcf7
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/ManyIntegerAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/ManyStringAttributeProperty.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/ManyStringAttributeProperty.gif
new file mode 100644
index 000000000..a26660ec2
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/ManyStringAttributeProperty.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/PropertyReference.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/PropertyReference.gif
new file mode 100644
index 000000000..98b351f1c
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/PropertyReference.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/Report.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/Report.gif
new file mode 100644
index 000000000..33854e98c
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/Report.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/Scenario.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/Scenario.gif
new file mode 100644
index 000000000..7bac4fd38
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/Scenario.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/State.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/State.gif
new file mode 100644
index 000000000..cb1755a71
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/State.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/Transition.gif b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/Transition.gif
new file mode 100644
index 000000000..7bac4fd38
Binary files /dev/null and b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/icons/full/obj16/Transition.gif differ
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/plugin.properties b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/plugin.properties
new file mode 100644
index 000000000..976e33e89
--- /dev/null
+++ b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/plugin.properties
@@ -0,0 +1,155 @@
+#
+
+pluginName = Property Edit Support
+providerName = www.example.org
+
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+
+_UI_PropertyDescriptor_description = The {0} of the {1}
+
+_UI_AbstractProperty_type = Abstract Property
+_UI_TemporalProperty_type = Temporal Property
+_UI_NextProperty_type = Next Property
+_UI_UntilProperty_type = Until Property
+_UI_ReleaseProperty_type = Release Property
+_UI_NegationTemporalProperty_type = Negation Temporal Property
+_UI_Property_type = Property
+_UI_PropertyReference_type = Reference
+_UI_CompositeProperty_type = Composite Property
+_UI_EventPrecondition_type = Event Precondition
+_UI_StepProperty_type = Step Property
+_UI_StateProperty_type = State Property
+_UI_UnaryProperty_type = Unary Property
+_UI_BinaryProperty_type = Binary Property
+_UI_ManyReferenceProperty_type = Many Reference Property
+_UI_SingleReferenceProperty_type = Single Reference Property
+_UI_ContainerReferenceProperty_type = Container Reference Property
+_UI_ManyBooleanAttributeProperty_type = Many Boolean Attribute Property
+_UI_ManyIntegerAttributeProperty_type = Many Integer Attribute Property
+_UI_ManyStringAttributeProperty_type = Many String Attribute Property
+_UI_BooleanAttributeProperty_type = Boolean Attribute Property
+_UI_IntegerAttributeProperty_type = Integer Attribute Property
+_UI_StringAttributeProperty_type = String Attribute Property
+_UI_Unknown_type = Object
+
+_UI_Unknown_datatype= Value
+
+_UI_NextProperty_formula_feature = Formula
+_UI_UntilProperty_leftFormula_feature = Left Formula
+_UI_UntilProperty_rightFormula_feature = Right Formula
+_UI_ReleaseProperty_leftFormula_feature = Left Formula
+_UI_ReleaseProperty_rightFormula_feature = Right Formula
+_UI_NegationTemporalProperty_formula_feature = Formula
+_UI_PropertyReference_referencedProperty_feature = Referenced Property
+_UI_CompositeProperty_properties_feature = Properties
+_UI_EventPrecondition_event_feature = Event
+_UI_StepProperty_stepping_feature = Stepping
+_UI_StepProperty_targetProvider_feature = Target Provider
+_UI_StateProperty_target_feature = Target
+_UI_UnaryProperty_operator_feature = Operator
+_UI_UnaryProperty_property_feature = Property
+_UI_BinaryProperty_operator_feature = Operator
+_UI_BinaryProperty_left_feature = Left
+_UI_BinaryProperty_right_feature = Right
+_UI_ManyReferenceProperty_property_feature = Property
+_UI_ManyReferenceProperty_quantifier_feature = Quantifier
+_UI_SingleReferenceProperty_property_feature = Property
+_UI_ContainerReferenceProperty_property_feature = Property
+_UI_ManyBooleanAttributeProperty_quantifier_feature = Quantifier
+_UI_ManyBooleanAttributeProperty_value_feature = Value
+_UI_ManyBooleanAttributeProperty_operator_feature = Operator
+_UI_ManyIntegerAttributeProperty_quantifier_feature = Quantifier
+_UI_ManyIntegerAttributeProperty_value_feature = Value
+_UI_ManyIntegerAttributeProperty_operator_feature = Operator
+_UI_ManyStringAttributeProperty_quantifier_feature = Quantifier
+_UI_ManyStringAttributeProperty_value_feature = Value
+_UI_ManyStringAttributeProperty_operator_feature = Operator
+_UI_BooleanAttributeProperty_value_feature = Value
+_UI_BooleanAttributeProperty_operator_feature = Operator
+_UI_IntegerAttributeProperty_value_feature = Value
+_UI_IntegerAttributeProperty_operator_feature = Operator
+_UI_StringAttributeProperty_value_feature = Value
+_UI_StringAttributeProperty_operator_feature = Operator
+_UI_Unknown_feature = Unspecified
+
+_UI_UnaryOperator_NOT_literal = NOT
+_UI_ComparisonOperator_EQUAL_literal = EQUAL
+_UI_BooleanOperator_AND_literal = AND
+_UI_BooleanOperator_OR_literal = OR
+_UI_BooleanOperator_IMPLIES_literal = IMPLIES
+_UI_Quantifier_EXISTS_literal = EXISTS
+_UI_Quantifier_FORALL_literal = FORALL
+_UI_Stepping_ONGOING_literal = ONGOING
+_UI_Stepping_ENDED_literal = ENDED
+_UI_Stepping_ENDING_literal = ENDING
+_UI_Scenario_type = Scenario
+_UI_Event_type = Event
+_UI_ElementProvider_type = Element Provider
+_UI_ElementReference_type = Element Reference
+_UI_ElementQuery_type = Element Query
+_UI_EventOccurrence_type = Event Occurrence
+_UI_ScenarioElement_type = Element
+_UI_ScenarioFSM_type = FSM
+_UI_ScenarioFSMState_type = FSM State
+_UI_ScenarioFSMTransition_type = FSM Transition
+_UI_Arbiter_type = Arbiter
+_UI_ArbiterState_type = Arbiter State
+_UI_ArbiterTransition_type = Arbiter Transition
+_UI_Scenario_elements_feature = Elements
+_UI_Event_targetProvider_feature = Target Provider
+_UI_ElementReference_element_feature = Element
+_UI_ElementQuery_query_feature = Query
+_UI_EventOccurrence_event_feature = Event
+_UI_EventOccurrence_time_feature = Time
+_UI_ScenarioElement_nextElements_feature = Next Elements
+_UI_ScenarioElement_guard_feature = Guard
+_UI_ScenarioFSM_states_feature = States
+_UI_ScenarioFSM_initialState_feature = Initial State
+_UI_ScenarioFSM_acceptingStates_feature = Accepting States
+_UI_ScenarioFSM_transitions_feature = Transitions
+_UI_ScenarioFSM_name_feature = Name
+_UI_ScenarioFSMState_event_feature = Event
+_UI_ScenarioFSMState_outgoingTransitions_feature = Outgoing Transitions
+_UI_ScenarioFSMState_incomingTransitions_feature = Incoming Transitions
+_UI_ScenarioFSMState_name_feature = Name
+_UI_ScenarioFSMTransition_guard_feature = Guard
+_UI_ScenarioFSMTransition_source_feature = Source
+_UI_ScenarioFSMTransition_target_feature = Target
+_UI_ScenarioFSMTransition_name_feature = Name
+_UI_Arbiter_states_feature = States
+_UI_Arbiter_transitions_feature = Transitions
+_UI_Arbiter_initialState_feature = Initial State
+_UI_Arbiter_acceptingStates_feature = Accepting States
+_UI_Arbiter_name_feature = Name
+_UI_ArbiterState_incomingTransitions_feature = Incoming Transitions
+_UI_ArbiterState_outgoingTransitions_feature = Outgoing Transitions
+_UI_ArbiterState_truthValue_feature = Truth Value
+_UI_ArbiterState_name_feature = Name
+_UI_ArbiterTransition_guard_feature = Guard
+_UI_ArbiterTransition_source_feature = Source
+_UI_ArbiterTransition_target_feature = Target
+_UI_ArbiterTransition_name_feature = Name
+_UI_TruthValue_INCONCLUSIVE_literal = INCONCLUSIVE
+_UI_TruthValue_TRUE_literal = TRUE
+_UI_TruthValue_FALSE_literal = FALSE
+_UI_State_type = State
+_UI_Transition_type = Transition
+_UI_State_truthValue_feature = Truth Value
+_UI_State_outgoingTransitions_feature = Outgoing Transitions
+_UI_State_incomingTransitions_feature = Incoming Transitions
+_UI_Transition_source_feature = Source
+_UI_Transition_target_feature = Target
+_UI_Transition_guard_feature = Guard
+_UI_Report_type = Report
+_UI_EventReport_type = Event Report
+_UI_Report_events_feature = Events
+_UI_EventReport_event_feature = Event
+_UI_EventReport_matches_feature = Matches
+_UI_EventReport_target_feature = Target
+_UI_EventReport_time_feature = Time
+_UI_ScenarioElement_previousElements_feature = Previous Elements
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/plugin.xml b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/plugin.xml
new file mode 100644
index 000000000..1d88c065c
--- /dev/null
+++ b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/plugin.xml
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/src/org/eclipse/gemoc/event/commons/model/arbiter/provider/ArbiterEditPlugin.java b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/src/org/eclipse/gemoc/event/commons/model/arbiter/provider/ArbiterEditPlugin.java
new file mode 100644
index 000000000..0be05cea0
--- /dev/null
+++ b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/src/org/eclipse/gemoc/event/commons/model/arbiter/provider/ArbiterEditPlugin.java
@@ -0,0 +1,98 @@
+/**
+ */
+package org.eclipse.gemoc.event.commons.model.arbiter.provider;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.provider.EcoreEditPlugin;
+
+import org.eclipse.gemoc.event.commons.model.property.provider.PropertyEditPlugin;
+
+import org.eclipse.gemoc.event.commons.model.scenario.provider.ScenarioEditPlugin;
+
+/**
+ * This is the central singleton for the Arbiter edit plugin.
+ *
+ *
+ * @generated
+ */
+public final class ArbiterEditPlugin extends EMFPlugin {
+ /**
+ * Keep track of the singleton.
+ *
+ *
+ * @generated
+ */
+ public static final ArbiterEditPlugin INSTANCE = new ArbiterEditPlugin();
+
+ /**
+ * Keep track of the singleton.
+ *
+ *
+ * @generated
+ */
+ private static Implementation plugin;
+
+ /**
+ * Create the instance.
+ *
+ *
+ * @generated
+ */
+ public ArbiterEditPlugin() {
+ super
+ (new ResourceLocator [] {
+ EcoreEditPlugin.INSTANCE,
+ PropertyEditPlugin.INSTANCE,
+ ScenarioEditPlugin.INSTANCE,
+ });
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ *
+ *
+ * @return the singleton instance.
+ * @generated
+ */
+ @Override
+ public ResourceLocator getPluginResourceLocator() {
+ return plugin;
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ *
+ *
+ * @return the singleton instance.
+ * @generated
+ */
+ public static Implementation getPlugin() {
+ return plugin;
+ }
+
+ /**
+ * The actual implementation of the Eclipse Plugin.
+ *
+ *
+ * @generated
+ */
+ public static class Implementation extends EclipsePlugin {
+ /**
+ * Creates an instance.
+ *
+ *
+ * @generated
+ */
+ public Implementation() {
+ super();
+
+ // Remember the static instance.
+ //
+ plugin = this;
+ }
+ }
+
+}
diff --git a/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/src/org/eclipse/gemoc/event/commons/model/arbiter/provider/ArbiterItemProvider.java b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/src/org/eclipse/gemoc/event/commons/model/arbiter/provider/ArbiterItemProvider.java
new file mode 100644
index 000000000..962e6dc6c
--- /dev/null
+++ b/framework/execution_framework/plugins/org.eclipse.gemoc.event.commons.model.edit/src/org/eclipse/gemoc/event/commons/model/arbiter/provider/ArbiterItemProvider.java
@@ -0,0 +1,188 @@
+/**
+ */
+package org.eclipse.gemoc.event.commons.model.arbiter.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.gemoc.event.commons.model.arbiter.Arbiter;
+import org.eclipse.gemoc.event.commons.model.arbiter.ArbiterPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.gemoc.event.commons.model.arbiter.Arbiter} object.
+ *
+ *
+ * @generated
+ */
+public class ArbiterItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ *
+ *
+ * @generated
+ */
+ public ArbiterItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ *
+ *
+ * @generated
+ */
+ @Override
+ public List getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addInitialStatePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Initial State feature.
+ *
+ *
+ * @generated
+ */
+ protected void addInitialStatePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Arbiter_initialState_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_Arbiter_initialState_feature", "_UI_Arbiter_type"),
+ ArbiterPackage.Literals.ARBITER__INITIAL_STATE,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Collection extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(ArbiterPackage.Literals.ARBITER__STATES);
+ childrenFeatures.add(ArbiterPackage.Literals.ARBITER__TRANSITIONS);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns Arbiter.gif.
+ *
+ *
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Arbiter"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ *
+ *
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_Arbiter_type");
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ *
+ *
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(Arbiter.class)) {
+ case ArbiterPackage.ARBITER__STATES:
+ case ArbiterPackage.ARBITER__TRANSITIONS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ *
+ *
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection