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 static info.magnolia.ui.contentapp.action.ChooseActionDefinition.CHOOSE_ACTION_NAME;
37 import static info.magnolia.ui.contentapp.action.CloseActionDefinition.CLOSE_ACTION_NAME;
38
39 import info.magnolia.ui.api.action.ActionType;
40 import info.magnolia.ui.api.action.ConfiguredActionDefinition;
41 import info.magnolia.ui.api.availability.ConfiguredAvailabilityDefinition;
42 import info.magnolia.ui.availability.rule.CanMoveRuleDefinition;
43 import info.magnolia.ui.dialog.layout.DefaultEditorActionLayoutDefinition;
44 import info.magnolia.ui.chooser.definition.SingleItemWorkbenchChooserDefinition;
45
46 import java.util.Arrays;
47 import java.util.Collections;
48
49 import com.vaadin.shared.ui.grid.DropLocation;
50
51
52
53
54 @ActionType("moveAction")
55 public class MoveActionDefinition<T> extends ConfiguredActionDefinition {
56
57 private MoveWorkbenchDefinition<T> chooser;
58
59 public MoveActionDefinition() {
60 setImplementationClass(MoveAction.class);
61 }
62
63 public MoveWorkbenchDefinition<T> getChooser() {
64 return chooser;
65 }
66
67 public void setChooser(MoveWorkbenchDefinition<T> chooser) {
68 this.chooser = chooser;
69 }
70
71
72
73
74
75 public static class MoveWorkbenchDefinition<T> extends SingleItemWorkbenchChooserDefinition<T> {
76
77 private static final String BEFORE = DropLocation.ABOVE.name().toLowerCase();
78 private static final String AFTER = DropLocation.BELOW.name().toLowerCase();
79
80 public MoveWorkbenchDefinition() {
81 getActions().put(CHOOSE_ACTION_NAME, configureAvailability(new ChooseActionDefinition()));
82 getActions().put(BEFORE, configureAvailability(new ChooseActionDefinition(BEFORE)));
83 getActions().put(AFTER, configureAvailability(new ChooseActionDefinition(AFTER)));
84
85 final DefaultEditorActionLayoutDefinitionnition.html#DefaultEditorActionLayoutDefinition">DefaultEditorActionLayoutDefinition footerLayout = new DefaultEditorActionLayoutDefinition();
86 footerLayout.setSecondaryActions(Arrays.asList(BEFORE, AFTER));
87 footerLayout.setPrimaryActions(Arrays.asList(CHOOSE_ACTION_NAME, CLOSE_ACTION_NAME));
88 setFooterLayout(footerLayout);
89 }
90
91 private ConfiguredActionDefinitionapi/action/ConfiguredActionDefinition.html#ConfiguredActionDefinition">ConfiguredActionDefinition configureAvailability(ConfiguredActionDefinition actionDefinition) {
92 final ConfiguredAvailabilityDefinitionefinition.html#ConfiguredAvailabilityDefinition">ConfiguredAvailabilityDefinition availability = new ConfiguredAvailabilityDefinition();
93 availability.setRoot(true);
94 availability.setRules(Collections.singleton(new CanMoveRuleDefinition()));
95 actionDefinition.setAvailability(availability);
96 return actionDefinition;
97 }
98 }
99
100 }