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.i18nsystem.SimpleTranslator;
38 import info.magnolia.ui.api.action.ActionExecutionException;
39 import info.magnolia.ui.ValueContext;
40 import info.magnolia.ui.mediaeditor.MediaEditorEventBus;
41 import info.magnolia.ui.mediaeditor.MediaEditorView;
42 import info.magnolia.ui.mediaeditor.data.MediaState;
43 import info.magnolia.ui.mediaeditor.event.MediaEditorInternalEvent;
44 import info.magnolia.ui.mediaeditor.event.MediaEditorInternalEvent.EventType;
45 import info.magnolia.ui.mediaeditor.field.MediaField;
46 import info.magnolia.ui.mediaeditor.field.image.ViewImageField;
47 import info.magnolia.ui.mediaeditor.provider.MediaEditorActionDefinition;
48
49 import java.util.ArrayList;
50 import java.util.List;
51
52 import javax.inject.Named;
53
54 import com.google.common.collect.Sets;
55 import com.vaadin.ui.Component;
56 import com.vaadin.ui.Label;
57
58
59
60
61
62 public class ViewImageAction extends MediaEditorUIAction {
63
64 private ViewImageFieldmage/ViewImageField.html#ViewImageField">ViewImageField viewField = new ViewImageField();
65
66 private ImageSizeLabel imageSizeLabel;
67
68 private final SimpleTranslator i18n;
69
70 public ViewImageAction(MediaEditorActionDefinition definition,
71 MediaEditorView view, @Named(MediaEditorEventBus.NAME) EventBus eventBus,
72 ValueContext<MediaState> valueContext,
73 SimpleTranslator i18n) {
74 super(definition, view, valueContext, eventBus);
75 this.i18n = i18n;
76 imageSizeLabel = new ImageSizeLabel(i18n);
77 viewField.addImageResizeListener(imageSizeLabel);
78 }
79
80 @Override
81 protected List<ActionContext> getActionContextList() {
82 List<ActionContext> result = new ArrayList<ActionContext>();
83 result.add(new ActionContext(new InternalMediaEditorActionDefinition("save", i18n.translate("ui-mediaeditor.internalAction.save.label"), false), (actionName, actionContextParams) -> eventBus.fireEvent(new MediaEditorInternalEvent(EventType.SUBMIT))));
84 result.add(new ActionContext(new InternalMediaEditorActionDefinition("cancel", i18n.translate("ui-mediaeditor.internalAction.cancel.label"), true), (actionName, actionContextParams) -> eventBus.fireEvent(new MediaEditorInternalEvent(EventType.CANCEL_ALL))));
85 return result;
86 }
87
88 @Override
89 public void execute() throws ActionExecutionException {
90 super.execute();
91 valueContext.current().update((editHistoryTrackingProperties) -> {
92 Sets.newHashSet(valueContext.getSingleOrThrow());
93 });
94 }
95
96 @Override
97 protected Component getStatusControls() {
98 return imageSizeLabel;
99 }
100
101 @Override
102 protected MediaField createMediaField() {
103 return viewField;
104 }
105
106
107
108
109 public static class ImageSizeLabel extends Label implements ViewImageField.ImageSizeChangeListener {
110
111 private final SimpleTranslator i18n;
112
113 public ImageSizeLabel(SimpleTranslator i18n) {
114 this.i18n = i18n;
115 }
116
117 @Override
118 public void onSizeChanged(ViewImageField.ImageResizeEvent e) {
119 setValue(String.format(i18n.translate("ui-mediaeditor.view.actualSize.display"), e.getWidth(), e.getHeight()));
120 }
121 }
122 }