Skip to content

Commit

Permalink
Implement multiSelect (optional, default is multiSelect=false)
Browse files Browse the repository at this point in the history
  • Loading branch information
eschleb committed Apr 18, 2024
1 parent 3e90165 commit 6cee542
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 27 deletions.
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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<T, DS extends DatasourceDefinition> {
private final List<ContentAppContextMenuDefinition> contentContextMenuDefinitions = new ArrayList<>();
private List<AppActionGroupDefinition> rootActions = Collections.emptyList();
Expand Down Expand Up @@ -142,7 +150,7 @@ public BrowserDescriptor<T, DS> build(final DS datasourceDefinition) {
dropConstraint = new NodeTypeConstraintAwareDropConstraintDefinition();
}
definition.setWorkbench(workbench(
contentViewFactory != null ? contentViewFactory : new DefaultContentViewFactory<>(dropConstraint),
contentViewFactory != null ? contentViewFactory : new DefaultContentViewFactory<>(false),
getColumnDefinitions(),
dropConstraint
));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,24 +9,26 @@
import java.util.List;
import java.util.function.BiFunction;

class DefaultContentViewFactory<T> implements BiFunction<DropConstraintDefinition, List<ColumnDefinition<T>>, List<ContentViewDefinition<T>>> {
private final DropConstraintDefinition dropConstraint;
public class DefaultContentViewFactory<T> implements BiFunction<DropConstraintDefinition, List<ColumnDefinition<T>>, List<ContentViewDefinition<T>>> {
private final boolean multiSelect;

public DefaultContentViewFactory(final DropConstraintDefinition dropConstraint) {
this.dropConstraint = dropConstraint;
}
public DefaultContentViewFactory(final boolean multiSelect) {
this.multiSelect = multiSelect;
}

@Override
public List<ContentViewDefinition<T>> apply(DropConstraintDefinition dropConstraintDefinition, List<ColumnDefinition<T>> columnDefinitions) {
@Override
public List<ContentViewDefinition<T>> apply(final DropConstraintDefinition dropConstraint, final List<ColumnDefinition<T>> columnDefinitions) {
final TreeViewDefinition<T> tree = new TreeViewDefinition<>();
tree.setName("tree");
tree.setColumns(columnDefinitions);
tree.setDropConstraint(dropConstraint);
tree.setMultiSelect(multiSelect);

final ListViewDefinition<T> list = new ListViewDefinition<>();
list.setName("list");
list.setColumns(columnDefinitions);
list.setDropConstraint(dropConstraint);
list.setMultiSelect(multiSelect);
return List.of(tree, list);
}
}
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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;
},
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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<AppActionGroupDefinition> actionGroups) {
Expand All @@ -18,6 +19,7 @@ public RootAppContextMenuDefinition(final List<AppActionGroupDefinition> actionG
final ConfiguredAvailabilityDefinition definition = new ConfiguredAvailabilityDefinition();
definition.setRoot(true);
definition.setNodes(false);
definition.setMultiple(true);
return definition;
},
actionGroups
Expand Down

0 comments on commit 6cee542

Please sign in to comment.