package fr.openwide.maven.artifact.notifier.web.application.artifact.form; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.StatelessForm; import org.apache.wicket.markup.html.form.SubmitLink; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.markup.html.navigation.paging.IPageable; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.IModel; import fr.openwide.maven.artifact.notifier.web.application.navigation.util.LinkUtils; public class ArtifactSearchPanel extends Panel { private static final long serialVersionUID = 6273289257800090393L; private IModel<String> globalSearchModel; private IModel<String> searchGroupModel; private IModel<String> searchArtifactModel; public ArtifactSearchPanel(String id, final IPageable pageable, IModel<String> globalSearchModel, IModel<String> searchGroupModel, IModel<String> searchArtifactModel) { super(id); this.globalSearchModel = globalSearchModel; this.searchGroupModel = searchGroupModel; this.searchArtifactModel = searchArtifactModel; Form<Void> keywordSearchForm = new StatelessForm<Void>("keywordSearchForm") { private static final long serialVersionUID = 1L; @Override protected void onSubmit() { ArtifactSearchPanel.this.searchGroupModel.setObject(""); ArtifactSearchPanel.this.searchArtifactModel.setObject(""); setResponsePage(getPage().getClass(), LinkUtils.getSearchPageParameters(ArtifactSearchPanel.this.globalSearchModel)); } }; keywordSearchForm.add(new TextField<String>("globalSearchInput", this.globalSearchModel)); keywordSearchForm.add(new SubmitLink("submit")); add(keywordSearchForm); // NOTE: If this search pattern is going to be reused, it will need to pass its groupId and // artifactId terms through the page parameters Form<Void> advancedSearchForm = new StatelessForm<Void>("advancedSearchForm") { private static final long serialVersionUID = 1L; @Override protected void onSubmit() { // Lors de la soumission d'un formulaire de recherche, on retourne sur la première page pageable.setCurrentPage(0); ArtifactSearchPanel.this.globalSearchModel.setObject(""); super.onSubmit(); } }; advancedSearchForm.add(new TextField<String>("searchGroupInput", this.searchGroupModel)); advancedSearchForm.add(new TextField<String>("searchArtifactInput", this.searchArtifactModel)); advancedSearchForm.add(new SubmitLink("submit")); advancedSearchForm.setVisible(false); add(advancedSearchForm); } @Override protected void onDetach() { super.onDetach(); if (globalSearchModel != null) { this.globalSearchModel.detach(); } if (searchGroupModel != null) { this.searchGroupModel.detach(); } if (searchArtifactModel != null) { this.searchArtifactModel.detach(); } } }