*/
package fr.gouv.finances.dgfip.xemelios.web2.gwt.client.widgets.common;
+import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Image;
-import java.util.ArrayList;
-import java.util.List;
/**
* An image that can be enabled / disabled
+ *
* @author cmarchand
*/
public class DisableImage extends Composite {
- private ImageResource enabledImage;
- private ImageResource disabledImage;
- private boolean enabled = true;
- private Image image;
-// private List<ClickHandler> clickHandlers;
-// private List<HandlerRegistration> registers;
+ private ImageResource enabledImage;
+ private ImageResource disabledImage;
+ private boolean enabled = true;
+ private Image image;
- public DisableImage(ImageResource enabledImage, ImageResource disabledImage, String title) {
- super();
- this.enabledImage = enabledImage;
- this.disabledImage = disabledImage;
- image = new Image(enabledImage);
- image.setTitle(title);
-// clickHandlers = new ArrayList<ClickHandler>();
-// registers = new ArrayList<HandlerRegistration>();
- initWidget(image);
- }
- public void setEnabled(boolean enable) {
- this.enabled = enable;
- refreshImage();
-// if(enable) {
-// for(ClickHandler ch:clickHandlers) {
-// registers.add(image.addClickHandler(ch));
-// }
-// } else {
-// for(HandlerRegistration hr:registers) {
-// hr.removeHandler();
-// }
-// registers.clear();
-// }
- }
+ public DisableImage(ImageResource enabledImage, ImageResource disabledImage, String title) {
+ super();
+ this.enabledImage = enabledImage;
+ this.disabledImage = disabledImage;
+ image = new Image(enabledImage);
+ image.setTitle(title);
+ initWidget(image);
+ }
- private void refreshImage() {
- image.setResource(enabled ? enabledImage : disabledImage);
- }
+ public void setEnabled(boolean enable) {
+ this.enabled = enable;
+ refreshImage();
+ }
- public HandlerRegistration addClickHandler(ClickHandler handler) {
- HandlerRegistration ret = image.addClickHandler(handler);
-// clickHandlers.add(handler);
-// registers.add(ret);
- return ret;
- }
- public boolean isEnabled() { return enabled; }
+ private void refreshImage() {
+ image.setResource(enabled ? enabledImage : disabledImage);
+ }
+
+ public HandlerRegistration addClickHandler(final ClickHandler handler) {
+ HandlerRegistration ret = image.addClickHandler(new ClickHandler() {
+
+ @Override
+ public void onClick(ClickEvent event) {
+ if (enabled) {
+ handler.onClick(event);
+ }
+ }
+ });
+
+ return ret;
+ }
+
+ public boolean isEnabled() {
+ return enabled;
+ }
}
mainPanel.add(resultTableContainer = new VerticalPanel());
}
this.mainPanel.add(statusBar);
- criteriaTable.init(initParameters.getSearchInitParameters());
- criteriaTable.addEmptyCriterion();
+ criteriaTable.init(initParameters.getSearchInitParameters(), false);
+ criteriaTable.addNewCriteria();
resultTableContainer.setWidth("100%");
}
*/
protected void budgetChanged() {
currentBudget = new LabelValueDTO(budgetListBox.getValue(budgetListBox.getSelectedIndex()), budgetListBox.getItemText(budgetListBox.getSelectedIndex()));
- criteriaTable.removeAllCriteres();
- criteriaTable.addEmptyCriterion();
+ //criteriaTable.removeAllCriteres();
+ //criteriaTable.addEmptyCriterion();
}
protected void loadPage(int pageNumber) {
* Ajoute un critere de recherche
*/
public void addCriteria() {
- criteriaTable.addEmptyCriterion();
+ criteriaTable.addNewCriteria();
}
/**
* Supprime tous les critères
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 fr.gouv.finances.dgfip.xemelios.web2.gwt.client.widgets.common.DisableImage;
/**
- * @author CBO
- * Widget contenant les boutons liés à la fenêtre de recherche (bouton d'ajout d'un critère, bouton de lancement de la recherche, ...)
+ * @author CBO Widget contenant les boutons liés à la fenêtre de recherche (bouton d'ajout d'un critère, bouton de lancement de la recherche, ...)
* @TODO : Corriger bug : quand on clique deux fois rapidement il semble qu'il y a trois evenements déclenchés...
*/
public class ButtonsBarWidget extends Composite {
- private static final transient String SEARCH="Search";
- private static final transient String ADD_CRITERIA="AddSearchCriteria";
- private static final transient String RESET_CRITERIA="ResetSearchCriteria";
- private static final transient String OPEN_SEARCH="OpenSearch";
- private static final transient String SAVE_SEARCH="SaveSearch";
- private static final transient String SORT="Sort";
- private static final transient String REPOSITORY="Preferences";
- private static final transient String REPOSITORY_DEACTIVATED = "Preferences-deactivated";
- private static final transient String EXPORT = "export";
-
- private DisableImage addCritereButton;
- private DisableImage searchButton;
- private DisableImage resetCriteresButton;
- private DisableImage openSearchButton;
- private DisableImage saveRequestButton;
- private DisableImage repositoryButton;
- private DisableImage searchParamsButton;
- private DisableImage exportButton;
-
- private SearchWidget.AddCriteriaClickListener addCriteriaClickListener;
-
- public ButtonsBarWidget() {
-
- searchButton = createAnchor(SearchResources.INSTANCE.getSearchIcon(), SearchResources.INSTANCE.getSearchDisabledIcon(),SEARCH,new HTML("Chercher").getHTML());
- addCritereButton = createAnchor(SearchResources.INSTANCE.getAddCriteriaIcon(), SearchResources.INSTANCE.getAddCriteriaDisabledIcon(), ADD_CRITERIA,new HTML("Ajouter un ctritère").getHTML());
- resetCriteresButton = createAnchor(SearchResources.INSTANCE.getCleanCriteriasIcon(), SearchResources.INSTANCE.getCleanCriteriasDisabledIcon(), RESET_CRITERIA,new HTML("Supprimer tous les critères").getHTML());
- openSearchButton = createAnchor(SearchResources.INSTANCE.getOpenSearchIcon(), SearchResources.INSTANCE.getSaveSearchDisabledIcon(), OPEN_SEARCH,new HTML("Ouvrir une recherche pré-enregistrée").getHTML());
- saveRequestButton = createAnchor(SearchResources.INSTANCE.getSaveSearchIcon(), SearchResources.INSTANCE.getSaveSearchDisabledIcon(), SAVE_SEARCH,new HTML("Enregistrer les critères de recherche").getHTML());
- searchParamsButton = createAnchor(SearchResources.INSTANCE.getParamsIcon(), SearchResources.INSTANCE.getParamsDisabledIcon(), SORT,new HTML("Champs et tris").getHTML());
- repositoryButton = createAnchor(SearchResources.INSTANCE.getRepositoryIcon(), SearchResources.INSTANCE.getRepositoryDisabledIcon(), REPOSITORY, new HTML("Nomenclature").getHTML());
- exportButton = createAnchor(SearchResources.INSTANCE.getExportIcon(), SearchResources.INSTANCE.getExportDisabledIcon(), EXPORT, new HTML("Exporter le résultat de recherche").getHTML());
-
- HorizontalPanel mainPanel = new HorizontalPanel();
- mainPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
- mainPanel.getElement().setId("SearchTools");
- mainPanel.setStyleName("ToolBar");
- mainPanel.addStyleName("Main");
- HorizontalPanel toolGroups = new HorizontalPanel();
- toolGroups.setStyleName("ToolGroups");
- toolGroups.add(new Image(SearchResources.INSTANCE.getToolbarLeftStrong()));
-
- HorizontalPanel hpSearch = new HorizontalPanel();
- hpSearch.setStyleName("ToolGroup Strong");
- hpSearch.add(searchButton);
- toolGroups.add(hpSearch);
-
- HorizontalPanel hpCriterias = new HorizontalPanel();
- hpCriterias.setStyleName("ToolGroup Norm hasBackground");
- hpCriterias.add(addCritereButton);
- hpCriterias.add(resetCriteresButton);
-
- hpCriterias.add(openSearchButton);
- hpCriterias.add(saveRequestButton);
- hpCriterias.add(repositoryButton);
- hpCriterias.add(searchParamsButton);
- hpCriterias.add(exportButton);
- toolGroups.add(hpCriterias);
-
- toolGroups.add(new Image(SearchResources.INSTANCE.getToolbarRight()));
-
- mainPanel.add(toolGroups);
-
- initWidget(mainPanel);
-
-}
- public void disableRepositoryButton() {
- repositoryButton.setEnabled(false);
- repositoryButton.removeStyleName(REPOSITORY);
- repositoryButton.addStyleName(REPOSITORY_DEACTIVATED);
- repositoryButton.setTitle(null);
- }
-
- public void addClickListener(ClickListenerType clickListenerType, ClickHandler ch) {
- if (clickListenerType.equals(ClickListenerType.ADD_CRITERE)) {
- addCriteriaClickListener = (SearchWidget.AddCriteriaClickListener) ch;
- this.addCritereButton.addClickHandler(ch);
- } else if (clickListenerType.equals(ClickListenerType.SEARCH)) {
- this.searchButton.addClickHandler(ch);
- } else if (clickListenerType.equals(ClickListenerType.RESET_CRITERES)) {
- this.resetCriteresButton.addClickHandler(ch);
- } else if (clickListenerType.equals(ClickListenerType.OPEN_SEARCH)) {
- this.openSearchButton.addClickHandler(ch);
- } else if (clickListenerType.equals(ClickListenerType.SAVE_REQUEST)) {
- this.saveRequestButton.addClickHandler(ch);
- } else if (clickListenerType.equals(ClickListenerType.SEARCH_PARAMS)) {
- this.searchParamsButton.addClickHandler(ch);
- } else if (clickListenerType.equals(ClickListenerType.REPOSITORY)) {
- this.repositoryButton.addClickHandler(ch);
- } else if(clickListenerType.equals(ClickListenerType.EXPORT)) {
- this.exportButton.addClickHandler(ch);
- }
- }
-
- public void setAddCritereEnable(boolean enable) {
- addCriteriaClickListener.setEnabled(enable);
- }
-
- public void enableSearchPossibilities(boolean enable) {
- setAddCritereEnable(enable);
- searchButton.setEnabled(enable);
- resetCriteresButton.setEnabled(enable);
- openSearchButton.setEnabled(enable);
- saveRequestButton.setEnabled(enable);
- searchParamsButton.setEnabled(enable);
- }
- public void setEnableExport(boolean enable) {
- exportButton.setEnabled(enable);
- }
-
- static public enum ClickListenerType {
-
- ADD_CRITERE,
- SEARCH,
- RESET_CRITERES,
- OPEN_SEARCH,
- SAVE_REQUEST,
- SEARCH_PARAMS,
- REPOSITORY,
- EXPORT
- }
-
- private static DisableImage createAnchor(ImageResource res, ImageResource dis, String id, String title) {
- DisableImage anch = new DisableImage(res, dis, title);
- Style style = anch.getElement().getStyle();
- style.setMarginTop(8.0, Unit.PX);
- style.setWidth(28.0, Unit.PX);
- style.setMarginLeft(2.0, Unit.PX);
- return anch;
- }
+ private static final transient String SEARCH = "Search";
+ private static final transient String ADD_CRITERIA = "AddSearchCriteria";
+ private static final transient String RESET_CRITERIA = "ResetSearchCriteria";
+ private static final transient String OPEN_SEARCH = "OpenSearch";
+ private static final transient String SAVE_SEARCH = "SaveSearch";
+ private static final transient String SORT = "Sort";
+ private static final transient String REPOSITORY = "Preferences";
+ private static final transient String REPOSITORY_DEACTIVATED = "Preferences-deactivated";
+ private static final transient String EXPORT = "export";
+
+ private DisableImage addCritereButton;
+ private DisableImage searchButton;
+ private DisableImage resetCriteresButton;
+ private DisableImage openSearchButton;
+ private DisableImage saveRequestButton;
+ private DisableImage repositoryButton;
+ private DisableImage searchParamsButton;
+ private DisableImage exportButton;
+
+ public ButtonsBarWidget() {
+
+ searchButton = createAnchor(SearchResources.INSTANCE.getSearchIcon(), SearchResources.INSTANCE.getSearchDisabledIcon(), SEARCH, new HTML("Chercher").getHTML());
+ addCritereButton = createAnchor(SearchResources.INSTANCE.getAddCriteriaIcon(), SearchResources.INSTANCE.getAddCriteriaDisabledIcon(), ADD_CRITERIA, new HTML("Ajouter un ctritère").getHTML());
+ resetCriteresButton = createAnchor(SearchResources.INSTANCE.getCleanCriteriasIcon(), SearchResources.INSTANCE.getCleanCriteriasDisabledIcon(), RESET_CRITERIA, new HTML("Supprimer tous les critères").getHTML());
+ openSearchButton = createAnchor(SearchResources.INSTANCE.getOpenSearchIcon(), SearchResources.INSTANCE.getOpenSearchDisabledIcon(), OPEN_SEARCH, new HTML("Ouvrir une recherche pré-enregistrée").getHTML());
+ saveRequestButton = createAnchor(SearchResources.INSTANCE.getSaveSearchIcon(), SearchResources.INSTANCE.getSaveSearchDisabledIcon(), SAVE_SEARCH, new HTML("Enregistrer les critères de recherche").getHTML());
+ searchParamsButton = createAnchor(SearchResources.INSTANCE.getParamsIcon(), SearchResources.INSTANCE.getParamsDisabledIcon(), SORT, new HTML("Champs et tris").getHTML());
+ repositoryButton = createAnchor(SearchResources.INSTANCE.getRepositoryIcon(), SearchResources.INSTANCE.getRepositoryDisabledIcon(), REPOSITORY, new HTML("Nomenclature").getHTML());
+ exportButton = createAnchor(SearchResources.INSTANCE.getExportIcon(), SearchResources.INSTANCE.getExportDisabledIcon(), EXPORT, new HTML("Exporter le résultat de recherche").getHTML());
+
+ HorizontalPanel mainPanel = new HorizontalPanel();
+ mainPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
+ mainPanel.getElement().setId("SearchTools");
+ mainPanel.setStyleName("ToolBar");
+ mainPanel.addStyleName("Main");
+ HorizontalPanel toolGroups = new HorizontalPanel();
+ toolGroups.setStyleName("ToolGroups");
+ toolGroups.add(new Image(SearchResources.INSTANCE.getToolbarLeftStrong()));
+
+ HorizontalPanel hpSearch = new HorizontalPanel();
+ hpSearch.setStyleName("ToolGroup Strong");
+ hpSearch.add(searchButton);
+ toolGroups.add(hpSearch);
+
+ HorizontalPanel hpCriterias = new HorizontalPanel();
+ hpCriterias.setStyleName("ToolGroup Norm hasBackground");
+ hpCriterias.add(addCritereButton);
+ hpCriterias.add(resetCriteresButton);
+
+ hpCriterias.add(openSearchButton);
+ hpCriterias.add(saveRequestButton);
+ hpCriterias.add(repositoryButton);
+ hpCriterias.add(searchParamsButton);
+ hpCriterias.add(exportButton);
+ toolGroups.add(hpCriterias);
+
+ toolGroups.add(new Image(SearchResources.INSTANCE.getToolbarRight()));
+
+ mainPanel.add(toolGroups);
+
+ initWidget(mainPanel);
+
+ }
+
+ public void disableRepositoryButton() {
+ repositoryButton.setEnabled(false);
+ repositoryButton.removeStyleName(REPOSITORY);
+ repositoryButton.addStyleName(REPOSITORY_DEACTIVATED);
+ repositoryButton.setTitle(null);
+ }
+
+ public void addClickListener(ClickListenerType clickListenerType, ClickHandler ch) {
+ if (clickListenerType.equals(ClickListenerType.ADD_CRITERE)) {
+ this.addCritereButton.addClickHandler(ch);
+ } else if (clickListenerType.equals(ClickListenerType.SEARCH)) {
+ this.searchButton.addClickHandler(ch);
+ } else if (clickListenerType.equals(ClickListenerType.RESET_CRITERES)) {
+ this.resetCriteresButton.addClickHandler(ch);
+ } else if (clickListenerType.equals(ClickListenerType.OPEN_SEARCH)) {
+ this.openSearchButton.addClickHandler(ch);
+ } else if (clickListenerType.equals(ClickListenerType.SAVE_REQUEST)) {
+ this.saveRequestButton.addClickHandler(ch);
+ } else if (clickListenerType.equals(ClickListenerType.SEARCH_PARAMS)) {
+ this.searchParamsButton.addClickHandler(ch);
+ } else if (clickListenerType.equals(ClickListenerType.REPOSITORY)) {
+ this.repositoryButton.addClickHandler(ch);
+ } else if (clickListenerType.equals(ClickListenerType.EXPORT)) {
+ this.exportButton.addClickHandler(ch);
+ }
+ }
+
+ public void disableSearchPossibilities() {
+ addCritereButton.setEnabled(false);
+ searchButton.setEnabled(false);
+ resetCriteresButton.setEnabled(false);
+ openSearchButton.setEnabled(false);
+ saveRequestButton.setEnabled(false);
+ searchParamsButton.setEnabled(false);
+ }
+
+ public void enableSearchPossibilities() {
+ addCritereButton.setEnabled(true);
+ searchButton.setEnabled(true);
+ resetCriteresButton.setEnabled(true);
+ openSearchButton.setEnabled(true);
+ saveRequestButton.setEnabled(true);
+ searchParamsButton.setEnabled(true);
+ }
+
+ public void enableExport() {
+ exportButton.setEnabled(true);
+ }
+
+ public void disableExport() {
+ exportButton.setEnabled(false);
+ }
+
+ static public enum ClickListenerType {
+
+ ADD_CRITERE, SEARCH, RESET_CRITERES, OPEN_SEARCH, SAVE_REQUEST, SEARCH_PARAMS, REPOSITORY, EXPORT
+ }
+
+ private static DisableImage createAnchor(ImageResource res, ImageResource dis, String id, String title) {
+ DisableImage anch = new DisableImage(res, dis, title);
+ Style style = anch.getElement().getStyle();
+ style.setMarginTop(8.0, Unit.PX);
+ style.setWidth(28.0, Unit.PX);
+ style.setMarginLeft(2.0, Unit.PX);
+ return anch;
+ }
}
*/
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;
+ }
}
initWidget(this.mainPanel);
criteriaTable.getElement().getParentElement().setId("parentSubnav".concat(getIdMarker()));
getElement().setId("SearchWidget".concat(getIdMarker()));
- buttonsBarWidget.setEnableExport(false);
+ buttonsBarWidget.disableSearchPossibilities();
searchingImage = new Image(SearchResources.INSTANCE.getSearchingImage());
}
*/
public void init(final String documentId, final String etatId, final String elementId, final DoneListener doneListener) {
ServiceLocator.getXemeliosService().initSearchWindow(documentId, etatId, elementId, new AsyncCallback<InitParametersDTO>() {
-
public void onFailure(Throwable throwable) {
- // StringBuilder sb = new StringBuilder();
- // sb.append(throwable.getMessage()).append("\n");
- // for(StackTraceElement ste:throwable.getStackTrace()) {
- // sb.append("\t").append(ste.toString()).append("\n");
- // }
- // Window.alert(sb.toString());
ServiceLocator.getXemeliosService().getLibelleElement(documentId, etatId, elementId, new AsyncCallback<String>() {
public void onFailure(Throwable caught) {
if (caught instanceof DisconnectedException) {
Window.Location.replace(((DisconnectedException) caught).getLoginPageUrl());
} else {
- String message = "Aucun(e) " + documentId + "." + etatId + "." + elementId + " n'a été importé.";
- SafeHtmlBuilder shb = new SafeHtmlBuilder();
- shb.append(SafeHtmlUtils.fromSafeConstant(SafeHtmlUtils.htmlEscapeAllowEntities(message)));
- new DlgShowMessage(shb.toSafeHtml(), DlgShowMessage.MESSAGE_TYPE_INFO);
+ displayNoDocumentImported(documentId, etatId, elementId);
}
}
public void onSuccess(String result) {
- new DlgShowMessage(new SafeHtmlBuilder().append(SafeHtmlUtils.fromSafeConstant(SafeHtmlUtils.htmlEscapeAllowEntities("Aucun(e) " + result + " n'a été importé."))).toSafeHtml(),
- DlgShowMessage.MESSAGE_TYPE_INFO);
+ displayNoDocumentImported(result);
}
});
}
@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);
+ displayNoDocumentImported(documentId, etatId, elementId);
} else {
SearchWidget.this.initParameters = result;
- colAndBudChooserWidget.setSearchSessionId(result.getSearchSessionId());
- if (result.hasTooMuchCollectivites()) {
- colAndBudChooserWidget.init(result.getDocumentId());
- } else {
- colAndBudChooserWidget.init(result.getCollectivites(), result.getFirstCollectiviteBudgets());
- }
- colAndBudChooserWidget.addChangeHandler(new ChangeHandler() {
+ SearchWidget.searchWidgetInstance = SearchWidget.this;
- @Override
- public void onChange(ChangeEvent evt) {
- collectiviteOrBudgetChange();
- }
- });
- buttonsBarWidget.addClickListener(ButtonsBarWidget.ClickListenerType.ADD_CRITERE, new AddCriteriaClickListener(SearchWidget.this));
- buttonsBarWidget.addClickListener(ButtonsBarWidget.ClickListenerType.SEARCH, new ClickHandler() {
+ initializeCollectiviteBudgetChooser(result.getSearchSessionId(), result.getDocumentId(), result.hasTooMuchCollectivites(), result.getCollectivites(), result.getFirstCollectiviteBudgets());
- public void onClick(ClickEvent evt) {
- search();
- }
- });
- buttonsBarWidget.addClickListener(ButtonsBarWidget.ClickListenerType.RESET_CRITERES, new ClickHandler() {
+ buttonsBarWidget.disableSearchPossibilities();
+ registerToolBarEvents();
- public void onClick(ClickEvent evt) {
- resetCriteres();
+ Window.addCloseHandler(new CloseHandler<Window>() {
+ public void onClose(CloseEvent<Window> ce) {
+ releaseSearchSession();
}
});
- buttonsBarWidget.addClickListener(ButtonsBarWidget.ClickListenerType.OPEN_SEARCH, new ClickHandler() {
- public void onClick(ClickEvent evt) {
- openSearch();
- }
- });
- buttonsBarWidget.addClickListener(ButtonsBarWidget.ClickListenerType.SAVE_REQUEST, new ClickHandler() {
+ searchInitParameters = initParameters.getSearchInitParameters();
+
+ doneListener.done(result);
+ }
+ }
+ });
+ }
- public void onClick(ClickEvent evt) {
- saveSearch();
- }
- });
- buttonsBarWidget.addClickListener(ButtonsBarWidget.ClickListenerType.SEARCH_PARAMS, new ClickHandler() {
+ protected void displayNoDocumentImported(String libelle) {
+ String message = "Aucun(e) " + libelle + " n'a été importé.";
+ SafeHtml safeHtmlMessage = SafeHtmlUtils.fromSafeConstant(SafeHtmlUtils.htmlEscapeAllowEntities(message));
- @Override
- public void onClick(ClickEvent evt) {
- searchParams();
- }
- });
- buttonsBarWidget.addClickListener(ButtonsBarWidget.ClickListenerType.EXPORT, new ClickHandler() {
+ new DlgShowMessage(safeHtmlMessage, DlgShowMessage.MESSAGE_TYPE_INFO);
+ }
- @Override
- public void onClick(ClickEvent event) {
- exportSearchResult((Widget) event.getSource());
- }
- });
- if (SearchWidget.this.initParameters.hasRepository()) {
- buttonsBarWidget.addClickListener(ButtonsBarWidget.ClickListenerType.REPOSITORY, new ClickHandler() {
+ protected void displayNoDocumentImported(String documentId, String etatId, String elementId) {
+ String message = "Aucun(e) " + documentId + "." + etatId + "." + elementId + " n'a été importé.";
+ SafeHtml safeHtmlMessage = SafeHtmlUtils.fromSafeConstant(SafeHtmlUtils.htmlEscapeAllowEntities(message));
- public void onClick(ClickEvent evt) {
- showRepository();
- }
- });
- } else {
- buttonsBarWidget.disableRepositoryButton();
- }
- SearchWidget.searchWidgetInstance = SearchWidget.this;
- Window.addCloseHandler(new CloseHandler<Window>() {
+ new DlgShowMessage(safeHtmlMessage, DlgShowMessage.MESSAGE_TYPE_INFO);
+ }
- public void onClose(CloseEvent<Window> ce) {
- releaseSearchSession();
- }
- });
- setSearchInitParameters(initParameters.getSearchInitParameters());
- doneListener.done(result);
- }
+ protected void initializeCollectiviteBudgetChooser(String searchSessionId, String documentId, boolean hasTooMuchCollectivites, ArrayList<LabelValueDTO> collectivites, ArrayList<LabelValueDTO> firstCollectivites) {
+ colAndBudChooserWidget.setSearchSessionId(searchSessionId);
+
+ if (hasTooMuchCollectivites) {
+ colAndBudChooserWidget.init(documentId);
+ } else {
+ colAndBudChooserWidget.init(collectivites, firstCollectivites);
+ }
+
+ colAndBudChooserWidget.addChangeHandler(new ChangeHandler() {
+
+ @Override
+ public void onChange(ChangeEvent evt) {
+ criteriaTable.init(searchInitParameters, false);
+
+ buttonsBarWidget.enableSearchPossibilities();
+ }
+ });
+ }
+
+ protected void registerToolBarEvents() {
+ buttonsBarWidget.addClickListener(ButtonsBarWidget.ClickListenerType.ADD_CRITERE, new ClickHandler() {
+
+ public void onClick(ClickEvent evt) {
+ addCritere();
+ }
+ });
+ buttonsBarWidget.addClickListener(ButtonsBarWidget.ClickListenerType.SEARCH, new ClickHandler() {
+
+ public void onClick(ClickEvent evt) {
+ search();
}
});
+ buttonsBarWidget.addClickListener(ButtonsBarWidget.ClickListenerType.RESET_CRITERES, new ClickHandler() {
+
+ public void onClick(ClickEvent evt) {
+ resetCriteres();
+ }
+ });
+ buttonsBarWidget.addClickListener(ButtonsBarWidget.ClickListenerType.OPEN_SEARCH, new ClickHandler() {
+
+ public void onClick(ClickEvent evt) {
+ openSearch();
+ }
+ });
+ buttonsBarWidget.addClickListener(ButtonsBarWidget.ClickListenerType.SAVE_REQUEST, new ClickHandler() {
+
+ public void onClick(ClickEvent evt) {
+ saveSearch();
+ }
+ });
+ buttonsBarWidget.addClickListener(ButtonsBarWidget.ClickListenerType.SEARCH_PARAMS, new ClickHandler() {
+
+ @Override
+ public void onClick(ClickEvent evt) {
+ searchParams();
+ }
+ });
+ buttonsBarWidget.addClickListener(ButtonsBarWidget.ClickListenerType.EXPORT, new ClickHandler() {
+
+ @Override
+ public void onClick(ClickEvent event) {
+ exportSearchResult((Widget) event.getSource());
+ }
+ });
+ if (SearchWidget.this.initParameters.hasRepository()) {
+ buttonsBarWidget.addClickListener(ButtonsBarWidget.ClickListenerType.REPOSITORY, new ClickHandler() {
+
+ public void onClick(ClickEvent evt) {
+ showRepository(initParameters.getDocumentId(), getCollectiviteId());
+ }
+ });
+ } else {
+ buttonsBarWidget.disableRepositoryButton();
+ }
+ }
+
+ protected void setSearchInitParameters(SearchInitParametersDTO searchInitParameters) {
+ if (colAndBudChooserWidget.getCollectiviteId() != null) {
+ buttonsBarWidget.enableSearchPossibilities();
+ this.searchInitParameters = searchInitParameters;
+
+ criteriaTable.init(getSearchInitParameters(), false);
+
+ if (getSearchInitParameters().getPluginId() == null && !getSearchInitParameters().getOptionalCritereTypes().isEmpty()) {
+ addCritere();
+ }
+
+ } else {
+ buttonsBarWidget.disableSearchPossibilities();
+ }
+ }
+
+
+
+ public String getSearchSessionId() {
+ return this.initParameters != null ? initParameters.getSearchSessionId() : null;
}
+ public String getCollectiviteId() {
+ return this.colAndBudChooserWidget.getCollectiviteId();
+ }
+
+ public String getBudgetId() {
+ return this.colAndBudChooserWidget.getBudgetId();
+ }
+
+ private SearchInitParametersDTO getSearchInitParameters() {
+ return this.searchInitParameters;
+ }
+
+ // ############################### CallBack click bouttons ###############################
+
public void addCritere() {
- this.criteriaTable.addEmptyCriterion();
+ criteriaTable.addNewCriteria();
}
public void resetCriteres() {
- setSearchInitParameters(this.initParameters.getSearchInitParameters());
+ criteriaTable.removeAllCriteres();
}
public void search() {
}
}
- /**
- * Renvoie un marker propre à l'implémentation. Cela sert à éviter d'avoir plusieurs éléments avec le même id
- *
- * @return
- */
- public String getIdMarker() {
- return "";
+ public void openSearch() {
+ final DlgChooseStoredSearch dlg = new DlgChooseStoredSearch("Ouverture d'une recherche");
+ dlg.show();
+ dlg.center();
+ ServiceLocator.getXemeliosService().getStoredSearchs(getSearchSessionId(), new AsyncCallback<List<StoredSearchDTO>>() {
+
+ public void onFailure(Throwable throwable) {
+ GWTUtils.handleRPCError(throwable);
+ }
+
+ public void onSuccess(List<StoredSearchDTO> result) {
+ dlg.setSearchItems(result);
+ dlg.addSelectListener(new DlgChooseOnePair.SelectListener() {
+
+ public void onSelect(Object selectedItem) {
+ loadSearch((StoredSearchDTO) selectedItem);
+ }
+ });
+ }
+ });
}
public void saveSearch() {
});
}
- public void showRepository() {
- showRepository(initParameters.getDocumentId(), getCollectiviteId());
+ public void showRepository(String documentId, String collectiviteId) {
+ StringBuilder shb = new StringBuilder();
+ shb.append("<iframe width=\"100%\" height=\"100%\" id=\"rep.");
+ shb.append(documentId);
+ shb.append(".");
+ shb.append(collectiviteId);
+ shb.append("\" src=\"");
+ shb.append(GWTUtils.getContextPath());
+ shb.append("showRepository.do?docId=");
+ shb.append(documentId);
+ shb.append("&collectivite=");
+ shb.append(collectiviteId);
+ shb.append("\" onload=\"javascript:setTabTitle(this, this.contentWindow.document.title);\"/>");
+ HTML html = new HTML(shb.toString());
+ getTabs().getTabPanel().add(html, "Nomenclature");
}
protected void exportSearchResult(Widget source) {
dpp.show();
}
- static public void _configExport() {
- DlgSelectExport dlg = new DlgSelectExport();
- dlg.show();
- }
+ // ####################################################################################
- protected void _simpleExport() {
+ public void _simpleExport() {
StringBuilder sb = new StringBuilder();
sb.append(GWTUtils.getContextPath()).append("simpleExport.do?searchSessionId=").append(getSearchSessionId());
downloadUrl(sb.toString());
}
- static public void _complexExport(String searchSessionId) {
+ public void _complexExport(String searchSessionId) {
if (_isExportPossible()) {
DlgSelectExport dlg = new DlgSelectExport(searchSessionId);
dlg.show();
}
}
+ /**
+ * Renvoie un marker propre à l'implémentation. Cela sert à éviter d'avoir plusieurs éléments avec le même id
+ *
+ * @return
+ */
+ public String getIdMarker() {
+ return "";
+ }
+
+ static public void _configExport() {
+ DlgSelectExport dlg = new DlgSelectExport();
+ dlg.show();
+ }
+
private Tabs getTabs() {
Widget parent = getParent();
while (parent.getElement().getId() == null || parent.getElement().getId().length() == 0) {
return null;
}
- private void showRepository(String documentId, String collectiviteId) {
- StringBuilder shb = new StringBuilder();
- shb.append("<iframe width=\"100%\" height=\"100%\" id=\"rep.");
- shb.append(documentId);
- shb.append(".");
- shb.append(collectiviteId);
- shb.append("\" src=\"");
- shb.append(GWTUtils.getContextPath());
- shb.append("showRepository.do?docId=");
- shb.append(documentId);
- shb.append("&collectivite=");
- shb.append(collectiviteId);
- shb.append("\" onload=\"javascript:setTabTitle(this, this.contentWindow.document.title);\"/>");
- HTML html = new HTML(shb.toString());
- getTabs().getTabPanel().add(html, "Nomenclature");
- }
-
@Override
public void executeSaveRequest(List<SearchParameterDTO> parameters, String requestName, String requestId) {
if (requestId == null || requestId.length() == 0) {
}
}
- public void openSearch() {
- final DlgChooseStoredSearch dlg = new DlgChooseStoredSearch("Ouverture d'une recherche");
- dlg.show();
- dlg.center();
- ServiceLocator.getXemeliosService().getStoredSearchs(getSearchSessionId(), new AsyncCallback<List<StoredSearchDTO>>() {
-
- public void onFailure(Throwable throwable) {
- GWTUtils.handleRPCError(throwable);
- }
-
- public void onSuccess(List<StoredSearchDTO> result) {
- dlg.setSearchItems(result);
- dlg.addSelectListener(new DlgChooseOnePair.SelectListener() {
-
- public void onSelect(Object selectedItem) {
- loadSearch((StoredSearchDTO) selectedItem);
- }
- });
- }
- });
- }
-
private void loadSearch(StoredSearchDTO storedSearch) {
switch (storedSearch.getType()) {
case StoredSearchDTO.TYPE_EXPORT:
working.hide();
}
- // ---------------- Split de la méthode handleSearchResult
- // ------------------
+ // ############################### Split de la méthode handleSearchResult ###############################
private TextCell buildTextCell() {
TextCell cell = new TextCell() {
return column;
}
- // ----------------- fin du split -----------------
+ // #############################################################################################
/**
* Affiche le résultat de recherche
exportPossible = true;
}
- buttonsBarWidget.setEnableExport(listDataProvider.getList().size() > 0);
+ if(listDataProvider.getList().size() > 0){
+ buttonsBarWidget.enableExport();
+ }else{
+ buttonsBarWidget.disableExport();
+ }
+
endLongWait();
}
public void done(Object result) {
getTabs().getTabPanel().add(sw, "Ligne ERAR");
ArrayList<CritereTypeDTO> mandatoryCriterias = new ArrayList<CritereTypeDTO>();
- CritereTypeDTO critere = buildStringCriteria(widget.getParameter("deb-nom-crit-id").getValue(), // critere
- // d'origine
- widget.getParameter("deb-nom-input-id").getValue(), // input
- // id
- row.getStringValue(widget.getParameter("deb-nom-res-id").getValue()) // input
- // value
+ CritereTypeDTO critere = buildStringCriteria(widget.getParameter("deb-nom-crit-id").getValue(), // critere d'origine
+ widget.getParameter("deb-nom-input-id").getValue(), // input id
+ row.getStringValue(widget.getParameter("deb-nom-res-id").getValue()) // inputvalue
);
if (critere != null)
mandatoryCriterias.add(critere);
critere = null;
- critere = buildStringCriteria(widget.getParameter("deb-prenom-crit-id").getValue(), // critere
- // d'origine
- widget.getParameter("deb-prenom-input-id").getValue(), // input
- // id
- row.getStringValue(widget.getParameter("deb-prenom-res-id").getValue()) // input
- // value
+ critere = buildStringCriteria(widget.getParameter("deb-prenom-crit-id").getValue(), // critered'origine
+ widget.getParameter("deb-prenom-input-id").getValue(), // input id
+ row.getStringValue(widget.getParameter("deb-prenom-res-id").getValue()) // inputvalue
);
if (critere != null)
mandatoryCriterias.add(critere);
critere = null;
- critere = buildStringCriteria(widget.getParameter("deb-adr1-crit-id").getValue(), // critere
- // d'origine
- widget.getParameter("deb-adr1-input-id").getValue(), // input
- // id
- row.getStringValue(widget.getParameter("deb-adr1-res-id").getValue()) // input
- // value
+ critere = buildStringCriteria(widget.getParameter("deb-adr1-crit-id").getValue(), // critered'origine
+ widget.getParameter("deb-adr1-input-id").getValue(), // inputid
+ row.getStringValue(widget.getParameter("deb-adr1-res-id").getValue()) // inputvalue
);
if (critere != null)
mandatoryCriterias.add(critere);
critere = null;
- critere = buildStringCriteria(widget.getParameter("deb-adr2-crit-id").getValue(), // critere
- // d'origine
- widget.getParameter("deb-adr2-input-id").getValue(), // input
- // id
+ critere = buildStringCriteria(widget.getParameter("deb-adr2-crit-id").getValue(), // critered'origine
+ widget.getParameter("deb-adr2-input-id").getValue(), // input id
row.getStringValue(widget.getParameter("deb-adr2-res-id").getValue()) // input
// value
);
}
}
- private void collectiviteOrBudgetChange() {
- resetCriteres();
- }
-
- public String getSearchSessionId() {
- return this.initParameters != null ? initParameters.getSearchSessionId() : null;
- }
-
- public String getCollectiviteId() {
- return this.colAndBudChooserWidget.getCollectiviteId();
- }
-
- public String getBudgetId() {
- return this.colAndBudChooserWidget.getBudgetId();
- }
-
- private SearchInitParametersDTO getSearchInitParameters() {
- return this.searchInitParameters;
- }
-
- private void setSearchInitParameters(SearchInitParametersDTO searchInitParameters) {
- if (colAndBudChooserWidget.getCollectiviteId() != null) {
- buttonsBarWidget.enableSearchPossibilities(true);
- this.searchInitParameters = searchInitParameters;
- criteriaTable.init(getSearchInitParameters());
- if (getSearchInitParameters().getPluginId() == null && !getSearchInitParameters().getOptionalCritereTypes().isEmpty()) {
- addCritere();
- }
- buttonsBarWidget.setAddCritereEnable(!getSearchInitParameters().getOptionalCritereTypes().isEmpty());
- } else {
- buttonsBarWidget.enableSearchPossibilities(false);
- }
- }
-
- private native String transformXml(String searchResultAsXml)/*-{
- return $wnd.transformXml(searchResultAsXml);
- }-*/;
-
- private native void downloadUrl(String url)/*-{
- $wnd.window.location.href = url;
- }-*/;
-
- private static native String encodeURIComponent(String url) /*-{
- return $wnd.encodeURIComponent(url);
- }-*/;
-
- private static native String encodeURI(String url) /*-{
- return $wnd.encodeURI(url);
- }-*/;
+
private static String[] splitString(String s) {
int splitters = 0;
// DlgSelectNavigationTarget(documentId);
}
- public static class AddCriteriaClickListener implements ClickHandler {
-
- private SearchWidget sw;
- private boolean enabled = true;
-
- public AddCriteriaClickListener(SearchWidget sw) {
- super();
- this.sw = sw;
- }
-
- public void setEnabled(boolean enabled) {
- this.enabled = enabled;
- }
-
- public void onClick(ClickEvent ce) {
- if (enabled) {
- sw.addCritere();
- }
- }
- }
-
- private static NumberFormat createNumberFormat() {
- if (__nf == null) {
- __nf = new OwnNumberFormat(new SpacedNumberConstants(), "#,##0.00;-#,##0.00", new DefaultCurrencyData("EUR", "?"));
- }
- return __nf;
- }
+
private class RightClickableHeader extends Header<SafeHtml> {
return operator;
}
}
+
+ private static NumberFormat createNumberFormat() {
+ if (__nf == null) {
+ __nf = new OwnNumberFormat(new SpacedNumberConstants(), "#,##0.00;-#,##0.00", new DefaultCurrencyData("EUR", "?"));
+ }
+ return __nf;
+ }
+
+ // ############ Natives ###############
+
+ private native String transformXml(String searchResultAsXml)/*-{
+ return $wnd.transformXml(searchResultAsXml);
+ }-*/;
+
+ private native void downloadUrl(String url)/*-{
+ $wnd.window.location.href = url;
+ }-*/;
+
+ private static native String encodeURIComponent(String url) /*-{
+ return $wnd.encodeURIComponent(url);
+ }-*/;
+
+ private static native String encodeURI(String url) /*-{
+ return $wnd.encodeURI(url);
+ }-*/;
}
*/
package fr.gouv.finances.dgfip.xemelios.web2.gwt.client.widgets.search;
+import java.util.List;
+
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
-import com.google.gwt.user.client.ui.ChangeListener;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
-import com.google.gwt.user.client.ui.Widget;
+
import fr.gouv.finances.dgfip.xemelios.web2.gwt.shared.CritereTypeDTO;
-import java.util.List;
/**
* @author CBO