From 07d518317ad849ce7542c0c2fe8b435379c766f0 Mon Sep 17 00:00:00 2001 From: Sebastian Krings <sebastian@krin.gs> Date: Wed, 19 Dec 2012 12:15:46 +0100 Subject: [PATCH] add unit pragma to constants --- de.prob.ui/plugin.xml | 6 +++ .../src/de/prob/ui/pragmas/UnitPragma.java | 42 +++++++++++-------- 2 files changed, 30 insertions(+), 18 deletions(-) diff --git a/de.prob.ui/plugin.xml b/de.prob.ui/plugin.xml index d7d3d573..f66efd32 100644 --- a/de.prob.ui/plugin.xml +++ b/de.prob.ui/plugin.xml @@ -1269,5 +1269,11 @@ descriptionId="de.prob.ui.unitPragma"> </attributeReference> </attributeRelation> + <attributeRelation + elementTypeId="org.eventb.core.constant"> + <attributeReference + descriptionId="de.prob.ui.unitPragma"> + </attributeReference> + </attributeRelation> </extension> </plugin> diff --git a/de.prob.ui/src/de/prob/ui/pragmas/UnitPragma.java b/de.prob.ui/src/de/prob/ui/pragmas/UnitPragma.java index 219bbe0c..d1c51847 100644 --- a/de.prob.ui/src/de/prob/ui/pragmas/UnitPragma.java +++ b/de.prob.ui/src/de/prob/ui/pragmas/UnitPragma.java @@ -2,8 +2,10 @@ package de.prob.ui.pragmas; import org.eclipse.core.runtime.IProgressMonitor; import org.eventb.core.IVariable; +import org.eventb.core.basis.Constant; import org.eventb.internal.ui.eventbeditor.manipulation.IAttributeManipulation; import org.rodinp.core.IAttributeType; +import org.rodinp.core.IInternalElement; import org.rodinp.core.IRodinElement; import org.rodinp.core.RodinCore; import org.rodinp.core.RodinDBException; @@ -11,52 +13,56 @@ import org.rodinp.core.RodinDBException; import de.prob.core.internal.Activator; public class UnitPragma implements IAttributeManipulation { - public static IAttributeType.String ATTRIBUTE = RodinCore.getStringAttrType(Activator.PLUGIN_ID + ".unitPragma"); - + public static IAttributeType.String ATTRIBUTE = RodinCore + .getStringAttrType(Activator.PLUGIN_ID + ".unitPragma"); + public UnitPragma() { // empty constructor } - private IVariable asVariable(IRodinElement element) { - assert element instanceof IVariable; - return (IVariable) element; + private IInternalElement asInternalElement(IRodinElement element) { + if (element instanceof IVariable) { + return (IVariable) element; + } else if (element instanceof Constant) { + return (Constant) element; + } + return null; } - + @Override - public String[] getPossibleValues(IRodinElement element, IProgressMonitor monitor) { - return new String[] {"","a","b","c"}; + public String[] getPossibleValues(IRodinElement element, + IProgressMonitor monitor) { + return new String[] { "", "a", "b", "c" }; } @Override public String getValue(IRodinElement element, IProgressMonitor monitor) throws RodinDBException { - return asVariable(element).getAttributeValue(ATTRIBUTE); + return asInternalElement(element).getAttributeValue(ATTRIBUTE); } @Override public boolean hasValue(IRodinElement element, IProgressMonitor monitor) throws RodinDBException { - return asVariable(element).hasAttribute(ATTRIBUTE); + return asInternalElement(element).hasAttribute(ATTRIBUTE); } @Override public void removeAttribute(IRodinElement element, IProgressMonitor monitor) throws RodinDBException { - asVariable(element).removeAttribute(ATTRIBUTE, monitor); - + asInternalElement(element).removeAttribute(ATTRIBUTE, monitor); + } @Override public void setDefaultValue(IRodinElement element, IProgressMonitor monitor) throws RodinDBException { - asVariable(element).setAttributeValue(ATTRIBUTE, "", - monitor); + asInternalElement(element).setAttributeValue(ATTRIBUTE, "", monitor); } @Override - public void setValue(IRodinElement element, String value, IProgressMonitor monitor) - throws RodinDBException { - asVariable(element).setAttributeValue(ATTRIBUTE, value, - monitor); + public void setValue(IRodinElement element, String value, + IProgressMonitor monitor) throws RodinDBException { + asInternalElement(element).setAttributeValue(ATTRIBUTE, value, monitor); } } -- GitLab