package com.gwt.ui.client; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.FocusEvent; import com.google.gwt.event.dom.client.FocusHandler; import com.google.gwt.event.dom.client.KeyCodes; import com.google.gwt.event.dom.client.KeyPressEvent; import com.google.gwt.event.dom.client.KeyPressHandler; import com.google.gwt.user.client.ui.TextBox; public class PromptedTextBox extends TextBox implements KeyPressHandler, FocusHandler, ClickHandler { private String promptText; private String promptStyle; public PromptedTextBox(String promptText, String promptStyleName) { this.promptText = promptText; this.promptStyle = promptStyleName; this.addKeyPressHandler(this); this.addFocusHandler(this); this.addClickHandler(this); showPrompt(); } public void showPrompt() { if (!("").equals(promptStyle)) this.addStyleName(promptStyle); this.setText(this.promptText); } @Override public void onKeyPress(KeyPressEvent event) { if (promptText.equals(this.getText()) && !(event.getNativeEvent().getKeyCode() == KeyCodes.KEY_TAB)) { hidePrompt(); } } public void hidePrompt() { this.setText(""); if (!("").equals(promptStyle)) this.removeStyleName(promptStyle); } @Override public void onFocus(FocusEvent arg0) { this.setCursorPos(0); } @Override public void onClick(ClickEvent arg0) { if (promptText.equals(this.getText())) hidePrompt(); } }