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); }