/**
*
*/
package org.inbio.m3s.gwt.client.widgets.galleries;
import java.util.List;
import org.inbio.m3s.gwt.client.widgets.galleries.listener.SearchFilterListener;
import org.inbio.m3s.gwt.client.widgets.galleries.listener.SearchListener;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
/**
* This class manages the search criteria widget, the results from this class
* are the inputs of the galleries
*
* @author jgutierrez
*/
public class SearchCriteriaForm extends Composite implements ClickListener,
SearchFilterListener {
private HorizontalPanel main;
private VerticalPanel eastSide;
private SearchFilter searchFilterWidget;
private VerticalPanel westSide;
private Label generalExplanationText;
private SearchCriteriaSummary criteriaSummary;
private Label speficHelpText;
private Button search;
private SearchListener searchListener;
/**
* Constructor
*
* @param listener
*/
public SearchCriteriaForm(SearchListener listener) {
main = new HorizontalPanel();
main.setSpacing(10);
// WEST SIDE OF THE SCEEN
westSide = new VerticalPanel();
westSide.setSpacing(15);
westSide.setHorizontalAlignment(HorizontalPanel.ALIGN_LEFT);
generalExplanationText = new Label(
"Por favor agregue al menos un criterio de Búsqueda...");
generalExplanationText.setStyleName("searchCriteria-generalText");
westSide.add(generalExplanationText);
westSide.setHorizontalAlignment(HorizontalPanel.ALIGN_CENTER);
searchFilterWidget = new SearchFilter(this);
westSide.add(searchFilterWidget);
speficHelpText = new Label(
"Aqui debe ir una explicación del filtro y criterio de búsqueda seleccionado");
speficHelpText.setStyleName("searchCriteria-specificText");
westSide.add(speficHelpText);
main.add(westSide);
// EAST SIDE OF THE SCEEN
eastSide = new VerticalPanel();
eastSide.setSpacing(10);
search = new Button("buscar", this);
eastSide.add(search);
criteriaSummary = new SearchCriteriaSummary();
eastSide.add(criteriaSummary);
main.add(eastSide);
// The rest of things
searchListener = listener;
initWidget(main);
}
/**
* Manages the "Search Button" click
*
* TODO: has to be done well
*/
public void onClick(Widget sender) {
List allCriterias = criteriaSummary.getSummary();
searchListener.executeSearch(allCriterias);
}
/**
* Evento se ejecuta cada vez que se escoge algún filtro y para agregarlo en
* el widget que muestra el resumen de la consutla
*/
public void filterSelected(SearchCriteriaTriplet triplete) {
criteriaSummary.addCriteriaItem(triplete);
}
/**
* Cuando un filtro se elije pero por algún motivo no puede ser usado..
*
*/
public void invalidFilter(String cause) {
Window.alert("filtro invalido: " + cause);
}
}