package fr.lteconsulting.hexa.client.ui.search; import com.google.gwt.json.client.JSONObject; import com.google.gwt.json.client.JSONString; import com.google.gwt.json.client.JSONValue; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.VerticalPanel; import fr.lteconsulting.hexa.client.ui.search.SearchMng.SearchInstance; public class StandardPointedByCriteriaMng implements ICriteriaMng { String displayName; SearchMng searchMng; String pointingTable; public StandardPointedByCriteriaMng( String displayName, SearchMng searchMng, String pointingTable ) { this.displayName = displayName; this.searchMng = searchMng; this.pointingTable = pointingTable; } @Override public String getDisplayName() { return displayName; } @Override public ICriteriaWidget createCriteriaWidget( JSONValue json, boolean fReadOnly ) { WidgetImpl impl = new WidgetImpl( fReadOnly ); impl.setValue( json ); return impl; } class WidgetImpl extends Composite implements ICriteriaWidget { VerticalPanel panel = new VerticalPanel(); SearchInstance inst; WidgetImpl( boolean fReadOnly ) { inst = searchMng.createSearchWidget( fReadOnly ); panel.add( inst ); initWidget( panel ); } @Override public JSONValue getValue() { JSONObject obj = new JSONObject(); obj.put( "op", new JSONString( "<-" ) ); obj.put( "pointing_table", new JSONString( pointingTable ) ); obj.put( "sub", inst.getValue() ); return obj; } @Override public void setValue( JSONValue json ) { if( json == null ) return; inst.setValue( json ); } } }