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.mediaeditor.action;
35
36 import info.magnolia.event.EventBus;
37 import info.magnolia.ui.api.action.ActionExecutionException;
38 import info.magnolia.ui.api.view.View;
39 import info.magnolia.ui.dialog.actionarea.renderer.ActionRenderer;
40 import info.magnolia.ui.dialog.actionarea.renderer.DefaultEditorActionRenderer;
41 import info.magnolia.ui.mediaeditor.MediaEditorEventBus;
42 import info.magnolia.ui.mediaeditor.MediaEditorView;
43 import info.magnolia.ui.mediaeditor.data.EditHistoryTrackingProperty;
44 import info.magnolia.ui.mediaeditor.field.MediaField;
45 import info.magnolia.ui.mediaeditor.provider.MediaEditorActionDefinition;
46
47 import java.util.Iterator;
48 import java.util.List;
49
50 import javax.inject.Named;
51
52 import org.slf4j.Logger;
53 import org.slf4j.LoggerFactory;
54
55 import com.vaadin.ui.Component;
56
57
58
59
60
61 public abstract class MediaEditorUIAction extends MediaEditorAction {
62 private static final Logger log = LoggerFactory.getLogger(MediaEditorUIAction.class);
63
64 protected MediaEditorView view;
65
66 public MediaEditorUIAction(MediaEditorActionDefinition definition, MediaEditorView view, EditHistoryTrackingProperty dataSource, @Named(MediaEditorEventBus.NAME) EventBus eventBus) {
67 super(definition, dataSource, eventBus);
68 this.view = view;
69 }
70
71 @Override
72 public void execute() throws ActionExecutionException {
73 MediaField newMediaField = createMediaField();
74 if (newMediaField != null) {
75 view.clearActions();
76 view.setMediaContent(newMediaField);
77 view.setToolbar(getStatusControls());
78
79 List<ActionContext> actionContexts = getActionContextList();
80 Iterator<ActionContext> it = actionContexts.iterator();
81 boolean defaultIsSet = false;
82 while (it.hasNext()) {
83 ActionContext action = it.next();
84 ActionRenderer actionRenderer = new DefaultEditorActionRenderer();
85 View actionView = actionRenderer.start(action.getDefinition(), action.getListener());
86 view.getDialog().getActionAreaView().addPrimaryAction(actionView, action.getDefinition().getName());
87 if (!defaultIsSet) {
88 actionView.asVaadinComponent().addStyleName("default commit");
89 defaultIsSet = true;
90 }
91 }
92 newMediaField.setPropertyDataSource(dataSource);
93 } else {
94 log.warn("Provider did not provide any content UI ");
95 }
96
97 }
98
99 protected abstract List<ActionContext> getActionContextList();
100
101 protected abstract Component getStatusControls();
102
103 protected abstract MediaField createMediaField();
104
105
106 }