minor refactoring and code cleanup
This commit is contained in:
		
							parent
							
								
									ba07076a88
								
							
						
					
					
						commit
						7e0031cf8b
					
				
					 8 changed files with 335 additions and 252 deletions
				
			
		| 
						 | 
					@ -25,6 +25,7 @@ import org.springframework.stereotype.Component;
 | 
				
			||||||
import ch.ethz.seb.sebserver.gbl.profile.GuiProfile;
 | 
					import ch.ethz.seb.sebserver.gbl.profile.GuiProfile;
 | 
				
			||||||
import ch.ethz.seb.sebserver.gui.content.activity.ActivitiesPane;
 | 
					import ch.ethz.seb.sebserver.gui.content.activity.ActivitiesPane;
 | 
				
			||||||
import ch.ethz.seb.sebserver.gui.service.i18n.LocTextKey;
 | 
					import ch.ethz.seb.sebserver.gui.service.i18n.LocTextKey;
 | 
				
			||||||
 | 
					import ch.ethz.seb.sebserver.gui.service.i18n.PolyglotPageService;
 | 
				
			||||||
import ch.ethz.seb.sebserver.gui.service.page.PageContext;
 | 
					import ch.ethz.seb.sebserver.gui.service.page.PageContext;
 | 
				
			||||||
import ch.ethz.seb.sebserver.gui.service.page.PageService;
 | 
					import ch.ethz.seb.sebserver.gui.service.page.PageService;
 | 
				
			||||||
import ch.ethz.seb.sebserver.gui.service.page.TemplateComposer;
 | 
					import ch.ethz.seb.sebserver.gui.service.page.TemplateComposer;
 | 
				
			||||||
| 
						 | 
					@ -52,13 +53,16 @@ public class MainPage implements TemplateComposer {
 | 
				
			||||||
    private static final int[] OPENED_SASH_WEIGHTS = new int[] { 0, 100, 0 };
 | 
					    private static final int[] OPENED_SASH_WEIGHTS = new int[] { 0, 100, 0 };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private final WidgetFactory widgetFactory;
 | 
					    private final WidgetFactory widgetFactory;
 | 
				
			||||||
 | 
					    private final PolyglotPageService polyglotPageService;
 | 
				
			||||||
    private final PageService pageStateService;
 | 
					    private final PageService pageStateService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public MainPage(
 | 
					    public MainPage(
 | 
				
			||||||
            final WidgetFactory widgetFactory,
 | 
					            final WidgetFactory widgetFactory,
 | 
				
			||||||
 | 
					            final PolyglotPageService polyglotPageService,
 | 
				
			||||||
            final PageService pageStateService) {
 | 
					            final PageService pageStateService) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        this.widgetFactory = widgetFactory;
 | 
					        this.widgetFactory = widgetFactory;
 | 
				
			||||||
 | 
					        this.polyglotPageService = polyglotPageService;
 | 
				
			||||||
        this.pageStateService = pageStateService;
 | 
					        this.pageStateService = pageStateService;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -105,7 +109,7 @@ public class MainPage implements TemplateComposer {
 | 
				
			||||||
                        mainSash.setWeights(DEFAULT_SASH_WEIGHTS);
 | 
					                        mainSash.setWeights(DEFAULT_SASH_WEIGHTS);
 | 
				
			||||||
                        ib.setData("fullScreen", false);
 | 
					                        ib.setData("fullScreen", false);
 | 
				
			||||||
                        ib.setImage(WidgetFactory.ImageIcon.MAXIMIZE.getImage(ib.getDisplay()));
 | 
					                        ib.setImage(WidgetFactory.ImageIcon.MAXIMIZE.getImage(ib.getDisplay()));
 | 
				
			||||||
                        this.widgetFactory.injectI18n(
 | 
					                        this.polyglotPageService.injectI18n(
 | 
				
			||||||
                                ib,
 | 
					                                ib,
 | 
				
			||||||
                                null,
 | 
					                                null,
 | 
				
			||||||
                                new LocTextKey("sebserver.mainpage.maximize.tooltip"));
 | 
					                                new LocTextKey("sebserver.mainpage.maximize.tooltip"));
 | 
				
			||||||
| 
						 | 
					@ -113,7 +117,7 @@ public class MainPage implements TemplateComposer {
 | 
				
			||||||
                        mainSash.setWeights(OPENED_SASH_WEIGHTS);
 | 
					                        mainSash.setWeights(OPENED_SASH_WEIGHTS);
 | 
				
			||||||
                        ib.setData("fullScreen", true);
 | 
					                        ib.setData("fullScreen", true);
 | 
				
			||||||
                        ib.setImage(WidgetFactory.ImageIcon.MINIMIZE.getImage(ib.getDisplay()));
 | 
					                        ib.setImage(WidgetFactory.ImageIcon.MINIMIZE.getImage(ib.getDisplay()));
 | 
				
			||||||
                        this.widgetFactory.injectI18n(
 | 
					                        this.polyglotPageService.injectI18n(
 | 
				
			||||||
                                ib,
 | 
					                                ib,
 | 
				
			||||||
                                null,
 | 
					                                null,
 | 
				
			||||||
                                new LocTextKey("sebserver.mainpage.minimize.tooltip"));
 | 
					                                new LocTextKey("sebserver.mainpage.minimize.tooltip"));
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,7 +10,20 @@ package ch.ethz.seb.sebserver.gui.service.i18n;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.Locale;
 | 
					import java.util.Locale;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.eclipse.swt.widgets.Button;
 | 
				
			||||||
import org.eclipse.swt.widgets.Composite;
 | 
					import org.eclipse.swt.widgets.Composite;
 | 
				
			||||||
 | 
					import org.eclipse.swt.widgets.Group;
 | 
				
			||||||
 | 
					import org.eclipse.swt.widgets.Label;
 | 
				
			||||||
 | 
					import org.eclipse.swt.widgets.TabFolder;
 | 
				
			||||||
 | 
					import org.eclipse.swt.widgets.TabItem;
 | 
				
			||||||
 | 
					import org.eclipse.swt.widgets.Table;
 | 
				
			||||||
 | 
					import org.eclipse.swt.widgets.TableColumn;
 | 
				
			||||||
 | 
					import org.eclipse.swt.widgets.TableItem;
 | 
				
			||||||
 | 
					import org.eclipse.swt.widgets.Tree;
 | 
				
			||||||
 | 
					import org.eclipse.swt.widgets.TreeItem;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import ch.ethz.seb.sebserver.gui.service.page.PageContext;
 | 
				
			||||||
 | 
					import ch.ethz.seb.sebserver.gui.widget.ImageUpload;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public interface PolyglotPageService {
 | 
					public interface PolyglotPageService {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -36,4 +49,32 @@ public interface PolyglotPageService {
 | 
				
			||||||
     * @param locale the Locale to set */
 | 
					     * @param locale the Locale to set */
 | 
				
			||||||
    void setPageLocale(Composite root, Locale locale);
 | 
					    void setPageLocale(Composite root, Locale locale);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void injectI18n(ImageUpload imageUpload, LocTextKey locTextKey);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void injectI18n(Label label, LocTextKey locTextKey);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void injectI18n(Label label, LocTextKey locTextKey, LocTextKey locToolTipKey);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void injectI18n(Group group, LocTextKey locTextKey, LocTextKey locTooltipKey);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void injectI18n(Button button, LocTextKey locTextKey);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void injectI18n(Button button, LocTextKey locTextKey, LocTextKey locToolTipKey);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void injectI18n(Tree tree);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void injectI18n(TreeItem treeItem, LocTextKey locTextKey);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void injectI18n(Table table);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void injectI18n(TabFolder tabFolder);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void injectI18n(TableColumn tableColumn, LocTextKey locTextKey, LocTextKey locTooltipKey);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void injectI18n(TableItem tableItem, LocTextKey... locTextKey);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void injectI18n(TabItem tabItem, LocTextKey locTextKey, LocTextKey locTooltipKey);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void createLanguageSelector(PageContext composerCtx);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -11,15 +11,31 @@ package ch.ethz.seb.sebserver.gui.service.i18n.impl;
 | 
				
			||||||
import java.util.Locale;
 | 
					import java.util.Locale;
 | 
				
			||||||
import java.util.function.Consumer;
 | 
					import java.util.function.Consumer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.apache.commons.lang3.StringUtils;
 | 
				
			||||||
 | 
					import org.eclipse.rap.rwt.RWT;
 | 
				
			||||||
 | 
					import org.eclipse.swt.SWT;
 | 
				
			||||||
 | 
					import org.eclipse.swt.widgets.Button;
 | 
				
			||||||
import org.eclipse.swt.widgets.Composite;
 | 
					import org.eclipse.swt.widgets.Composite;
 | 
				
			||||||
import org.eclipse.swt.widgets.Control;
 | 
					import org.eclipse.swt.widgets.Control;
 | 
				
			||||||
 | 
					import org.eclipse.swt.widgets.Group;
 | 
				
			||||||
 | 
					import org.eclipse.swt.widgets.Label;
 | 
				
			||||||
 | 
					import org.eclipse.swt.widgets.TabFolder;
 | 
				
			||||||
 | 
					import org.eclipse.swt.widgets.TabItem;
 | 
				
			||||||
 | 
					import org.eclipse.swt.widgets.Table;
 | 
				
			||||||
 | 
					import org.eclipse.swt.widgets.TableColumn;
 | 
				
			||||||
 | 
					import org.eclipse.swt.widgets.TableItem;
 | 
				
			||||||
 | 
					import org.eclipse.swt.widgets.Tree;
 | 
				
			||||||
 | 
					import org.eclipse.swt.widgets.TreeItem;
 | 
				
			||||||
import org.springframework.context.annotation.Lazy;
 | 
					import org.springframework.context.annotation.Lazy;
 | 
				
			||||||
import org.springframework.stereotype.Service;
 | 
					import org.springframework.stereotype.Service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import ch.ethz.seb.sebserver.gbl.profile.GuiProfile;
 | 
					import ch.ethz.seb.sebserver.gbl.profile.GuiProfile;
 | 
				
			||||||
import ch.ethz.seb.sebserver.gui.service.i18n.I18nSupport;
 | 
					import ch.ethz.seb.sebserver.gui.service.i18n.I18nSupport;
 | 
				
			||||||
 | 
					import ch.ethz.seb.sebserver.gui.service.i18n.LocTextKey;
 | 
				
			||||||
import ch.ethz.seb.sebserver.gui.service.i18n.PolyglotPageService;
 | 
					import ch.ethz.seb.sebserver.gui.service.i18n.PolyglotPageService;
 | 
				
			||||||
import ch.ethz.seb.sebserver.gui.service.page.ComposerService;
 | 
					import ch.ethz.seb.sebserver.gui.service.page.ComposerService;
 | 
				
			||||||
 | 
					import ch.ethz.seb.sebserver.gui.service.page.PageContext;
 | 
				
			||||||
 | 
					import ch.ethz.seb.sebserver.gui.widget.ImageUpload;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** Service that supports page language change on the fly */
 | 
					/** Service that supports page language change on the fly */
 | 
				
			||||||
@Lazy
 | 
					@Lazy
 | 
				
			||||||
| 
						 | 
					@ -55,4 +71,222 @@ public final class PolyglotPageServiceImpl implements PolyglotPageService {
 | 
				
			||||||
        root.layout(true, true);
 | 
					        root.layout(true, true);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void injectI18n(final ImageUpload imageUpload, final LocTextKey locTextKey) {
 | 
				
			||||||
 | 
					        final Consumer<ImageUpload> imageUploadFunction = iu -> {
 | 
				
			||||||
 | 
					            if (locTextKey != null) {
 | 
				
			||||||
 | 
					                iu.setSelectionText(this.i18nSupport.getText(locTextKey));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					        imageUpload.setData(POLYGLOT_WIDGET_FUNCTION_KEY, imageUploadFunction);
 | 
				
			||||||
 | 
					        imageUploadFunction.accept(imageUpload);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void injectI18n(final Label label, final LocTextKey locTextKey) {
 | 
				
			||||||
 | 
					        injectI18n(label, locTextKey, null);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void injectI18n(final Label label, final LocTextKey locTextKey, final LocTextKey locToolTipKey) {
 | 
				
			||||||
 | 
					        final Consumer<Label> labelFunction = labelFunction(locTextKey, locToolTipKey, this.i18nSupport);
 | 
				
			||||||
 | 
					        label.setData(POLYGLOT_WIDGET_FUNCTION_KEY, labelFunction);
 | 
				
			||||||
 | 
					        labelFunction.accept(label);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void injectI18n(final Group group, final LocTextKey locTextKey, final LocTextKey locTooltipKey) {
 | 
				
			||||||
 | 
					        final Consumer<Group> groupFunction = groupFunction(locTextKey, locTooltipKey, this.i18nSupport);
 | 
				
			||||||
 | 
					        group.setData(POLYGLOT_WIDGET_FUNCTION_KEY, groupFunction);
 | 
				
			||||||
 | 
					        groupFunction.accept(group);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void injectI18n(final Button button, final LocTextKey locTextKey) {
 | 
				
			||||||
 | 
					        injectI18n(button, locTextKey, null);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void injectI18n(final Button button, final LocTextKey locTextKey, final LocTextKey locToolTipKey) {
 | 
				
			||||||
 | 
					        final Consumer<Button> buttonFunction = b -> {
 | 
				
			||||||
 | 
					            if (locTextKey != null) {
 | 
				
			||||||
 | 
					                b.setText(this.i18nSupport.getText(locTextKey));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (locToolTipKey != null) {
 | 
				
			||||||
 | 
					                b.setToolTipText(this.i18nSupport.getText(locToolTipKey));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					        button.setData(POLYGLOT_WIDGET_FUNCTION_KEY, buttonFunction);
 | 
				
			||||||
 | 
					        buttonFunction.accept(button);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void injectI18n(final Tree tree) {
 | 
				
			||||||
 | 
					        tree.setData(
 | 
				
			||||||
 | 
					                POLYGLOT_WIDGET_FUNCTION_KEY,
 | 
				
			||||||
 | 
					                (Consumer<Tree>) t -> updateLocale(t.getItems(), this.i18nSupport));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void injectI18n(final TreeItem treeItem, final LocTextKey locTextKey) {
 | 
				
			||||||
 | 
					        treeItem.setData(POLYGLOT_ITEM_TEXT_DATA_KEY, locTextKey);
 | 
				
			||||||
 | 
					        treeItem.setText(this.i18nSupport.getText(locTextKey));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void injectI18n(final Table table) {
 | 
				
			||||||
 | 
					        table.setData(
 | 
				
			||||||
 | 
					                POLYGLOT_WIDGET_FUNCTION_KEY,
 | 
				
			||||||
 | 
					                (Consumer<Table>) t -> {
 | 
				
			||||||
 | 
					                    updateLocale(t.getColumns(), this.i18nSupport);
 | 
				
			||||||
 | 
					                    updateLocale(t.getItems(), this.i18nSupport);
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void injectI18n(final TabFolder tabFolder) {
 | 
				
			||||||
 | 
					        tabFolder.setData(
 | 
				
			||||||
 | 
					                POLYGLOT_WIDGET_FUNCTION_KEY,
 | 
				
			||||||
 | 
					                (Consumer<TabFolder>) t -> updateLocale(t.getItems(), this.i18nSupport));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void injectI18n(final TableColumn tableColumn, final LocTextKey locTextKey, final LocTextKey locTooltipKey) {
 | 
				
			||||||
 | 
					        tableColumn.setData(POLYGLOT_ITEM_TEXT_DATA_KEY, locTextKey);
 | 
				
			||||||
 | 
					        tableColumn.setText(this.i18nSupport.getText(locTextKey));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (locTooltipKey != null) {
 | 
				
			||||||
 | 
					            tableColumn.setData(POLYGLOT_ITEM_TOOLTIP_DATA_KEY, locTooltipKey);
 | 
				
			||||||
 | 
					            tableColumn.setToolTipText(this.i18nSupport.getText(locTooltipKey));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void injectI18n(final TableItem tableItem, final LocTextKey... locTextKey) {
 | 
				
			||||||
 | 
					        if (locTextKey == null) {
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        tableItem.setData(POLYGLOT_ITEM_TEXT_DATA_KEY, locTextKey);
 | 
				
			||||||
 | 
					        for (int i = 0; i < locTextKey.length; i++) {
 | 
				
			||||||
 | 
					            tableItem.setText(i, this.i18nSupport.getText(locTextKey[i]));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void injectI18n(final TabItem tabItem, final LocTextKey locTextKey, final LocTextKey locTooltipKey) {
 | 
				
			||||||
 | 
					        tabItem.setData(POLYGLOT_ITEM_TEXT_DATA_KEY, locTextKey);
 | 
				
			||||||
 | 
					        tabItem.setText(this.i18nSupport.getText(locTextKey));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (locTooltipKey != null) {
 | 
				
			||||||
 | 
					            tabItem.setData(POLYGLOT_ITEM_TOOLTIP_DATA_KEY, locTooltipKey);
 | 
				
			||||||
 | 
					            tabItem.setToolTipText(this.i18nSupport.getText(locTooltipKey));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void createLanguageSelector(final PageContext composerCtx) {
 | 
				
			||||||
 | 
					        for (final Locale locale : this.i18nSupport.supportedLanguages()) {
 | 
				
			||||||
 | 
					            final Label languageSelection = new Label(composerCtx.getParent(), SWT.NONE);
 | 
				
			||||||
 | 
					            languageSelection.setData(
 | 
				
			||||||
 | 
					                    POLYGLOT_WIDGET_FUNCTION_KEY,
 | 
				
			||||||
 | 
					                    (Consumer<Label>) label -> label.setVisible(
 | 
				
			||||||
 | 
					                            !this.i18nSupport.getCurrentLocale()
 | 
				
			||||||
 | 
					                                    .getLanguage()
 | 
				
			||||||
 | 
					                                    .equals(locale.getLanguage())));
 | 
				
			||||||
 | 
					            languageSelection.setData(RWT.CUSTOM_VARIANT, "header");
 | 
				
			||||||
 | 
					            languageSelection.setText("|  " + locale.getLanguage().toUpperCase());
 | 
				
			||||||
 | 
					            languageSelection.addListener(SWT.MouseDown, event -> {
 | 
				
			||||||
 | 
					                this.setPageLocale(composerCtx.getRoot(), locale);
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static final Consumer<Label> labelFunction(
 | 
				
			||||||
 | 
					            final LocTextKey locTextKey,
 | 
				
			||||||
 | 
					            final LocTextKey locToolTipKey,
 | 
				
			||||||
 | 
					            final I18nSupport i18nSupport) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return label -> {
 | 
				
			||||||
 | 
					            if (locTextKey != null) {
 | 
				
			||||||
 | 
					                label.setText(i18nSupport.getText(locTextKey));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (locToolTipKey != null) {
 | 
				
			||||||
 | 
					                label.setToolTipText(i18nSupport.getText(locToolTipKey));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static final Consumer<Group> groupFunction(
 | 
				
			||||||
 | 
					            final LocTextKey locTextKey,
 | 
				
			||||||
 | 
					            final LocTextKey locToolTipKey,
 | 
				
			||||||
 | 
					            final I18nSupport i18nSupport) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return group -> {
 | 
				
			||||||
 | 
					            if (locTextKey != null) {
 | 
				
			||||||
 | 
					                group.setText(i18nSupport.getText(locTextKey));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (locToolTipKey != null) {
 | 
				
			||||||
 | 
					                group.setToolTipText(i18nSupport.getText(locToolTipKey, StringUtils.EMPTY));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static final void updateLocale(final TabItem[] items, final I18nSupport i18nSupport) {
 | 
				
			||||||
 | 
					        if (items == null) {
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for (final TabItem childItem : items) {
 | 
				
			||||||
 | 
					            final LocTextKey locTextKey = (LocTextKey) childItem.getData(POLYGLOT_ITEM_TEXT_DATA_KEY);
 | 
				
			||||||
 | 
					            if (locTextKey != null) {
 | 
				
			||||||
 | 
					                childItem.setText(i18nSupport.getText(locTextKey));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static final void updateLocale(final TreeItem[] items, final I18nSupport i18nSupport) {
 | 
				
			||||||
 | 
					        if (items == null) {
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for (final TreeItem childItem : items) {
 | 
				
			||||||
 | 
					            final LocTextKey locTextKey = (LocTextKey) childItem.getData(POLYGLOT_ITEM_TEXT_DATA_KEY);
 | 
				
			||||||
 | 
					            if (locTextKey != null) {
 | 
				
			||||||
 | 
					                childItem.setText(i18nSupport.getText(locTextKey));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            updateLocale(childItem.getItems(), i18nSupport);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static void updateLocale(final TableItem[] items, final I18nSupport i18nSupport) {
 | 
				
			||||||
 | 
					        if (items == null) {
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for (final TableItem childItem : items) {
 | 
				
			||||||
 | 
					            final LocTextKey[] locTextKey = (LocTextKey[]) childItem.getData(POLYGLOT_ITEM_TEXT_DATA_KEY);
 | 
				
			||||||
 | 
					            if (locTextKey != null) {
 | 
				
			||||||
 | 
					                for (int i = 0; i < locTextKey.length; i++) {
 | 
				
			||||||
 | 
					                    if (locTextKey[i] != null) {
 | 
				
			||||||
 | 
					                        childItem.setText(i, i18nSupport.getText(locTextKey[i]));
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static void updateLocale(final TableColumn[] columns, final I18nSupport i18nSupport) {
 | 
				
			||||||
 | 
					        if (columns == null) {
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for (final TableColumn childItem : columns) {
 | 
				
			||||||
 | 
					            final LocTextKey locTextKey = (LocTextKey) childItem.getData(POLYGLOT_ITEM_TEXT_DATA_KEY);
 | 
				
			||||||
 | 
					            if (locTextKey != null) {
 | 
				
			||||||
 | 
					                childItem.setText(i18nSupport.getText(locTextKey));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -176,7 +176,7 @@ public class DefaultPageLayout implements TemplateComposer {
 | 
				
			||||||
        langSupport.setLayout(rowLayout);
 | 
					        langSupport.setLayout(rowLayout);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (this.multilingual) {
 | 
					        if (this.multilingual) {
 | 
				
			||||||
            this.widgetFactory.createLanguageSelector(pageContext.copyOf(langSupport));
 | 
					            this.polyglotPageService.createLanguageSelector(pageContext.copyOf(langSupport));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -38,6 +38,7 @@ import ch.ethz.seb.sebserver.gui.widget.WidgetFactory.ImageIcon;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class GridTable extends Composite {
 | 
					public class GridTable extends Composite {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static final long serialVersionUID = 8515260041931976458L;
 | 
				
			||||||
    private static final Logger log = LoggerFactory.getLogger(GridTable.class);
 | 
					    private static final Logger log = LoggerFactory.getLogger(GridTable.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public static final Set<AttributeType> SUPPORTED_TYPES = EnumSet.of(
 | 
					    public static final Set<AttributeType> SUPPORTED_TYPES = EnumSet.of(
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,6 +43,8 @@ public final class MultiSelectionCombo extends Composite implements Selection {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private final WidgetFactory widgetFactory;
 | 
					    private final WidgetFactory widgetFactory;
 | 
				
			||||||
    private final Combo combo;
 | 
					    private final Combo combo;
 | 
				
			||||||
 | 
					    private final LocTextKey addTextKey;
 | 
				
			||||||
 | 
					    private final LocTextKey removeTextKey;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private final List<Tuple<Control>> selectionControls = new ArrayList<>();
 | 
					    private final List<Tuple<Control>> selectionControls = new ArrayList<>();
 | 
				
			||||||
    private final List<Tuple<String>> selectedValues = new ArrayList<>();
 | 
					    private final List<Tuple<String>> selectedValues = new ArrayList<>();
 | 
				
			||||||
| 
						 | 
					@ -53,9 +55,20 @@ public final class MultiSelectionCombo extends Composite implements Selection {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private Listener listener = null;
 | 
					    private Listener listener = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    MultiSelectionCombo(final Composite parent, final WidgetFactory widgetFactory) {
 | 
					    MultiSelectionCombo(
 | 
				
			||||||
 | 
					            final Composite parent,
 | 
				
			||||||
 | 
					            final WidgetFactory widgetFactory,
 | 
				
			||||||
 | 
					            final String locTextPrefix) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        super(parent, SWT.NONE);
 | 
					        super(parent, SWT.NONE);
 | 
				
			||||||
        this.widgetFactory = widgetFactory;
 | 
					        this.widgetFactory = widgetFactory;
 | 
				
			||||||
 | 
					        this.addTextKey = (locTextPrefix != null)
 | 
				
			||||||
 | 
					                ? new LocTextKey(locTextPrefix + ".add")
 | 
				
			||||||
 | 
					                : new LocTextKey("sebserver.overall.add");
 | 
				
			||||||
 | 
					        this.removeTextKey = (locTextPrefix != null)
 | 
				
			||||||
 | 
					                ? new LocTextKey(locTextPrefix + ".remove")
 | 
				
			||||||
 | 
					                : new LocTextKey("sebserver.overall.remove");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        final GridLayout gridLayout = new GridLayout(2, false);
 | 
					        final GridLayout gridLayout = new GridLayout(2, false);
 | 
				
			||||||
        gridLayout.verticalSpacing = 1;
 | 
					        gridLayout.verticalSpacing = 1;
 | 
				
			||||||
        gridLayout.marginLeft = 0;
 | 
					        gridLayout.marginLeft = 0;
 | 
				
			||||||
| 
						 | 
					@ -73,7 +86,7 @@ public final class MultiSelectionCombo extends Composite implements Selection {
 | 
				
			||||||
        final Label imageButton = widgetFactory.imageButton(
 | 
					        final Label imageButton = widgetFactory.imageButton(
 | 
				
			||||||
                ImageIcon.ADD_BOX,
 | 
					                ImageIcon.ADD_BOX,
 | 
				
			||||||
                this,
 | 
					                this,
 | 
				
			||||||
                new LocTextKey("Add"),
 | 
					                this.addTextKey,
 | 
				
			||||||
                this::addComboSelection);
 | 
					                this::addComboSelection);
 | 
				
			||||||
        this.actionCell = new GridData(SWT.LEFT, SWT.CENTER, true, false);
 | 
					        this.actionCell = new GridData(SWT.LEFT, SWT.CENTER, true, false);
 | 
				
			||||||
        this.actionCell.widthHint = ACTION_COLUMN_WIDTH;
 | 
					        this.actionCell.widthHint = ACTION_COLUMN_WIDTH;
 | 
				
			||||||
| 
						 | 
					@ -176,7 +189,7 @@ public final class MultiSelectionCombo extends Composite implements Selection {
 | 
				
			||||||
        final Label imageButton = this.widgetFactory.imageButton(
 | 
					        final Label imageButton = this.widgetFactory.imageButton(
 | 
				
			||||||
                ImageIcon.REMOVE_BOX,
 | 
					                ImageIcon.REMOVE_BOX,
 | 
				
			||||||
                this,
 | 
					                this,
 | 
				
			||||||
                new LocTextKey("Remove"),
 | 
					                this.removeTextKey,
 | 
				
			||||||
                this::removeComboSelection);
 | 
					                this::removeComboSelection);
 | 
				
			||||||
        imageButton.setData(OPTION_VALUE, itemName);
 | 
					        imageButton.setData(OPTION_VALUE, itemName);
 | 
				
			||||||
        final GridData actionCell = new GridData(SWT.LEFT, SWT.CENTER, true, false);
 | 
					        final GridData actionCell = new GridData(SWT.LEFT, SWT.CENTER, true, false);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,16 +8,14 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package ch.ethz.seb.sebserver.gui.widget;
 | 
					package ch.ethz.seb.sebserver.gui.widget;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import static ch.ethz.seb.sebserver.gui.service.i18n.PolyglotPageService.*;
 | 
					import static ch.ethz.seb.sebserver.gui.service.i18n.PolyglotPageService.POLYGLOT_WIDGET_FUNCTION_KEY;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.io.InputStream;
 | 
					import java.io.InputStream;
 | 
				
			||||||
import java.util.Collection;
 | 
					import java.util.Collection;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
import java.util.Locale;
 | 
					 | 
				
			||||||
import java.util.function.Consumer;
 | 
					import java.util.function.Consumer;
 | 
				
			||||||
import java.util.function.Supplier;
 | 
					import java.util.function.Supplier;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import org.apache.commons.lang3.StringUtils;
 | 
					 | 
				
			||||||
import org.eclipse.rap.rwt.RWT;
 | 
					import org.eclipse.rap.rwt.RWT;
 | 
				
			||||||
import org.eclipse.swt.SWT;
 | 
					import org.eclipse.swt.SWT;
 | 
				
			||||||
import org.eclipse.swt.graphics.Device;
 | 
					import org.eclipse.swt.graphics.Device;
 | 
				
			||||||
| 
						 | 
					@ -34,7 +32,6 @@ import org.eclipse.swt.widgets.TabFolder;
 | 
				
			||||||
import org.eclipse.swt.widgets.TabItem;
 | 
					import org.eclipse.swt.widgets.TabItem;
 | 
				
			||||||
import org.eclipse.swt.widgets.Table;
 | 
					import org.eclipse.swt.widgets.Table;
 | 
				
			||||||
import org.eclipse.swt.widgets.TableColumn;
 | 
					import org.eclipse.swt.widgets.TableColumn;
 | 
				
			||||||
import org.eclipse.swt.widgets.TableItem;
 | 
					 | 
				
			||||||
import org.eclipse.swt.widgets.Text;
 | 
					import org.eclipse.swt.widgets.Text;
 | 
				
			||||||
import org.eclipse.swt.widgets.Tree;
 | 
					import org.eclipse.swt.widgets.Tree;
 | 
				
			||||||
import org.eclipse.swt.widgets.TreeItem;
 | 
					import org.eclipse.swt.widgets.TreeItem;
 | 
				
			||||||
| 
						 | 
					@ -50,7 +47,6 @@ import ch.ethz.seb.sebserver.gui.content.action.ActionDefinition;
 | 
				
			||||||
import ch.ethz.seb.sebserver.gui.service.i18n.I18nSupport;
 | 
					import ch.ethz.seb.sebserver.gui.service.i18n.I18nSupport;
 | 
				
			||||||
import ch.ethz.seb.sebserver.gui.service.i18n.LocTextKey;
 | 
					import ch.ethz.seb.sebserver.gui.service.i18n.LocTextKey;
 | 
				
			||||||
import ch.ethz.seb.sebserver.gui.service.i18n.PolyglotPageService;
 | 
					import ch.ethz.seb.sebserver.gui.service.i18n.PolyglotPageService;
 | 
				
			||||||
import ch.ethz.seb.sebserver.gui.service.page.PageContext;
 | 
					 | 
				
			||||||
import ch.ethz.seb.sebserver.gui.service.push.ServerPushService;
 | 
					import ch.ethz.seb.sebserver.gui.service.push.ServerPushService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Lazy
 | 
					@Lazy
 | 
				
			||||||
| 
						 | 
					@ -195,19 +191,19 @@ public class WidgetFactory {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Button buttonLocalized(final Composite parent, final String locTextKey) {
 | 
					    public Button buttonLocalized(final Composite parent, final String locTextKey) {
 | 
				
			||||||
        final Button button = new Button(parent, SWT.NONE);
 | 
					        final Button button = new Button(parent, SWT.NONE);
 | 
				
			||||||
        this.injectI18n(button, new LocTextKey(locTextKey));
 | 
					        this.polyglotPageService.injectI18n(button, new LocTextKey(locTextKey));
 | 
				
			||||||
        return button;
 | 
					        return button;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Button buttonLocalized(final Composite parent, final LocTextKey locTextKey) {
 | 
					    public Button buttonLocalized(final Composite parent, final LocTextKey locTextKey) {
 | 
				
			||||||
        final Button button = new Button(parent, SWT.NONE);
 | 
					        final Button button = new Button(parent, SWT.NONE);
 | 
				
			||||||
        this.injectI18n(button, locTextKey);
 | 
					        this.polyglotPageService.injectI18n(button, locTextKey);
 | 
				
			||||||
        return button;
 | 
					        return button;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Button buttonLocalized(final Composite parent, final CustomVariant variant, final String locTextKey) {
 | 
					    public Button buttonLocalized(final Composite parent, final CustomVariant variant, final String locTextKey) {
 | 
				
			||||||
        final Button button = new Button(parent, SWT.NONE);
 | 
					        final Button button = new Button(parent, SWT.NONE);
 | 
				
			||||||
        this.injectI18n(button, new LocTextKey(locTextKey));
 | 
					        this.polyglotPageService.injectI18n(button, new LocTextKey(locTextKey));
 | 
				
			||||||
        button.setData(RWT.CUSTOM_VARIANT, variant.key);
 | 
					        button.setData(RWT.CUSTOM_VARIANT, variant.key);
 | 
				
			||||||
        return button;
 | 
					        return button;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -219,7 +215,7 @@ public class WidgetFactory {
 | 
				
			||||||
            final LocTextKey toolTipKey) {
 | 
					            final LocTextKey toolTipKey) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        final Button button = new Button(parent, type);
 | 
					        final Button button = new Button(parent, type);
 | 
				
			||||||
        this.injectI18n(button, locTextKey, toolTipKey);
 | 
					        this.polyglotPageService.injectI18n(button, locTextKey, toolTipKey);
 | 
				
			||||||
        return button;
 | 
					        return button;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -231,19 +227,19 @@ public class WidgetFactory {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Label labelLocalized(final Composite parent, final String locTextKey) {
 | 
					    public Label labelLocalized(final Composite parent, final String locTextKey) {
 | 
				
			||||||
        final Label label = new Label(parent, SWT.NONE);
 | 
					        final Label label = new Label(parent, SWT.NONE);
 | 
				
			||||||
        this.injectI18n(label, new LocTextKey(locTextKey));
 | 
					        this.polyglotPageService.injectI18n(label, new LocTextKey(locTextKey));
 | 
				
			||||||
        return label;
 | 
					        return label;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Label labelLocalized(final Composite parent, final LocTextKey locTextKey) {
 | 
					    public Label labelLocalized(final Composite parent, final LocTextKey locTextKey) {
 | 
				
			||||||
        final Label label = new Label(parent, SWT.NONE);
 | 
					        final Label label = new Label(parent, SWT.NONE);
 | 
				
			||||||
        this.injectI18n(label, locTextKey);
 | 
					        this.polyglotPageService.injectI18n(label, locTextKey);
 | 
				
			||||||
        return label;
 | 
					        return label;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Label labelLocalized(final Composite parent, final CustomVariant variant, final LocTextKey locTextKey) {
 | 
					    public Label labelLocalized(final Composite parent, final CustomVariant variant, final LocTextKey locTextKey) {
 | 
				
			||||||
        final Label label = new Label(parent, SWT.NONE);
 | 
					        final Label label = new Label(parent, SWT.NONE);
 | 
				
			||||||
        this.injectI18n(label, locTextKey);
 | 
					        this.polyglotPageService.injectI18n(label, locTextKey);
 | 
				
			||||||
        label.setData(RWT.CUSTOM_VARIANT, variant.key);
 | 
					        label.setData(RWT.CUSTOM_VARIANT, variant.key);
 | 
				
			||||||
        return label;
 | 
					        return label;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -254,7 +250,7 @@ public class WidgetFactory {
 | 
				
			||||||
            final LocTextKey locToolTextKey) {
 | 
					            final LocTextKey locToolTextKey) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        final Label label = new Label(parent, SWT.NONE);
 | 
					        final Label label = new Label(parent, SWT.NONE);
 | 
				
			||||||
        this.injectI18n(label, locTextKey, locToolTextKey);
 | 
					        this.polyglotPageService.injectI18n(label, locTextKey, locToolTextKey);
 | 
				
			||||||
        return label;
 | 
					        return label;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -265,7 +261,7 @@ public class WidgetFactory {
 | 
				
			||||||
            final LocTextKey locToolTextKey) {
 | 
					            final LocTextKey locToolTextKey) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        final Label label = new Label(parent, SWT.NONE);
 | 
					        final Label label = new Label(parent, SWT.NONE);
 | 
				
			||||||
        this.injectI18n(label, locTextKey, locToolTextKey);
 | 
					        this.polyglotPageService.injectI18n(label, locTextKey, locToolTextKey);
 | 
				
			||||||
        label.setData(RWT.CUSTOM_VARIANT, variant.key);
 | 
					        label.setData(RWT.CUSTOM_VARIANT, variant.key);
 | 
				
			||||||
        return label;
 | 
					        return label;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -330,43 +326,43 @@ public class WidgetFactory {
 | 
				
			||||||
        gridLayout.marginHeight = 0;
 | 
					        gridLayout.marginHeight = 0;
 | 
				
			||||||
        group.setLayout(gridLayout);
 | 
					        group.setLayout(gridLayout);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        this.injectI18n(group, locTextKey, locTooltipKey);
 | 
					        this.polyglotPageService.injectI18n(group, locTextKey, locTooltipKey);
 | 
				
			||||||
        return group;
 | 
					        return group;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Tree treeLocalized(final Composite parent, final int style) {
 | 
					    public Tree treeLocalized(final Composite parent, final int style) {
 | 
				
			||||||
        final Tree tree = new Tree(parent, style);
 | 
					        final Tree tree = new Tree(parent, style);
 | 
				
			||||||
        this.injectI18n(tree);
 | 
					        this.polyglotPageService.injectI18n(tree);
 | 
				
			||||||
        return tree;
 | 
					        return tree;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public TreeItem treeItemLocalized(final Tree parent, final String locTextKey) {
 | 
					    public TreeItem treeItemLocalized(final Tree parent, final String locTextKey) {
 | 
				
			||||||
        final TreeItem item = new TreeItem(parent, SWT.NONE);
 | 
					        final TreeItem item = new TreeItem(parent, SWT.NONE);
 | 
				
			||||||
        this.injectI18n(item, new LocTextKey(locTextKey));
 | 
					        this.polyglotPageService.injectI18n(item, new LocTextKey(locTextKey));
 | 
				
			||||||
        return item;
 | 
					        return item;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public TreeItem treeItemLocalized(final Tree parent, final LocTextKey locTextKey) {
 | 
					    public TreeItem treeItemLocalized(final Tree parent, final LocTextKey locTextKey) {
 | 
				
			||||||
        final TreeItem item = new TreeItem(parent, SWT.NONE);
 | 
					        final TreeItem item = new TreeItem(parent, SWT.NONE);
 | 
				
			||||||
        this.injectI18n(item, locTextKey);
 | 
					        this.polyglotPageService.injectI18n(item, locTextKey);
 | 
				
			||||||
        return item;
 | 
					        return item;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public TreeItem treeItemLocalized(final TreeItem parent, final String locTextKey) {
 | 
					    public TreeItem treeItemLocalized(final TreeItem parent, final String locTextKey) {
 | 
				
			||||||
        final TreeItem item = new TreeItem(parent, SWT.NONE);
 | 
					        final TreeItem item = new TreeItem(parent, SWT.NONE);
 | 
				
			||||||
        this.injectI18n(item, new LocTextKey(locTextKey));
 | 
					        this.polyglotPageService.injectI18n(item, new LocTextKey(locTextKey));
 | 
				
			||||||
        return item;
 | 
					        return item;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public TreeItem treeItemLocalized(final TreeItem parent, final LocTextKey locTextKey) {
 | 
					    public TreeItem treeItemLocalized(final TreeItem parent, final LocTextKey locTextKey) {
 | 
				
			||||||
        final TreeItem item = new TreeItem(parent, SWT.NONE);
 | 
					        final TreeItem item = new TreeItem(parent, SWT.NONE);
 | 
				
			||||||
        this.injectI18n(item, locTextKey);
 | 
					        this.polyglotPageService.injectI18n(item, locTextKey);
 | 
				
			||||||
        return item;
 | 
					        return item;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Table tableLocalized(final Composite parent) {
 | 
					    public Table tableLocalized(final Composite parent) {
 | 
				
			||||||
        final Table table = new Table(parent, SWT.SINGLE | SWT.NO_SCROLL);
 | 
					        final Table table = new Table(parent, SWT.SINGLE | SWT.NO_SCROLL);
 | 
				
			||||||
        this.injectI18n(table);
 | 
					        this.polyglotPageService.injectI18n(table);
 | 
				
			||||||
        return table;
 | 
					        return table;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -376,13 +372,13 @@ public class WidgetFactory {
 | 
				
			||||||
            final LocTextKey toolTipKey) {
 | 
					            final LocTextKey toolTipKey) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        final TableColumn tableColumn = new TableColumn(table, SWT.NONE);
 | 
					        final TableColumn tableColumn = new TableColumn(table, SWT.NONE);
 | 
				
			||||||
        this.injectI18n(tableColumn, locTextKey, toolTipKey);
 | 
					        this.polyglotPageService.injectI18n(tableColumn, locTextKey, toolTipKey);
 | 
				
			||||||
        return tableColumn;
 | 
					        return tableColumn;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public TabFolder tabFolderLocalized(final Composite parent) {
 | 
					    public TabFolder tabFolderLocalized(final Composite parent) {
 | 
				
			||||||
        final TabFolder tabs = new TabFolder(parent, SWT.NONE);
 | 
					        final TabFolder tabs = new TabFolder(parent, SWT.NONE);
 | 
				
			||||||
        this.injectI18n(tabs);
 | 
					        this.polyglotPageService.injectI18n(tabs);
 | 
				
			||||||
        return tabs;
 | 
					        return tabs;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -399,7 +395,7 @@ public class WidgetFactory {
 | 
				
			||||||
            final LocTextKey toolTipKey) {
 | 
					            final LocTextKey toolTipKey) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        final TabItem tabItem = new TabItem(parent, SWT.NONE);
 | 
					        final TabItem tabItem = new TabItem(parent, SWT.NONE);
 | 
				
			||||||
        this.injectI18n(tabItem, locTextKey, toolTipKey);
 | 
					        this.polyglotPageService.injectI18n(tabItem, locTextKey, toolTipKey);
 | 
				
			||||||
        return tabItem;
 | 
					        return tabItem;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -449,6 +445,17 @@ public class WidgetFactory {
 | 
				
			||||||
            final LocTextKey toolTipTextKey,
 | 
					            final LocTextKey toolTipTextKey,
 | 
				
			||||||
            final Supplier<List<Tuple<String>>> itemsToolTipSupplier) {
 | 
					            final Supplier<List<Tuple<String>>> itemsToolTipSupplier) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return selectionLocalized(type, parent, itemsSupplier, toolTipTextKey, itemsToolTipSupplier, null);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Selection selectionLocalized(
 | 
				
			||||||
 | 
					            final Selection.Type type,
 | 
				
			||||||
 | 
					            final Composite parent,
 | 
				
			||||||
 | 
					            final Supplier<List<Tuple<String>>> itemsSupplier,
 | 
				
			||||||
 | 
					            final LocTextKey toolTipTextKey,
 | 
				
			||||||
 | 
					            final Supplier<List<Tuple<String>>> itemsToolTipSupplier,
 | 
				
			||||||
 | 
					            final String actionLocTextPrefix) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        final Selection selection;
 | 
					        final Selection selection;
 | 
				
			||||||
        switch (type) {
 | 
					        switch (type) {
 | 
				
			||||||
            case SINGLE:
 | 
					            case SINGLE:
 | 
				
			||||||
| 
						 | 
					@ -464,7 +471,7 @@ public class WidgetFactory {
 | 
				
			||||||
                selection = new MultiSelection(parent);
 | 
					                selection = new MultiSelection(parent);
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
            case MULTI_COMBO:
 | 
					            case MULTI_COMBO:
 | 
				
			||||||
                selection = new MultiSelectionCombo(parent, this);
 | 
					                selection = new MultiSelectionCombo(parent, this, actionLocTextPrefix);
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
            case MULTI_CHECKBOX:
 | 
					            case MULTI_CHECKBOX:
 | 
				
			||||||
                selection = new MultiSelectionCheckbox(parent);
 | 
					                selection = new MultiSelectionCheckbox(parent);
 | 
				
			||||||
| 
						 | 
					@ -511,228 +518,8 @@ public class WidgetFactory {
 | 
				
			||||||
            final boolean readonly) {
 | 
					            final boolean readonly) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        final ImageUpload imageUpload = new ImageUpload(parent, this.serverPushService, readonly);
 | 
					        final ImageUpload imageUpload = new ImageUpload(parent, this.serverPushService, readonly);
 | 
				
			||||||
        injectI18n(imageUpload, locTextKey);
 | 
					        this.polyglotPageService.injectI18n(imageUpload, locTextKey);
 | 
				
			||||||
        return imageUpload;
 | 
					        return imageUpload;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // ************************************************************
 | 
					 | 
				
			||||||
    //  TODO code from below should move to PolyglotPageService or a utility of that
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void injectI18n(final ImageUpload imageUpload, final LocTextKey locTextKey) {
 | 
					 | 
				
			||||||
        final Consumer<ImageUpload> imageUploadFunction = iu -> {
 | 
					 | 
				
			||||||
            if (locTextKey != null) {
 | 
					 | 
				
			||||||
                iu.setSelectionText(this.i18nSupport.getText(locTextKey));
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        };
 | 
					 | 
				
			||||||
        imageUpload.setData(POLYGLOT_WIDGET_FUNCTION_KEY, imageUploadFunction);
 | 
					 | 
				
			||||||
        imageUploadFunction.accept(imageUpload);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void injectI18n(final Label label, final LocTextKey locTextKey) {
 | 
					 | 
				
			||||||
        injectI18n(label, locTextKey, null);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void injectI18n(final Label label, final LocTextKey locTextKey, final LocTextKey locToolTipKey) {
 | 
					 | 
				
			||||||
        final Consumer<Label> labelFunction = labelFunction(locTextKey, locToolTipKey, this.i18nSupport);
 | 
					 | 
				
			||||||
        label.setData(POLYGLOT_WIDGET_FUNCTION_KEY, labelFunction);
 | 
					 | 
				
			||||||
        labelFunction.accept(label);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void injectI18n(final Group group, final LocTextKey locTextKey, final LocTextKey locTooltipKey) {
 | 
					 | 
				
			||||||
        final Consumer<Group> groupFunction = groupFunction(locTextKey, locTooltipKey, this.i18nSupport);
 | 
					 | 
				
			||||||
        group.setData(POLYGLOT_WIDGET_FUNCTION_KEY, groupFunction);
 | 
					 | 
				
			||||||
        groupFunction.accept(group);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void injectI18n(final Button button, final LocTextKey locTextKey) {
 | 
					 | 
				
			||||||
        injectI18n(button, locTextKey, null);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void injectI18n(final Button button, final LocTextKey locTextKey, final LocTextKey locToolTipKey) {
 | 
					 | 
				
			||||||
        final Consumer<Button> buttonFunction = b -> {
 | 
					 | 
				
			||||||
            if (locTextKey != null) {
 | 
					 | 
				
			||||||
                b.setText(this.i18nSupport.getText(locTextKey));
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            if (locToolTipKey != null) {
 | 
					 | 
				
			||||||
                b.setToolTipText(this.i18nSupport.getText(locToolTipKey));
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        };
 | 
					 | 
				
			||||||
        button.setData(POLYGLOT_WIDGET_FUNCTION_KEY, buttonFunction);
 | 
					 | 
				
			||||||
        buttonFunction.accept(button);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void injectI18n(final Tree tree) {
 | 
					 | 
				
			||||||
        tree.setData(
 | 
					 | 
				
			||||||
                POLYGLOT_WIDGET_FUNCTION_KEY,
 | 
					 | 
				
			||||||
                (Consumer<Tree>) t -> updateLocale(t.getItems(), this.i18nSupport));
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void injectI18n(final TreeItem treeItem, final LocTextKey locTextKey) {
 | 
					 | 
				
			||||||
        treeItem.setData(POLYGLOT_ITEM_TEXT_DATA_KEY, locTextKey);
 | 
					 | 
				
			||||||
        treeItem.setText(this.i18nSupport.getText(locTextKey));
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void injectI18n(final Table table) {
 | 
					 | 
				
			||||||
        table.setData(
 | 
					 | 
				
			||||||
                POLYGLOT_WIDGET_FUNCTION_KEY,
 | 
					 | 
				
			||||||
                (Consumer<Table>) t -> {
 | 
					 | 
				
			||||||
                    updateLocale(t.getColumns(), this.i18nSupport);
 | 
					 | 
				
			||||||
                    updateLocale(t.getItems(), this.i18nSupport);
 | 
					 | 
				
			||||||
                });
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void injectI18n(final TabFolder tabFolder) {
 | 
					 | 
				
			||||||
        tabFolder.setData(
 | 
					 | 
				
			||||||
                POLYGLOT_WIDGET_FUNCTION_KEY,
 | 
					 | 
				
			||||||
                (Consumer<TabFolder>) t -> updateLocale(t.getItems(), this.i18nSupport));
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void injectI18n(final TableColumn tableColumn, final LocTextKey locTextKey, final LocTextKey locTooltipKey) {
 | 
					 | 
				
			||||||
        tableColumn.setData(POLYGLOT_ITEM_TEXT_DATA_KEY, locTextKey);
 | 
					 | 
				
			||||||
        tableColumn.setText(this.i18nSupport.getText(locTextKey));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (locTooltipKey != null) {
 | 
					 | 
				
			||||||
            tableColumn.setData(POLYGLOT_ITEM_TOOLTIP_DATA_KEY, locTooltipKey);
 | 
					 | 
				
			||||||
            tableColumn.setToolTipText(this.i18nSupport.getText(locTooltipKey));
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void injectI18n(final TableItem tableItem, final LocTextKey... locTextKey) {
 | 
					 | 
				
			||||||
        if (locTextKey == null) {
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        tableItem.setData(POLYGLOT_ITEM_TEXT_DATA_KEY, locTextKey);
 | 
					 | 
				
			||||||
        for (int i = 0; i < locTextKey.length; i++) {
 | 
					 | 
				
			||||||
            tableItem.setText(i, this.i18nSupport.getText(locTextKey[i]));
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private void injectI18n(final TabItem tabItem, final LocTextKey locTextKey, final LocTextKey locTooltipKey) {
 | 
					 | 
				
			||||||
        tabItem.setData(POLYGLOT_ITEM_TEXT_DATA_KEY, locTextKey);
 | 
					 | 
				
			||||||
        tabItem.setText(this.i18nSupport.getText(locTextKey));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (locTooltipKey != null) {
 | 
					 | 
				
			||||||
            tabItem.setData(POLYGLOT_ITEM_TOOLTIP_DATA_KEY, locTooltipKey);
 | 
					 | 
				
			||||||
            tabItem.setToolTipText(this.i18nSupport.getText(locTooltipKey));
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void createLanguageSelector(final PageContext composerCtx) {
 | 
					 | 
				
			||||||
        for (final Locale locale : this.i18nSupport.supportedLanguages()) {
 | 
					 | 
				
			||||||
            final Label languageSelection = new Label(composerCtx.getParent(), SWT.NONE);
 | 
					 | 
				
			||||||
            languageSelection.setData(
 | 
					 | 
				
			||||||
                    POLYGLOT_WIDGET_FUNCTION_KEY,
 | 
					 | 
				
			||||||
                    (Consumer<Label>) label -> label.setVisible(
 | 
					 | 
				
			||||||
                            !this.i18nSupport.getCurrentLocale()
 | 
					 | 
				
			||||||
                                    .getLanguage()
 | 
					 | 
				
			||||||
                                    .equals(locale.getLanguage())));
 | 
					 | 
				
			||||||
            languageSelection.setData(RWT.CUSTOM_VARIANT, "header");
 | 
					 | 
				
			||||||
            languageSelection.setText("|  " + locale.getLanguage().toUpperCase());
 | 
					 | 
				
			||||||
            //languageSelection.updateLocale(this.i18nSupport);
 | 
					 | 
				
			||||||
            languageSelection.addListener(SWT.MouseDown, event -> {
 | 
					 | 
				
			||||||
                this.polyglotPageService.setPageLocale(composerCtx.getRoot(), locale);
 | 
					 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private static final Consumer<Label> labelFunction(
 | 
					 | 
				
			||||||
            final LocTextKey locTextKey,
 | 
					 | 
				
			||||||
            final LocTextKey locToolTipKey,
 | 
					 | 
				
			||||||
            final I18nSupport i18nSupport) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return label -> {
 | 
					 | 
				
			||||||
            if (locTextKey != null) {
 | 
					 | 
				
			||||||
                label.setText(i18nSupport.getText(locTextKey));
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            if (locToolTipKey != null) {
 | 
					 | 
				
			||||||
                label.setToolTipText(i18nSupport.getText(locToolTipKey));
 | 
					 | 
				
			||||||
                // TODO managing a tool-tip delay is not working as expected
 | 
					 | 
				
			||||||
                //      is there another way to achieve this?
 | 
					 | 
				
			||||||
//                label.addListener(SWT.MouseEnter, event -> {
 | 
					 | 
				
			||||||
//                    System.out.println("*************** set tooltip delay");
 | 
					 | 
				
			||||||
//                    label.getDisplay().timerExec(1000, () -> {
 | 
					 | 
				
			||||||
//                        System.out.println("*************** set tooltip");
 | 
					 | 
				
			||||||
//                        label.setToolTipText(i18nSupport.getText(locToolTipKey));
 | 
					 | 
				
			||||||
//                    });
 | 
					 | 
				
			||||||
//                });
 | 
					 | 
				
			||||||
//                label.addListener(SWT.MouseExit, event -> {
 | 
					 | 
				
			||||||
//                    label.setToolTipText(null);
 | 
					 | 
				
			||||||
//                });
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        };
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private static final Consumer<Group> groupFunction(
 | 
					 | 
				
			||||||
            final LocTextKey locTextKey,
 | 
					 | 
				
			||||||
            final LocTextKey locToolTipKey,
 | 
					 | 
				
			||||||
            final I18nSupport i18nSupport) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return group -> {
 | 
					 | 
				
			||||||
            if (locTextKey != null) {
 | 
					 | 
				
			||||||
                group.setText(i18nSupport.getText(locTextKey));
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            if (locToolTipKey != null) {
 | 
					 | 
				
			||||||
                group.setToolTipText(i18nSupport.getText(locToolTipKey, StringUtils.EMPTY));
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        };
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private static final void updateLocale(final TabItem[] items, final I18nSupport i18nSupport) {
 | 
					 | 
				
			||||||
        if (items == null) {
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        for (final TabItem childItem : items) {
 | 
					 | 
				
			||||||
            final LocTextKey locTextKey = (LocTextKey) childItem.getData(POLYGLOT_ITEM_TEXT_DATA_KEY);
 | 
					 | 
				
			||||||
            if (locTextKey != null) {
 | 
					 | 
				
			||||||
                childItem.setText(i18nSupport.getText(locTextKey));
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private static final void updateLocale(final TreeItem[] items, final I18nSupport i18nSupport) {
 | 
					 | 
				
			||||||
        if (items == null) {
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        for (final TreeItem childItem : items) {
 | 
					 | 
				
			||||||
            final LocTextKey locTextKey = (LocTextKey) childItem.getData(POLYGLOT_ITEM_TEXT_DATA_KEY);
 | 
					 | 
				
			||||||
            if (locTextKey != null) {
 | 
					 | 
				
			||||||
                childItem.setText(i18nSupport.getText(locTextKey));
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            updateLocale(childItem.getItems(), i18nSupport);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private static void updateLocale(final TableItem[] items, final I18nSupport i18nSupport) {
 | 
					 | 
				
			||||||
        if (items == null) {
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        for (final TableItem childItem : items) {
 | 
					 | 
				
			||||||
            final LocTextKey[] locTextKey = (LocTextKey[]) childItem.getData(POLYGLOT_ITEM_TEXT_DATA_KEY);
 | 
					 | 
				
			||||||
            if (locTextKey != null) {
 | 
					 | 
				
			||||||
                for (int i = 0; i < locTextKey.length; i++) {
 | 
					 | 
				
			||||||
                    if (locTextKey[i] != null) {
 | 
					 | 
				
			||||||
                        childItem.setText(i, i18nSupport.getText(locTextKey[i]));
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private static void updateLocale(final TableColumn[] columns, final I18nSupport i18nSupport) {
 | 
					 | 
				
			||||||
        if (columns == null) {
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        for (final TableColumn childItem : columns) {
 | 
					 | 
				
			||||||
            final LocTextKey locTextKey = (LocTextKey) childItem.getData(POLYGLOT_ITEM_TEXT_DATA_KEY);
 | 
					 | 
				
			||||||
            if (locTextKey != null) {
 | 
					 | 
				
			||||||
                childItem.setText(i18nSupport.getText(locTextKey));
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,6 +21,9 @@ sebserver.overall.action.category.varia=Varia
 | 
				
			||||||
sebserver.overall.status.active=Active
 | 
					sebserver.overall.status.active=Active
 | 
				
			||||||
sebserver.overall.status.inactive=Inactive
 | 
					sebserver.overall.status.inactive=Inactive
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sebserver.overall.action.add=Add;
 | 
				
			||||||
 | 
					sebserver.overall.action.remove=Remove
 | 
				
			||||||
 | 
					
 | 
				
			||||||
################################
 | 
					################################
 | 
				
			||||||
# Form validation and messages
 | 
					# Form validation and messages
 | 
				
			||||||
################################
 | 
					################################
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue