diff options
author | Pierre-Charles David | 2015-12-15 16:14:08 +0000 |
---|---|---|
committer | Pierre-Charles David | 2016-01-08 09:30:09 +0000 |
commit | c50cee2f411793d315416004cad8363ef5c8c3c0 (patch) | |
tree | b5d1048bd0a74f205c5814bf37d1b08b24075577 /incubation | |
parent | 7ed9d867900b8d42bacd2ee68be65788ea5e6056 (diff) | |
download | org.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')
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); |