1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.ui.contentapp.action;
35
36 import info.magnolia.ui.api.action.ActionType;
37 import info.magnolia.ui.api.action.ConfiguredActionDefinition;
38 import info.magnolia.ui.api.availability.ConfiguredAvailabilityDefinition;
39 import info.magnolia.ui.availability.rule.CanMoveRuleDefinition;
40 import info.magnolia.ui.dialog.layout.DefaultEditorActionLayoutDefinition;
41 import info.magnolia.ui.chooser.definition.SingleItemWorkbenchChooserDefinition;
42
43 import java.util.Arrays;
44 import java.util.Collections;
45
46 import com.vaadin.shared.ui.grid.DropLocation;
47
48
49
50
51 @ActionType("moveAction")
52 public class MoveActionDefinition<T> extends ConfiguredActionDefinition {
53
54 private MoveWorkbenchDefinition<T> chooser;
55
56 public MoveActionDefinition() {
57 setImplementationClass(MoveAction.class);
58 }
59
60 public MoveWorkbenchDefinition<T> getChooser() {
61 return chooser;
62 }
63
64 public void setChooser(MoveWorkbenchDefinition<T> chooser) {
65 this.chooser = chooser;
66 }
67
68
69
70
71
72 public static class MoveWorkbenchDefinition<T> extends SingleItemWorkbenchChooserDefinition<T> {
73
74 private static final String BEFORE = DropLocation.ABOVE.name().toLowerCase();
75 private static final String AFTER = DropLocation.BELOW.name().toLowerCase();
76
77 public MoveWorkbenchDefinition() {
78 getActions().put("commit", configureAvailability(new ChooseActionDefinition()));
79 getActions().put(BEFORE, configureAvailability(new ChooseActionDefinition(BEFORE)));
80 getActions().put(AFTER, configureAvailability(new ChooseActionDefinition(AFTER)));
81
82 final DefaultEditorActionLayoutDefinitionnition.html#DefaultEditorActionLayoutDefinition">DefaultEditorActionLayoutDefinition footerLayout = new DefaultEditorActionLayoutDefinition();
83 footerLayout.setSecondaryActions(Arrays.asList(BEFORE, AFTER));
84 setFooterLayout(footerLayout);
85 }
86
87 private ConfiguredActionDefinitionapi/action/ConfiguredActionDefinition.html#ConfiguredActionDefinition">ConfiguredActionDefinition configureAvailability(ConfiguredActionDefinition actionDefinition) {
88 final ConfiguredAvailabilityDefinitionefinition.html#ConfiguredAvailabilityDefinition">ConfiguredAvailabilityDefinition availability = new ConfiguredAvailabilityDefinition();
89 availability.setRoot(true);
90 availability.setRules(Collections.singleton(new CanMoveRuleDefinition()));
91 actionDefinition.setAvailability(availability);
92 return actionDefinition;
93 }
94 }
95
96 }