From: mbaudier Date: Tue, 3 Jul 2018 07:40:29 +0000 (+0200) Subject: Move locallization addon X-Git-Tag: argeo-commons-2.1.74~10 X-Git-Url: https://git.argeo.org/?p=lgpl%2Fargeo-commons.git;a=commitdiff_plain;h=886858a08bc07c85a0f70bd58af871989a3d2e18 Move locallization addon --- diff --git a/org.argeo.cms.e4/src/org/argeo/cms/e4/addons/LocaleAddon.java b/org.argeo.cms.e4/src/org/argeo/cms/e4/addons/LocaleAddon.java new file mode 100644 index 000000000..5bc0d6936 --- /dev/null +++ b/org.argeo.cms.e4/src/org/argeo/cms/e4/addons/LocaleAddon.java @@ -0,0 +1,51 @@ +package org.argeo.cms.e4.addons; + +import java.security.AccessController; +import java.util.List; +import java.util.Locale; +import java.util.Set; + +import javax.annotation.PostConstruct; +import javax.security.auth.Subject; + +import org.argeo.eclipse.ui.specific.UiContext; +import org.eclipse.e4.core.services.nls.ILocaleChangeService; +import org.eclipse.e4.ui.model.application.MApplication; +import org.eclipse.e4.ui.model.application.ui.basic.MWindow; +import org.eclipse.e4.ui.workbench.modeling.EModelService; +import org.eclipse.e4.ui.workbench.modeling.ElementMatcher; +import org.eclipse.swt.SWT; + +/** Integrate workbench with the locale provided at log in. */ +public class LocaleAddon { + private final static String STYLE_OVERRIDE = "styleOverride"; + + // Right to left languages + private final static String ARABIC = "ar"; + private final static String HEBREW = "he"; + + @PostConstruct + public void init(ILocaleChangeService localeChangeService, EModelService modelService, MApplication application) { + Subject subject = Subject.getSubject(AccessController.getContext()); + Set locales = subject.getPublicCredentials(Locale.class); + if (!locales.isEmpty()) { + Locale locale = locales.iterator().next(); + localeChangeService.changeApplicationLocale(locale); + UiContext.setLocale(locale); + + if (locale.getLanguage().equals(ARABIC) || locale.getLanguage().equals(HEBREW)) { + List windows = modelService.findElements(application, MWindow.class, EModelService.ANYWHERE, + new ElementMatcher(null, null, (String) null)); + for (MWindow window : windows) { + String currentStyle = window.getPersistedState().get(STYLE_OVERRIDE); + int style = 0; + if (currentStyle != null) { + style = Integer.parseInt(currentStyle); + } + style = style | SWT.RIGHT_TO_LEFT; + window.getPersistedState().put(STYLE_OVERRIDE, Integer.toString(style)); + } + } + } + } +} diff --git a/org.argeo.cms.e4/src/org/argeo/cms/e4/handlers/LocaleAddon.java b/org.argeo.cms.e4/src/org/argeo/cms/e4/handlers/LocaleAddon.java deleted file mode 100644 index 94140a614..000000000 --- a/org.argeo.cms.e4/src/org/argeo/cms/e4/handlers/LocaleAddon.java +++ /dev/null @@ -1,51 +0,0 @@ -package org.argeo.cms.e4.handlers; - -import java.security.AccessController; -import java.util.List; -import java.util.Locale; -import java.util.Set; - -import javax.annotation.PostConstruct; -import javax.security.auth.Subject; - -import org.argeo.eclipse.ui.specific.UiContext; -import org.eclipse.e4.core.services.nls.ILocaleChangeService; -import org.eclipse.e4.ui.model.application.MApplication; -import org.eclipse.e4.ui.model.application.ui.basic.MWindow; -import org.eclipse.e4.ui.workbench.modeling.EModelService; -import org.eclipse.e4.ui.workbench.modeling.ElementMatcher; -import org.eclipse.swt.SWT; - -/** Integrate workbench with the locale provided at log in. */ -public class LocaleAddon { - private final static String STYLE_OVERRIDE = "styleOverride"; - - // Right to left languages - private final static String ARABIC = "ar"; - private final static String HEBREW = "he"; - - @PostConstruct - public void init(ILocaleChangeService localeChangeService, EModelService modelService, MApplication application) { - Subject subject = Subject.getSubject(AccessController.getContext()); - Set locales = subject.getPublicCredentials(Locale.class); - if (!locales.isEmpty()) { - Locale locale = locales.iterator().next(); - localeChangeService.changeApplicationLocale(locale); - UiContext.setLocale(locale); - - if (locale.getLanguage().equals(ARABIC) || locale.getLanguage().equals(HEBREW)) { - List windows = modelService.findElements(application, MWindow.class, EModelService.ANYWHERE, - new ElementMatcher(null, null, (String) null)); - for (MWindow window : windows) { - String currentStyle = window.getPersistedState().get(STYLE_OVERRIDE); - int style = 0; - if (currentStyle != null) { - style = Integer.parseInt(currentStyle); - } - style = style | SWT.RIGHT_TO_LEFT; - window.getPersistedState().put(STYLE_OVERRIDE, Integer.toString(style)); - } - } - } - } -}