Skip to content
Snippets Groups Projects
Commit 918889bb authored by Simon Barner's avatar Simon Barner
Browse files

Prefer original editor binding, with fallback to all registered bindings

Issue-Ref: 4175
Issue-Url: af3#4175



Signed-off-by: default avatarSimon Barner <barner@fortiss.org>
parent 9b490d4a
No related branches found
No related tags found
1 merge request!1604175: Adaptations to enable development of SOA architecture in separate plugins
Pipeline #32122 passed
Pipeline: maven-releng

#32123

    ......@@ -6,7 +6,7 @@ EReferencePropertySectionBase.java 0548da6778516003257f59d0b4c2b60d458be3b6 GREE
    EditorBase.java 9c09fff92945256bb8680992ae7bb2c78f47b150 GREEN
    FXEditorBase.java 40caf638c7b4c02da5aece0d9d58883bce630e76 GREEN
    IListPropertySection.java 8bb00fe7959583e794ff9437b7a77404c9a9e70f GREEN
    LWFXEFEditorBase.java 9f7b5cec16c0ebb747d3a75eb936a29bedd3d814 GREEN
    LWFXEFEditorBase.java 2cf64f18e562608384e635ac87e12236f8008a25 YELLOW
    ModelEditorBindingBase.java b9b1a1c5a48a6e677d1f57ad55a6126d9703c4b5 GREEN
    ModelElementHandlerBase.java fbd38bcaec6615bcc95be7fdb847f85577c8cd47 GREEN
    MultiEObjectActionBase.java 9e237d8ea640c4194e4877af4a9cfce88698e543 GREEN
    ......
    ......@@ -82,17 +82,26 @@ public abstract class LWFXEFEditorBase<T extends EObject> extends FXEditorBase<T
    /**
    * Constructs delegating factories that wrap all factories registered by
    * {@link IModelEditorBinding}s for the edited type. Delegating factories are used for extending
    * editors of the same type. If an original {@link IModelEditorBinding} exists for this
    * {@link IEditorPart}, only the factories of this binding will be used.
    * editors of the same type. If an original {@link IModelEditorBinding} (i.e., the binding that
    * was used to construct the editor) exists for this
    * {@link IEditorPart} it will be preferred.
    */
    protected void constructMVCFactories() {
    List<IModelEditorBinding<EObject>> bindings = new ArrayList<>();
    if(editorBinding == null) {
    bindings = IModelEditorBindingService.getInstance().getBindings(editedObject);
    bindings.removeIf(b -> (b.getEditorClass(editedObject) != null) &&
    IModelEditorBindingService imebs = IModelEditorBindingService.getInstance();
    List<IModelEditorBinding<EObject>> bindings = imebs.getBindings(editedObject);
    // Get all compatible bindings (unless it is the original binding)
    bindings.removeIf(b -> {
    boolean isLWFXEFEditor = ((b.getEditorClass(editedObject) != null) &&
    (!LWFXEFEditorBase.class.isAssignableFrom(b.getEditorClass(editedObject))));
    } else {
    bindings.add(editorBinding);
    boolean isPreferredEditorBinding = (editorBinding != null) && (b == editorBinding);
    return isLWFXEFEditor || isPreferredEditorBinding;
    });
    // Prefer the original binding
    if(editorBinding != null) {
    bindings.add(0, editorBinding);
    }
    List<Class<? extends IModelFactory>> modelFactories = bindings.stream()
    ......
    0% Loading or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Finish editing this message first!
    Please register or to comment