⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 abstractformatexamplecontroller.java

📁 Google Web Toolkit (GWT)
💻 JAVA
字号:
/* * 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.user.client.ui.ChangeListener;import com.google.gwt.user.client.ui.HasText;import com.google.gwt.user.client.ui.KeyboardListenerAdapter;import com.google.gwt.user.client.ui.Label;import com.google.gwt.user.client.ui.ListBox;import com.google.gwt.user.client.ui.TextBox;import com.google.gwt.user.client.ui.Widget;import java.util.Map;/** * Abstract base class used to implement {@link NumberFormatExampleController} * and {@link DateTimeFormatExampleController}. */public abstract class AbstractFormatExampleController {  private static final String PATTERN_KEY_CUSTOM = "custom";  public final TextBox txtCurrentPattern = new TextBox();  public final Label lblFormattedOutput = new Label();  public final Label lblPatternError = new Label();  public final Label lblParseError = new Label();  public final ListBox lstSamplePatterns = new ListBox();  public final TextBox txtInput = new TextBox();  private String prevPattern;  private String prevInput;  protected AbstractFormatExampleController(String defaultText,      Map<String, String> patterns) {    initWidgetsForPattern(patterns);    initWidgetsForInput();    txtInput.setText(defaultText);    tryToParseInput(false);  }  protected abstract String doGetPattern(String patternKey);  /**   * Parses the specified pattern and remembers it for formatting input later.   *    * @param pattern   * @throws IllegalArgumentException if the pattern could not be parsed   */  protected abstract void doParseAndRememberPattern(String pattern);  protected abstract void doParseInput(String toParse, HasText output,      HasText error);  private void initWidgetsForInput() {    txtInput.addKeyboardListener(new KeyboardListenerAdapter() {      @Override      public void onKeyUp(Widget sender, char keyCode, int modifiers) {        tryToParseInput(false);      }    });  }  private void initWidgetsForPattern(Map<String, String> patternMap) {    txtCurrentPattern.addKeyboardListener(new KeyboardListenerAdapter() {      @Override      public void onKeyUp(Widget sender, char keyCode, int modifiers) {        String pattern = txtCurrentPattern.getText();        // Update the active pattern.        tryToActivatePattern(pattern);      }    });    // Load pattern choices.    for (Map.Entry<String, String> entry : patternMap.entrySet()) {      String patternKey = entry.getKey();      String caption = entry.getValue();      lstSamplePatterns.addItem(caption, patternKey);    }    lstSamplePatterns.addChangeListener(new ChangeListener() {      public void onChange(Widget sender) {        syncPatternToList();      }    });    lstSamplePatterns.setSelectedIndex(0);    syncPatternToList();  }  private void syncPatternToList() {    int sel = lstSamplePatterns.getSelectedIndex();    assert (sel >= 0) && (sel < lstSamplePatterns.getItemCount());    // Update the current pattern.    String patternKey = lstSamplePatterns.getValue(sel);    String pattern;    if (PATTERN_KEY_CUSTOM.equals(patternKey)) {      // Make the pattern text box editable.      txtCurrentPattern.setReadOnly(false);      pattern = txtCurrentPattern.getText();      txtCurrentPattern.setText(pattern);      txtCurrentPattern.selectAll();      txtCurrentPattern.setFocus(true);    } else {      // Make the pattern text box read only.      txtCurrentPattern.setReadOnly(true);      pattern = doGetPattern(patternKey);      txtCurrentPattern.setText(pattern);    }    // Make the new pattern active.    tryToActivatePattern(pattern);  }  private void tryToActivatePattern(String pattern) {    if (!pattern.equals(prevPattern)) {      prevPattern = pattern;      lblPatternError.setText("");      try {        // Allow the subclass to parse the pattern.        doParseAndRememberPattern(pattern);        // Parse and format the input again since the pattern changed.        tryToParseInput(true);      } catch (IllegalArgumentException e) {        lblPatternError.setText(e.getMessage());      }    }  }  private void tryToParseInput(boolean forceReparse) {    String toParse = txtInput.getText();    if (forceReparse || !toParse.equals(prevInput)) {      prevInput = toParse;      lblParseError.setText("");      doParseInput(toParse, lblFormattedOutput, lblParseError);    }  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -