package fr.lteconsulting.hexa.client.form.fieldtypes; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.json.client.JSONValue; import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; import fr.lteconsulting.hexa.client.form.FormManager; import fr.lteconsulting.hexa.client.form.marshalls.CallbackIntegerMarshall; import fr.lteconsulting.hexa.client.interfaces.IAsyncCallback; public class AnchorFieldType implements FieldType { public static FormManager.Marshall<IAsyncCallback<Integer>> marshall = new CallbackIntegerMarshall(); String title = ""; class Wrap extends Composite { Anchor view = null; JSONValue callback = null; Wrap() { view = new Anchor( title ); view.addClickHandler( new ClickHandler() { public void onClick( ClickEvent event ) { if( callback == null ) return; marshall.get( callback ).onSuccess( 1 ); } } ); initWidget( view ); } void setCallback( JSONValue callback ) { this.callback = callback; } } public AnchorFieldType( String title ) { this.title = title; } @Override public Widget getWidget() { return new Wrap(); } @Override public void setValue( Widget widget, JSONValue value ) { ((Wrap) widget).setCallback( value ); } @Override public JSONValue getValue( Widget widget ) { return null; } @Override public FieldChangeHandlerManager getHandlerManager( Widget widget ) { return null; } }