*/
package fr.gouv.finances.dgfip.xemelios.web2.gwt.client.widgets.search;
+import java.util.ArrayList;
+import java.util.List;
+
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.HTML;
-import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.Widget;
+
import fr.gouv.finances.dgfip.xemelios.web2.gwt.client.service.ServiceLocator;
import fr.gouv.finances.dgfip.xemelios.web2.gwt.client.utils.GWTUtils;
import fr.gouv.finances.dgfip.xemelios.web2.gwt.client.widgets.common.ImageButton;
import fr.gouv.finances.dgfip.xemelios.web2.gwt.shared.PropertyDTO;
import fr.gouv.finances.dgfip.xemelios.web2.gwt.shared.SearchInitParametersDTO;
import fr.gouv.finances.dgfip.xemelios.web2.gwt.shared.SearchParameterDTO;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
/**
* @author CBO
*/
public class CriteriaTable extends Composite {
- private SearchCtxInfoProvider searchWidget;
- private FlexTable flexTable;
-
- private SearchInitParametersDTO searchInitParameters;
-
- public CriteriaTable(SearchCtxInfoProvider searchWidget) {
- this.searchWidget = searchWidget;
- this.flexTable = new FlexTable();
- flexTable.setWidget(0, 0, new HTML(" "));
- flexTable.getRowFormatter().addStyleName(0, "lastCriteriaRow");
- flexTable.getFlexCellFormatter().setColSpan(0, 0, 4);
- initWidget(this.flexTable);
- getElement().setId("Subnav");
- }
-
- public void init(SearchInitParametersDTO searchInitParameters) {
- this.searchInitParameters = searchInitParameters;
- removeAllCriteres();
- for (CritereTypeDTO critereType : searchInitParameters.getMandatoryCritereTypes()) {
- addEmptyCriterion(critereType);
- }
- }
-
- public String getPluginId() {
- return searchInitParameters.getPluginId();
- }
-
- public SearchCtxInfoProvider getMainWidget() {
- return searchWidget;
- }
-
- public void removeAllCriteres() {
- while (getRowCount() > 1) {
- removeRow(getRowCount() - 2);
- }
- }
-
- public SelectCritereWidget getSelectCritereWidget(int row) {
- return (SelectCritereWidget) getWidget(row, SelectCritereWidget.class);
- }
-
- public int addEmptyCriterion(PostRunnable... runner) {
- return addEmptyCriterion(null, runner);
- }
-
- private int addEmptyCriterion(CritereTypeDTO critereType, PostRunnable... runner) {
- final int newCriteriaRowIndex = getRowCount()-1;
- flexTable.insertRow(newCriteriaRowIndex);
- if (critereType != null && newCriteriaRowIndex == 0) {
- // Cas du premier critere de type plugin
- List<CritereTypeDTO> singletonList = new ArrayList<CritereTypeDTO>();
- singletonList.add(critereType);
- SelectCritereWidget selectCritereWidget = new SelectCritereWidget(singletonList, true);
- setWidget(newCriteriaRowIndex, 0, selectCritereWidget);
- flexTable.getFlexCellFormatter().setColSpan(newCriteriaRowIndex, 0, 4);
- flexTable.getRowFormatter().addStyleName(newCriteriaRowIndex, "criteriaRow");
- initCriteria(newCriteriaRowIndex,runner);
- } else {
- ImageButton removeCriterionButton = new ImageButton(SearchResources.INSTANCE.getRemoveCriteriaIcon(), "Supprimer");
- AndOrChooserWidget andOrChooserWidget = new AndOrChooserWidget();
- if(critereType!=null) {
- List<PropertyDTO> props = critereType.getProperties();
- if(props!=null) {
- for(PropertyDTO p:props) {
- if("AND_OR".equals(p.getName())) {
- andOrChooserWidget.setSelectedValue(p.getValue());
- break;
- }
- }
- }
- }
- if (newCriteriaRowIndex <= 0 || critereType != null) {
- DOM.setStyleAttribute(removeCriterionButton.getElement(), "visibility", "hidden");
- } else {
- removeCriterionButton.addClickHandler(new ClickHandler() {
- public void onClick(ClickEvent ce) {
- try {
- ImageButton ib = (ImageButton)((Widget)ce.getSource()).getParent();
- int row = getRow(ib);
- if(row>=0)
- removeRow(row);
- } catch(Exception ex) {
- Window.alert(ex.getMessage());
- }
- }
- });
- }
- setWidget(newCriteriaRowIndex, 0, removeCriterionButton);
- setWidget(newCriteriaRowIndex, 1, andOrChooserWidget);
- if (newCriteriaRowIndex <= 0) {
- DOM.setStyleAttribute(andOrChooserWidget.getElement(), "visibility", "hidden");
- }
- flexTable.getRowFormatter().addStyleName(newCriteriaRowIndex, "criteriaRow");
- SelectCritereWidget selectCritereWidget = null;
- if (critereType == null) {
- selectCritereWidget = new SelectCritereWidget(searchInitParameters.getOptionalCritereTypes(), false);
- } else {
- List<CritereTypeDTO> singletonList = new ArrayList<CritereTypeDTO>();
- singletonList.add(critereType);
- selectCritereWidget = new SelectCritereWidget(singletonList, true);
- }
- setWidget(newCriteriaRowIndex, 2, selectCritereWidget);
- final Widget widget = selectCritereWidget;
- selectCritereWidget.addChangeHandler(new ChangeHandler() {
- @Override
- public void onChange(ChangeEvent event) {
- initCriteria(getRow(widget));
- }
- });
- initCriteria(newCriteriaRowIndex,runner);
- }
- return newCriteriaRowIndex;
- }
-
- public List<SearchParameterDTO> getSearchParameters() {
- List<SearchParameterDTO> toReturn = new ArrayList<SearchParameterDTO>();
- for (int i = 0; i < getRowCount()-1; i++) { // on zappe la dernière ligne, qui est juste un filler et qui ne contient pas de critere
- toReturn.add(getSearchParameter(i));
- }
- return toReturn;
- }
-
- public boolean checkValidity() {
- // Il faut au moins un champ :
- if (getRowCount() <= 0) {
- Window.alert(new HTML("La recherche doit comporter au moins un critère").getHTML());
- return false;
- }
- // Champs obligatoires :
- for (int row = 0; row < getRowCount(); row++) {
- CritereLineContainer criteriaLineContainer = (CritereLineContainer) getWidget(row, CritereLineContainer.class);
- if (criteriaLineContainer != null) {
- for (InputCritereWidget inputCritereWidget : criteriaLineContainer.getInputCriteriaWidgets()) {
- if (!inputCritereWidget.isFilled()) {
- Window.alert(new HTML("Le champ désigné par le curseur doit être rempli.").getHTML());
- inputCritereWidget.setFocus();
- return false;
- }
- }
- }
- }
- // Validité des champs :
- for (int row = 0; row < getRowCount(); row++) {
- CritereLineContainer criteriaLineContainer = (CritereLineContainer) getWidget(row, CritereLineContainer.class);
- if (criteriaLineContainer != null) {
- for (InputCritereWidget inputCritereWidget : criteriaLineContainer.getInputCriteriaWidgets()) {
- try {
- inputCritereWidget.checkValidity();
- } catch(InputCritereWidget.ValidityException ve) {
- Window.alert(new HTML(ve.getMessageToDisplay() + ", veuillez corriger le champ champ désigné par le curseur.").getHTML());
- inputCritereWidget.setFocus();
- return false;
- }
- }
- }
- }
- return true;
- }
-
- private void setWidget(int row, int column, Widget widget) {
- this.flexTable.setWidget(row, column, widget);
- }
-
- private void removeRow(int row) {
- this.flexTable.removeRow(row);
- }
-
- private void clearCell(int row, int column) {
- if (this.flexTable.getCellCount(row) > column) {
- this.flexTable.clearCell(row, column);
- }
- }
-
- private int getRowCount() {
- return this.flexTable.getRowCount();
- }
-
- private int getRow(Widget widget) {
- int retValue = -1;
- for (int i = 0; i < this.flexTable.getRowCount(); i++) {
- for (int j = 0; j < this.flexTable.getCellCount(i); j++) {
- Widget wi = this.flexTable.getWidget(i, j);
- if (wi!=null && (widget.equals(wi) || widget.equals(wi.getParent()))) {
- retValue = i;
- // on a trouvé, on peut renvoyer
- return retValue;
- }
- }
- }
- return retValue;
- }
-
-
-
- /**
- * Créée les zones de sélection des citères + bouton suppression + select ET/OU
- * Ne créée pas le widget de saie
- * Ajouter pour chargement requete préenregistrée, code existant trop complexe
- * @param row
- * @param critereType
- * @param readOnly
- */
- protected void buildCriteriaSelectUI(final int row, final CritereTypeDTO critereType, final boolean readOnly) {
+ private SearchCtxInfoProvider searchWidget;
+ private FlexTable flexTable;
+
+ private SearchInitParametersDTO searchInitParameters;
+
+ public CriteriaTable(SearchCtxInfoProvider searchWidget) {
+ this.searchWidget = searchWidget;
+ this.flexTable = new FlexTable();
+
+ initWidget(this.flexTable);
+ getElement().setId("Subnav");
+ }
+
+ public void init(SearchInitParametersDTO searchInitParameters, boolean keepCriteria) {
+ this.searchInitParameters = searchInitParameters;
+
+ if (!keepCriteria) {
+ removeAllCriteres();
+
+ ArrayList<CritereTypeDTO> mandatoryCritereTypes = searchInitParameters.getMandatoryCritereTypes();
+ for (CritereTypeDTO critereType : mandatoryCritereTypes) {
+ addNewCriteria(critereType);
+ }
+ }
+
+ if (getRowCount() < 1) {
+ addNewCriteria();
+ }
+ }
+
+ public String getPluginId() {
+ return searchInitParameters.getPluginId();
+ }
+
+ public SearchCtxInfoProvider getMainWidget() {
+ return searchWidget;
+ }
+
+ public void removeAllCriteres() {
+ while (getRowCount() > 1) {
+ removeRow(getRowCount() - 1);
+ }
+ }
+
+ public SelectCritereWidget getSelectCritereWidget(int row) {
+ return (SelectCritereWidget) getWidget(row, SelectCritereWidget.class);
+ }
+
+ public List<SearchParameterDTO> getSearchParameters() {
+ List<SearchParameterDTO> toReturn = new ArrayList<SearchParameterDTO>();
+ for (int i = 0; i < getRowCount() - 1; i++) { // on zappe la dernière ligne, qui est juste un filler et qui ne contient pas de critere
+ toReturn.add(getSearchParameter(i));
+ }
+ return toReturn;
+ }
+
+ public boolean checkValidity() {
+ // Il faut au moins un champ :
+ if (getRowCount() <= 0) {
+ Window.alert(new HTML("La recherche doit comporter au moins un critère").getHTML());
+ return false;
+ }
+ // Champs obligatoires :
+ for (int row = 0; row < getRowCount(); row++) {
+ CritereLineContainer criteriaLineContainer = (CritereLineContainer) getWidget(row, CritereLineContainer.class);
+ if (criteriaLineContainer != null) {
+ for (InputCritereWidget inputCritereWidget : criteriaLineContainer.getInputCriteriaWidgets()) {
+ if (!inputCritereWidget.isFilled()) {
+ Window.alert(new HTML("Le champ désigné par le curseur doit être rempli.").getHTML());
+ inputCritereWidget.setFocus();
+ return false;
+ }
+ }
+ }
+ }
+ // Validité des champs :
+ for (int row = 0; row < getRowCount(); row++) {
+ CritereLineContainer criteriaLineContainer = (CritereLineContainer) getWidget(row, CritereLineContainer.class);
+ if (criteriaLineContainer != null) {
+ for (InputCritereWidget inputCritereWidget : criteriaLineContainer.getInputCriteriaWidgets()) {
+ try {
+ inputCritereWidget.checkValidity();
+ } catch (InputCritereWidget.ValidityException ve) {
+ Window.alert(new HTML(ve.getMessageToDisplay() + ", veuillez corriger le champ champ désigné par le curseur.").getHTML());
+ inputCritereWidget.setFocus();
+ return false;
+ }
+ }
+ }
+ }
+ return true;
+ }
+
+ private void setWidget(int row, int column, Widget widget) {
+ this.flexTable.setWidget(row, column, widget);
+ }
+
+ private void removeRow(int row) {
+ this.flexTable.removeRow(row);
+ }
+
+ private int getRowCount() {
+ return this.flexTable.getRowCount();
+ }
+
+ /**
+ * Retrouve l'index de la ligne à laquelle se trouve le widget
+ *
+ * @param widget
+ * @return
+ */
+ private int getRow(Widget widget) {
+ int retValue = -1;
+
+ for (int i = 0; i < this.flexTable.getRowCount() && retValue == -1; i++) {
+ for (int j = 0; j < this.flexTable.getCellCount(i); j++) {
+ Widget wi = this.flexTable.getWidget(i, j);
+ if (wi != null && (widget.equals(wi) || widget.equals(wi.getParent()))) {
+ retValue = i;
+ }
+ }
+ }
+
+ return retValue;
+ }
+
+ /**
+ * Ajoute une nouvelle ligne de critère
+ *
+ * @return
+ */
+ public int addNewCriteria() {
+ return addNewCriteria(null);
+ }
+
+ /**
+ * Ajoute une nouvelle ligne de critère
+ *
+ * @return
+ */
+ public int addNewCriteria(final CritereTypeDTO critereType, PostRunnable... runners) {
+ int row = getRowCount();
+
+ SelectCritereWidget selectWigdet = buildCriteriaSelectUI(row, critereType, false, runners);
+ buildCriteriaInputUI(row, selectWigdet.getSelectedCritere(), runners);
+
+ return row;
+ }
+
+ /**
+ * Créée la zone de sélection du citère + bouton suppression + select et/ou
+ *
+ * @param row
+ * @param critereType
+ * @param readOnly
+ */
+ protected SelectCritereWidget buildCriteriaSelectUI(final int row, final CritereTypeDTO critereType, final boolean readOnly, final PostRunnable... runners) {
flexTable.insertRow(row);
flexTable.getRowFormatter().addStyleName(row, "criteriaRow");
// c'est pas le 1er critere => on ajoute les boutons supprimer, et/ou
if (row > 0) {
- ImageButton removeCriterionButton = new ImageButton(SearchResources.INSTANCE.getRemoveCriteriaIcon(), "Supprimer");
+ final ImageButton removeButton = new ImageButton(SearchResources.INSTANCE.getRemoveCriteriaIcon(), "Supprimer");
AndOrChooserWidget andOrChooserWidget = new AndOrChooserWidget();
- //on fixe ET ou OU (la valeur sélectionnée)
+ // on fixe ET ou OU (la valeur sélectionnée)
if (critereType != null) {
List<PropertyDTO> props = critereType.getProperties();
if (props != null) {
}
}
- removeCriterionButton.addClickHandler(new ClickHandler() {
+ removeButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent ce) {
try {
- removeRow(row);
+ removeRow(getRow(removeButton));
} catch (Exception ex) {
Window.alert(ex.getMessage());
}
}
});
- setWidget(row, 0, removeCriterionButton);
+ setWidget(row, 0, removeButton);
setWidget(row, 1, andOrChooserWidget);
}
-
- //on créée le select
- SelectCritereWidget selectCritereWidget = new SelectCritereWidget(searchInitParameters.getOptionalCritereTypes(), readOnly);
- if(critereType != null){
+ // on créée le select
+ final SelectCritereWidget selectCritereWidget = new SelectCritereWidget(searchInitParameters.getOptionalCritereTypes(), readOnly);
+ if (critereType != null) {
selectCritereWidget.setSelectedCritere(critereType);
}
- //quand on change de type on va récupérer la dernière valeur saisie
+ // quand on change de type on va récupérer la dernière valeur saisie
selectCritereWidget.addChangeHandler(new ChangeHandler() {
-
+
@Override
public void onChange(ChangeEvent event) {
- ListBox select = (ListBox)event.getSource();
- int index = select.getSelectedIndex();
- CritereTypeDTO newCritereType=critereType.clone();
-
- newCritereType.setId(select.getValue(index));
- newCritereType.setLibelle(select.getItemText(index));
-
- buildCriteriaInputUI(row, newCritereType);
+ buildCriteriaInputUI(row, selectCritereWidget.getSelectedCritere(), runners);
}
});
-
+
setWidget(row, 2, selectCritereWidget);
+
+ return selectCritereWidget;
}
/**
- * Créée le widget de saisie
- * Ajouter pour chargement requete préenregistrée, code existant trop complexe
+ * Créée la partie saisie de la ligne de critere
+ *
* @param row
* @param critereType
*/
- protected void buildCriteriaInputUI(final int row, final CritereTypeDTO critereType) {
+ protected void buildCriteriaInputUI(final int row, final CritereTypeDTO critereType, final PostRunnable... runners) {
final SelectCritereWidget selectCritereWidget = getSelectCritereWidget(row);
final ArrayList<PropertyDTO> properties = critereType.getProperties();
selectCritereWidget.setSelectedCritere(critereType);
- ServiceLocator.getXemeliosService().getCritereDefinition(getMainWidget().getSearchSessionId(), getMainWidget().getCollectiviteId(), getMainWidget().getBudgetId(), selectCritereWidget.getSelectedCritere().getId(),
- searchInitParameters.getPluginId(), new AsyncCallback<ArrayList<CritereItemDTO>>() {
+ ServiceLocator.getXemeliosService().getCritereDefinition(getMainWidget().getSearchSessionId(), getMainWidget().getCollectiviteId(), getMainWidget().getBudgetId(), selectCritereWidget.getSelectedCritere().getId(), searchInitParameters.getPluginId(),
+ new AsyncCallback<ArrayList<CritereItemDTO>>() {
public void onFailure(Throwable throwable) {
GWTUtils.handleRPCError(throwable);
}
public void onSuccess(ArrayList<CritereItemDTO> result) {
if (result != null && !result.isEmpty()) {
CritereLineContainer criteriaLineContainer = new CritereLineContainer(CriteriaTable.this, selectCritereWidget.getSelectedCritere().getId(), selectCritereWidget.getOffsetHeight());
+
for (CritereItemDTO critereItem : result) {
CritereWidget cw = CritereWidgetFactory.createWidget(criteriaLineContainer, critereItem, properties);
+
if (cw != null) {
criteriaLineContainer.add(cw);
}
}
+
+ for (PostRunnable r : runners) {
+ r.run();
+ }
+
setWidget(row, 3, criteriaLineContainer);
}
}
});
}
+ private SearchParameterDTO getSearchParameter(int row) {
+ SearchParameterDTO toReturn = new SearchParameterDTO();
+ AndOrChooserWidget andOrChooserWidget = (AndOrChooserWidget) getWidget(row, AndOrChooserWidget.class);
+ if (andOrChooserWidget != null && row != 0) {
+ toReturn.setOperator(andOrChooserWidget.getSelectedValue());
+ }
+ toReturn.setCritereModelId(getSelectCritereWidget(row).getSelectedCritere().getId());
+ CritereLineContainer criteriaLineContainer = (CritereLineContainer) getWidget(row, CritereLineContainer.class);
+ if (criteriaLineContainer != null) {
+ for (InputCritereWidget inputCritereWidget : criteriaLineContainer.getInputCriteriaWidgets()) {
+ toReturn.putInputValue(inputCritereWidget.getInputId(), inputCritereWidget.getInputValue());
+ }
+ }
+ return toReturn;
+ }
-
- public void initCriteria(final int row, final CritereTypeDTO critere) {
- getSelectCritereWidget(row).setSelectedCritere(critere);
- final SelectCritereWidget selectCritereWidget = getSelectCritereWidget(row);
- clearCell(row, 3);
- final ArrayList<PropertyDTO> properties = critere.getProperties();
- ServiceLocator.getXemeliosService().getCritereDefinition(
- getMainWidget().getSearchSessionId(),
- getMainWidget().getCollectiviteId(),
- getMainWidget().getBudgetId(),
- selectCritereWidget.getSelectedCritere().getId(),
- searchInitParameters.getPluginId(),
- new AsyncCallback<ArrayList<CritereItemDTO>>() {
- public void onFailure(Throwable throwable) {
- GWTUtils.handleRPCError(throwable);
- }
- public void onSuccess(ArrayList<CritereItemDTO> result) {
- if (result != null && !result.isEmpty()) {
- CritereLineContainer criteriaLineContainer = new CritereLineContainer(CriteriaTable.this, selectCritereWidget.getSelectedCritere().getId(), selectCritereWidget.getOffsetHeight());
- for (CritereItemDTO critereItem : result) {
- CritereWidget cw = CritereWidgetFactory.createWidget(criteriaLineContainer, critereItem,properties);
- if (cw != null) {
- criteriaLineContainer.add(cw);
- }
-// for(PropertyDTO p:critere.getProperties()) {
-// if("AND_OR".equals(p.getName())) {
-// AndOrChooserWidget andOrChooserWidget = (AndOrChooserWidget)getWidget(row, AndOrChooserWidget.class);
-// if (andOrChooserWidget != null && row != 0) {
-// andOrChooserWidget.setSelectedValue(p.getValue());
-// break;
-// }
-// } else {
-// CritereWidget crit = getWidget(row, p.getName());
-// crit.setInputValue(p.getValue());
-// }
-// }
- }
- setWidget(row, 3, criteriaLineContainer);
- }
- }
- });
-
- }
- public void initCriteria(final int row, final PostRunnable... runner) {
- final SelectCritereWidget selectCritereWidget = getSelectCritereWidget(row);
- clearCell(row, 3);
- ServiceLocator.getXemeliosService().getCritereDefinition(
- getMainWidget().getSearchSessionId(),
- getMainWidget().getCollectiviteId(),
- getMainWidget().getBudgetId(),
- selectCritereWidget.getSelectedCritere().getId(),
- searchInitParameters.getPluginId(),
- new AsyncCallback<ArrayList<CritereItemDTO>>() {
- public void onFailure(Throwable throwable) {
- GWTUtils.handleRPCError(throwable);
- }
- public void onSuccess(ArrayList<CritereItemDTO> result) {
- List<PostRunnable> runners = Arrays.asList(runner);
- PostRunnable firstRunnable = runners.isEmpty() ? null : runners.get(0);
- CritereTypeDTO critereType = firstRunnable!=null ? (CritereTypeDTO)firstRunnable.getAdditionalObject("critere") : null;
-// if(critereType==null) {
-// critereType = selectCritereWidget.getSelectedCritere();
-// }
- if (result != null && !result.isEmpty()) {
- CritereLineContainer criteriaLineContainer = new CritereLineContainer(CriteriaTable.this, selectCritereWidget.getSelectedCritere().getId(), selectCritereWidget.getOffsetHeight());
- for (CritereItemDTO critereItem : result) {
- CritereWidget cw = null;
- if(critereType==null) {
- cw = CritereWidgetFactory.createWidget(criteriaLineContainer, critereItem);
- for(PropertyDTO p:selectCritereWidget.getSelectedCritere().getProperties()) {
- if("AND_OR".equals(p.getName())) {
- AndOrChooserWidget andOrChooserWidget = (AndOrChooserWidget)getWidget(row, AndOrChooserWidget.class);
- if (andOrChooserWidget != null && row != 0) {
- andOrChooserWidget.setSelectedValue(p.getValue());
- break;
- }
- } else {
- if(cw.getId().equals(p.getName()))
- cw.setInputValue(p.getValue());
- }
- }
- } else {
- cw = CritereWidgetFactory.createWidget(criteriaLineContainer, critereItem, critereType.getProperties());
- for(PropertyDTO p:critereType.getProperties()) {
- if("AND_OR".equals(p.getName())) {
- AndOrChooserWidget andOrChooserWidget = (AndOrChooserWidget)getWidget(row, AndOrChooserWidget.class);
- if (andOrChooserWidget != null && row != 0) {
- andOrChooserWidget.setSelectedValue(p.getValue());
- break;
- }
- } else {
- CritereWidget crit = getWidget(row, p.getName());
- crit.setInputValue(p.getValue());
- }
- }
-// for(PropertyDTO p:selectCritereWidget.getSelectedCritere().getProperties()) {
-// if("AND_OR".equals(p.getName())) {
-// AndOrChooserWidget andOrChooserWidget = (AndOrChooserWidget)getWidget(row, AndOrChooserWidget.class);
-// if (andOrChooserWidget != null && row != 0) {
-// andOrChooserWidget.setSelectedValue(p.getValue());
-// break;
-// }
-// } else {
-// CritereWidget crit = getWidget(row, p.getName());
-// crit.setInputValue(p.getValue());
-// }
-// }
- }
- if (cw != null) {
- criteriaLineContainer.add(cw);
- }
- }
- setWidget(row, 3, criteriaLineContainer);
- }
- for(PostRunnable pr:runners) {
- pr.run();
- }
- }
- });
- }
-
- private SearchParameterDTO getSearchParameter(int row) {
- SearchParameterDTO toReturn = new SearchParameterDTO();
- AndOrChooserWidget andOrChooserWidget = (AndOrChooserWidget)getWidget(row, AndOrChooserWidget.class);
- if (andOrChooserWidget != null && row != 0) {
- toReturn.setOperator(andOrChooserWidget.getSelectedValue());
- }
- toReturn.setCritereModelId(getSelectCritereWidget(row).getSelectedCritere().getId());
- CritereLineContainer criteriaLineContainer = (CritereLineContainer) getWidget(row, CritereLineContainer.class);
- if (criteriaLineContainer != null) {
- for (InputCritereWidget inputCritereWidget : criteriaLineContainer.getInputCriteriaWidgets()) {
- toReturn.putInputValue(inputCritereWidget.getInputId(), inputCritereWidget.getInputValue());
- }
- }
- return toReturn;
- }
-
- private Widget getWidget(int row, Class clazz) {
- for (int i = 0; i < this.flexTable.getCellCount(row); i++) {
- Widget widget = this.flexTable.getWidget(row, i);
- if (widget != null && widget.getClass().equals(clazz)) {
- return widget;
- }
- }
- return null;
- }
- private CritereWidget getWidget(int row, String id) {
- for (int i = 0; i < this.flexTable.getCellCount(row); i++) {
- Widget widget = this.flexTable.getWidget(row, i);
- if(widget instanceof CritereWidget) {
- CritereWidget cw = (CritereWidget)widget;
- if (widget != null && cw.getId().equals(id)) {
- return cw;
- }
- }
- }
- return null;
- }
+ private Widget getWidget(int row, Class clazz) {
+ for (int i = 0; i < this.flexTable.getCellCount(row); i++) {
+ Widget widget = this.flexTable.getWidget(row, i);
+ if (widget != null && widget.getClass().equals(clazz)) {
+ return widget;
+ }
+ }
+ return null;
+ }
}