From 6cee5427161029256b3ad4853fb2d350055811b6 Mon Sep 17 00:00:00 2001 From: eschleb Date: Thu, 18 Apr 2024 14:55:48 +0200 Subject: [PATCH] Implement multiSelect (optional, default is multiSelect=false) --- .../appbuilder/builder/BrowserAppBuilder.java | 38 +++++++++++-------- .../builder/DefaultContentViewFactory.java | 16 ++++---- .../ContentAppContextMenuDefinition.java | 11 ++++-- .../RootAppContextMenuDefinition.java | 4 +- 4 files changed, 42 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/namics/oss/magnolia/appbuilder/builder/BrowserAppBuilder.java b/src/main/java/com/namics/oss/magnolia/appbuilder/builder/BrowserAppBuilder.java index b5f3c08..f409eed 100644 --- a/src/main/java/com/namics/oss/magnolia/appbuilder/builder/BrowserAppBuilder.java +++ b/src/main/java/com/namics/oss/magnolia/appbuilder/builder/BrowserAppBuilder.java @@ -1,17 +1,5 @@ package com.namics.oss.magnolia.appbuilder.builder; -import com.namics.oss.magnolia.appbuilder.MgnlIcon; -import com.namics.oss.magnolia.appbuilder.action.AppActionDefinition; -import com.namics.oss.magnolia.appbuilder.action.AppActionGroupDefinition; -import com.namics.oss.magnolia.appbuilder.action.AvailabilityDefinitionBuilder; -import com.namics.oss.magnolia.appbuilder.action.DoubleClickAction; -import com.namics.oss.magnolia.appbuilder.action.rule.JcrIsNotDeletedRuleDefinition; -import com.namics.oss.magnolia.appbuilder.builder.action.NodeTypeToActionDelegatingActionDefinition; -import com.namics.oss.magnolia.appbuilder.contextmenu.AppContextMenuDefinition; -import com.namics.oss.magnolia.appbuilder.contextmenu.ContentAppContextMenuDefinition; -import com.namics.oss.magnolia.appbuilder.contextmenu.RootAppContextMenuDefinition; -import com.namics.oss.magnolia.appbuilder.dropconstraint.NodeTypeConstraintAwareDropConstraintDefinition; -import com.vaadin.shared.data.sort.SortDirection; import info.magnolia.ui.actionbar.definition.ActionbarDefinition; import info.magnolia.ui.actionbar.definition.ActionbarSectionDefinition; import info.magnolia.ui.actionbar.definition.ConfiguredActionbarDefinition; @@ -25,12 +13,32 @@ import info.magnolia.ui.datasource.DatasourceDefinition; import info.magnolia.ui.datasource.jcr.JcrDatasourceDefinition; -import javax.annotation.Nullable; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.Set; import java.util.function.BiFunction; import java.util.stream.Collectors; import java.util.stream.Stream; +import javax.annotation.Nullable; + +import com.namics.oss.magnolia.appbuilder.MgnlIcon; +import com.namics.oss.magnolia.appbuilder.action.AppActionDefinition; +import com.namics.oss.magnolia.appbuilder.action.AppActionGroupDefinition; +import com.namics.oss.magnolia.appbuilder.action.AvailabilityDefinitionBuilder; +import com.namics.oss.magnolia.appbuilder.action.DoubleClickAction; +import com.namics.oss.magnolia.appbuilder.action.rule.JcrIsNotDeletedRuleDefinition; +import com.namics.oss.magnolia.appbuilder.builder.action.NodeTypeToActionDelegatingActionDefinition; +import com.namics.oss.magnolia.appbuilder.contextmenu.AppContextMenuDefinition; +import com.namics.oss.magnolia.appbuilder.contextmenu.ContentAppContextMenuDefinition; +import com.namics.oss.magnolia.appbuilder.contextmenu.RootAppContextMenuDefinition; +import com.namics.oss.magnolia.appbuilder.dropconstraint.NodeTypeConstraintAwareDropConstraintDefinition; +import com.vaadin.shared.data.sort.SortDirection; + public class BrowserAppBuilder { private final List contentContextMenuDefinitions = new ArrayList<>(); private List rootActions = Collections.emptyList(); @@ -142,7 +150,7 @@ public BrowserDescriptor build(final DS datasourceDefinition) { dropConstraint = new NodeTypeConstraintAwareDropConstraintDefinition(); } definition.setWorkbench(workbench( - contentViewFactory != null ? contentViewFactory : new DefaultContentViewFactory<>(dropConstraint), + contentViewFactory != null ? contentViewFactory : new DefaultContentViewFactory<>(false), getColumnDefinitions(), dropConstraint )); diff --git a/src/main/java/com/namics/oss/magnolia/appbuilder/builder/DefaultContentViewFactory.java b/src/main/java/com/namics/oss/magnolia/appbuilder/builder/DefaultContentViewFactory.java index 84d54ec..8633450 100644 --- a/src/main/java/com/namics/oss/magnolia/appbuilder/builder/DefaultContentViewFactory.java +++ b/src/main/java/com/namics/oss/magnolia/appbuilder/builder/DefaultContentViewFactory.java @@ -9,24 +9,26 @@ import java.util.List; import java.util.function.BiFunction; -class DefaultContentViewFactory implements BiFunction>, List>> { - private final DropConstraintDefinition dropConstraint; +public class DefaultContentViewFactory implements BiFunction>, List>> { + private final boolean multiSelect; - public DefaultContentViewFactory(final DropConstraintDefinition dropConstraint) { - this.dropConstraint = dropConstraint; - } + public DefaultContentViewFactory(final boolean multiSelect) { + this.multiSelect = multiSelect; + } - @Override - public List> apply(DropConstraintDefinition dropConstraintDefinition, List> columnDefinitions) { + @Override + public List> apply(final DropConstraintDefinition dropConstraint, final List> columnDefinitions) { final TreeViewDefinition tree = new TreeViewDefinition<>(); tree.setName("tree"); tree.setColumns(columnDefinitions); tree.setDropConstraint(dropConstraint); + tree.setMultiSelect(multiSelect); final ListViewDefinition list = new ListViewDefinition<>(); list.setName("list"); list.setColumns(columnDefinitions); list.setDropConstraint(dropConstraint); + list.setMultiSelect(multiSelect); return List.of(tree, list); } } diff --git a/src/main/java/com/namics/oss/magnolia/appbuilder/contextmenu/ContentAppContextMenuDefinition.java b/src/main/java/com/namics/oss/magnolia/appbuilder/contextmenu/ContentAppContextMenuDefinition.java index adee1c0..cb08d8f 100644 --- a/src/main/java/com/namics/oss/magnolia/appbuilder/contextmenu/ContentAppContextMenuDefinition.java +++ b/src/main/java/com/namics/oss/magnolia/appbuilder/contextmenu/ContentAppContextMenuDefinition.java @@ -1,18 +1,20 @@ package com.namics.oss.magnolia.appbuilder.contextmenu; -import com.namics.oss.magnolia.appbuilder.action.AppActionDefinition; -import com.namics.oss.magnolia.appbuilder.action.AppActionGroupDefinition; -import com.namics.oss.magnolia.appbuilder.action.DoubleClickAction; import info.magnolia.ui.actionbar.definition.ActionbarSectionDefinition; import info.magnolia.ui.actionbar.definition.ConfiguredActionbarSectionDefinition; import info.magnolia.ui.api.availability.ConfiguredAvailabilityDefinition; -import javax.annotation.Nullable; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.Stream; +import javax.annotation.Nullable; + +import com.namics.oss.magnolia.appbuilder.action.AppActionDefinition; +import com.namics.oss.magnolia.appbuilder.action.AppActionGroupDefinition; +import com.namics.oss.magnolia.appbuilder.action.DoubleClickAction; + public class ContentAppContextMenuDefinition extends AbstractAppContextMenuDefinition implements AppContextMenuDefinition { private final String nodeType; @Nullable @@ -28,6 +30,7 @@ public ContentAppContextMenuDefinition( final ConfiguredAvailabilityDefinition definition = new ConfiguredAvailabilityDefinition(); definition.setRoot(false); definition.setNodes(true); + definition.setMultiple(true); definition.addNodeType(nodeType); return definition; }, diff --git a/src/main/java/com/namics/oss/magnolia/appbuilder/contextmenu/RootAppContextMenuDefinition.java b/src/main/java/com/namics/oss/magnolia/appbuilder/contextmenu/RootAppContextMenuDefinition.java index 7a8108c..d1623ed 100644 --- a/src/main/java/com/namics/oss/magnolia/appbuilder/contextmenu/RootAppContextMenuDefinition.java +++ b/src/main/java/com/namics/oss/magnolia/appbuilder/contextmenu/RootAppContextMenuDefinition.java @@ -1,6 +1,5 @@ package com.namics.oss.magnolia.appbuilder.contextmenu; -import com.namics.oss.magnolia.appbuilder.action.AppActionGroupDefinition; import info.magnolia.ui.actionbar.definition.ActionbarSectionDefinition; import info.magnolia.ui.actionbar.definition.ConfiguredActionbarSectionDefinition; import info.magnolia.ui.api.availability.ConfiguredAvailabilityDefinition; @@ -9,6 +8,8 @@ import java.util.stream.Collectors; import java.util.stream.Stream; +import com.namics.oss.magnolia.appbuilder.action.AppActionGroupDefinition; + public class RootAppContextMenuDefinition extends AbstractAppContextMenuDefinition implements AppContextMenuDefinition { public RootAppContextMenuDefinition(final List actionGroups) { @@ -18,6 +19,7 @@ public RootAppContextMenuDefinition(final List actionG final ConfiguredAvailabilityDefinition definition = new ConfiguredAvailabilityDefinition(); definition.setRoot(true); definition.setNodes(false); + definition.setMultiple(true); return definition; }, actionGroups