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.Widget; public abstract class StandardNoOpCriteriaMng implements ICriteriaMng { public abstract ValueUI factory( boolean fReadOnly ); String displayName; String fieldName; String operator; public StandardNoOpCriteriaMng( String displayName, String fieldName ) { this( displayName, fieldName, "eq" ); } public StandardNoOpCriteriaMng( String displayName, String fieldName, String operator ) { this.displayName = displayName; this.fieldName = fieldName; this.operator = operator; } @Override public String getDisplayName() { return displayName; } @Override public ICriteriaWidget createCriteriaWidget( JSONValue json, boolean fReadOnly ) { final ValueUI uiValue = factory( fReadOnly ); ICriteriaWidget cw = new ICriteriaWidget() { @Override public JSONValue getValue() { JSONObject obj = new JSONObject(); obj.put( "field", new JSONString( fieldName ) ); obj.put( "op", new JSONString( operator ) ); obj.put( "value", uiValue.getValue() ); return obj; } @Override public Widget asWidget() { return uiValue.asWidget(); } @Override public void setValue( JSONValue json ) { if( json == null ) { uiValue.setValue( null ); return; } JSONObject obj = json.isObject(); if( obj != null ) { assert (obj.get( "field" ).isString().stringValue().equals( fieldName )); uiValue.setValue( obj.get( "value" ) ); } else { uiValue.setValue( null ); return; } } }; cw.setValue( json ); return cw; } }