From f168c6cbebf142b18c792f16338aeeaf41aaea93 Mon Sep 17 00:00:00 2001
From: Sebastian Krings <sebastian@krin.gs>
Date: Mon, 7 Jan 2013 11:21:13 +0100
Subject: [PATCH] tried to move unit analysis to its own plugin. there are
 remaining references in the translation/core.

---
 de.prob.core/plugin.xml                       |  13 -
 .../eventb/translator/ContextTranslator.java  |   3 +-
 .../translator/internal/ModelTranslator.java  |   3 +-
 de.prob.ui/META-INF/MANIFEST.MF               |   3 +-
 de.prob.ui/plugin.xml                         |  96 ------
 de.prob.units/.classpath                      |   7 +
 de.prob.units/.project                        |  28 ++
 .../.settings/org.eclipse.jdt.core.prefs      |   7 +
 de.prob.units/META-INF/MANIFEST.MF            |  13 +
 de.prob.units/build.properties                |   5 +
 de.prob.units/icons/unit_analysis.png         | Bin 0 -> 3598 bytes
 de.prob.units/plugin.xml                      |  99 ++++++
 .../src/de/prob/units/Activator.java          |  50 ++++
 .../pragmas/InferredUnitPragmaAttribute.java  |   4 +-
 .../units}/pragmas/UnitPragmaAttribute.java   |   4 +-
 .../units/ui}/StartUnitAnalysisHandler.java   |   4 +-
 de.prob2.units.feature/.project               |  17 ++
 .../org.eclipse.core.resources.prefs          |   3 +
 .../.settings/org.eclipse.core.runtime.prefs  |   3 +
 de.prob2.units.feature/build.properties       |   1 +
 de.prob2.units.feature/feature.xml            | 281 ++++++++++++++++++
 settings.gradle                               |   2 +-
 22 files changed, 524 insertions(+), 122 deletions(-)
 create mode 100644 de.prob.units/.classpath
 create mode 100644 de.prob.units/.project
 create mode 100644 de.prob.units/.settings/org.eclipse.jdt.core.prefs
 create mode 100644 de.prob.units/META-INF/MANIFEST.MF
 create mode 100644 de.prob.units/build.properties
 create mode 100644 de.prob.units/icons/unit_analysis.png
 create mode 100644 de.prob.units/plugin.xml
 create mode 100644 de.prob.units/src/de/prob/units/Activator.java
 rename {de.prob.ui/src/de/prob/ui => de.prob.units/src/de/prob/units}/pragmas/InferredUnitPragmaAttribute.java (97%)
 rename {de.prob.ui/src/de/prob/ui => de.prob.units/src/de/prob/units}/pragmas/UnitPragmaAttribute.java (96%)
 rename {de.prob.ui/src/de/prob/ui/eventb => de.prob.units/src/de/prob/units/ui}/StartUnitAnalysisHandler.java (99%)
 create mode 100644 de.prob2.units.feature/.project
 create mode 100644 de.prob2.units.feature/.settings/org.eclipse.core.resources.prefs
 create mode 100644 de.prob2.units.feature/.settings/org.eclipse.core.runtime.prefs
 create mode 100644 de.prob2.units.feature/build.properties
 create mode 100644 de.prob2.units.feature/feature.xml

diff --git a/de.prob.core/plugin.xml b/de.prob.core/plugin.xml
index c19d9120..b84a1eae 100644
--- a/de.prob.core/plugin.xml
+++ b/de.prob.core/plugin.xml
@@ -23,17 +23,4 @@
             class="de.prob.core.StaticListenerRegistry">
       </listener>
    </extension>
-   <extension
-         point="org.rodinp.core.attributeTypes">
-      <attributeType
-            id="unitPragmaAttribute"
-            kind="string"
-            name="Content of a unit Pragma to send to ProB">
-      </attributeType>
-      <attributeType
-            id="inferredUnitPragmaAttribute"
-            kind="string"
-            name="Content of a unit Pragma received from ProB">
-      </attributeType>
-   </extension>
 </plugin>
diff --git a/de.prob.core/src/de/prob/eventb/translator/ContextTranslator.java b/de.prob.core/src/de/prob/eventb/translator/ContextTranslator.java
index 8087d36a..e65b7464 100644
--- a/de.prob.core/src/de/prob/eventb/translator/ContextTranslator.java
+++ b/de.prob.core/src/de/prob/eventb/translator/ContextTranslator.java
@@ -54,7 +54,6 @@ import de.be4.classicalb.core.parser.node.PPredicate;
 import de.be4.classicalb.core.parser.node.PSet;
 import de.be4.classicalb.core.parser.node.TIdentifierLiteral;
 import de.hhu.stups.sablecc.patch.SourcePosition;
-import de.prob.core.internal.Activator;
 import de.prob.core.translator.TranslationFailedException;
 import de.prob.core.translator.pragmas.IPragma;
 import de.prob.core.translator.pragmas.UnitPragma;
@@ -133,7 +132,7 @@ public final class ContextTranslator extends AbstractComponentTranslator {
 	private void collectPragmas() throws RodinDBException {
 		// unit pragma, attached to constants
 		final IAttributeType.String UNITATTRIBUTE = RodinCore
-				.getStringAttrType(Activator.PLUGIN_ID + ".unitPragmaAttribute");
+				.getStringAttrType("de.prob.units.unitPragmaAttribute");
 
 		final ISCConstant[] constants = context.getSCConstants();
 
diff --git a/de.prob.core/src/de/prob/eventb/translator/internal/ModelTranslator.java b/de.prob.core/src/de/prob/eventb/translator/internal/ModelTranslator.java
index 67c9e62d..b121f405 100644
--- a/de.prob.core/src/de/prob/eventb/translator/internal/ModelTranslator.java
+++ b/de.prob.core/src/de/prob/eventb/translator/internal/ModelTranslator.java
@@ -69,7 +69,6 @@ import de.be4.classicalb.core.parser.node.PPredicate;
 import de.be4.classicalb.core.parser.node.PSubstitution;
 import de.be4.classicalb.core.parser.node.PWitness;
 import de.be4.classicalb.core.parser.node.TIdentifierLiteral;
-import de.prob.core.internal.Activator;
 import de.prob.core.translator.TranslationFailedException;
 import de.prob.core.translator.pragmas.IPragma;
 import de.prob.core.translator.pragmas.UnitPragma;
@@ -184,7 +183,7 @@ public class ModelTranslator extends AbstractComponentTranslator {
 	private void collectPragmas() throws RodinDBException {
 		// unit pragma, attached to constants
 		final IAttributeType.String UNITATTRIBUTE = RodinCore
-				.getStringAttrType(Activator.PLUGIN_ID + ".unitPragmaAttribute");
+				.getStringAttrType("de.prob.units.unitPragmaAttribute");
 
 		final IVariable[] variables = origin.getVariables();
 
diff --git a/de.prob.ui/META-INF/MANIFEST.MF b/de.prob.ui/META-INF/MANIFEST.MF
index 0789fd1e..0292f6b1 100644
--- a/de.prob.ui/META-INF/MANIFEST.MF
+++ b/de.prob.ui/META-INF/MANIFEST.MF
@@ -10,8 +10,7 @@ Require-Bundle: org.eclipse.ui;bundle-version="[3.5.0,4.0.0)",
  de.prob.core;bundle-version="[9.3.0,9.4.0)",
  org.eventb.core;bundle-version="[2.1.0,2.6.0)",
  org.eclipse.core.expressions;bundle-version="[3.4.101,4.0.0)",
- org.eclipse.gef;bundle-version="[3.5.0,4.0.0)",
- org.eventb.ui;bundle-version="[2.1.0,2.6.0)"
+ org.eclipse.gef;bundle-version="[3.5.0,4.0.0)"
 Bundle-ActivationPolicy: lazy
 Bundle-Vendor: HHU Düsseldorf STUPS Group
 Bundle-Activator: de.prob.ui.ProbUiPlugin
diff --git a/de.prob.ui/plugin.xml b/de.prob.ui/plugin.xml
index 817c0fd5..a64882ef 100644
--- a/de.prob.ui/plugin.xml
+++ b/de.prob.ui/plugin.xml
@@ -355,10 +355,6 @@
             id="de.prob.command.startCspAnimation"
             name="Start CSP Animation">
       </command>
-      <command
-            id="de.prob.ui.startunitanalysis"
-            name="Analyse Physical Units">
-      </command>
    </extension>
    <extension
          point="org.eclipse.ui.handlers">
@@ -749,42 +745,6 @@
             </with>
          </enabledWhen>
       </handler>
-      <handler
-            commandId="de.prob.ui.startunitanalysis">
-         <class
-               class="de.prob.ui.eventb.StartUnitAnalysisHandler">
-         </class>
-         <enabledWhen>
-            <with
-                  variable="selection">
-               <iterate
-                     operator="or">
-                  <or>
-                     <instanceof
-                           value="org.eventb.core.IEventBRoot">
-                     </instanceof>
-                     <and>
-                        <instanceof
-                              value="org.eclipse.core.resources.IResource">
-                        </instanceof>
-                        <or>
-                           <test
-                                 forcePluginActivation="true"
-                                 property="org.eclipse.core.resources.extension"
-                                 value="bum">
-                           </test>
-                           <test
-                                 forcePluginActivation="true"
-                                 property="org.eclipse.core.resources.extension"
-                                 value="buc">
-                           </test>
-                        </or>
-                     </and>
-                  </or>
-               </iterate>
-            </with>
-         </enabledWhen>
-      </handler>
 <!--      <handler
             commandId="de.prob.ui.startdmc">
          <class
@@ -1016,23 +976,6 @@
       </with>
             </visibleWhen>
          </command>
-         <command
-               commandId="de.prob.ui.startunitanalysis"
-               icon="icons/prob.png"
-               label="Analyse Physical Units"
-               style="push">
-            <visibleWhen>
-               <with
-                     variable="selection">
-                  <iterate
-                        operator="or">
-                     <instanceof
-                           value="org.eventb.core.IEventBRoot">
-                     </instanceof>
-                  </iterate>
-               </with>
-            </visibleWhen>
-         </command>
   <!--       <command
                commandId="de.prob.ui.startdmc"
                icon="icons/prob.png"
@@ -1252,43 +1195,4 @@
          </variable>
       </sourceProvider>
         </extension>
-   <extension
-         point="org.eventb.ui.editorItems">
-      <textAttribute
-            class="de.prob.ui.pragmas.UnitPragmaAttribute"
-            expandsHorizontally="true"
-            id="de.prob.ui.unitPragmaAttribute"
-            isMath="true"
-            prefix="Physical Unit:"
-            style="de.prob.ui.unitPragmaAttribute"
-            typeId="de.prob.core.unitPragmaAttribute">
-      </textAttribute>
-      <attributeRelation
-            elementTypeId="org.eventb.core.variable">
-         <attributeReference
-               descriptionId="de.prob.ui.unitPragmaAttribute">
-         </attributeReference>
-         <attributeReference
-               descriptionId="de.prob.ui.inferredUnitPragmaAttribute">
-         </attributeReference>
-      </attributeRelation>
-      <attributeRelation
-            elementTypeId="org.eventb.core.constant">
-         <attributeReference
-               descriptionId="de.prob.ui.unitPragmaAttribute">
-         </attributeReference>
-         <attributeReference
-               descriptionId="de.prob.ui.inferredUnitPragmaAttribute">
-         </attributeReference>
-      </attributeRelation>
-      <textAttribute
-            class="de.prob.ui.pragmas.InferredUnitPragmaAttribute"
-            expandsHorizontally="true"
-            id="de.prob.ui.inferredUnitPragmaAttribute"
-            isMath="true"
-            prefix="Inferred Physical Unit:"
-            style="de.prob.ui.inferredUnitPragmaAttribute"
-            typeId="de.prob.core.inferredUnitPragmaAttribute">
-      </textAttribute>
-   </extension>
 </plugin>
diff --git a/de.prob.units/.classpath b/de.prob.units/.classpath
new file mode 100644
index 00000000..ad32c83a
--- /dev/null
+++ b/de.prob.units/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/de.prob.units/.project b/de.prob.units/.project
new file mode 100644
index 00000000..22333fa9
--- /dev/null
+++ b/de.prob.units/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>de.prob.units</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/de.prob.units/.settings/org.eclipse.jdt.core.prefs b/de.prob.units/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..c537b630
--- /dev/null
+++ b/de.prob.units/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/de.prob.units/META-INF/MANIFEST.MF b/de.prob.units/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..8fcd8336
--- /dev/null
+++ b/de.prob.units/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Units
+Bundle-SymbolicName: de.prob.units;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: de.prob.units.Activator
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ de.prob.core;bundle-version="9.3.0",
+ org.eventb.ui;bundle-version="2.5.0",
+ de.prob.ui;bundle-version="7.3.0"
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/de.prob.units/build.properties b/de.prob.units/build.properties
new file mode 100644
index 00000000..e9863e28
--- /dev/null
+++ b/de.prob.units/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
diff --git a/de.prob.units/icons/unit_analysis.png b/de.prob.units/icons/unit_analysis.png
new file mode 100644
index 0000000000000000000000000000000000000000..36d5d6278be2e2226de7b9d4d0fc9da720e47f1b
GIT binary patch
literal 3598
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

literal 0
HcmV?d00001

diff --git a/de.prob.units/plugin.xml b/de.prob.units/plugin.xml
new file mode 100644
index 00000000..2b12b858
--- /dev/null
+++ b/de.prob.units/plugin.xml
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eventb.ui.editorItems">
+      <textAttribute
+            class="de.prob.units.pragmas.UnitPragmaAttribute"
+            expandsHorizontally="true"
+            id="de.prob.units.unitPragmaAttribute"
+            isMath="true"
+            prefix="Physical Unit:"
+            style="de.prob.units.unitPragmaAttribute"
+            typeId="de.prob.units.unitPragmaAttribute">
+      </textAttribute>
+      <attributeRelation
+            elementTypeId="org.eventb.core.variable">
+         <attributeReference
+               descriptionId="de.prob.units.unitPragmaAttribute">
+         </attributeReference>
+         <attributeReference
+               descriptionId="de.prob.units.inferredUnitPragmaAttribute">
+         </attributeReference>
+      </attributeRelation>
+      <attributeRelation
+            elementTypeId="org.eventb.core.constant">
+         <attributeReference
+               descriptionId="de.prob.units.unitPragmaAttribute">
+         </attributeReference>
+         <attributeReference
+               descriptionId="de.prob.units.inferredUnitPragmaAttribute">
+         </attributeReference>
+      </attributeRelation>
+      <textAttribute
+            class="de.prob.units.pragmas.InferredUnitPragmaAttribute"
+            expandsHorizontally="true"
+            id="de.prob.units.inferredUnitPragmaAttribute"
+            isMath="true"
+            prefix="Inferred Physical Unit:"
+            style="de.prob.units.inferredUnitPragmaAttribute"
+            typeId="de.prob.units.inferredUnitPragmaAttribute">
+      </textAttribute>
+   </extension>
+   <extension
+         point="org.eclipse.ui.handlers">
+      <handler
+            class="de.prob.units.ui.StartUnitAnalysisHandler"
+            commandId="de.prob.units.startunitanalysis">
+      </handler>
+   </extension>
+   <extension
+         point="org.eclipse.ui.menus">
+      <menuContribution
+            locationURI="popup:fr.systerel.explorer.navigator.view">
+         <separator
+               name="de.prob.units.separator2">
+         </separator>
+         <command
+               commandId="de.prob.units.startunitanalysis"
+               icon="icons/unit_analysis.png"
+               label="Analyse Physical Units"
+               style="push">
+            <visibleWhen>
+               <with
+                     variable="selection">
+                  <iterate
+                        operator="or">
+                     <instanceof
+                           value="org.eventb.core.IEventBRoot">
+                     </instanceof>
+                  </iterate>
+               </with>
+            </visibleWhen>
+         </command>
+         <separator
+               name="de.prob.units.separator1">
+         </separator>
+      </menuContribution>
+   </extension>
+   <extension
+         point="org.eclipse.ui.commands">
+      <command
+            id="de.prob.units.startunitanalysis"
+            name="Analyse Physical Units">
+      </command>
+   </extension>
+   <extension
+         point="org.rodinp.core.attributeTypes">
+      <attributeType
+            id="unitPragmaAttribute"
+            kind="string"
+            name="Content of a unit Pragma to send to ProB">
+      </attributeType>
+      <attributeType
+            id="inferredUnitPragmaAttribute"
+            kind="string"
+            name="Content of a unit Pragma received from ProB">
+      </attributeType>
+   </extension>
+</plugin>
diff --git a/de.prob.units/src/de/prob/units/Activator.java b/de.prob.units/src/de/prob/units/Activator.java
new file mode 100644
index 00000000..cb9482f5
--- /dev/null
+++ b/de.prob.units/src/de/prob/units/Activator.java
@@ -0,0 +1,50 @@
+package de.prob.units;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "de.prob.units"; //$NON-NLS-1$
+
+	// The shared instance
+	private static Activator plugin;
+	
+	/**
+	 * The constructor
+	 */
+	public Activator() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 *
+	 * @return the shared instance
+	 */
+	public static Activator getDefault() {
+		return plugin;
+	}
+
+}
diff --git a/de.prob.ui/src/de/prob/ui/pragmas/InferredUnitPragmaAttribute.java b/de.prob.units/src/de/prob/units/pragmas/InferredUnitPragmaAttribute.java
similarity index 97%
rename from de.prob.ui/src/de/prob/ui/pragmas/InferredUnitPragmaAttribute.java
rename to de.prob.units/src/de/prob/units/pragmas/InferredUnitPragmaAttribute.java
index 6a781004..a2d7ec27 100644
--- a/de.prob.ui/src/de/prob/ui/pragmas/InferredUnitPragmaAttribute.java
+++ b/de.prob.units/src/de/prob/units/pragmas/InferredUnitPragmaAttribute.java
@@ -4,7 +4,7 @@
  * (http://www.eclipse.org/org/documents/epl-v10.html)
  * */
 
-package de.prob.ui.pragmas;
+package de.prob.units.pragmas;
 
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eventb.core.IVariable;
@@ -16,7 +16,7 @@ import org.rodinp.core.IRodinElement;
 import org.rodinp.core.RodinCore;
 import org.rodinp.core.RodinDBException;
 
-import de.prob.core.internal.Activator;
+import de.prob.units.Activator;
 
 public class InferredUnitPragmaAttribute implements IAttributeManipulation {
 	public static IAttributeType.String ATTRIBUTE = RodinCore
diff --git a/de.prob.ui/src/de/prob/ui/pragmas/UnitPragmaAttribute.java b/de.prob.units/src/de/prob/units/pragmas/UnitPragmaAttribute.java
similarity index 96%
rename from de.prob.ui/src/de/prob/ui/pragmas/UnitPragmaAttribute.java
rename to de.prob.units/src/de/prob/units/pragmas/UnitPragmaAttribute.java
index 74aa0f9a..8c0075f1 100644
--- a/de.prob.ui/src/de/prob/ui/pragmas/UnitPragmaAttribute.java
+++ b/de.prob.units/src/de/prob/units/pragmas/UnitPragmaAttribute.java
@@ -4,7 +4,7 @@
  * (http://www.eclipse.org/org/documents/epl-v10.html)
  * */
 
-package de.prob.ui.pragmas;
+package de.prob.units.pragmas;
 
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eventb.core.IVariable;
@@ -16,7 +16,7 @@ import org.rodinp.core.IRodinElement;
 import org.rodinp.core.RodinCore;
 import org.rodinp.core.RodinDBException;
 
-import de.prob.core.internal.Activator;
+import de.prob.units.Activator;
 
 public class UnitPragmaAttribute implements IAttributeManipulation {
 	public static IAttributeType.String ATTRIBUTE = RodinCore
diff --git a/de.prob.ui/src/de/prob/ui/eventb/StartUnitAnalysisHandler.java b/de.prob.units/src/de/prob/units/ui/StartUnitAnalysisHandler.java
similarity index 99%
rename from de.prob.ui/src/de/prob/ui/eventb/StartUnitAnalysisHandler.java
rename to de.prob.units/src/de/prob/units/ui/StartUnitAnalysisHandler.java
index ad8b1ebf..13585c40 100644
--- a/de.prob.ui/src/de/prob/ui/eventb/StartUnitAnalysisHandler.java
+++ b/de.prob.units/src/de/prob/units/ui/StartUnitAnalysisHandler.java
@@ -4,7 +4,7 @@
  * (http://www.eclipse.org/org/documents/epl-v10.html)
  * */
 
-package de.prob.ui.eventb;
+package de.prob.units.ui;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -56,7 +56,7 @@ import de.prob.parser.ResultParserException;
 import de.prob.prolog.term.CompoundPrologTerm;
 import de.prob.prolog.term.ListPrologTerm;
 import de.prob.prolog.term.PrologTerm;
-import de.prob.ui.pragmas.InferredUnitPragmaAttribute;
+import de.prob.units.pragmas.InferredUnitPragmaAttribute;
 
 public class StartUnitAnalysisHandler extends AbstractHandler implements
 		IHandler {
diff --git a/de.prob2.units.feature/.project b/de.prob2.units.feature/.project
new file mode 100644
index 00000000..96b7c786
--- /dev/null
+++ b/de.prob2.units.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>de.prob2.units.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/de.prob2.units.feature/.settings/org.eclipse.core.resources.prefs b/de.prob2.units.feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000..ae8dfb58
--- /dev/null
+++ b/de.prob2.units.feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,3 @@
+#Tue Nov 29 16:17:25 CET 2011
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/de.prob2.units.feature/.settings/org.eclipse.core.runtime.prefs b/de.prob2.units.feature/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 00000000..57a8ae0b
--- /dev/null
+++ b/de.prob2.units.feature/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,3 @@
+#Tue Nov 29 16:17:25 CET 2011
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/de.prob2.units.feature/build.properties b/de.prob2.units.feature/build.properties
new file mode 100644
index 00000000..64f93a9f
--- /dev/null
+++ b/de.prob2.units.feature/build.properties
@@ -0,0 +1 @@
+bin.includes = feature.xml
diff --git a/de.prob2.units.feature/feature.xml b/de.prob2.units.feature/feature.xml
new file mode 100644
index 00000000..e6432b79
--- /dev/null
+++ b/de.prob2.units.feature/feature.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="de.prob2.units.feature"
+      label="ProB for Rodin2 - Physical Units Support"
+      version="2.3.5.qualifier"
+      provider-name="HHU Düsseldorf STUPS Group">
+
+   <description url="http://www.stups.uni-duesseldorf.de/ProB">
+      ProB is an animator and model checker for the B-Method. It allows fully automatic animation of many B specifications, and can be used to systematically check a specification for errors. 
+Part of the research and development was conducted within the EPSRC funded projects ABCD and iMoc, and within the EU funded project Rodin. 
+Development is continued under the EU funded project Deploy and the DFG project Gepavas. 
+ProB has been successfully used on various industrial specifications and is now being used within Siemens.
+   </description>
+
+   <copyright>
+      (C) 2000-2011 Michael Leuschel (and many others) All rights reserved.
+   </copyright>
+
+   <license url="http://www.eclipse.org/org/documents/epl-v10.html">
+      ProB can be used freely for commercial, non-commercial and academic
+use under the Eclipse Public Licence v. 1.0. (below) 
+For availability of commercial support, please contact the author
+(http://www.stups.uni-duesseldorf.de/~leuschel). 
+Use of ProB&apos;s nauty library for symmetry reduction implies further
+restrictions (no applications with nontrivial military significance,
+see http://cs.anu.edu.au/~bdm/nauty/).
+--- 
+Eclipse Public License - v. 1.0
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS
+ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT&apos;S ACCEPTANCE
+OF THIS AGREEMENT.
+1. DEFINITIONS
+&quot;Contribution&quot; means:
+a) in the case of the initial Contributor, the initial code and
+documentation distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+i) changes to the Program, and
+ii) additions to the Program;
+where such changes and/or additions to the Program originate
+from and are distributed by that particular Contributor. A Contribution
+&apos;originates&apos; from a Contributor if it was added to the Program
+by such Contributor itself or anyone acting on such Contributor&apos;s
+behalf. Contributions do not include additions to the Program
+which: (i) are separate modules of software distributed in conjunction
+with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.
+&quot;Contributor&quot; means any person or entity that distributes the
+Program.
+&quot;Licensed Patents&quot; mean patent claims licensable by a Contributor
+which are necessarily infringed by the use or sale of its Contribution
+alone or when combined with the Program.
+&quot;Program&quot; means the Contributions distributed in accordance with
+this Agreement.
+&quot;Recipient&quot; means anyone who receives the Program under this
+Agreement, including all Contributors.
+2. GRANT OF RIGHTS
+a) Subject to the terms of this Agreement, each Contributor hereby
+grants Recipient a non-exclusive, worldwide, royalty-free copyright
+license to reproduce, prepare derivative works of, publicly display,
+publicly perform, distribute and sublicense the Contribution
+of such Contributor, if any, and such derivative works, in source
+code and object code form.
+b) Subject to the terms of this Agreement, each Contributor hereby
+grants Recipient a non-exclusive, worldwide, royalty-free patent
+license under Licensed Patents to make, use, sell, offer to sell,
+import and otherwise transfer the Contribution of such Contributor,
+if any, in source code and object code form. This patent license
+shall apply to the combination of the Contribution and the Program
+if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to
+be covered by the Licensed Patents. The patent license shall
+not apply to any other combinations which include the Contribution.
+No hardware per se is licensed hereunder.
+c) Recipient understands that although each Contributor grants
+the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe
+the patent or other intellectual property rights of any other
+entity. Each Contributor disclaims any liability to Recipient
+for claims brought by any other entity based on infringement
+of intellectual property rights or otherwise. As a condition
+to exercising the rights and licenses granted hereunder, each
+Recipient hereby assumes sole responsibility to secure any other
+intellectual property rights needed, if any. For example, if
+a third party patent license is required to allow Recipient to
+distribute the Program, it is Recipient&apos;s responsibility to acquire
+that license before distributing the Program.
+d) Each Contributor represents that to its knowledge it has sufficient
+copyright rights in its Contribution, if any, to grant the copyright
+license set forth in this Agreement.
+3. REQUIREMENTS
+A Contributor may choose to distribute the Program in object
+code form under its own license agreement, provided that:
+a) it complies with the terms and conditions of this Agreement;
+and
+b) its license agreement:
+i) effectively disclaims on behalf of all Contributors all warranties
+and conditions, express and implied, including warranties or
+conditions of title and non-infringement, and implied warranties
+or conditions of merchantability and fitness for a particular
+purpose;
+ii) effectively excludes on behalf of all Contributors all liability
+for damages, including direct, indirect, special, incidental
+and consequential damages, such as lost profits;
+iii) states that any provisions which differ from this Agreement
+are offered by that Contributor alone and not by any other party;
+and
+iv) states that source code for the Program is available from
+such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for
+software exchange.
+When the Program is made available in source code form:
+a) it must be made available under this Agreement; and
+b) a copy of this Agreement must be included with each copy of
+the Program.
+Contributors may not remove or alter any copyright notices contained
+within the Program.
+Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.
+4. COMMERCIAL DISTRIBUTION
+Commercial distributors of software may accept certain responsibilities
+with respect to end users, business partners and the like. While
+this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+(&quot;Commercial Contributor&quot;) hereby agrees to defend and indemnify
+every other Contributor (&quot;Indemnified Contributor&quot;) against any
+losses, damages and costs (collectively &quot;Losses&quot;) arising from
+claims, lawsuits and other legal actions brought by a third party
+against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection
+with its distribution of the Program in a commercial product
+offering. The obligations in this section do not apply to any
+claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor
+must: a) promptly notify the Commercial Contributor in writing
+of such claim, and b) allow the Commercial Contributor to control,
+and cooperate with the Commercial Contributor in, the defense
+and any related settlement negotiations. The Indemnified Contributor
+may participate in any such claim at its own expense.
+For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor&apos;s responsibility
+alone. Under this section, the Commercial Contributor would have
+to defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any
+other Contributor to pay any damages as a result, the Commercial
+Contributor must pay those damages.
+5. NO WARRANTY
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM
+IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with
+its exercise of rights under this Agreement , including but not
+limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or
+equipment, and unavailability or interruption of operations.
+6. DISCLAIMER OF LIABILITY
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE
+OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY
+OF SUCH DAMAGES.
+7. GENERAL
+If any provision of this Agreement is invalid or unenforceable
+under applicable law, it shall not affect the validity or enforceability
+of the remainder of the terms of this Agreement, and without
+further action by the parties hereto, such provision shall be
+reformed to the minimum extent necessary to make such provision
+valid and enforceable.
+If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging
+that the Program itself (excluding combinations of the Program
+with other software or hardware) infringes such Recipient&apos;s patent(s),
+then such Recipient&apos;s rights granted under Section 2(b) shall
+terminate as of the date such litigation is filed.
+All Recipient&apos;s rights under this Agreement shall terminate if
+it fails to comply with any of the material terms or conditions
+of this Agreement and does not cure such failure in a reasonable
+period of time after becoming aware of such noncompliance. If
+all Recipient&apos;s rights under this Agreement terminate, Recipient
+agrees to cease use and distribution of the Program as soon as
+reasonably practicable. However, Recipient&apos;s obligations under
+this Agreement and any licenses granted by Recipient relating
+to the Program shall continue and survive.
+Everyone is permitted to copy and distribute copies of this Agreement,
+but in order to avoid inconsistency the Agreement is copyrighted
+and may only be modified in the following manner. The Agreement
+Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other
+than the Agreement Steward has the right to modify this Agreement.
+The Eclipse Foundation is the initial Agreement Steward. The
+Eclipse Foundation may assign the responsibility to serve as
+the Agreement Steward to a suitable separate entity. Each new
+version of the Agreement will be given a distinguishing version
+number. The Program (including Contributions) may always be distributed
+subject to the version of the Agreement under which it was received.
+In addition, after a new version of the Agreement is published,
+Contributor may elect to distribute the Program (including its
+Contributions) under the new version. Except as expressly stated
+in Sections 2(a) and 2(b) above, Recipient receives no rights
+or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under
+this Agreement are reserved.
+This Agreement is governed by the laws of the State of New York
+and the intellectual property laws of the United States of America.
+No party to this Agreement will bring a legal action under this
+Agreement more than one year after the cause of action arose.
+Each party waives its rights to a jury trial in any resulting
+litigation.
+   </license>
+
+   <requires>
+      <import plugin="org.eclipse.ui" version="3.5.0" match="compatible"/>
+      <import plugin="org.eclipse.ui.ide" version="3.5.0" match="compatible"/>
+      <import plugin="org.eclipse.ui.views" version="3.5.0" match="compatible"/>
+      <import plugin="org.eclipse.core.runtime" version="3.5.0" match="compatible"/>
+      <import plugin="org.eclipse.core.databinding" version="1.2.0" match="compatible"/>
+      <import plugin="org.eclipse.jface.databinding" version="1.2.1" match="compatible"/>
+      <import plugin="org.eclipse.core.databinding.beans" version="1.1.1" match="compatible"/>
+      <import plugin="org.eclipse.gef" version="3.7.0" match="compatible"/>
+      <import plugin="de.prob.core" version="9.3.0" match="equivalent"/>
+      <import plugin="org.eventb.core" version="2.1.0"/>
+      <import plugin="org.rodinp.core" version="1.3.1"/>
+      <import plugin="de.prob.ui" version="7.3.0" match="equivalent"/>
+      <import plugin="org.eclipse.core.resources" version="3.5.0" match="compatible"/>
+      <import plugin="org.eclipse.core.expressions" version="3.4.101" match="compatible"/>
+      <import plugin="org.eclipse.gef" version="3.5.0" match="compatible"/>
+      <import plugin="org.eclipse.ui.navigator" version="3.5.0" match="greaterOrEqual"/>
+   </requires>
+
+   <plugin
+         id="de.bmotionstudio.gef.editor"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="de.prob.core"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"/>
+
+   <plugin
+         id="de.prob.plugin"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"
+         unpack="false"/>
+
+   <plugin
+         id="de.prob.ui"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="de.bmotionstudio.rodin"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"
+         unpack="false"/>
+
+</feature>
diff --git a/settings.gradle b/settings.gradle
index bb2187c3..b488c61b 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,2 +1,2 @@
 
-include 'de.prob.core', 'de.bmotionstudio.gef.editor' ,'de.bmotionstudio.rodin', 'de.bmotionstudio.help' , 'de.prob.plugin', 'de.prob.ui', 'de.prob2.feature'
+include 'de.prob.core', 'de.bmotionstudio.gef.editor' ,'de.bmotionstudio.rodin', 'de.bmotionstudio.help' , 'de.prob.plugin', 'de.prob.ui', 'de.prob2.feature', 'de.prob.units', 'de.prob2.units.feature'
-- 
GitLab