}
private void displaySavedRequest(SearchInitParametersDTO params) {
criteriaTable.removeAllCriteres();
- int i=0;
- for(CritereTypeDTO critere: params.getMandatoryCritereTypes()) {
- PostRunnable pr = new PostRunnable(Integer.toString(i)) {
- boolean alreadyRun = false;
- @Override
- public void run() {
- if(!alreadyRun) {
- criteriaTable.getSelectCritereWidget(getIntValue()).setSelectedCritere((CritereTypeDTO)getAdditionalObject("critere"));
- criteriaTable.initCriteria(getIntValue(), (PostRunnable)this);
- alreadyRun = true;
- }
- }
- };
- pr.setAdditionalObject("critere", critere);
- pr.setAdditionalInt(i);
- int row = criteriaTable.addEmptyCriterion(pr);
- i++;
- }
+
+ int row = 0;
+ for(CritereTypeDTO critereType: params.getMandatoryCritereTypes()) {
+ criteriaTable.buildCriteriaSelectUI(row, critereType, false);
+ criteriaTable.buildCriteriaInputUI(row, critereType);
+
+ row++;
+ }
+
+// int i=0;
+// for(CritereTypeDTO critere: params.getMandatoryCritereTypes()) {
+// PostRunnable pr = new PostRunnable(Integer.toString(i)) {
+// boolean alreadyRun = false;
+// @Override
+// public void run() {
+// if(!alreadyRun) {
+// criteriaTable.getSelectCritereWidget(getIntValue()).setSelectedCritere((CritereTypeDTO)getAdditionalObject("critere"));
+// criteriaTable.initCriteria(getIntValue(), (PostRunnable)this);
+// alreadyRun = true;
+// }
+// }
+// };
+// pr.setAdditionalObject("critere", critere);
+// pr.setAdditionalInt(i);
+// int row = criteriaTable.addEmptyCriterion(pr);
+// i++;
+// }
}
/**
* Enregistre la requête courante
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);
@SuppressWarnings("unchecked")
public void onSuccess(InitParametersDTO result) {
-
+
if (!result.hasTooMuchCollectivites() && result.getCollectivites().isEmpty()) {
- new DlgShowMessage(new SafeHtmlBuilder().append(SafeHtmlUtils.fromSafeConstant(SafeHtmlUtils.htmlEscapeAllowEntities("Aucun(e) " + documentId + "." + etatId + "." + elementId + " n'a été importé."))).toSafeHtml(),
- DlgShowMessage.MESSAGE_TYPE_INFO);
+ new DlgShowMessage(new SafeHtmlBuilder().append(SafeHtmlUtils.fromSafeConstant(SafeHtmlUtils.htmlEscapeAllowEntities("Aucun(e) " + documentId + "." + etatId + "." + elementId + " n'a été importé.")))
+ .toSafeHtml(), DlgShowMessage.MESSAGE_TYPE_INFO);
} else {
SearchWidget.this.initParameters = result;
colAndBudChooserWidget.setSearchSessionId(result.getSearchSessionId());
protected void displaySavedRequest(SearchInitParametersDTO params) {
criteriaTable.removeAllCriteres();
- int i = 0;
- for (CritereTypeDTO critere : params.getMandatoryCritereTypes()) {
- PostRunnable pr = new PostRunnable(Integer.toString(i)) {
- boolean alreadyRun = false;
+ int row = 0;
+ for (CritereTypeDTO critereType : params.getMandatoryCritereTypes()) {
+ criteriaTable.buildCriteriaSelectUI(row, critereType, false);
+ criteriaTable.buildCriteriaInputUI(row, critereType);
- @Override
- public void run() {
- if (!alreadyRun) {
- criteriaTable.getSelectCritereWidget(getIntValue()).setSelectedCritere((CritereTypeDTO) getAdditionalObject("critere"));
- criteriaTable.initCriteria(getIntValue(), (PostRunnable) this);
- alreadyRun = true;
- }
- }
- };
- pr.setAdditionalObject("critere", critere);
- pr.setAdditionalInt(i);
- int row = criteriaTable.addEmptyCriterion(pr);
- i++;
+ row++;
}
}