package org.eclipselabs.e4.tapiji.translator.ui.treeviewer.handler;
import java.util.List;
import java.util.Locale;
import org.eclipse.e4.ui.di.AboutToHide;
import org.eclipse.e4.ui.di.AboutToShow;
import org.eclipse.e4.ui.model.application.ui.menu.ItemType;
import org.eclipse.e4.ui.model.application.ui.menu.MDirectMenuItem;
import org.eclipse.e4.ui.model.application.ui.menu.MMenuElement;
import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory;
import org.eclipse.e4.ui.workbench.modeling.EModelService;
import org.eclipselabs.e4.tapiji.logger.Log;
import org.eclipselabs.e4.tapiji.translator.core.api.IGlossaryService;
import org.eclipselabs.e4.tapiji.translator.preference.StoreInstanceState;
public final class ReferenceLanguageHandler {
private static final String CONTRIBUTION_URI = "bundleclass://org.eclipselabs.e4.tapiji.translator/org.eclipselabs.e4.tapiji.translator.ui.treeviewer.handler.ReferenceLanguageChangedHandler";
private static final String TAG = ReferenceLanguageHandler.class.getSimpleName();
@AboutToShow
public void aboutToShow(final List<MMenuElement> items, final EModelService modelService, final IGlossaryService glossaryService, final StoreInstanceState storeInstanceState) {
final String[] translations = glossaryService.getTranslations();
final String referenceLanguage = storeInstanceState.getReferenceLanguage();
Log.d(TAG, String.format("Get reference language: %s", referenceLanguage));
Log.d(TAG, String.format("Get reference language: %s", items));
MDirectMenuItem dynamicItem;
for (final String lang : translations) {
Log.d(TAG, String.format("Language: %s", lang));
dynamicItem = MMenuFactory.INSTANCE.createDirectMenuItem();
dynamicItem.setLabel(getLocale(lang).getDisplayName());
dynamicItem.setContainerData(lang);
dynamicItem.setContributionURI(CONTRIBUTION_URI);
if (referenceLanguage.equals(lang)) {
dynamicItem.setSelected(true);
} else {
dynamicItem.setSelected(false);
}
dynamicItem.setType(ItemType.RADIO);
items.add(dynamicItem);
}
}
@AboutToHide
public void aboutToHide(final List<MMenuElement> items) {
}
public Locale getLocale(final String lang) {
final String[] locDef = lang.split("_");
final Locale l = locDef.length < 3 ? (locDef.length < 2 ? new Locale(locDef[0]) : new Locale(locDef[0], locDef[1])) : new Locale(locDef[0], locDef[1], locDef[2]);
return l;
}
}