package fr.lteconsulting.hexa.client.ui.Criteria; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.dom.client.Style; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.json.client.JSONObject; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.SimplePanel; import fr.lteconsulting.hexa.client.comm.GenericJSO; import fr.lteconsulting.hexa.client.interfaces.ICriteriaFieldMng; import fr.lteconsulting.hexa.client.ui.Styles; public class Criteria extends Composite { public static String getBeautifulText( String searchString ) { return CriteriaInternal.getBeautifulText( searchString ); } boolean fMode; // false == no criteria displayed SimplePanel spot = new SimplePanel(); Anchor searchButton = new Anchor( "Click to specify your research..." ); String criteriaSpotId = DOM.createUniqueId(); String removeButtonId = DOM.createUniqueId(); HTMLPanel panel = new HTMLPanel( "<div><a id='" + removeButtonId + "' href='#' style='float:right'>remove</a><div id='" + criteriaSpotId + "'/></div>" ); CriteriaInternal realCriteria; public Criteria( ICriteriaFieldMng[] criteriaMngs ) { realCriteria = new CriteriaInternal( criteriaMngs ); spot.addStyleName( Styles.CSS.framedPanel() ); initWidget( spot ); panel.add( realCriteria, criteriaSpotId ); setMode( false ); Anchor a = new Anchor( "remove" ); a.getElement().getStyle().setFloat( Style.Float.RIGHT ); a.addClickHandler( new ClickHandler() { @Override public void onClick( ClickEvent event ) { event.preventDefault(); event.stopPropagation(); setMode( false ); } } ); panel.addAndReplaceElement( a, removeButtonId ); searchButton.addClickHandler( new ClickHandler() { @Override public void onClick( ClickEvent event ) { setMode( true ); } } ); } public JSONObject getSearchJson() { if( !fMode ) return null; return realCriteria.getSearchJson().isObject(); } public JavaScriptObject getSearchJs() { JSONObject obj = getSearchJson(); if( obj == null ) return null; return obj.getJavaScriptObject(); } public void setSearchString( GenericJSO jso ) { if( jso == null ) { setMode( false ); return; } setMode( true ); realCriteria.setSearchString( jso ); } void setMode( boolean fMode ) { this.fMode = fMode; if( fMode ) spot.setWidget( panel ); else spot.setWidget( searchButton ); } }