diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index ff2b687d9e..765b5cefe6 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -87,6 +87,7 @@ Introducing a generator of builders aimed to help creating view programmatically - https://github.com/eclipse-sirius/sirius-components/issues/1912[#1912] [core] Add the possibility to send feedback messages to the frontend after an action. - https://github.com/eclipse-sirius/sirius-components/issues/1989[#1979] [diagram] Contribute a new way to render diagrams to evaluate an alternate layouting strategy - https://github.com/eclipse-sirius/sirius-components/issues/1996[#1996] [explorer] Add an Expand All menu item contribution to the Explorer View. +- https://github.com/eclipse-sirius/sirius-components/issues/1966[#1966] [view] Add Selection Description in the View DSL === Improvements diff --git a/packages/core/backend/sirius-components-core/src/main/resources/.gitkeep b/packages/core/backend/sirius-components-core/src/main/resources/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/compatibility/backend/sirius-components-compatibility/src/main/resources/icons/svg/Default.svg b/packages/core/backend/sirius-components-core/src/main/resources/icons/svg/Default.svg similarity index 100% rename from packages/compatibility/backend/sirius-components-compatibility/src/main/resources/icons/svg/Default.svg rename to packages/core/backend/sirius-components-core/src/main/resources/icons/svg/Default.svg diff --git a/packages/emf/backend/sirius-components-emf/src/main/java/org/eclipse/sirius/components/emf/services/ObjectService.java b/packages/emf/backend/sirius-components-emf/src/main/java/org/eclipse/sirius/components/emf/services/ObjectService.java index 9febddff38..bd9457dec9 100644 --- a/packages/emf/backend/sirius-components-emf/src/main/java/org/eclipse/sirius/components/emf/services/ObjectService.java +++ b/packages/emf/backend/sirius-components-emf/src/main/java/org/eclipse/sirius/components/emf/services/ObjectService.java @@ -50,6 +50,8 @@ @Service public class ObjectService implements IObjectService { + public static final String DEFAULT_ICON_PATH = "/icons/svg/Default.svg"; + private static final String DEFAULT_LABEL_FEATURE = "name"; private static final String ID_SEPARATOR = "#"; @@ -164,7 +166,7 @@ public String getImagePath(Object object) { } } } - return null; + return DEFAULT_ICON_PATH; } private String getImageRelativePath(String imageFullPath) { diff --git a/packages/view/backend/sirius-components-view-builder/src/main/java/org/eclipse/sirius/components/view/builder/generated/NodeToolBuilder.java b/packages/view/backend/sirius-components-view-builder/src/main/java/org/eclipse/sirius/components/view/builder/generated/NodeToolBuilder.java index 1941faad37..a53ba5e1b8 100644 --- a/packages/view/backend/sirius-components-view-builder/src/main/java/org/eclipse/sirius/components/view/builder/generated/NodeToolBuilder.java +++ b/packages/view/backend/sirius-components-view-builder/src/main/java/org/eclipse/sirius/components/view/builder/generated/NodeToolBuilder.java @@ -62,6 +62,15 @@ public NodeToolBuilder body(org.eclipse.sirius.components.view.Operation ... val return this; } + /** + * Setter for SelectionDescription. + * + * @generated + */ + public NodeToolBuilder selectionDescription(org.eclipse.sirius.components.view.SelectionDescription value) { + this.getNodeTool().setSelectionDescription(value); + return this; + } } diff --git a/packages/view/backend/sirius-components-view-builder/src/main/java/org/eclipse/sirius/components/view/builder/generated/SelectionDescriptionBuilder.java b/packages/view/backend/sirius-components-view-builder/src/main/java/org/eclipse/sirius/components/view/builder/generated/SelectionDescriptionBuilder.java new file mode 100644 index 0000000000..5aa53080cb --- /dev/null +++ b/packages/view/backend/sirius-components-view-builder/src/main/java/org/eclipse/sirius/components/view/builder/generated/SelectionDescriptionBuilder.java @@ -0,0 +1,64 @@ +/******************************************************************************* + * Copyright (c) 2023 Obeo. + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.sirius.components.view.builder.generated; + +/** + * Builder for SelectionDescriptionBuilder. + * @generated + */ +@SuppressWarnings("checkstyle:JavadocType") +public class SelectionDescriptionBuilder { + + /** + * Create instance org.eclipse.sirius.components.view.SelectionDescription. + * @generated + */ + private org.eclipse.sirius.components.view.SelectionDescription selectionDescription = org.eclipse.sirius.components.view.ViewFactory.eINSTANCE.createSelectionDescription(); + + /** + * Return instance org.eclipse.sirius.components.view.SelectionDescription. + * @generated + */ + protected org.eclipse.sirius.components.view.SelectionDescription getSelectionDescription() { + return this.selectionDescription; + } + + /** + * Return instance org.eclipse.sirius.components.view.SelectionDescription. + * @generated + */ + public org.eclipse.sirius.components.view.SelectionDescription build() { + return this.getSelectionDescription(); + } + + /** + * Setter for SelectionCandidatesExpression. + * + * @generated + */ + public SelectionDescriptionBuilder selectionCandidatesExpression(java.lang.String value) { + this.getSelectionDescription().setSelectionCandidatesExpression(value); + return this; + } + /** + * Setter for SelectionMessage. + * + * @generated + */ + public SelectionDescriptionBuilder selectionMessage(java.lang.String value) { + this.getSelectionDescription().setSelectionMessage(value); + return this; + } + +} + diff --git a/packages/view/backend/sirius-components-view-builder/src/main/java/org/eclipse/sirius/components/view/builder/generated/ViewBuilders.java b/packages/view/backend/sirius-components-view-builder/src/main/java/org/eclipse/sirius/components/view/builder/generated/ViewBuilders.java index 6cd82eb4e2..180d29e582 100644 --- a/packages/view/backend/sirius-components-view-builder/src/main/java/org/eclipse/sirius/components/view/builder/generated/ViewBuilders.java +++ b/packages/view/backend/sirius-components-view-builder/src/main/java/org/eclipse/sirius/components/view/builder/generated/ViewBuilders.java @@ -675,5 +675,14 @@ public EdgePaletteBuilder newEdgePalette() { return new EdgePaletteBuilder(); } + /** + * Instantiate a SelectionDescriptionBuilder . + * @generated + */ + @SuppressWarnings("checkstyle:JavadocType") + public SelectionDescriptionBuilder newSelectionDescription() { + return new SelectionDescriptionBuilder(); + } + } diff --git a/packages/view/backend/sirius-components-view-edit/src/main/java/org/eclipse/sirius/components/view/provider/NodeToolItemProvider.java b/packages/view/backend/sirius-components-view-edit/src/main/java/org/eclipse/sirius/components/view/provider/NodeToolItemProvider.java index 23f76f870b..b9def667d9 100644 --- a/packages/view/backend/sirius-components-view-edit/src/main/java/org/eclipse/sirius/components/view/provider/NodeToolItemProvider.java +++ b/packages/view/backend/sirius-components-view-edit/src/main/java/org/eclipse/sirius/components/view/provider/NodeToolItemProvider.java @@ -17,8 +17,12 @@ import org.eclipse.emf.common.notify.AdapterFactory; import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; import org.eclipse.sirius.components.view.NodeTool; +import org.eclipse.sirius.components.view.ViewFactory; +import org.eclipse.sirius.components.view.ViewPackage; /** * This is the item provider adapter for a {@link org.eclipse.sirius.components.view.NodeTool} object. + * + * @generated NOT + */ + @Override + public Collection getChildrenFeatures(Object object) { + if (this.childrenFeatures == null) { + super.getChildrenFeatures(object); + this.childrenFeatures.add(0, ViewPackage.Literals.NODE_TOOL__SELECTION_DESCRIPTION); + } + return this.childrenFeatures; + } + + /** + * + * + * @generated + */ + @Override + protected EStructuralFeature getChildFeature(Object object, Object child) { + // Check the type of the specified child object and return the proper feature to use for + // adding (see {@link AddCommand}) it as a child. + + return super.getChildFeature(object, child); + } + /** * This returns NodeTool.gif. * @@ -91,6 +125,12 @@ public String getText(Object object) { @Override public void notifyChanged(Notification notification) { this.updateChildren(notification); + + switch (notification.getFeatureID(NodeTool.class)) { + case ViewPackage.NODE_TOOL__SELECTION_DESCRIPTION: + this.fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + } super.notifyChanged(notification); } @@ -103,6 +143,8 @@ public void notifyChanged(Notification notification) { @Override protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { super.collectNewChildDescriptors(newChildDescriptors, object); + + newChildDescriptors.add(this.createChildParameter(ViewPackage.Literals.NODE_TOOL__SELECTION_DESCRIPTION, ViewFactory.eINSTANCE.createSelectionDescription())); } } diff --git a/packages/view/backend/sirius-components-view-edit/src/main/java/org/eclipse/sirius/components/view/provider/SelectionDescriptionItemProvider.java b/packages/view/backend/sirius-components-view-edit/src/main/java/org/eclipse/sirius/components/view/provider/SelectionDescriptionItemProvider.java new file mode 100644 index 0000000000..da3a224544 --- /dev/null +++ b/packages/view/backend/sirius-components-view-edit/src/main/java/org/eclipse/sirius/components/view/provider/SelectionDescriptionItemProvider.java @@ -0,0 +1,165 @@ +/** + * Copyright (c) 2021, 2023 Obeo. + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + */ +package org.eclipse.sirius.components.view.provider; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.util.ResourceLocator; +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IChildCreationExtender; +import org.eclipse.emf.edit.provider.IEditingDomainItemProvider; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.IItemPropertySource; +import org.eclipse.emf.edit.provider.IStructuredItemContentProvider; +import org.eclipse.emf.edit.provider.ITreeItemContentProvider; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemProviderAdapter; +import org.eclipse.emf.edit.provider.ViewerNotification; +import org.eclipse.sirius.components.view.SelectionDescription; +import org.eclipse.sirius.components.view.ViewPackage; + +/** + * This is the item provider adapter for a {@link org.eclipse.sirius.components.view.SelectionDescription} object. + * + * @generated + */ +public class SelectionDescriptionItemProvider extends ItemProviderAdapter + implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * + * @generated + */ + public SelectionDescriptionItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (this.itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + this.addSelectionCandidatesExpressionPropertyDescriptor(object); + this.addSelectionMessagePropertyDescriptor(object); + } + return this.itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Selection Candidates Expression feature. + * + * @generated + */ + protected void addSelectionCandidatesExpressionPropertyDescriptor(Object object) { + this.itemPropertyDescriptors.add(this.createItemPropertyDescriptor(((ComposeableAdapterFactory) this.adapterFactory).getRootAdapterFactory(), this.getResourceLocator(), + this.getString("_UI_SelectionDescription_selectionCandidatesExpression_feature"), + this.getString("_UI_PropertyDescriptor_description", "_UI_SelectionDescription_selectionCandidatesExpression_feature", "_UI_SelectionDescription_type"), + ViewPackage.Literals.SELECTION_DESCRIPTION__SELECTION_CANDIDATES_EXPRESSION, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null)); + } + + /** + * This adds a property descriptor for the Selection Message feature. + * + * @generated + */ + protected void addSelectionMessagePropertyDescriptor(Object object) { + this.itemPropertyDescriptors.add(this.createItemPropertyDescriptor(((ComposeableAdapterFactory) this.adapterFactory).getRootAdapterFactory(), this.getResourceLocator(), + this.getString("_UI_SelectionDescription_selectionMessage_feature"), + this.getString("_UI_PropertyDescriptor_description", "_UI_SelectionDescription_selectionMessage_feature", "_UI_SelectionDescription_type"), + ViewPackage.Literals.SELECTION_DESCRIPTION__SELECTION_MESSAGE, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null)); + } + + /** + * This returns SelectionDescription.gif. + * + * @generated + */ + @Override + public Object getImage(Object object) { + return this.overlayImage(object, this.getResourceLocator().getImage("full/obj16/SelectionDescription")); + } + + /** + * + * + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() { + return true; + } + + /** + * This returns the label text for the adapted class. + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((SelectionDescription) object).getSelectionCandidatesExpression(); + return label == null || label.length() == 0 ? this.getString("_UI_SelectionDescription_type") : this.getString("_UI_SelectionDescription_type") + " " + label; + } + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached children and by creating + * a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + this.updateChildren(notification); + + switch (notification.getFeatureID(SelectionDescription.class)) { + case ViewPackage.SELECTION_DESCRIPTION__SELECTION_CANDIDATES_EXPRESSION: + case ViewPackage.SELECTION_DESCRIPTION__SELECTION_MESSAGE: + this.fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children that can be created + * under this object. + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + + /** + * Return the resource locator for this item provider's resources. + * + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ((IChildCreationExtender) this.adapterFactory).getResourceLocator(); + } + +} diff --git a/packages/view/backend/sirius-components-view-edit/src/main/java/org/eclipse/sirius/components/view/provider/ViewItemProviderAdapterFactory.java b/packages/view/backend/sirius-components-view-edit/src/main/java/org/eclipse/sirius/components/view/provider/ViewItemProviderAdapterFactory.java index 208f21d495..b8e692f7b1 100644 --- a/packages/view/backend/sirius-components-view-edit/src/main/java/org/eclipse/sirius/components/view/provider/ViewItemProviderAdapterFactory.java +++ b/packages/view/backend/sirius-components-view-edit/src/main/java/org/eclipse/sirius/components/view/provider/ViewItemProviderAdapterFactory.java @@ -1682,6 +1682,29 @@ public Adapter createEdgePaletteAdapter() { return this.edgePaletteItemProvider; } + /** + * This keeps track of the one adapter used for all {@link org.eclipse.sirius.components.view.SelectionDescription} + * instances. + * + * @generated + */ + protected SelectionDescriptionItemProvider selectionDescriptionItemProvider; + + /** + * This creates an adapter for a {@link org.eclipse.sirius.components.view.SelectionDescription}. + * + * @generated + */ + @Override + public Adapter createSelectionDescriptionAdapter() { + if (this.selectionDescriptionItemProvider == null) { + this.selectionDescriptionItemProvider = new SelectionDescriptionItemProvider(this); + } + + return this.selectionDescriptionItemProvider; + } + /** * This keeps track of the one adapter used for all {@link org.eclipse.sirius.components.view.BarChartDescription} * instances. @@ -2073,6 +2096,8 @@ public void dispose() { this.nodePaletteItemProvider.dispose(); if (this.edgePaletteItemProvider != null) this.edgePaletteItemProvider.dispose(); + if (this.selectionDescriptionItemProvider != null) + this.selectionDescriptionItemProvider.dispose(); } } diff --git a/packages/view/backend/sirius-components-view-edit/src/main/resources/plugin.properties b/packages/view/backend/sirius-components-view-edit/src/main/resources/plugin.properties index 3dd5d4539d..f377b285af 100644 --- a/packages/view/backend/sirius-components-view-edit/src/main/resources/plugin.properties +++ b/packages/view/backend/sirius-components-view-edit/src/main/resources/plugin.properties @@ -14,6 +14,11 @@ pluginName = View Edit Support providerName = www.example.org +_UI_NodeTool_selectionDescription_feature = Selection Dialog +_UI_SelectionDescription_selectionCandidatesExpression_feature = Dialog Candidate Expression +_UI_SelectionDescription_selectionMessage_feature = Dialog message +_UI_SelectionDescription_type = Selection Dialog + _UI_CreateChild_text = {0} _UI_CreateChild_text2 = {1} {0} _UI_CreateChild_text3={1} diff --git a/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/ViewConverter.java b/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/ViewConverter.java index c86e820cc3..0976f369a7 100644 --- a/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/ViewConverter.java +++ b/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/ViewConverter.java @@ -16,10 +16,21 @@ import java.util.List; import java.util.Objects; import java.util.Optional; +import java.util.Spliterator; +import java.util.Spliterators; +import java.util.stream.Stream; +import java.util.stream.StreamSupport; +import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EPackage; +import org.eclipse.sirius.components.core.api.IObjectService; import org.eclipse.sirius.components.interpreter.AQLInterpreter; +import org.eclipse.sirius.components.interpreter.Result; +import org.eclipse.sirius.components.representations.GetOrCreateRandomIdProvider; import org.eclipse.sirius.components.representations.IRepresentationDescription; +import org.eclipse.sirius.components.representations.VariableManager; +import org.eclipse.sirius.components.selection.description.SelectionDescription; +import org.eclipse.sirius.components.view.DiagramDescription; import org.eclipse.sirius.components.view.RepresentationDescription; import org.eclipse.sirius.components.view.View; import org.slf4j.Logger; @@ -45,12 +56,15 @@ public class ViewConverter implements IViewConverter { private final ApplicationContext applicationContext; - public ViewConverter(List javaServiceProviders, List representationDescriptionConverters, ApplicationContext applicationContext) { + private final IObjectService objectService; + + public ViewConverter(List javaServiceProviders, List representationDescriptionConverters, ApplicationContext applicationContext, IObjectService objectService) { this.javaServiceProviders = new ArrayList<>(); this.javaServiceProviders.addAll(Objects.requireNonNull(javaServiceProviders)); this.javaServiceProviders.add((View view) -> List.of(CanonicalServices.class)); this.representationDescriptionConverters = Objects.requireNonNull(representationDescriptionConverters); this.applicationContext = Objects.requireNonNull(applicationContext); + this.objectService = Objects.requireNonNull(objectService); } /** @@ -68,6 +82,9 @@ public List convert(List views, List .map(representationDescription -> this.convert(representationDescription, allViewsRepresentationDescriptions, interpreter)) .flatMap(Optional::stream) .toList()); + + result.addAll(this.convertSelectionsDialogs(view, interpreter)); + } catch (NullPointerException exception) { // Can easily happen if the View model is currently invalid/inconsistent, typically because it is // currently being created or edited. @@ -77,13 +94,51 @@ public List convert(List views, List return result; } + private List convertSelectionsDialogs(View view, AQLInterpreter interpreter) { + return view.getDescriptions().stream().filter(DiagramDescription.class::isInstance) + .flatMap(this::getAllContent) + .filter(org.eclipse.sirius.components.view.SelectionDescription.class::isInstance) + .map(org.eclipse.sirius.components.view.SelectionDescription.class::cast) + .map(selectionDescription -> this.convertSelectionDialog(selectionDescription, interpreter)) + .toList(); + } + + private IRepresentationDescription convertSelectionDialog(org.eclipse.sirius.components.view.SelectionDescription selectionDescription, AQLInterpreter interpreter) { + String selectionDescriptionId = this.objectService.getId(selectionDescription); + + return SelectionDescription.newSelectionDescription(selectionDescriptionId) + .objectsProvider(variableManager -> { + Result result = interpreter.evaluateExpression(variableManager.getVariables(), selectionDescription.getSelectionCandidatesExpression()); + return result.asObjects().orElse(List.of()).stream() + .filter(Objects::nonNull) + .toList(); + }) + .messageProvider(variableManager -> { + String message = selectionDescription.getSelectionMessage(); + if (message == null) { + message = ""; + } + return message; + }) + .idProvider(new GetOrCreateRandomIdProvider()) + .labelProvider(variableManager -> variableManager.get(VariableManager.SELF, Object.class).map(this.objectService::getLabel).orElse(null)) + .iconURLProvider(variableManager -> variableManager.get(VariableManager.SELF, Object.class).map(this.objectService::getImagePath).orElse(null)) + .targetObjectIdProvider(variableManager -> variableManager.get(VariableManager.SELF, Object.class).map(this.objectService::getId).orElse(null)) + .selectionObjectsIdProvider(variableManager -> variableManager.get(VariableManager.SELF, Object.class).map(this.objectService::getId).orElse(null)) + .label("Selection Description") + .canCreatePredicate(variableManager -> false) + .build(); + } + + private Stream getAllContent(EObject representationDescription) { + return StreamSupport.stream(Spliterators.spliteratorUnknownSize(representationDescription.eAllContents(), Spliterator.ORDERED), false); + } + private Optional convert(RepresentationDescription representationDescription, List allViewsRepresentationDescriptions, AQLInterpreter aqlInterpreter) { - // @formatter:off return this.representationDescriptionConverters.stream() .filter(converter -> converter.canConvert(representationDescription)) .map(converter -> converter.convert(representationDescription, allViewsRepresentationDescriptions, aqlInterpreter)) .findFirst(); - // @formatter:on } private AQLInterpreter createInterpreter(View view, List visibleEPackages) { diff --git a/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/diagram/ToolConverter.java b/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/diagram/ToolConverter.java index 077ecc9029..7eee5219c7 100644 --- a/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/diagram/ToolConverter.java +++ b/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/diagram/ToolConverter.java @@ -132,6 +132,7 @@ private List createDiagramPaletteTools(DiagramDescription viewDiagramDesc return this.execute(converterContext, capturedConvertedNodes, nodeTool, child); }) .targetDescriptions(List.of()) + .selectionDescriptionId(this.objectService.getId(nodeTool.getSelectionDescription())) .appliesToDiagramRoot(true) .build(); // @formatter:on @@ -156,6 +157,7 @@ private List createNodePaletteTools(NodeDescription nodeDescription, View return this.execute(converterContext, capturedConvertedNodes, nodeTool, child); }) .targetDescriptions(List.of()) + .selectionDescriptionId(this.objectService.getId(nodeTool.getSelectionDescription())) .appliesToDiagramRoot(false) .build(); // @formatter:on diff --git a/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/diagram/ViewToolSectionsProvider.java b/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/diagram/ViewToolSectionsProvider.java index 24351aa145..85afaf6bfb 100644 --- a/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/diagram/ViewToolSectionsProvider.java +++ b/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/diagram/ViewToolSectionsProvider.java @@ -139,9 +139,14 @@ private List createDiagramPaletteTools(org.eclipse.sirius.components.view List diagramTools = new ArrayList<>(); for (NodeTool nodeTool : viewDiagramDescription.getPalette().getNodeTools()) { String toolId = this.idProvider.apply(nodeTool).toString(); + String selectionDescriptionId = ""; + if (nodeTool.getSelectionDescription() != null) { + selectionDescriptionId = this.objectService.getId(nodeTool.getSelectionDescription()); + } var tool = SingleClickOnDiagramElementTool.newSingleClickOnDiagramElementTool(toolId) .label(nodeTool.getName()) .imageURL(ViewToolImageProvider.NODE_CREATION_TOOL_ICON) + .selectionDescriptionId(selectionDescriptionId) .targetDescriptions(List.of()) .appliesToDiagramRoot(true) .build(); @@ -171,11 +176,17 @@ private List getNodePalette(DiagramDescription diagramDescription, private List createNodePaletteTools(DiagramDescription diagramDescription, org.eclipse.sirius.components.view.NodeDescription viewNodeDescription, NodeDescription nodeDescription) { List tools = new ArrayList<>(); + for (NodeTool nodeTool : new ToolFinder().findNodeTools(viewNodeDescription)) { String toolId = this.idProvider.apply(nodeTool).toString(); + String selectionDescriptionId = ""; + if (nodeTool.getSelectionDescription() != null) { + selectionDescriptionId = this.objectService.getId(nodeTool.getSelectionDescription()); + } var tool = SingleClickOnDiagramElementTool.newSingleClickOnDiagramElementTool(toolId) .label(nodeTool.getName()) .imageURL(ViewToolImageProvider.NODE_CREATION_TOOL_ICON) + .selectionDescriptionId(selectionDescriptionId) .targetDescriptions(List.of()) .appliesToDiagramRoot(false) .build(); @@ -218,10 +229,15 @@ private List createEdgePaletteTools(org.eclipse.sirius.components.view.Ed List paletteSingleTargetTools = new ToolFinder().findNodeTools(viewEdgeDescription); for (NodeTool nodeTool : paletteSingleTargetTools) { String toolId = this.idProvider.apply(nodeTool).toString(); + String selectionDescriptionId = ""; + if (nodeTool.getSelectionDescription() != null) { + selectionDescriptionId = this.objectService.getId(nodeTool.getSelectionDescription()); + } var tool = SingleClickOnDiagramElementTool.newSingleClickOnDiagramElementTool(toolId) .label(nodeTool.getName()) .imageURL(ViewToolImageProvider.NODE_CREATION_TOOL_ICON) .targetDescriptions(List.of()) + .selectionDescriptionId(selectionDescriptionId) .appliesToDiagramRoot(false) .build(); diff --git a/packages/view/backend/sirius-components-view-emf/src/test/java/org/eclipse/sirius/components/view/emf/view/DynamicDiagramsTests.java b/packages/view/backend/sirius-components-view-emf/src/test/java/org/eclipse/sirius/components/view/emf/view/DynamicDiagramsTests.java index 51f83bcf52..deaadb2cbd 100644 --- a/packages/view/backend/sirius-components-view-emf/src/test/java/org/eclipse/sirius/components/view/emf/view/DynamicDiagramsTests.java +++ b/packages/view/backend/sirius-components-view-emf/src/test/java/org/eclipse/sirius/components/view/emf/view/DynamicDiagramsTests.java @@ -149,7 +149,7 @@ private Diagram render(DiagramDescription diagramDescription, Object target) { ViewDiagramDescriptionConverter diagramDescriptionConverter = new ViewDiagramDescriptionConverter(new IObjectService.NoOp(), new IEditService.NoOp(), List.of(), new IDiagramIdProvider.NoOp(), new IViewToolImageProvider.NoOp(), new IFeedbackMessageService.NoOp()); - var viewConverter = new ViewConverter(List.of(), List.of(diagramDescriptionConverter), new StaticApplicationContext()); + var viewConverter = new ViewConverter(List.of(), List.of(diagramDescriptionConverter), new StaticApplicationContext(), new IObjectService.NoOp()); List conversionResult = viewConverter.convert(List.of(view), List.of(EcorePackage.eINSTANCE)); assertThat(conversionResult).hasSize(1); assertThat(conversionResult.get(0)).isInstanceOf(org.eclipse.sirius.components.diagrams.description.DiagramDescription.class); diff --git a/packages/view/backend/sirius-components-view-emf/src/test/java/org/eclipse/sirius/components/view/emf/view/DynamicFormsTests.java b/packages/view/backend/sirius-components-view-emf/src/test/java/org/eclipse/sirius/components/view/emf/view/DynamicFormsTests.java index 2884f5c71c..7e4a28f4b7 100644 --- a/packages/view/backend/sirius-components-view-emf/src/test/java/org/eclipse/sirius/components/view/emf/view/DynamicFormsTests.java +++ b/packages/view/backend/sirius-components-view-emf/src/test/java/org/eclipse/sirius/components/view/emf/view/DynamicFormsTests.java @@ -1283,7 +1283,7 @@ public Optional getObject(IEditingContext editingContext, String objectI }; ViewFormDescriptionConverter formDescriptionConverter = new ViewFormDescriptionConverter(objectService, editService, new IFormIdProvider.NoOp(), List.of(), new IFeedbackMessageService.NoOp()); - var viewConverter = new ViewConverter(List.of(), List.of(formDescriptionConverter), new StaticApplicationContext()); + var viewConverter = new ViewConverter(List.of(), List.of(formDescriptionConverter), new StaticApplicationContext(), new IObjectService.NoOp()); List conversionResult = viewConverter.convert(List.of(view), List.of(EcorePackage.eINSTANCE)); assertThat(conversionResult).hasSize(1); assertThat(conversionResult.get(0)).isInstanceOf(org.eclipse.sirius.components.forms.description.FormDescription.class); diff --git a/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/NodeTool.java b/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/NodeTool.java index 44470d71e9..8869b92d29 100644 --- a/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/NodeTool.java +++ b/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/NodeTool.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2021 Obeo. + * Copyright (c) 2021, 2023 Obeo. * This program and the accompanying materials * are made available under the terms of the Eclipse Public License v2.0 * which accompanies this distribution, and is available at @@ -15,10 +15,39 @@ /** * A representation of the model object 'Node Tool'. * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link org.eclipse.sirius.components.view.NodeTool#getSelectionDescription Selection Description}
  • + *
* * @see org.eclipse.sirius.components.view.ViewPackage#getNodeTool() * @model * @generated */ public interface NodeTool extends Tool { + + /** + * Returns the value of the 'Selection Description' containment reference. + * + * + * @return the value of the 'Selection Description' containment reference. + * @see #setSelectionDescription(SelectionDescription) + * @see org.eclipse.sirius.components.view.ViewPackage#getNodeTool_SelectionDescription() + * @model containment="true" + * @generated + */ + SelectionDescription getSelectionDescription(); + + /** + * Sets the value of the '{@link org.eclipse.sirius.components.view.NodeTool#getSelectionDescription Selection + * Description}' containment reference. + * + * @param value + * the new value of the 'Selection Description' containment reference. + * @see #getSelectionDescription() + * @generated + */ + void setSelectionDescription(SelectionDescription value); } // NodeTool diff --git a/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/SelectionDescription.java b/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/SelectionDescription.java new file mode 100644 index 0000000000..b198bfb88e --- /dev/null +++ b/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/SelectionDescription.java @@ -0,0 +1,83 @@ +/** + * Copyright (c) 2021, 2023 Obeo. + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + */ +package org.eclipse.sirius.components.view; + +import org.eclipse.emf.ecore.EObject; + +/** + * A representation of the model object 'Selection Description'. + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link org.eclipse.sirius.components.view.SelectionDescription#getSelectionCandidatesExpression Selection + * Candidates Expression}
  • + *
  • {@link org.eclipse.sirius.components.view.SelectionDescription#getSelectionMessage Selection + * Message}
  • + *
+ * + * @see org.eclipse.sirius.components.view.ViewPackage#getSelectionDescription() + * @model + * @generated + */ +public interface SelectionDescription extends EObject { + /** + * Returns the value of the 'Selection Candidates Expression' attribute. The default value is + * "aql:self". + * + * @return the value of the 'Selection Candidates Expression' attribute. + * @see #setSelectionCandidatesExpression(String) + * @see org.eclipse.sirius.components.view.ViewPackage#getSelectionDescription_SelectionCandidatesExpression() + * @model default="aql:self" dataType="org.eclipse.sirius.components.view.InterpretedExpression" + * @generated + */ + String getSelectionCandidatesExpression(); + + /** + * Sets the value of the + * '{@link org.eclipse.sirius.components.view.SelectionDescription#getSelectionCandidatesExpression Selection + * Candidates Expression}' attribute. + * + * @param value + * the new value of the 'Selection Candidates Expression' attribute. + * @see #getSelectionCandidatesExpression() + * @generated + */ + void setSelectionCandidatesExpression(String value); + + /** + * Returns the value of the 'Selection Message' attribute. + * + * @return the value of the 'Selection Message' attribute. + * @see #setSelectionMessage(String) + * @see org.eclipse.sirius.components.view.ViewPackage#getSelectionDescription_SelectionMessage() + * @model + * @generated + */ + String getSelectionMessage(); + + /** + * Sets the value of the '{@link org.eclipse.sirius.components.view.SelectionDescription#getSelectionMessage + * Selection Message}' attribute. + * + * @param value + * the new value of the 'Selection Message' attribute. + * @see #getSelectionMessage() + * @generated + */ + void setSelectionMessage(String value); + +} // SelectionDescription diff --git a/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/ViewFactory.java b/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/ViewFactory.java index ad4b16ca7e..d4113789d2 100644 --- a/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/ViewFactory.java +++ b/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/ViewFactory.java @@ -639,6 +639,14 @@ public interface ViewFactory extends EFactory { */ EdgePalette createEdgePalette(); + /** + * Returns a new object of class 'Selection Description'. + * + * @return a new object of class 'Selection Description'. + * @generated + */ + SelectionDescription createSelectionDescription(); + /** * Returns the package supported by this factory. * diff --git a/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/ViewPackage.java b/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/ViewPackage.java index 46100f1d63..39d8274157 100644 --- a/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/ViewPackage.java +++ b/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/ViewPackage.java @@ -1921,6 +1921,15 @@ public interface ViewPackage extends EPackage { */ int NODE_TOOL__BODY = TOOL__BODY; + /** + * The feature id for the 'Selection Description' containment reference. + * + * + * @generated + * @ordered + */ + int NODE_TOOL__SELECTION_DESCRIPTION = TOOL_FEATURE_COUNT + 0; + /** * The number of structural features of the 'Node Tool' class. @@ -1928,7 +1937,7 @@ public interface ViewPackage extends EPackage { * @generated * @ordered */ - int NODE_TOOL_FEATURE_COUNT = TOOL_FEATURE_COUNT + 0; + int NODE_TOOL_FEATURE_COUNT = TOOL_FEATURE_COUNT + 1; /** * The number of operations of the 'Node Tool' class. @@ -6482,6 +6491,52 @@ public interface ViewPackage extends EPackage { */ int EDGE_PALETTE_OPERATION_COUNT = 0; + /** + * The meta object id for the '{@link org.eclipse.sirius.components.view.impl.SelectionDescriptionImpl Selection + * Description}' class. + * + * @see org.eclipse.sirius.components.view.impl.SelectionDescriptionImpl + * @see org.eclipse.sirius.components.view.impl.ViewPackageImpl#getSelectionDescription() + * @generated + */ + int SELECTION_DESCRIPTION = 87; + + /** + * The feature id for the 'Selection Candidates Expression' attribute. + * + * @generated + * @ordered + */ + int SELECTION_DESCRIPTION__SELECTION_CANDIDATES_EXPRESSION = 0; + + /** + * The feature id for the 'Selection Message' attribute. + * + * @generated + * @ordered + */ + int SELECTION_DESCRIPTION__SELECTION_MESSAGE = 1; + + /** + * The number of structural features of the 'Selection Description' class. + * + * @generated + * @ordered + */ + int SELECTION_DESCRIPTION_FEATURE_COUNT = 2; + + /** + * The number of operations of the 'Selection Description' class. + * + * @generated + * @ordered + */ + int SELECTION_DESCRIPTION_OPERATION_COUNT = 0; + /** * The meta object id for the '{@link org.eclipse.sirius.components.view.LayoutDirection Layout Direction}' * enum. @@ -6490,7 +6545,7 @@ public interface ViewPackage extends EPackage { * @see org.eclipse.sirius.components.view.impl.ViewPackageImpl#getLayoutDirection() * @generated */ - int LAYOUT_DIRECTION = 87; + int LAYOUT_DIRECTION = 88; /** * The meta object id for the '{@link org.eclipse.sirius.components.view.ArrowStyle Arrow Style}' enum. @@ -6500,7 +6555,7 @@ public interface ViewPackage extends EPackage { * @see org.eclipse.sirius.components.view.impl.ViewPackageImpl#getArrowStyle() * @generated */ - int ARROW_STYLE = 88; + int ARROW_STYLE = 89; /** * The meta object id for the '{@link org.eclipse.sirius.components.view.LineStyle Line Style}' enum. @@ -6559,7 +6614,7 @@ public interface ViewPackage extends EPackage { * @see org.eclipse.sirius.components.view.impl.ViewPackageImpl#getIdentifier() * @generated */ - int IDENTIFIER = 94; + int IDENTIFIER = 95; /** * The meta object id for the 'Interpreted Expression' data type. @@ -6578,7 +6633,7 @@ public interface ViewPackage extends EPackage { * @see org.eclipse.sirius.components.view.impl.ViewPackageImpl#getDomainType() * @generated */ - int DOMAIN_TYPE = 96; + int DOMAIN_TYPE = 97; /** * The meta object id for the 'Color' data type. @@ -6587,7 +6642,7 @@ public interface ViewPackage extends EPackage { * @see org.eclipse.sirius.components.view.impl.ViewPackageImpl#getColor() * @generated */ - int COLOR = 97; + int COLOR = 98; /** * The meta object id for the 'Length' data type. @@ -6595,7 +6650,7 @@ public interface ViewPackage extends EPackage { * @see org.eclipse.sirius.components.view.impl.ViewPackageImpl#getLength() * @generated */ - int LENGTH = 98; + int LENGTH = 99; /** * Returns the meta object for class '{@link org.eclipse.sirius.components.view.View View}'. + * + * @return the meta object for the containment reference 'Selection Description'. + * @see org.eclipse.sirius.components.view.NodeTool#getSelectionDescription() + * @see #getNodeTool() + * @generated + */ + EReference getNodeTool_SelectionDescription(); + /** * Returns the meta object for class '{@link org.eclipse.sirius.components.view.EdgeTool Edge Tool}'. @@ -9732,6 +9799,40 @@ public interface ViewPackage extends EPackage { */ EReference getEdgePalette_EdgeReconnectionTools(); + /** + * Returns the meta object for class '{@link org.eclipse.sirius.components.view.SelectionDescription Selection + * Description}'. + * + * @return the meta object for class 'Selection Description'. + * @see org.eclipse.sirius.components.view.SelectionDescription + * @generated + */ + EClass getSelectionDescription(); + + /** + * Returns the meta object for the attribute + * '{@link org.eclipse.sirius.components.view.SelectionDescription#getSelectionCandidatesExpression Selection + * Candidates Expression}'. + * + * @return the meta object for the attribute 'Selection Candidates Expression'. + * @see org.eclipse.sirius.components.view.SelectionDescription#getSelectionCandidatesExpression() + * @see #getSelectionDescription() + * @generated + */ + EAttribute getSelectionDescription_SelectionCandidatesExpression(); + + /** + * Returns the meta object for the attribute + * '{@link org.eclipse.sirius.components.view.SelectionDescription#getSelectionMessage Selection Message}'. + * + * + * @return the meta object for the attribute 'Selection Message'. + * @see org.eclipse.sirius.components.view.SelectionDescription#getSelectionMessage() + * @see #getSelectionDescription() + * @generated + */ + EAttribute getSelectionDescription_SelectionMessage(); + /** * Returns the meta object for enum '{@link org.eclipse.sirius.components.view.LayoutDirection Layout * Direction}'. @@ -10633,6 +10734,14 @@ interface Literals { */ EClass NODE_TOOL = eINSTANCE.getNodeTool(); + /** + * The meta object literal for the 'Selection Description' containment reference feature. + * + * @generated + */ + EReference NODE_TOOL__SELECTION_DESCRIPTION = eINSTANCE.getNodeTool_SelectionDescription(); + /** * The meta object literal for the '{@link org.eclipse.sirius.components.view.impl.EdgeToolImpl Edge * Tool}' class. @@ -12295,6 +12404,32 @@ interface Literals { */ EReference EDGE_PALETTE__EDGE_RECONNECTION_TOOLS = eINSTANCE.getEdgePalette_EdgeReconnectionTools(); + /** + * The meta object literal for the '{@link org.eclipse.sirius.components.view.impl.SelectionDescriptionImpl + * Selection Description}' class. + * + * @see org.eclipse.sirius.components.view.impl.SelectionDescriptionImpl + * @see org.eclipse.sirius.components.view.impl.ViewPackageImpl#getSelectionDescription() + * @generated + */ + EClass SELECTION_DESCRIPTION = eINSTANCE.getSelectionDescription(); + + /** + * The meta object literal for the 'Selection Candidates Expression' attribute feature. + * + * @generated + */ + EAttribute SELECTION_DESCRIPTION__SELECTION_CANDIDATES_EXPRESSION = eINSTANCE.getSelectionDescription_SelectionCandidatesExpression(); + + /** + * The meta object literal for the 'Selection Message' attribute feature. + * + * @generated + */ + EAttribute SELECTION_DESCRIPTION__SELECTION_MESSAGE = eINSTANCE.getSelectionDescription_SelectionMessage(); + /** * The meta object literal for the '{@link org.eclipse.sirius.components.view.LayoutDirection Layout * Direction}' enum. diff --git a/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/impl/NodeToolImpl.java b/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/impl/NodeToolImpl.java index 97d8e21db9..7e61fbbaaa 100644 --- a/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/impl/NodeToolImpl.java +++ b/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/impl/NodeToolImpl.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2021 Obeo. + * Copyright (c) 2021, 2023 Obeo. * This program and the accompanying materials * are made available under the terms of the Eclipse Public License v2.0 * which accompanies this distribution, and is available at @@ -12,16 +12,38 @@ */ package org.eclipse.sirius.components.view.impl; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; +import org.eclipse.emf.ecore.impl.ENotificationImpl; import org.eclipse.sirius.components.view.NodeTool; +import org.eclipse.sirius.components.view.SelectionDescription; import org.eclipse.sirius.components.view.ViewPackage; /** * An implementation of the model object 'Node Tool'. + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link org.eclipse.sirius.components.view.impl.NodeToolImpl#getSelectionDescription Selection + * Description}
  • + *
* * @generated */ public class NodeToolImpl extends ToolImpl implements NodeTool { + /** + * The cached value of the '{@link #getSelectionDescription() Selection Description}' containment + * reference. + * + * @see #getSelectionDescription() + * @generated + * @ordered + */ + protected SelectionDescription selectionDescription; + /** * * @@ -41,4 +63,124 @@ protected EClass eStaticClass() { return ViewPackage.Literals.NODE_TOOL; } + /** + * + * + * @generated + */ + @Override + public SelectionDescription getSelectionDescription() { + return this.selectionDescription; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetSelectionDescription(SelectionDescription newSelectionDescription, NotificationChain msgs) { + SelectionDescription oldSelectionDescription = this.selectionDescription; + this.selectionDescription = newSelectionDescription; + if (this.eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ViewPackage.NODE_TOOL__SELECTION_DESCRIPTION, oldSelectionDescription, newSelectionDescription); + if (msgs == null) + msgs = notification; + else + msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + @Override + public void setSelectionDescription(SelectionDescription newSelectionDescription) { + if (newSelectionDescription != this.selectionDescription) { + NotificationChain msgs = null; + if (this.selectionDescription != null) + msgs = ((InternalEObject) this.selectionDescription).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ViewPackage.NODE_TOOL__SELECTION_DESCRIPTION, null, msgs); + if (newSelectionDescription != null) + msgs = ((InternalEObject) newSelectionDescription).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ViewPackage.NODE_TOOL__SELECTION_DESCRIPTION, null, msgs); + msgs = this.basicSetSelectionDescription(newSelectionDescription, msgs); + if (msgs != null) + msgs.dispatch(); + } else if (this.eNotificationRequired()) + this.eNotify(new ENotificationImpl(this, Notification.SET, ViewPackage.NODE_TOOL__SELECTION_DESCRIPTION, newSelectionDescription, newSelectionDescription)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case ViewPackage.NODE_TOOL__SELECTION_DESCRIPTION: + return this.basicSetSelectionDescription(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case ViewPackage.NODE_TOOL__SELECTION_DESCRIPTION: + return this.getSelectionDescription(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case ViewPackage.NODE_TOOL__SELECTION_DESCRIPTION: + this.setSelectionDescription((SelectionDescription) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case ViewPackage.NODE_TOOL__SELECTION_DESCRIPTION: + this.setSelectionDescription((SelectionDescription) null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case ViewPackage.NODE_TOOL__SELECTION_DESCRIPTION: + return this.selectionDescription != null; + } + return super.eIsSet(featureID); + } + } // NodeToolImpl diff --git a/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/impl/SelectionDescriptionImpl.java b/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/impl/SelectionDescriptionImpl.java new file mode 100644 index 0000000000..b1341f9ecd --- /dev/null +++ b/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/impl/SelectionDescriptionImpl.java @@ -0,0 +1,232 @@ +/** + * Copyright (c) 2021, 2023 Obeo. + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + */ +package org.eclipse.sirius.components.view.impl; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; +import org.eclipse.sirius.components.view.SelectionDescription; +import org.eclipse.sirius.components.view.ViewPackage; + +/** + * An implementation of the model object 'Selection Description'. + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link org.eclipse.sirius.components.view.impl.SelectionDescriptionImpl#getSelectionCandidatesExpression + * Selection Candidates Expression}
  • + *
  • {@link org.eclipse.sirius.components.view.impl.SelectionDescriptionImpl#getSelectionMessage Selection + * Message}
  • + *
+ * + * @generated + */ +public class SelectionDescriptionImpl extends MinimalEObjectImpl.Container implements SelectionDescription { + /** + * The default value of the '{@link #getSelectionCandidatesExpression() Selection Candidates Expression}' + * attribute. + * + * @see #getSelectionCandidatesExpression() + * @generated + * @ordered + */ + protected static final String SELECTION_CANDIDATES_EXPRESSION_EDEFAULT = "aql:self"; + + /** + * The cached value of the '{@link #getSelectionCandidatesExpression() Selection Candidates Expression}' + * attribute. + * + * @see #getSelectionCandidatesExpression() + * @generated + * @ordered + */ + protected String selectionCandidatesExpression = SELECTION_CANDIDATES_EXPRESSION_EDEFAULT; + + /** + * The default value of the '{@link #getSelectionMessage() Selection Message}' attribute. + * + * @see #getSelectionMessage() + * @generated + * @ordered + */ + protected static final String SELECTION_MESSAGE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getSelectionMessage() Selection Message}' attribute. + * + * @see #getSelectionMessage() + * @generated + * @ordered + */ + protected String selectionMessage = SELECTION_MESSAGE_EDEFAULT; + + /** + * + * + * @generated + */ + protected SelectionDescriptionImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return ViewPackage.Literals.SELECTION_DESCRIPTION; + } + + /** + * + * + * @generated + */ + @Override + public String getSelectionCandidatesExpression() { + return this.selectionCandidatesExpression; + } + + /** + * + * + * @generated + */ + @Override + public void setSelectionCandidatesExpression(String newSelectionCandidatesExpression) { + String oldSelectionCandidatesExpression = this.selectionCandidatesExpression; + this.selectionCandidatesExpression = newSelectionCandidatesExpression; + if (this.eNotificationRequired()) + this.eNotify(new ENotificationImpl(this, Notification.SET, ViewPackage.SELECTION_DESCRIPTION__SELECTION_CANDIDATES_EXPRESSION, oldSelectionCandidatesExpression, + this.selectionCandidatesExpression)); + } + + /** + * + * + * @generated + */ + @Override + public String getSelectionMessage() { + return this.selectionMessage; + } + + /** + * + * + * @generated + */ + @Override + public void setSelectionMessage(String newSelectionMessage) { + String oldSelectionMessage = this.selectionMessage; + this.selectionMessage = newSelectionMessage; + if (this.eNotificationRequired()) + this.eNotify(new ENotificationImpl(this, Notification.SET, ViewPackage.SELECTION_DESCRIPTION__SELECTION_MESSAGE, oldSelectionMessage, this.selectionMessage)); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case ViewPackage.SELECTION_DESCRIPTION__SELECTION_CANDIDATES_EXPRESSION: + return this.getSelectionCandidatesExpression(); + case ViewPackage.SELECTION_DESCRIPTION__SELECTION_MESSAGE: + return this.getSelectionMessage(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case ViewPackage.SELECTION_DESCRIPTION__SELECTION_CANDIDATES_EXPRESSION: + this.setSelectionCandidatesExpression((String) newValue); + return; + case ViewPackage.SELECTION_DESCRIPTION__SELECTION_MESSAGE: + this.setSelectionMessage((String) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case ViewPackage.SELECTION_DESCRIPTION__SELECTION_CANDIDATES_EXPRESSION: + this.setSelectionCandidatesExpression(SELECTION_CANDIDATES_EXPRESSION_EDEFAULT); + return; + case ViewPackage.SELECTION_DESCRIPTION__SELECTION_MESSAGE: + this.setSelectionMessage(SELECTION_MESSAGE_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case ViewPackage.SELECTION_DESCRIPTION__SELECTION_CANDIDATES_EXPRESSION: + return SELECTION_CANDIDATES_EXPRESSION_EDEFAULT == null ? this.selectionCandidatesExpression != null + : !SELECTION_CANDIDATES_EXPRESSION_EDEFAULT.equals(this.selectionCandidatesExpression); + case ViewPackage.SELECTION_DESCRIPTION__SELECTION_MESSAGE: + return SELECTION_MESSAGE_EDEFAULT == null ? this.selectionMessage != null : !SELECTION_MESSAGE_EDEFAULT.equals(this.selectionMessage); + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public String toString() { + if (this.eIsProxy()) + return super.toString(); + + StringBuilder result = new StringBuilder(super.toString()); + result.append(" (selectionCandidatesExpression: "); + result.append(this.selectionCandidatesExpression); + result.append(", selectionMessage: "); + result.append(this.selectionMessage); + result.append(')'); + return result.toString(); + } + +} // SelectionDescriptionImpl diff --git a/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/impl/ViewFactoryImpl.java b/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/impl/ViewFactoryImpl.java index 208571571a..ddaf1a48db 100644 --- a/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/impl/ViewFactoryImpl.java +++ b/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/impl/ViewFactoryImpl.java @@ -88,6 +88,7 @@ import org.eclipse.sirius.components.view.RichTextDescription; import org.eclipse.sirius.components.view.SelectDescription; import org.eclipse.sirius.components.view.SelectDescriptionStyle; +import org.eclipse.sirius.components.view.SelectionDescription; import org.eclipse.sirius.components.view.SetValue; import org.eclipse.sirius.components.view.SourceEdgeEndReconnectionTool; import org.eclipse.sirius.components.view.SynchronizationPolicy; @@ -287,6 +288,8 @@ public EObject create(EClass eClass) { return this.createNodePalette(); case ViewPackage.EDGE_PALETTE: return this.createEdgePalette(); + case ViewPackage.SELECTION_DESCRIPTION: + return this.createSelectionDescription(); default: throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); } @@ -1169,6 +1172,17 @@ public EdgePalette createEdgePalette() { return edgePalette; } + /** + * + * + * @generated + */ + @Override + public SelectionDescription createSelectionDescription() { + SelectionDescriptionImpl selectionDescription = new SelectionDescriptionImpl(); + return selectionDescription; + } + /** * * diff --git a/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/impl/ViewPackageImpl.java b/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/impl/ViewPackageImpl.java index a9f91d01e7..0cb7da1e1c 100644 --- a/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/impl/ViewPackageImpl.java +++ b/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/impl/ViewPackageImpl.java @@ -98,6 +98,7 @@ import org.eclipse.sirius.components.view.RichTextDescription; import org.eclipse.sirius.components.view.SelectDescription; import org.eclipse.sirius.components.view.SelectDescriptionStyle; +import org.eclipse.sirius.components.view.SelectionDescription; import org.eclipse.sirius.components.view.SetValue; import org.eclipse.sirius.components.view.SourceEdgeEndReconnectionTool; import org.eclipse.sirius.components.view.Style; @@ -731,6 +732,13 @@ public class ViewPackageImpl extends EPackageImpl implements ViewPackage { */ private EClass edgePaletteEClass = null; + /** + * + * + * @generated + */ + private EClass selectionDescriptionEClass = null; + /** * * @@ -1756,6 +1764,16 @@ public EClass getNodeTool() { return this.nodeToolEClass; } + /** + * + * + * @generated + */ + @Override + public EReference getNodeTool_SelectionDescription() { + return (EReference) this.nodeToolEClass.getEStructuralFeatures().get(0); + } + /** * * @@ -3656,6 +3674,36 @@ public EReference getEdgePalette_EdgeReconnectionTools() { return (EReference) this.edgePaletteEClass.getEStructuralFeatures().get(5); } + /** + * + * + * @generated + */ + @Override + public EClass getSelectionDescription() { + return this.selectionDescriptionEClass; + } + + /** + * + * + * @generated + */ + @Override + public EAttribute getSelectionDescription_SelectionCandidatesExpression() { + return (EAttribute) this.selectionDescriptionEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + @Override + public EAttribute getSelectionDescription_SelectionMessage() { + return (EAttribute) this.selectionDescriptionEClass.getEStructuralFeatures().get(1); + } + /** * * @@ -3916,6 +3964,7 @@ public void createPackageContents() { this.deleteToolEClass = this.createEClass(DELETE_TOOL); this.nodeToolEClass = this.createEClass(NODE_TOOL); + this.createEReference(this.nodeToolEClass, NODE_TOOL__SELECTION_DESCRIPTION); this.edgeToolEClass = this.createEClass(EDGE_TOOL); this.createEReference(this.edgeToolEClass, EDGE_TOOL__TARGET_ELEMENT_DESCRIPTIONS); @@ -4170,6 +4219,10 @@ public void createPackageContents() { this.createEReference(this.edgePaletteEClass, EDGE_PALETTE__NODE_TOOLS); this.createEReference(this.edgePaletteEClass, EDGE_PALETTE__EDGE_RECONNECTION_TOOLS); + this.selectionDescriptionEClass = this.createEClass(SELECTION_DESCRIPTION); + this.createEAttribute(this.selectionDescriptionEClass, SELECTION_DESCRIPTION__SELECTION_CANDIDATES_EXPRESSION); + this.createEAttribute(this.selectionDescriptionEClass, SELECTION_DESCRIPTION__SELECTION_MESSAGE); + // Create enums this.layoutDirectionEEnum = this.createEEnum(LAYOUT_DIRECTION); this.arrowStyleEEnum = this.createEEnum(ARROW_STYLE); @@ -4488,6 +4541,8 @@ public void initializePackageContents() { this.initEClass(this.deleteToolEClass, DeleteTool.class, "DeleteTool", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); this.initEClass(this.nodeToolEClass, NodeTool.class, "NodeTool", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + this.initEReference(this.getNodeTool_SelectionDescription(), this.getSelectionDescription(), null, "selectionDescription", null, 0, 1, NodeTool.class, !IS_TRANSIENT, !IS_VOLATILE, + IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); this.initEClass(this.edgeToolEClass, EdgeTool.class, "EdgeTool", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); this.initEReference(this.getEdgeTool_TargetElementDescriptions(), this.getDiagramElementDescription(), null, "targetElementDescriptions", null, 0, -1, EdgeTool.class, !IS_TRANSIENT, @@ -4879,6 +4934,12 @@ public void initializePackageContents() { this.initEReference(this.getEdgePalette_EdgeReconnectionTools(), this.getEdgeReconnectionTool(), null, "edgeReconnectionTools", null, 0, -1, EdgePalette.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + this.initEClass(this.selectionDescriptionEClass, SelectionDescription.class, "SelectionDescription", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + this.initEAttribute(this.getSelectionDescription_SelectionCandidatesExpression(), this.getInterpretedExpression(), "selectionCandidatesExpression", "aql:self", 0, 1, + SelectionDescription.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + this.initEAttribute(this.getSelectionDescription_SelectionMessage(), this.ecorePackage.getEString(), "selectionMessage", null, 0, 1, SelectionDescription.class, !IS_TRANSIENT, !IS_VOLATILE, + IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + // Initialize enums and add enum literals this.initEEnum(this.layoutDirectionEEnum, LayoutDirection.class, "LayoutDirection"); this.addEEnumLiteral(this.layoutDirectionEEnum, LayoutDirection.COLUMN); diff --git a/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/util/ViewAdapterFactory.java b/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/util/ViewAdapterFactory.java index 52d3a12c62..eca5690a0d 100644 --- a/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/util/ViewAdapterFactory.java +++ b/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/util/ViewAdapterFactory.java @@ -89,6 +89,7 @@ import org.eclipse.sirius.components.view.RichTextDescription; import org.eclipse.sirius.components.view.SelectDescription; import org.eclipse.sirius.components.view.SelectDescriptionStyle; +import org.eclipse.sirius.components.view.SelectionDescription; import org.eclipse.sirius.components.view.SetValue; import org.eclipse.sirius.components.view.SourceEdgeEndReconnectionTool; import org.eclipse.sirius.components.view.Style; @@ -591,6 +592,11 @@ public Adapter caseEdgePalette(EdgePalette object) { return ViewAdapterFactory.this.createEdgePaletteAdapter(); } + @Override + public Adapter caseSelectionDescription(SelectionDescription object) { + return ViewAdapterFactory.this.createSelectionDescriptionAdapter(); + } + @Override public Adapter defaultCase(EObject object) { return ViewAdapterFactory.this.createEObjectAdapter(); @@ -1306,8 +1312,8 @@ public Adapter createRadioDescriptionAdapter() { * end-user-doc --> * * @return the new adapter. - * @generated * @see org.eclipse.sirius.components.view.BarChartDescription + * @generated */ public Adapter createBarChartDescriptionAdapter() { return null; @@ -1320,8 +1326,8 @@ public Adapter createBarChartDescriptionAdapter() { * end-user-doc --> * * @return the new adapter. - * @generated * @see org.eclipse.sirius.components.view.PieChartDescription + * @generated */ public Adapter createPieChartDescriptionAdapter() { return null; @@ -1334,8 +1340,8 @@ public Adapter createPieChartDescriptionAdapter() { * to ignore a case when inheritance will catch all the cases anyway. * * @return the new adapter. - * @generated * @see org.eclipse.sirius.components.view.FlexboxContainerDescription + * @generated */ public Adapter createFlexboxContainerDescriptionAdapter() { return null; @@ -1348,8 +1354,8 @@ public Adapter createFlexboxContainerDescriptionAdapter() { * end-user-doc --> * * @return the new adapter. - * @generated * @see org.eclipse.sirius.components.view.ButtonDescription + * @generated */ public Adapter createButtonDescriptionAdapter() { return null; @@ -1362,8 +1368,8 @@ public Adapter createButtonDescriptionAdapter() { * end-user-doc --> * * @return the new adapter. - * @generated * @see org.eclipse.sirius.components.view.ImageDescription + * @generated */ public Adapter createImageDescriptionAdapter() { return null; @@ -1805,6 +1811,20 @@ public Adapter createEdgePaletteAdapter() { return null; } + /** + * Creates a new adapter for an object of class '{@link org.eclipse.sirius.components.view.SelectionDescription + * Selection Description}'. This default implementation returns null so that we can + * easily ignore cases; it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see org.eclipse.sirius.components.view.SelectionDescription + * @generated + */ + public Adapter createSelectionDescriptionAdapter() { + return null; + } + /** * Creates a new adapter for the default case. This default implementation returns null. * diff --git a/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/util/ViewSwitch.java b/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/util/ViewSwitch.java index 988cac1f1a..068fee48e9 100644 --- a/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/util/ViewSwitch.java +++ b/packages/view/backend/sirius-components-view/src/main/java/org/eclipse/sirius/components/view/util/ViewSwitch.java @@ -88,6 +88,7 @@ import org.eclipse.sirius.components.view.RichTextDescription; import org.eclipse.sirius.components.view.SelectDescription; import org.eclipse.sirius.components.view.SelectDescriptionStyle; +import org.eclipse.sirius.components.view.SelectionDescription; import org.eclipse.sirius.components.view.SetValue; import org.eclipse.sirius.components.view.SourceEdgeEndReconnectionTool; import org.eclipse.sirius.components.view.Style; @@ -1026,6 +1027,13 @@ protected T doSwitch(int classifierID, EObject theEObject) { result = this.defaultCase(theEObject); return result; } + case ViewPackage.SELECTION_DESCRIPTION: { + SelectionDescription selectionDescription = (SelectionDescription) theEObject; + T result = this.caseSelectionDescription(selectionDescription); + if (result == null) + result = this.defaultCase(theEObject); + return result; + } default: return this.defaultCase(theEObject); } @@ -1782,7 +1790,8 @@ public T caseRadioDescription(RadioDescription object) { * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the switch. * - * @param object the target of the switch. + * @param object + * the target of the switch. * @return the result of interpreting the object as an instance of 'Bar Chart Description'. * @generated * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) @@ -1796,7 +1805,8 @@ public T caseBarChartDescription(BarChartDescription object) { * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the switch. * - * @param object the target of the switch. + * @param object + * the target of the switch. * @return the result of interpreting the object as an instance of 'Pie Chart Description'. * @generated * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) @@ -1810,7 +1820,8 @@ public T casePieChartDescription(PieChartDescription object) { * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the switch. * - * @param object the target of the switch. + * @param object + * the target of the switch. * @return the result of interpreting the object as an instance of 'Flexbox Container Description'. * @generated * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) @@ -1824,7 +1835,8 @@ public T caseFlexboxContainerDescription(FlexboxContainerDescription object) { * begin-user-doc --> This implementation returns null; returning a non-null result will terminate the switch. * - * @param object the target of the switch. + * @param object + * the target of the switch. * @return the result of interpreting the object as an instance of 'Button Description'. * @generated * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) @@ -1838,7 +1850,8 @@ public T caseButtonDescription(ButtonDescription object) { * --> This implementation returns null; returning a non-null result will terminate the switch. * - * @param object the target of the switch. + * @param object + * the target of the switch. * @return the result of interpreting the object as an instance of 'Image Description'. * @generated * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) @@ -2316,6 +2329,21 @@ public T caseEdgePalette(EdgePalette object) { return null; } + /** + * Returns the result of interpreting the object as an instance of 'Selection Description'. This implementation returns null; returning a non-null result will terminate the switch. + * + * @param object + * the target of the switch. + * @return the result of interpreting the object as an instance of 'Selection Description'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseSelectionDescription(SelectionDescription object) { + return null; + } + /** * Returns the result of interpreting the object as an instance of 'EObject'. This * implementation returns null; returning a non-null result will terminate the switch, but this is the last case diff --git a/packages/view/backend/sirius-components-view/src/main/resources/model/view.ecore b/packages/view/backend/sirius-components-view/src/main/resources/model/view.ecore index d6731bbbec..ca00e6b685 100644 --- a/packages/view/backend/sirius-components-view/src/main/resources/model/view.ecore +++ b/packages/view/backend/sirius-components-view/src/main/resources/model/view.ecore @@ -190,7 +190,10 @@ eType="#//InterpretedExpression"/> - + + + @@ -528,4 +531,9 @@ + + + + diff --git a/packages/view/backend/sirius-components-view/src/main/resources/model/view.genmodel b/packages/view/backend/sirius-components-view/src/main/resources/model/view.genmodel index 049dc1ef73..87581fd02e 100644 --- a/packages/view/backend/sirius-components-view/src/main/resources/model/view.genmodel +++ b/packages/view/backend/sirius-components-view/src/main/resources/model/view.genmodel @@ -165,7 +165,9 @@ - + + + @@ -400,5 +402,9 @@ + + + +