diff --git a/de.prob.ui/plugin.xml b/de.prob.ui/plugin.xml index d7d3d573dce827489804d89dcbebc24d6fe07df1..f66efd32c39b6ecf6014c2fbbdd0747880da3cc9 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 219bbe0ca5fd618022edf1f997317c05aaba5eef..d1c51847c40f63e46f3ece17cdb660ec0a530b89 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); } }