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;
import fr.lteconsulting.hexa.client.ui.search.SearchMng.SearchInstance;
public class StandardPointingFieldCriteriaMng implements ICriteriaMng
{
String displayName;
SearchMng searchMng;
String pointingField;
String pointedTable;
String pointedField;
public StandardPointingFieldCriteriaMng( String displayName, SearchMng searchMng, String pointingField, String pointedTable, String pointedField )
{
this.displayName = displayName;
this.searchMng = searchMng;
this.pointingField = pointingField;
this.pointedTable = pointedTable;
this.pointedField = pointedField;
}
@Override
public String getDisplayName()
{
return displayName;
}
@Override
public ICriteriaWidget createCriteriaWidget( JSONValue json, boolean fReadOnly )
{
JSONObject obj = null;
if( json != null )
obj = json.isObject();
JSONValue subValue = null;
if( obj != null )
subValue = obj.get( "sub" );
final SearchInstance inst = searchMng.createSearchWidget( fReadOnly );
inst.setValue( subValue );
return new ICriteriaWidget()
{
@Override
public JSONValue getValue()
{
JSONObject obj = new JSONObject();
obj.put( "op", new JSONString( "->" ) );
obj.put( "field", new JSONString( pointingField ) );
if( pointedTable != null )
obj.put( "pointed_table", new JSONString( pointedTable ) );
if( pointedField != null )
obj.put( "pointed_field", new JSONString( pointedField ) );
obj.put( "sub", inst.getValue() );
return obj;
}
@Override
public Widget asWidget()
{
return inst.asWidget();
}
@Override
public void setValue( JSONValue json )
{
inst.setValue( json );
}
};
}
}