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;
}
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) {
+ 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");
+ AndOrChooserWidget andOrChooserWidget = new AndOrChooserWidget();
+
+ //on fixe ET ou OU (la valeur sélectionnée)
+ 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;
+ }
+ }
+ }
+ }
+
+ removeCriterionButton.addClickHandler(new ClickHandler() {
+ public void onClick(ClickEvent ce) {
+ try {
+ removeRow(row);
+ } catch (Exception ex) {
+ Window.alert(ex.getMessage());
+ }
+ }
+ });
+
+ setWidget(row, 0, removeCriterionButton);
+ setWidget(row, 1, andOrChooserWidget);
+ }
+
+
+ //on créée le select
+ 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
+ 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);
+ }
+ });
+
+ setWidget(row, 2, selectCritereWidget);
+ }
+
+ /**
+ * Créée le widget de saisie
+ * Ajouter pour chargement requete préenregistrée, code existant trop complexe
+ * @param row
+ * @param critereType
+ */
+ protected void buildCriteriaInputUI(final int row, final CritereTypeDTO critereType) {
+ 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>>() {
+ 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);
+ }
+ }
+ setWidget(row, 3, criteriaLineContainer);
+ }
+ }
+ });
+ }
+
+
public void initCriteria(final int row, final CritereTypeDTO critere) {
getSelectCritereWidget(row).setSelectedCritere(critere);