Reference opening fixed.
diff --git a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/multi/EmbeddedReferenceControl.java b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/multi/EmbeddedReferenceControl.java index f0f2305..d307fc9 100644 --- a/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/multi/EmbeddedReferenceControl.java +++ b/bundles/runtime/org.eclipse.fx.ecp.ui/src/org/eclipse/fx/ecp/ui/controls/multi/EmbeddedReferenceControl.java
@@ -12,6 +12,7 @@ import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.fx.ecp.ui.ECPModelElementOpener; import org.eclipse.fx.ecp.ui.ECPUtil; public class EmbeddedReferenceControl extends AbstractEmbeddedControl { @@ -19,10 +20,13 @@ protected Hyperlink hyperlink; protected AdapterImpl valueAdapter; protected EObject value; - - public EmbeddedReferenceControl(IItemPropertyDescriptor propertyDescriptor, final EObject modelElement, final EditingDomain editingDomain, int initialIndex) { + protected ECPModelElementOpener modelElementOpener; + + public EmbeddedReferenceControl(IItemPropertyDescriptor propertyDescriptor, final EObject modelElement, final EditingDomain editingDomain, int initialIndex, ECPModelElementOpener modelElementOpener) { super(propertyDescriptor, modelElement, editingDomain, initialIndex); + this.modelElementOpener = modelElementOpener; + valueAdapter = new AdapterImpl() { @Override @@ -85,9 +89,8 @@ public void handle(ActionEvent arg0) { if (eList.size() > index) { Object item = eList.get(index); - // TODO: change this to model element opener - //if (item instanceof EObject) - //context.openInNewContext((EObject) item); + if (item instanceof EObject) + modelElementOpener.openModelElement((EObject) item); } }
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 a605a43..04b6cd5 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
@@ -39,7 +39,8 @@ protected EList<Object> values; protected VBox controlsBox; protected ECPControlBase addControl; - private Command addReferenceCommand; + protected Command addReferenceCommand; + protected ECPModelElementOpener modelElementOpener; class Skin extends SkinBase<MultiControl> { @@ -49,9 +50,10 @@ } - public MultiControl(final IItemPropertyDescriptor propertyDescriptor, final EObject modelElement, final EditingDomain editingDomain) { + public MultiControl(final IItemPropertyDescriptor propertyDescriptor, final EObject modelElement, final EditingDomain editingDomain, ECPModelElementOpener modelElementOpener) { super(propertyDescriptor, modelElement, editingDomain); - + this.modelElementOpener = modelElementOpener; + setSkin(new Skin(this)); values = (EList<Object>) modelElement.eGet(feature); @@ -179,7 +181,7 @@ final EObject modelElement, final EditingDomain editingDomain, int i) { if (feature instanceof EReference) { - return new EmbeddedReferenceControl(propertyDescriptor, modelElement, editingDomain, i); + return new EmbeddedReferenceControl(propertyDescriptor, modelElement, editingDomain, i, modelElementOpener); } else if (feature.getEType() instanceof EEnum) { return new EmbeddedEnumControl(propertyDescriptor, modelElement, editingDomain, i); } else { @@ -207,7 +209,7 @@ @Override public ECPControlBase createControl(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement, EditingDomain editingDomain, ECPModelElementOpener modelElementOpener) { - return new MultiControl(itemPropertyDescriptor, modelElement, editingDomain); + return new MultiControl(itemPropertyDescriptor, modelElement, editingDomain, modelElementOpener); } }