Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPierre-Charles David2015-12-15 16:14:08 +0000
committerPierre-Charles David2016-01-08 09:30:09 +0000
commitc50cee2f411793d315416004cad8363ef5c8c3c0 (patch)
treeb5d1048bd0a74f205c5814bf37d1b08b24075577 /incubation
parent7ed9d867900b8d42bacd2ee68be65788ea5e6056 (diff)
downloadorg.eclipse.sirius-c50cee2f411793d315416004cad8363ef5c8c3c0.tar.gz
org.eclipse.sirius-c50cee2f411793d315416004cad8363ef5c8c3c0.tar.xz
org.eclipse.sirius-c50cee2f411793d315416004cad8363ef5c8c3c0.zip
[482993] Move IVariableManager and co on the Sirius side
Bug: 482993 Change-Id: Ieed5301f1e98907356198ab96a2cbb3fb10f0d82 Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
Diffstat (limited to 'incubation')
-rw-r--r--incubation/org.eclipse.sirius.common.interpreter/META-INF/MANIFEST.MF1
-rw-r--r--incubation/org.eclipse.sirius.common.interpreter/src/org/eclipse/sirius/common/interpreter/api/IVariableManager.java51
-rw-r--r--incubation/org.eclipse.sirius.common.interpreter/src/org/eclipse/sirius/common/interpreter/api/VariableManager.java90
-rw-r--r--incubation/org.eclipse.sirius.common.interpreter/src/org/eclipse/sirius/common/interpreter/api/VariableManagerFactory.java28
-rw-r--r--incubation/org.eclipse.sirius.ui.properties/src/org/eclipse/sirius/ui/properties/internal/SiriusTabDescriptorProvider.java4
5 files changed, 171 insertions, 3 deletions
diff --git a/incubation/org.eclipse.sirius.common.interpreter/META-INF/MANIFEST.MF b/incubation/org.eclipse.sirius.common.interpreter/META-INF/MANIFEST.MF
index f6ca201e8c..49e6cecdbd 100644
--- a/incubation/org.eclipse.sirius.common.interpreter/META-INF/MANIFEST.MF
+++ b/incubation/org.eclipse.sirius.common.interpreter/META-INF/MANIFEST.MF
@@ -6,3 +6,4 @@ Bundle-Version: 4.0.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Require-Bundle: org.eclipse.emf.common;bundle-version="[2.8.0,3.0.0)"
Export-Package: org.eclipse.sirius.common.interpreter.api;version="1.0.0"
+Import-Package: com.google.common.collect;version="15.0.0"
diff --git a/incubation/org.eclipse.sirius.common.interpreter/src/org/eclipse/sirius/common/interpreter/api/IVariableManager.java b/incubation/org.eclipse.sirius.common.interpreter/src/org/eclipse/sirius/common/interpreter/api/IVariableManager.java
new file mode 100644
index 0000000000..5cb546440a
--- /dev/null
+++ b/incubation/org.eclipse.sirius.common.interpreter/src/org/eclipse/sirius/common/interpreter/api/IVariableManager.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.sirius.common.interpreter.api;
+
+import java.util.Map;
+
+/**
+ * The variable manager is used to handle the state of the variables.
+ *
+ * @author sbegaudeau
+ */
+public interface IVariableManager {
+ /**
+ * Puts the new value of the variable.
+ *
+ * @param name
+ * The name of the variable
+ * @param value
+ * The value of the variable
+ * @return The previous value of the variable or <code>null</code> otherwise
+ */
+ Object put(String name, Object value);
+
+ /**
+ * Returns the variables.
+ *
+ * @return The variables
+ */
+ Map<String, Object> getVariables();
+
+ /**
+ * Creates a child {@link IVariableManager}.
+ *
+ * @return A child {@link IVariableManager}
+ */
+ IVariableManager createChild();
+
+ /**
+ * Clear the variable manager and its children.
+ */
+ void clear();
+
+}
diff --git a/incubation/org.eclipse.sirius.common.interpreter/src/org/eclipse/sirius/common/interpreter/api/VariableManager.java b/incubation/org.eclipse.sirius.common.interpreter/src/org/eclipse/sirius/common/interpreter/api/VariableManager.java
new file mode 100644
index 0000000000..a00811b126
--- /dev/null
+++ b/incubation/org.eclipse.sirius.common.interpreter/src/org/eclipse/sirius/common/interpreter/api/VariableManager.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.sirius.common.interpreter.api;
+
+import com.google.common.collect.Maps;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * The implementation of the {@link IVariableManager}.
+ *
+ * @author sbegaudeau
+ */
+public class VariableManager implements IVariableManager {
+
+ /**
+ * The parent {@link IVariableManager}.
+ */
+ private IVariableManager parent;
+
+ /**
+ * The variables.
+ */
+ private Map<String, Object> variables = new HashMap<String, Object>();
+
+ /**
+ * The child variable manager.
+ */
+ private List<IVariableManager> children = new ArrayList<IVariableManager>();
+
+ /**
+ * The constructor.
+ */
+ public VariableManager() {
+ // do nothing
+ }
+
+ /**
+ * The constructor.
+ *
+ * @param parent
+ * The parent of this {@link IVariableManager}.
+ */
+ public VariableManager(IVariableManager parent) {
+ this.parent = parent;
+ }
+
+ @Override
+ public Object put(String name, Object value) {
+ Object previous = this.variables.put(name, value);
+ return previous;
+ }
+
+ @Override
+ public Map<String, Object> getVariables() {
+ if (this.parent != null) {
+ Map<String, Object> parentVariables = this.parent.getVariables();
+ parentVariables.putAll(this.variables);
+ return parentVariables;
+ }
+ return Maps.newHashMap(this.variables);
+ }
+
+ @Override
+ public IVariableManager createChild() {
+ IVariableManager variableManager = new VariableManager(this);
+ this.children.add(variableManager);
+ return variableManager;
+ }
+
+ @Override
+ public void clear() {
+ this.variables.clear();
+
+ for (IVariableManager variableManager : children) {
+ variableManager.clear();
+ }
+ }
+}
diff --git a/incubation/org.eclipse.sirius.common.interpreter/src/org/eclipse/sirius/common/interpreter/api/VariableManagerFactory.java b/incubation/org.eclipse.sirius.common.interpreter/src/org/eclipse/sirius/common/interpreter/api/VariableManagerFactory.java
new file mode 100644
index 0000000000..84499a7581
--- /dev/null
+++ b/incubation/org.eclipse.sirius.common.interpreter/src/org/eclipse/sirius/common/interpreter/api/VariableManagerFactory.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.sirius.common.interpreter.api;
+
+
+/**
+ * The factory used to create the {@link IVariableManager}.
+ *
+ * @author sbegaudeau
+ */
+public class VariableManagerFactory {
+ /**
+ * Returns a new instance of the {@link IVariableManager}.
+ *
+ * @return A new instance of the {@link IVariableManager}
+ */
+ public IVariableManager createVariableManager() {
+ return new VariableManager();
+ }
+}
diff --git a/incubation/org.eclipse.sirius.ui.properties/src/org/eclipse/sirius/ui/properties/internal/SiriusTabDescriptorProvider.java b/incubation/org.eclipse.sirius.ui.properties/src/org/eclipse/sirius/ui/properties/internal/SiriusTabDescriptorProvider.java
index ed6a370f15..eb4e2c23e4 100644
--- a/incubation/org.eclipse.sirius.ui.properties/src/org/eclipse/sirius/ui/properties/internal/SiriusTabDescriptorProvider.java
+++ b/incubation/org.eclipse.sirius.ui.properties/src/org/eclipse/sirius/ui/properties/internal/SiriusTabDescriptorProvider.java
@@ -17,10 +17,8 @@ import java.util.Set;
import org.eclipse.eef.EEFViewDescription;
import org.eclipse.eef.core.api.EEFExpressionUtils;
import org.eclipse.eef.core.api.EEFPage;
-import org.eclipse.eef.core.api.EEFVariableManagerFactory;
import org.eclipse.eef.core.api.EEFView;
import org.eclipse.eef.core.api.EEFViewFactory;
-import org.eclipse.eef.core.api.IVariableManager;
import org.eclipse.eef.ide.ui.internal.properties.EEFTabDescriptor;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
@@ -83,7 +81,7 @@ public class SiriusTabDescriptorProvider implements ITabDescriptorProvider {
}
private EEFView createEEFView(Session session, EObject semanticElement, EEFViewDescription viewDescription) {
- IVariableManager variableManager = new EEFVariableManagerFactory().createVariableManager();
+ IVariableManager variableManager = new VariableManagerFactory().createVariableManager();
variableManager.put(EEFExpressionUtils.SELF, semanticElement);
List<IInterpreterProvider> interpreterProviders = Lists.<IInterpreterProvider> newArrayList(new SiriusInterpreterProvider(session));
EEFView eefView = new EEFViewFactory().createEEFView(viewDescription, variableManager, interpreterProviders, session.getTransactionalEditingDomain(), semanticElement);

Back to the top