blob: baf03ef022d3a1b9ae027450e15cd387caba788c [file] [log] [blame]
/*
* 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 = (NumberFormatExampleConstants) GWT.create(NumberFormatExampleConstants.class);
NumberFormatExampleController numberFormatController = new NumberFormatExampleController(
numberFormatConstants);
initNumberFormatExample(numberFormatController);
// An example that demonstrates DateTimeFormat.
DateTimeFormatExampleConstants dateTimeFormatConstants = (DateTimeFormatExampleConstants) GWT.create(DateTimeFormatExampleConstants.class);
DateTimeFormatExampleController dateTimeFormatController = new DateTimeFormatExampleController(
dateTimeFormatConstants);
initDateTimeFormatExample(dateTimeFormatController);
// An example that demonstrates Constants.
initConstantsExample();
// An example that demonstrates ConstantsWithLookup.
ConstantsWithLookupExampleConstants constantsWithLookupConstants = (ConstantsWithLookupExampleConstants) GWT.create(ConstantsWithLookupExampleConstants.class);
ConstantsWithLookupExampleController constantsWithLookupController = new ConstantsWithLookupExampleController(
constantsWithLookupConstants);
initConstantsWithLookupExample(constantsWithLookupController);
// An example that demonstrates Messages.
MessagesExampleConstants 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 = (ConstantsExampleConstants) GWT.create(ConstantsExampleConstants.class);
ListBox colorChoices = new ListBox();
for (Iterator iter = constants.colorMap().values().iterator(); iter.hasNext();) {
String color = (String) iter.next();
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 s = userInfo.keySet().iterator();
for (int i = 0; s.hasNext(); i++) {
String key = (String) 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);
}
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);
}
}