com.google.gwt.sample.i18n.client.I18N.java Source code

Java tutorial

Introduction

Here is the source code for com.google.gwt.sample.i18n.client.I18N.java

Source

/*
 * Copyright 2007 Google Inc.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package com.google.gwt.sample.i18n.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.i18n.client.Dictionary;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;

import java.util.Iterator;
import java.util.NoSuchElementException;

/**
 * A sample module that demonstrates how to localize text resources.
 */
public class I18N implements EntryPoint {

    /**
     * Attaches logical controllers to various elements on the page. Note that
     * this module is logic only; it assumes the HTML handles all layout and
     * styling.
     * 
     * @see com.google.gwt.core.client.EntryPoint#onModuleLoad()
     */
    public void onModuleLoad() {
        // An example that demonstrates NumberFormat.
        NumberFormatExampleConstants numberFormatConstants = GWT.create(NumberFormatExampleConstants.class);
        NumberFormatExampleController numberFormatController = new NumberFormatExampleController(
                numberFormatConstants);
        initNumberFormatExample(numberFormatController);

        // An example that demonstrates DateTimeFormat.
        DateTimeFormatExampleConstants dateTimeFormatConstants = GWT.create(DateTimeFormatExampleConstants.class);
        DateTimeFormatExampleController dateTimeFormatController = new DateTimeFormatExampleController(
                dateTimeFormatConstants);
        initDateTimeFormatExample(dateTimeFormatController);

        // An example that demonstrates Constants.
        initConstantsExample();

        // An example that demonstrates ConstantsWithLookup.
        ConstantsWithLookupExampleConstants constantsWithLookupConstants = GWT
                .create(ConstantsWithLookupExampleConstants.class);
        ConstantsWithLookupExampleController constantsWithLookupController = new ConstantsWithLookupExampleController(
                constantsWithLookupConstants);
        initConstantsWithLookupExample(constantsWithLookupController);

        // An example that demonstrates Messages.
        MessagesExampleConstants messagesExampleConstants = GWT.create(MessagesExampleConstants.class);
        MessagesExampleController messagesController = new MessagesExampleController(messagesExampleConstants);
        initMessagesExample(messagesController);

        // An example that demonstrates Dictionary.
        initDictionaryExample();

        TextBox initiallyFocusedTextBox = numberFormatController.txtInput;
        initiallyFocusedTextBox.setFocus(true);
        initiallyFocusedTextBox.selectAll();
    }

    private void bindElement(String id, String text) {
        Element elem = DOM.getElementById(id);
        if (elem == null) {
            throw new NoSuchElementException(id);
        }
        DOM.setInnerText(elem, text);
    }

    private void bindElement(String id, Widget widget) {
        RootPanel rp = RootPanel.get(id);
        if (rp == null) {
            throw new NoSuchElementException(id);
        }
        rp.clear();
        rp.add(widget);
    }

    private void initConstantsExample() {
        ConstantsExampleConstants constants = GWT.create(ConstantsExampleConstants.class);
        ListBox colorChoices = new ListBox();

        for (String color : constants.colorMap().values()) {
            colorChoices.addItem(color);
        }

        TextBox txtFirstName = new TextBox();
        TextBox txtLastName = new TextBox();

        bindElement("constantsFirstNameCaption", constants.firstName());
        bindElement("constantsFirstNameText", txtFirstName);
        bindElement("constantsLastNameCaption", constants.lastName());
        bindElement("constantsLastNameText", txtLastName);
        bindElement("constantsFavoriteColorCaption", constants.favoriteColor());
        bindElement("constantsFavoriteColorList", colorChoices);

        txtFirstName.setText("Amelie");
        txtLastName.setText("Crutcher");
    }

    private void initConstantsWithLookupExample(ConstantsWithLookupExampleController controller) {
        ConstantsWithLookupExampleConstants constants = controller.getConstants();
        bindElement("constantsWithLookupInputCaption", constants.input());
        bindElement("constantsWithLookupInputText", controller.txtInput);
        bindElement("constantsWithLookupResultsCaption", constants.result());
        bindElement("constantsWithLookupResultsText", controller.txtResult);
    }

    private void initDateTimeFormatExample(DateTimeFormatExampleController controller) {
        DateTimeFormatExampleConstants constants = controller.getConstants();
        bindElement("dateTimeFormatPatternCaption", constants.pattern());
        bindElement("dateTimeFormatPatternList", controller.lstSamplePatterns);
        bindElement("dateTimeFormatPatternText", controller.txtCurrentPattern);
        bindElement("dateTimeFormatPatternError", controller.lblPatternError);
        bindElement("dateTimeFormatInputCaption", constants.inputValue());
        bindElement("dateTimeFormatInputText", controller.txtInput);
        bindElement("dateTimeFormatInputError", controller.lblParseError);
        bindElement("dateTimeFormatOutputCaption", constants.formattedOutput());
        bindElement("dateTimeFormatOutputText", controller.lblFormattedOutput);
    }

    private void initDictionaryExample() {
        FlexTable t = new FlexTable();
        t.setStyleName("i18n-dictionary");
        bindElement("dictionaryExample", t);

        Dictionary userInfo = Dictionary.getDictionary("userInfo");
        Iterator<String> s = userInfo.keySet().iterator();
        for (int i = 0; s.hasNext(); i++) {
            String key = s.next();
            t.setText(0, i, key);
            t.setText(1, i, userInfo.get(key));
        }
        t.getRowFormatter().setStyleName(0, "i18n-dictionary-header-row");
    }

    private void initMessagesExample(MessagesExampleController controller) {
        MessagesExampleConstants constants = controller.getConstants();
        bindElement("messagesTemplateCaption", constants.messageTemplate());
        bindElement("messagesTemplateText", controller.lblMessageTemplate);
        bindElement("messagesArg1Caption", constants.arg1());
        bindElement("messagesArg1Text", controller.txtArg1);
        bindElement("messagesArg2Caption", constants.arg2());
        bindElement("messagesArg2Text", controller.txtArg2);
        bindElement("messagesArg3Caption", constants.arg3());
        bindElement("messagesArg3Text", controller.txtArg3);
        bindElement("messagesFormattedOutputCaption", constants.formattedMessage());
        bindElement("messagesFormattedOutputText", controller.lblFormattedMessage);
        bindElement("pluralsArg1Caption", constants.arg1());
        bindElement("pluralsArg1Text", controller.pluralCount);
        bindElement("pluralsFormattedOutputCaption", constants.formattedMessage());
        bindElement("pluralsFormattedOutputText", controller.lblPluralMessage);
    }

    private void initNumberFormatExample(NumberFormatExampleController controller) {
        NumberFormatExampleConstants constants = controller.getConstants();
        bindElement("numberFormatPatternCaption", constants.pattern());
        bindElement("numberFormatPatternList", controller.lstSamplePatterns);
        bindElement("numberFormatPatternText", controller.txtCurrentPattern);
        bindElement("numberFormatPatternError", controller.lblPatternError);
        bindElement("numberFormatInputCaption", constants.inputValue());
        bindElement("numberFormatInputText", controller.txtInput);
        bindElement("numberFormatInputError", controller.lblParseError);
        bindElement("numberFormatOutputCaption", constants.formattedOutput());
        bindElement("numberFormatOutputText", controller.lblFormattedOutput);
    }
}