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.pages.app.detail.extension;
35
36 import info.magnolia.i18nsystem.SimpleTranslator;
37 import info.magnolia.pages.app.detail.PageEditorStatus;
38 import info.magnolia.ui.UIComponent;
39 import info.magnolia.ui.datasource.locale.LocaleSelectFieldSupport;
40 import info.magnolia.ui.editor.LocaleContext;
41 import info.magnolia.ui.field.LocaleSelector;
42 import info.magnolia.ui.vaadin.editor.PageEditorView;
43
44 import java.util.Arrays;
45 import java.util.function.Function;
46 import java.util.stream.Collectors;
47
48 import javax.inject.Inject;
49
50
51
52
53 public class LanguageSelectorView extends LocaleSelector implements UIComponent {
54
55 private static final String[] AREAS_I18N_KEYS = {"pages.areas.maxComponentsReached", "pages.areas.newComponent", "pages.areas.newLabelComponent"};
56
57 @Inject
58 public LanguageSelectorView(PageEditorStatus pageEditorStatus,
59 PageEditorView pageEditorView,
60 SimpleTranslator simpleTranslator,
61 LocaleSelectFieldSupport localeSelectFieldSupport,
62 LocaleContext localeContext
63 ) {
64 super(localeSelectFieldSupport);
65 addStyleName("language-selector");
66 addValueChangeListener(event -> {
67 localeContext.current().set(event.getValue());
68 pageEditorStatus.setI18nKeys(Arrays.stream(AREAS_I18N_KEYS).collect(Collectors.toMap(Function.identity(), simpleTranslator::translate)));
69 pageEditorStatus.setLocale(event.getValue());
70 if (pageEditorView.asVaadinComponent().isAttached()) {
71 pageEditorView.load(pageEditorStatus.getParameters());
72 }
73 });
74
75 addAttachListener(any -> localeContext.current().value().ifPresent(this::setValue));
76 }
77 }