How to fire event

6,732 views
Skip to first unread message

HarryClaymore

unread,
Dec 15, 2009, 8:42:59 AM12/15/09
to Google Web Toolkit
Hi. I wonder how could i fire an simple OnChangeEvent for Widget ?
It implements interface HasChangeHandlers.
I just want to fireEvent to mark widget as "changed"

exapmple:

selectAllButton = DasUtils.mkButton( GenericStrings.SELECT_ALL.toString
(), new Runnable() {
public void run() {
for ( int i = 0; i < lbRef[0].getItemCount(); i++ ) {
lbRef[0].setItemSelected( i, true );
}
// SearchFieldAttrIn.this.fireEvent( ); i dont know what to do
here.
// SearchFieldAttrIn.this.onBrowserEvent( new ChangeEvent() );
}
} );

Thanks !

Thomas Broyer

unread,
Dec 16, 2009, 9:27:21 AM12/16/09
to Google Web Toolkit


On Dec 15, 2:42 pm, HarryClaymore <dekadanced...@gmail.com> wrote:
> Hi. I wonder how could i fire an simple OnChangeEvent for Widget ?
> It implements interface HasChangeHandlers.
> I just want to fireEvent to mark widget as "changed"

ChangeEvent is a DomEvent, which is mostly aimed at making onchange=
available in GWT. For new widgets, moreover composites, you should use
"logical" events, which are lighter-weight; either use one from
com.google.gwt.event.logical.client or create one (that's not
difficult, read the code the ones in the "logical" package, you only
need an "XxxHandler extends EventHandler" and "XxxEvent extends
GwtEvent<XxxHandler>", and optionally an HasXxxHandlers if you intend
to reuse your event in many places and/or don't want to reference the
widget class directly in your code, for instance if you follow the
same MVP rules as Ray Ryan in his Google I/O '09 talk)

Firing a ChangeEvent programmatically is possible though:

> selectAllButton = DasUtils.mkButton( GenericStrings.SELECT_ALL.toString
> (), new Runnable() {
>                         public void run() {
>                                 for ( int i = 0; i < lbRef[0].getItemCount(); i++ ) {
>                                         lbRef[0].setItemSelected( i, true );
>                                 }

DomEvent.fireNativeEvent(Document.get().createChangeEvent(),
SearchFieldAttrIn.this);

John Gilbrough

unread,
Dec 24, 2009, 12:38:04 PM12/24/09
to Google Web Toolkit
Firing a change event turns out being simple:

package simple.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextBox;

class OurChangeEvent extends ChangeEvent {}

public class Simple implements EntryPoint {

public void onModuleLoad() {
TextBox textBox = new TextBox();
RootPanel.get().add(textBox);

textBox.addChangeHandler(new ChangeHandler() {
public void onChange(ChangeEvent event) {
Window.alert("got change event on textBox");
}
});
textBox.fireEvent(new OurChangeEvent());
}
}


On Dec 15, 5:42 am, HarryClaymore <dekadanced...@gmail.com> wrote:
> Hi. I wonder how could i fire an simple OnChangeEvent for Widget ?
> It implements interface HasChangeHandlers.

> I just want tofireEventto mark widget as "changed"

aditya ch

unread,
Dec 28, 2009, 1:33:09 AM12/28/09
to Google Web Toolkit
John,
There is a flexibility given at the document object level for us to
create custom events using which we can fire the same on any source
object. The API looks as follows
NativeEvent ne = Document.get ().create<EventType>Event ();
<EventType>Event.fireNativeEvent (ne, this);
As you wanted to fire change event on the textbox, you will have to
create change native event and have it fired on the textbox. For e.g.
NativeEvent ne = Document.get ().createChangeEvent ();
ChangeEvent.fireNativeEvent (ne, textBox);
Reply all
Reply to author
Forward
0 new messages