package fr.lteconsulting.hexa.client.ui.widget; import com.google.gwt.event.dom.client.KeyCodes; import com.google.gwt.event.dom.client.KeyUpEvent; import com.google.gwt.event.dom.client.KeyUpHandler; import com.google.gwt.event.logical.shared.AttachEvent; import com.google.gwt.user.client.ui.TextBox; public abstract class TextEditor extends GenericEditor<TextBox> { protected abstract void onValidate( String newValue ); public TextEditor( String text, boolean fShowCancel ) { this( text, fShowCancel, true ); } public TextEditor( String text, boolean fShowCancel, boolean fShowValidator ) { super( new TextBox(), fShowCancel, fShowValidator ); getEditorWidget().addAttachHandler( new AttachEvent.Handler() { @Override public void onAttachOrDetach( AttachEvent event ) { getEditorWidget().selectAll(); } } ); getEditorWidget().addKeyUpHandler( new KeyUpHandler() { @Override public void onKeyUp( KeyUpEvent event ) { if( event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER ) { onValidate( getEditorWidget().getText() ); event.stopPropagation(); } else if( event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ESCAPE ) { finishedEdition(); event.stopPropagation(); } } } ); getEditorWidget().setText( text ); } @Override protected final void onValidate( TextBox widget ) { onValidate( widget.getText() ); } protected void displayMessage( String text ) { getEditorWidget().setText( text ); getEditorWidget().setEnabled( false ); } }