Model element opener added to create() 
diff --git a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/ECPControl.java b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/ECPControl.java
index 2f9a481..a035472 100644
--- a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/ECPControl.java
+++ b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/ECPControl.java
@@ -14,7 +14,7 @@
 
 	interface Factory {
 		
-		ECPControlBase createControl(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement, EditingDomain editingDomain);
+		ECPControlBase createControl(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement, EditingDomain editingDomain, ECPModelElementOpener modelElementOpener);
 		
 		interface Descriptor {
 			
diff --git a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/CharacterField.java b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/CharacterField.java
index c0a5a62..002b92d 100644
--- a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/CharacterField.java
+++ b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/CharacterField.java
@@ -15,6 +15,7 @@
 import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
 import org.eclipse.fx.ecp.ui.ECPControl;
+import org.eclipse.fx.ecp.ui.ECPModelElementOpener;
 
 public class CharacterField extends ECPControlBase {
 
@@ -104,7 +105,7 @@
 	public static class Factory implements ECPControl.Factory {
 
 		@Override
-		public ECPControlBase createControl(IItemPropertyDescriptor propertyDescriptor, EObject modelElement, EditingDomain editingDomain) {
+		public ECPControlBase createControl(IItemPropertyDescriptor propertyDescriptor, EObject modelElement, EditingDomain editingDomain, ECPModelElementOpener modelElementOpener) {
 			return new CharacterField(propertyDescriptor, modelElement, editingDomain);
 		}
 
diff --git a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/CheckBoxControl.java b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/CheckBoxControl.java
index a6a9cca..4df1920 100644
--- a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/CheckBoxControl.java
+++ b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/CheckBoxControl.java
@@ -9,6 +9,7 @@
 import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
 import org.eclipse.fx.ecp.ui.ECPControl;
+import org.eclipse.fx.ecp.ui.ECPModelElementOpener;
 import org.eclipse.fx.emf.databinding.edit.EMFEditFXProperties;
 
 public class CheckBoxControl extends ECPControlBase {
@@ -54,7 +55,7 @@
 	public static class Factory implements ECPControl.Factory {
 
 		@Override
-		public ECPControlBase createControl(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement, EditingDomain editingDomain) {
+		public ECPControlBase createControl(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement, EditingDomain editingDomain, ECPModelElementOpener modelElementOpener) {
 			return new CheckBoxControl(itemPropertyDescriptor, modelElement, editingDomain);
 		}
 
diff --git a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/DateControl.java b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/DateControl.java
index 32686b8..987697a 100644
--- a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/DateControl.java
+++ b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/DateControl.java
@@ -15,6 +15,7 @@
 import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
 import org.eclipse.fx.ecp.ui.ECPControl;
+import org.eclipse.fx.ecp.ui.ECPModelElementOpener;
 
 public class DateControl extends ECPControlBase {
 
@@ -74,7 +75,7 @@
 	public static class Factory implements ECPControl.Factory {
 
 		@Override
-		public ECPControlBase createControl(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement, EditingDomain editingDomain) {
+		public ECPControlBase createControl(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement, EditingDomain editingDomain, ECPModelElementOpener modelElementOpener) {
 			return new DateControl(itemPropertyDescriptor, modelElement, editingDomain);
 		}
 
diff --git a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/EnumChoiceBox.java b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/EnumChoiceBox.java
index da6bcb4..cdad9ed 100644
--- a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/EnumChoiceBox.java
+++ b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/EnumChoiceBox.java
@@ -20,6 +20,7 @@
 import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
 import org.eclipse.fx.ecp.ui.ECPControl;
+import org.eclipse.fx.ecp.ui.ECPModelElementOpener;
 
 public class EnumChoiceBox extends ECPControlBase {
 
@@ -99,7 +100,7 @@
 	public static class Factory implements ECPControl.Factory {
 
 		@Override
-		public ECPControlBase createControl(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement, EditingDomain editingDomain) {
+		public ECPControlBase createControl(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement, EditingDomain editingDomain, ECPModelElementOpener modelElementOpener) {
 			return new EnumChoiceBox(itemPropertyDescriptor, modelElement, editingDomain);
 		}
 
diff --git a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/ReferenceControl.java b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/ReferenceControl.java
index 0a1c982..8288f7d 100644
--- a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/ReferenceControl.java
+++ b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/ReferenceControl.java
@@ -23,6 +23,7 @@
 import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
 import org.eclipse.fx.ecp.ui.ECPControl;
+import org.eclipse.fx.ecp.ui.ECPModelElementOpener;
 import org.eclipse.fx.ecp.ui.ECPUtil;
 import org.eclipse.fx.emf.edit.ui.dnd.LocalTransfer;
 
@@ -38,7 +39,7 @@
 	protected Command unsetCommand;
 	protected Label label;
 
-	public ReferenceControl(IItemPropertyDescriptor propertyDescriptor, final EObject modelElement, final EditingDomain editingDomain) {
+	public ReferenceControl(IItemPropertyDescriptor propertyDescriptor, final EObject modelElement, final EditingDomain editingDomain, final ECPModelElementOpener modelElementOpener) {
 		super(propertyDescriptor, modelElement, editingDomain);
 		reference = (EReference) feature;
 
@@ -47,11 +48,10 @@
 		hyperlink.setOnAction(new EventHandler<ActionEvent>() {
 
 			@Override
-			public void handle(ActionEvent arg0) {
+			public void handle(ActionEvent event) {
 				Object value = modelElement.eGet(reference);
-				// TODO change this to model element opener
-//				if (value instanceof EObject)
-//					context.openInNewContext((EObject) value);
+				if (value instanceof EObject)
+					modelElementOpener.openModelElement((EObject) value);
 			}
 
 		});
@@ -172,8 +172,8 @@
 	public static class Factory implements ECPControl.Factory {
 
 		@Override
-		public ECPControlBase createControl(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement, EditingDomain editingDomain) {
-			return new ReferenceControl(itemPropertyDescriptor, modelElement, editingDomain);
+		public ECPControlBase createControl(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement, EditingDomain editingDomain, ECPModelElementOpener modelElementOpener) {
+			return new ReferenceControl(itemPropertyDescriptor, modelElement, editingDomain, modelElementOpener);
 		}
 
 	}
diff --git a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/TextFieldControl.java b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/TextFieldControl.java
index ea39294..85eb6c3 100644
--- a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/TextFieldControl.java
+++ b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/TextFieldControl.java
@@ -15,6 +15,7 @@
 import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
 import org.eclipse.fx.ecp.ui.ECPControl;
+import org.eclipse.fx.ecp.ui.ECPModelElementOpener;
 
 public class TextFieldControl extends ECPControlBase {
 
@@ -73,7 +74,7 @@
 	public static class Factory implements ECPControl.Factory {
 
 		@Override
-		public ECPControlBase createControl(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement, EditingDomain editingDomain) {
+		public ECPControlBase createControl(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement, EditingDomain editingDomain, ECPModelElementOpener modelElementOpener) {
 			return new TextFieldControl(itemPropertyDescriptor, modelElement, editingDomain);
 		}
 
diff --git a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/multi/MultiControl.java b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/multi/MultiControl.java
index abba8ca..a605a43 100644
--- a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/multi/MultiControl.java
+++ b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/multi/MultiControl.java
@@ -27,6 +27,7 @@
 import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
 import org.eclipse.fx.ecp.ui.ECPControl;
+import org.eclipse.fx.ecp.ui.ECPModelElementOpener;
 import org.eclipse.fx.ecp.ui.ECPUIPlugin;
 import org.eclipse.fx.ecp.ui.controls.ECPControlBase;
 import org.eclipse.fx.emf.edit.ui.dnd.LocalTransfer;
@@ -205,7 +206,7 @@
 	public static class Factory implements ECPControl.Factory {
 
 		@Override
-		public ECPControlBase createControl(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement, EditingDomain editingDomain) {
+		public ECPControlBase createControl(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement, EditingDomain editingDomain, ECPModelElementOpener modelElementOpener) {
 			return new MultiControl(itemPropertyDescriptor, modelElement, editingDomain);
 		}
 
diff --git a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/numeric/BigDecimalSpinner.java b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/numeric/BigDecimalSpinner.java
index 32bef6e..67735fd 100644
--- a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/numeric/BigDecimalSpinner.java
+++ b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/numeric/BigDecimalSpinner.java
@@ -6,6 +6,7 @@
 import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
 import org.eclipse.fx.ecp.ui.ECPControl;
+import org.eclipse.fx.ecp.ui.ECPModelElementOpener;
 import org.eclipse.fx.ecp.ui.controls.ECPControlBase;
 
 
@@ -62,7 +63,7 @@
 	public static class Factory implements ECPControl.Factory {
 
 		@Override
-		public ECPControlBase createControl(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement, EditingDomain editingDomain) {
+		public ECPControlBase createControl(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement, EditingDomain editingDomain, ECPModelElementOpener modelElementOpener) {
 			return new BigDecimalSpinner(itemPropertyDescriptor, modelElement, editingDomain);
 		}
 
diff --git a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/numeric/BigIntegerSpinner.java b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/numeric/BigIntegerSpinner.java
index 86b601f..8831e89 100644
--- a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/numeric/BigIntegerSpinner.java
+++ b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/numeric/BigIntegerSpinner.java
@@ -6,6 +6,7 @@
 import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
 import org.eclipse.fx.ecp.ui.ECPControl;
+import org.eclipse.fx.ecp.ui.ECPModelElementOpener;
 import org.eclipse.fx.ecp.ui.controls.ECPControlBase;
 
 public class BigIntegerSpinner extends NumberSpinner {
@@ -59,7 +60,7 @@
 	public static class Factory implements ECPControl.Factory {
 
 		@Override
-		public ECPControlBase createControl(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement, EditingDomain editingDomain) {
+		public ECPControlBase createControl(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement, EditingDomain editingDomain, ECPModelElementOpener modelElementOpener) {
 			return new BigIntegerSpinner(itemPropertyDescriptor, modelElement, editingDomain);
 		}
 
diff --git a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/numeric/DoubleField.java b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/numeric/DoubleField.java
index b7febe6..1197ed9 100644
--- a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/numeric/DoubleField.java
+++ b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/numeric/DoubleField.java
@@ -15,6 +15,7 @@
 import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
 import org.eclipse.fx.ecp.ui.ECPControl;
+import org.eclipse.fx.ecp.ui.ECPModelElementOpener;
 import org.eclipse.fx.ecp.ui.controls.ECPControlBase;
 
 public class DoubleField extends ECPControlBase implements ECPControl {
@@ -94,7 +95,7 @@
 	public static class Factory implements ECPControl.Factory {
 
 		@Override
-		public ECPControlBase createControl(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement, EditingDomain editingDomain) {
+		public ECPControlBase createControl(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement, EditingDomain editingDomain, ECPModelElementOpener modelElementOpener) {
 			return new DoubleField(itemPropertyDescriptor, modelElement, editingDomain);
 		}
 
diff --git a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/numeric/DoubleSpinner.java b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/numeric/DoubleSpinner.java
index 02de3a9..13c8989 100644
--- a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/numeric/DoubleSpinner.java
+++ b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/numeric/DoubleSpinner.java
@@ -4,6 +4,7 @@
 import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
 import org.eclipse.fx.ecp.ui.ECPControl;
+import org.eclipse.fx.ecp.ui.ECPModelElementOpener;
 import org.eclipse.fx.ecp.ui.controls.ECPControlBase;
 
 public class DoubleSpinner extends NumberSpinner {
@@ -57,7 +58,7 @@
 	public static class Factory implements ECPControl.Factory {
 
 		@Override
-		public ECPControlBase createControl(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement, EditingDomain editingDomain) {
+		public ECPControlBase createControl(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement, EditingDomain editingDomain, ECPModelElementOpener modelElementOpener) {
 			return new DoubleSpinner(itemPropertyDescriptor, modelElement, editingDomain);
 		}
 
diff --git a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/numeric/FloatSpinner.java b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/numeric/FloatSpinner.java
index 6acfc24..0895747 100644
--- a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/numeric/FloatSpinner.java
+++ b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/numeric/FloatSpinner.java
@@ -4,6 +4,7 @@
 import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
 import org.eclipse.fx.ecp.ui.ECPControl;
+import org.eclipse.fx.ecp.ui.ECPModelElementOpener;
 import org.eclipse.fx.ecp.ui.controls.ECPControlBase;
 
 public class FloatSpinner extends NumberSpinner {
@@ -57,7 +58,7 @@
 	public static class Factory implements ECPControl.Factory {
 
 		@Override
-		public ECPControlBase createControl(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement, EditingDomain editingDomain) {
+		public ECPControlBase createControl(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement, EditingDomain editingDomain, ECPModelElementOpener modelElementOpener) {
 			return new FloatSpinner(itemPropertyDescriptor, modelElement, editingDomain);
 		}
 
diff --git a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/numeric/IntegerSpinner.java b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/numeric/IntegerSpinner.java
index c8e7f9d..2134a52 100644
--- a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/numeric/IntegerSpinner.java
+++ b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/numeric/IntegerSpinner.java
@@ -4,6 +4,7 @@
 import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
 import org.eclipse.fx.ecp.ui.ECPControl;
+import org.eclipse.fx.ecp.ui.ECPModelElementOpener;
 import org.eclipse.fx.ecp.ui.controls.ECPControlBase;
 
 public class IntegerSpinner extends NumberSpinner {
@@ -58,7 +59,7 @@
 	public static class Factory implements ECPControl.Factory {
 
 		@Override
-		public ECPControlBase createControl(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement, EditingDomain editingDomain) {
+		public ECPControlBase createControl(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement, EditingDomain editingDomain, ECPModelElementOpener modelElementOpener) {
 			return new IntegerSpinner(itemPropertyDescriptor, modelElement, editingDomain);
 		}
 
diff --git a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/numeric/LongSpinner.java b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/numeric/LongSpinner.java
index 687c837..b9dca1d 100644
--- a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/numeric/LongSpinner.java
+++ b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/numeric/LongSpinner.java
@@ -4,6 +4,7 @@
 import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
 import org.eclipse.fx.ecp.ui.ECPControl;
+import org.eclipse.fx.ecp.ui.ECPModelElementOpener;
 import org.eclipse.fx.ecp.ui.controls.ECPControlBase;
 
 public class LongSpinner extends NumberSpinner {
@@ -58,7 +59,7 @@
 	public static class Factory implements ECPControl.Factory {
 
 		@Override
-		public ECPControlBase createControl(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement, EditingDomain editingDomain) {
+		public ECPControlBase createControl(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement, EditingDomain editingDomain, ECPModelElementOpener modelElementOpener) {
 			return new LongSpinner(itemPropertyDescriptor, modelElement, editingDomain);
 		}
 
diff --git a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/numeric/ShortSpinner.java b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/numeric/ShortSpinner.java
index ca0a865..fdf1757 100644
--- a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/numeric/ShortSpinner.java
+++ b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/numeric/ShortSpinner.java
@@ -4,6 +4,7 @@
 import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
 import org.eclipse.fx.ecp.ui.ECPControl;
+import org.eclipse.fx.ecp.ui.ECPModelElementOpener;
 import org.eclipse.fx.ecp.ui.controls.ECPControlBase;
 
 public class ShortSpinner extends NumberSpinner {
@@ -60,7 +61,7 @@
 	public static class Factory implements ECPControl.Factory {
 
 		@Override
-		public ECPControlBase createControl(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement, EditingDomain editingDomain) {
+		public ECPControlBase createControl(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement, EditingDomain editingDomain, ECPModelElementOpener modelElementOpener) {
 			return new ShortSpinner(itemPropertyDescriptor, modelElement, editingDomain);
 		}
 
diff --git a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/form/DefaultModelElementForm.java b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/form/DefaultModelElementForm.java
index c4db997..f5012b1 100644
--- a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/form/DefaultModelElementForm.java
+++ b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/form/DefaultModelElementForm.java
@@ -34,6 +34,7 @@
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
 import org.eclipse.fx.ecp.ui.ECPControl;
 import org.eclipse.fx.ecp.ui.ECPControl.Factory.Registry;
+import org.eclipse.fx.ecp.ui.ECPModelElementOpener;
 import org.eclipse.fx.ecp.ui.controls.ECPControlBase;
 
 public class DefaultModelElementForm extends Control implements ModelElementForm {
@@ -42,10 +43,13 @@
 
 	protected final EObject modelElement;
 	protected final EditingDomain editingDomain;
+	protected final ECPModelElementOpener modelElementOpener;
 
-	public DefaultModelElementForm(EObject modelElement, EditingDomain editingDomain) {
+	public DefaultModelElementForm(EObject modelElement, EditingDomain editingDomain, ECPModelElementOpener modelElementOpener) {
 		this.modelElement = modelElement;
 		this.editingDomain = editingDomain;
+		this.modelElementOpener = modelElementOpener;
+		
 		setSkin(new Skin(this));
 		getStyleClass().add("model-element-form");
 
@@ -100,7 +104,7 @@
 					ECPControl.Factory factory = registry.getFactory(propertyDescriptor, modelElement);
 
 					if (factory != null) {
-						ECPControlBase control = factory.createControl(propertyDescriptor, modelElement, editingDomain);
+						ECPControlBase control = factory.createControl(propertyDescriptor, modelElement, editingDomain, modelElementOpener);
 						gridPane.add(control, 1, i);
 
 						GridPane.setHgrow(control, Priority.ALWAYS);
@@ -140,8 +144,8 @@
 	public static class Factory implements ModelElementForm.Factory {
 
 		@Override
-		public Node createModelElementForm(EObject modelElement, EditingDomain editingDomain) {
-			return new DefaultModelElementForm(modelElement, editingDomain);
+		public Node createModelElementForm(EObject modelElement, EditingDomain editingDomain, ECPModelElementOpener modelElementOpener) {
+			return new DefaultModelElementForm(modelElement, editingDomain, modelElementOpener);
 		}
 
 	}
diff --git a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/form/ModelElementForm.java b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/form/ModelElementForm.java
index 62c3472..8d73b4a 100644
--- a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/form/ModelElementForm.java
+++ b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/form/ModelElementForm.java
@@ -4,6 +4,7 @@
 
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.fx.ecp.ui.ECPModelElementOpener;
 
 public interface ModelElementForm {
 	
@@ -11,7 +12,7 @@
 	
 	interface Factory {
 		
-		Node createModelElementForm(EObject modelElement, EditingDomain editingDomain);
+		Node createModelElementForm(EObject modelElement, EditingDomain editingDomain, ECPModelElementOpener modelElementOpener);
 		
 		interface Registry {
 			
diff --git a/demos/org.eclipse.fx.ecp.app/src/org/eclipse/fx/ecp/ModelEditorPart.java b/demos/org.eclipse.fx.ecp.app/src/org/eclipse/fx/ecp/ModelEditorPart.java
index 9f2344b..11fb198 100644
--- a/demos/org.eclipse.fx.ecp.app/src/org/eclipse/fx/ecp/ModelEditorPart.java
+++ b/demos/org.eclipse.fx.ecp.app/src/org/eclipse/fx/ecp/ModelEditorPart.java
@@ -41,35 +41,36 @@
 	@Override
 	public void setInput(final EObject modelElement) {
 		this.modelElement = modelElement;
-		
-		if(form != null)
+
+		if (form != null)
 			form.dispose();
 
-		form = new DefaultModelElementForm(modelElement, null);
+		form = new DefaultModelElementForm(modelElement, null, null);
 		scrollPane.setContent(form);
 
-//		modelElement.eAdapters().add(new AdapterImpl() {
-//
-//			@Override
-//			public void notifyChanged(Notification msg) {
-//				update();
-//			}
-//
-//		});
+		// modelElement.eAdapters().add(new AdapterImpl() {
+		//
+		// @Override
+		// public void notifyChanged(Notification msg) {
+		// update();
+		// }
+		//
+		// });
 
-//		update();
+		// update();
 	}
 
-//	public void update() {
-//		IItemLabelProvider labelProvider = (IItemLabelProvider) adapterFactory.adapt(modelElement, IItemLabelProvider.class);
-//		if (labelProvider != null) {
-//			part.setLabel(labelProvider.getText(modelElement));
-//			Object image = labelProvider.getImage(modelElement);
-//			if (image instanceof URL)
-//				part.setIconURI(((URL) image).toExternalForm());
-//		} else {
-//			part.setLabel("Model Editor");
-//		}
-//	}
+	// public void update() {
+	// IItemLabelProvider labelProvider = (IItemLabelProvider) adapterFactory.adapt(modelElement,
+	// IItemLabelProvider.class);
+	// if (labelProvider != null) {
+	// part.setLabel(labelProvider.getText(modelElement));
+	// Object image = labelProvider.getImage(modelElement);
+	// if (image instanceof URL)
+	// part.setIconURI(((URL) image).toExternalForm());
+	// } else {
+	// part.setLabel("Model Editor");
+	// }
+	// }
 
 }
diff --git a/demos/org.eclipse.fx.ecp.app/src/org/eclipse/fx/ecp/ModelEditorPart2.java b/demos/org.eclipse.fx.ecp.app/src/org/eclipse/fx/ecp/ModelEditorPart2.java
index 09e17e5..a83c531 100644
--- a/demos/org.eclipse.fx.ecp.app/src/org/eclipse/fx/ecp/ModelEditorPart2.java
+++ b/demos/org.eclipse.fx.ecp.app/src/org/eclipse/fx/ecp/ModelEditorPart2.java
@@ -38,6 +38,7 @@
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
 import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.fx.ecp.ui.ECPModelElementOpener;
 import org.eclipse.fx.ecp.ui.ECPUtil;
 import org.eclipse.fx.ecp.ui.ModelElementEditor;
 import org.eclipse.fx.ecp.ui.controls.BreadcrumbBar;
@@ -57,9 +58,11 @@
 	private final ContextMenu contextMenu = new ContextMenu();
 	private Timeline contextMenuTimeline;
 	private DefaultModelElementForm modelElementForm;
+	private final ECPModelElementOpener modelElementOpener;
 
 	@Inject
-	public ModelEditorPart2(BorderPane parent, final MApplication application, MPart part) {
+	public ModelEditorPart2(BorderPane parent, final MApplication application, MPart part, ECPModelElementOpener modelElementOpener) {
+		this.modelElementOpener = modelElementOpener;
 		scrollPane = new ScrollPane();
 		parent.setCenter(scrollPane);
 		scrollPane.setFitToWidth(true);
@@ -199,7 +202,7 @@
 		EditingDomain editingDomain = AdapterFactoryEditingDomain.getEditingDomainFor(modelElement);
 
 		modelElementForm = (DefaultModelElementForm) ModelElementForm.Factory.Registry.INSTANCE.getFactory(modelElement)
-				.createModelElementForm(modelElement, editingDomain);
+				.createModelElementForm(modelElement, editingDomain, modelElementOpener);
 
 		scrollPane.setContent(modelElementForm);
 	}