Author: echatellier Date: 2014-06-30 17:18:16 +0200 (Mon, 30 Jun 2014) New Revision: 299 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/299 Log: Pagination de la recherche (sans les droits). Reset de la pagination pour les actions de recherche et pour le changement de dossier dans l'arbre. Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/AbstractFaxToMailServiceTest.java trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SearchAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SearchToGroupAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.css trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.jaxx trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIModel.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUI.css trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUI.jaxx trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.css trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.jaxx trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIModel.java Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java =================================================================== --- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java 2014-06-30 14:14:09 UTC (rev 298) +++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java 2014-06-30 15:18:16 UTC (rev 299) @@ -30,6 +30,8 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.nuiton.util.pagination.PaginationParameter; +import org.nuiton.util.pagination.PaginationResult; public class EmailTopiaDao extends AbstractEmailTopiaDao<Email> { @@ -37,9 +39,11 @@ * Search for email using filter. * * @param emailFilter email filter + * @param user user (for rights compute) + * @param pagination pagination * @return email list matching query filters */ - public List<Email> search(EmailFilter emailFilter) { + public PaginationResult<Email> search(EmailFilter emailFilter, FaxToMailUser user, PaginationParameter pagination) { StringBuilder query = new StringBuilder("FROM " + Email.class.getName() + " E"); query.append(" WHERE 1 = 1"); @@ -289,12 +293,6 @@ query.append(")"); } - // email recipient - /*if (StringUtils.isNotBlank(emailFilter.getRecipient())) { - query.append(" AND lower(E." + Email.PROPERTY_RECIPIENT + ") LIKE lower(:" + EmailFilter.PROPERTY_RECIPIENT + ")"); - args.put(EmailFilter.PROPERTY_RECIPIENT, "%" + emailFilter.getRecipient() + "%"); - }*/ - // email etat attente List<EtatAttente> etatAttente = emailFilter.getEtatAttente(); if (CollectionUtils.isNotEmpty(etatAttente)) { @@ -326,12 +324,6 @@ query.append("))"); } -// // email comment -// if (StringUtils.isNotBlank(emailFilter.getBody())) { -// query.append(" AND lower(E." + Email.PROPERTY_HTML_CONTENT + ") LIKE lower(:" + EmailFilter.PROPERTY_BODY + ")"); -// args.put(EmailFilter.PROPERTY_BODY, "%" + emailFilter.getBody() + "%"); -// } - // email localReference if (StringUtils.isNotBlank(emailFilter.getLocalReference())) { query.append(" AND (EXISTS (FROM " + RangeRow.class.getName() + " RR WHERE RR in elements(E." + Email.PROPERTY_RANGE_ROW + ")"); @@ -341,7 +333,9 @@ query.append(")"); } - return findAll(query.toString(), args); + // compute paginated + PaginationResult<Email> result = findPage(query.toString(), args, pagination); + return result; } /** Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-06-30 14:14:09 UTC (rev 298) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-06-30 15:18:16 UTC (rev 299) @@ -484,10 +484,10 @@ return email; } - public List<Email> search(EmailFilter emailFilter) { + public PaginationResult<Email> search(EmailFilter emailFilter, FaxToMailUser user, PaginationParameter pagination) { EmailTopiaDao dao = getPersistenceContext().getEmailDao(); - List<Email> result = dao.search(emailFilter); + PaginationResult<Email> result = dao.search(emailFilter, user, pagination); return result; } Modified: trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/AbstractFaxToMailServiceTest.java =================================================================== --- trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/AbstractFaxToMailServiceTest.java 2014-06-30 14:14:09 UTC (rev 298) +++ trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/AbstractFaxToMailServiceTest.java 2014-06-30 15:18:16 UTC (rev 299) @@ -26,6 +26,7 @@ import java.io.File; import java.io.IOException; +import java.io.ObjectInputStream.GetField; import java.util.HashMap; import java.util.LinkedList; import java.util.List; @@ -43,6 +44,8 @@ import com.franciaflex.faxtomail.FaxToMailConfiguration; import com.franciaflex.faxtomail.persistence.entities.FaxToMailTopiaApplicationContext; import com.franciaflex.faxtomail.persistence.entities.FaxToMailTopiaPersistenceContext; +import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; +import com.franciaflex.faxtomail.persistence.entities.FaxToMailUserTopiaDao; import com.franciaflex.faxtomail.services.FaxToMailService; import com.franciaflex.faxtomail.services.FaxToMailServiceContext; @@ -61,6 +64,8 @@ protected List<FaxToMailTopiaPersistenceContext> openedTransactions = new LinkedList<>(); protected File databaseFile; + + protected FaxToMailUser currentUser; protected Map<String, String> getDatabaseConfiguration(String dataBase) { Map<String, String> hibernateH2Config = new HashMap<String, String>(); @@ -144,12 +149,10 @@ serviceContext.setPersistenceContext(persistenceContext); -// serviceContext.setStorageFile(new File (tempDirFile, UUID.randomUUID().toString())); + InitFaxToMailService initFaxToMailService = serviceContext.newService(InitFaxToMailService.class); - InitFaxToMailService initExtranetService = serviceContext.newService(InitFaxToMailService.class); + initFaxToMailService.init(); - initExtranetService.init(); - if (log.isTraceEnabled()) { log.trace("closing transaction " + persistenceContext); } @@ -290,4 +293,11 @@ } + protected FaxToMailUser getCurrentUser() { + if (currentUser == null) { + FaxToMailUserTopiaDao faxToMailUserTopiaDao = serviceContext.getPersistenceContext().getFaxToMailUserDao(); + currentUser = faxToMailUserTopiaDao.forLoginEquals("mlefebvre").findUnique(); + } + return currentUser; + } } Modified: trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java =================================================================== --- trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java 2014-06-30 14:14:09 UTC (rev 298) +++ trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java 2014-06-30 15:18:16 UTC (rev 299) @@ -26,11 +26,12 @@ import java.io.IOException; import java.util.Collections; -import java.util.List; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.nuiton.util.pagination.PaginationParameter; +import org.nuiton.util.pagination.PaginationResult; import com.franciaflex.faxtomail.persistence.entities.DemandStatus; import com.franciaflex.faxtomail.persistence.entities.Email; @@ -60,21 +61,23 @@ @Test public void testSearch() { + PaginationParameter paginationParameter = PaginationParameter.of(0, 50); + // empty filter EmailFilter filter = new EmailFilter(); - List<Email> emails = service.search(filter); - Assert.assertEquals(10, emails.size()); + PaginationResult<Email> emails = service.search(filter, getCurrentUser(), paginationParameter); + Assert.assertEquals(10, emails.getCount()); // client code filter filter.setClientCode("9915"); - emails = service.search(filter); - Assert.assertEquals(10, emails.size()); - + emails = service.search(filter, getCurrentUser(), paginationParameter); + Assert.assertEquals(10, emails.getCount()); + // client code filter + subject filter filter.setDemandObject("A+"); - emails = service.search(filter); - Assert.assertEquals(0, emails.size()); - + emails = service.search(filter, getCurrentUser(), paginationParameter); + Assert.assertEquals(0, emails.getCount()); + // some other fields just to test query syntax filter.setMinReceptionDate(getServiceContext().getNow()); filter.setMaxReceptionDate(getServiceContext().getNow()); @@ -102,7 +105,7 @@ filter.setLocalReference("test"); filter.setMessage("test"); filter.setProjectReference("test"); - emails = service.search(filter); - Assert.assertEquals(0, emails.size()); + emails = service.search(filter, getCurrentUser(), paginationParameter); + Assert.assertEquals(0, emails.getCount()); } } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SearchAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SearchAction.java 2014-06-30 14:14:09 UTC (rev 298) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SearchAction.java 2014-06-30 15:18:16 UTC (rev 299) @@ -24,9 +24,13 @@ * #L% */ +import static org.nuiton.i18n.I18n.t; + import java.util.ArrayList; import java.util.List; +import org.nuiton.util.pagination.PaginationResult; + import com.franciaflex.faxtomail.persistence.entities.Email; import com.franciaflex.faxtomail.persistence.entities.EmailFilter; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; @@ -34,8 +38,6 @@ import com.franciaflex.faxtomail.ui.swing.content.search.SearchUIHandler; import com.franciaflex.faxtomail.ui.swing.content.search.SearchUIModel; -import static org.nuiton.i18n.I18n.t; - /** * @author Kevin Morin (Code Lutin) * @since x.x @@ -54,7 +56,9 @@ EmailFilter emailFilter = model.toEntity(); - List<Email> emails = getContext().getEmailService().search(emailFilter); + PaginationResult<Email> paginationResult = getContext().getEmailService().search(emailFilter, + getContext().getCurrentUser(), getModel().getPaginationParameter()); + List<Email> emails = paginationResult.getElements(); List<DemandeUIModel> result = new ArrayList<>(); for (Email email : emails) { DemandeUIModel demand = new DemandeUIModel(); @@ -68,5 +72,7 @@ } } model.setResults(result); + model.setPaginationParameter(paginationResult.getCurrentPage()); + model.setPaginationResult(paginationResult); } } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SearchToGroupAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SearchToGroupAction.java 2014-06-30 14:14:09 UTC (rev 298) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SearchToGroupAction.java 2014-06-30 15:18:16 UTC (rev 299) @@ -34,6 +34,8 @@ import java.util.ArrayList; import java.util.List; +import org.nuiton.util.pagination.PaginationResult; + import static org.nuiton.i18n.I18n.t; /** @@ -53,7 +55,9 @@ getContext().setSearch(model); EmailFilter emailFilter = model.toEntity(); - List<Email> emails = getContext().getEmailService().search(emailFilter); + PaginationResult<Email> paginationResult = getContext().getEmailService().search(emailFilter, + getContext().getCurrentUser(), getModel().getPaginationParameter()); + List<Email> emails = paginationResult.getElements(); List<DemandeUIModel> result = new ArrayList<>(); for (Email mail : emails) { @@ -63,5 +67,7 @@ result.add(demand); } model.setResults(result); + model.setPaginationParameter(paginationResult.getCurrentPage()); + model.setPaginationResult(paginationResult); } } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.css =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.css 2014-06-30 14:14:09 UTC (rev 298) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.css 2014-06-30 15:18:16 UTC (rev 299) @@ -57,7 +57,7 @@ } #demandNbField { - text: { String.valueOf(model.getEmailNb()) }; + text: { String.valueOf(model.getPaginationResult().getCount()) }; } #quotationNbLabel { Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.jaxx =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.jaxx 2014-06-30 14:14:09 UTC (rev 298) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.jaxx 2014-06-30 15:18:16 UTC (rev 299) @@ -97,7 +97,7 @@ <JLabel styleClass="horizontal-separator"/> <JLabel text="faxtomail.demandeList.pages" /> <JButton text="faxtomail.demandeList.goToPreviousPage" onActionPerformed="handler.goToPreviousPage()" - enabled="{model.getPaginationParameter().getPageNumber() > 0}" /> + enabled="{model.getPaginationResult().hasPreviousPage()}" /> <JLabel text="{String.valueOf(getModel().getPaginationParameter().getPageNumber() + 1)}" /> <JLabel styleClass="page-separator"/> <JLabel text="{String.valueOf(model.getPaginationResult().getLastPage().getPageNumber() + 1)}" /> Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-06-30 14:14:09 UTC (rev 298) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-06-30 15:18:16 UTC (rev 299) @@ -49,8 +49,10 @@ import com.franciaflex.faxtomail.ui.swing.util.CloseableUI; import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil; import com.franciaflex.faxtomail.ui.swing.util.FolderTreeNode; + import jaxx.runtime.JAXXUtil; import jaxx.runtime.validator.swing.SwingValidator; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.JXTable; @@ -58,6 +60,7 @@ import org.jdesktop.swingx.decorator.ComponentAdapter; import org.jdesktop.swingx.decorator.HighlightPredicate; import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel; +import org.nuiton.util.pagination.PaginationParameter; import javax.swing.*; import javax.swing.event.ListSelectionEvent; @@ -68,6 +71,7 @@ import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.TreeModel; import javax.swing.tree.TreePath; + import java.awt.*; import java.awt.event.MouseEvent; import java.beans.PropertyChangeEvent; @@ -129,6 +133,10 @@ model.addPropertyChangeListener(DemandeListUIModel.PROPERTY_SELECTED_FOLDER, new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { + + // reset pagination when folder change + getModel().resetPaginationParameter(); + MailFolder folder = (MailFolder) evt.getNewValue(); while (folder.getAllowCreateDemandIntoFolder() == null && folder.getParent() != null) { Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIModel.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIModel.java 2014-06-30 14:14:09 UTC (rev 298) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIModel.java 2014-06-30 15:18:16 UTC (rev 299) @@ -60,7 +60,7 @@ protected PaginationParameter paginationParameter = PaginationParameter.of(0, 50, Email.PROPERTY_RECEPTION_DATE, true); - protected PaginationResult<Email> paginationResult; + protected PaginationResult<Email> paginationResult = PaginationResult.of(null, 0, paginationParameter); protected List<DemandeUIModel> filteredEmails; @@ -111,6 +111,10 @@ public PaginationParameter getPaginationParameter() { return paginationParameter; } + + public void resetPaginationParameter() { + setPaginationParameter(PaginationParameter.of(0, 50, Email.PROPERTY_RECEPTION_DATE, true)); + } public void setPaginationResult(PaginationResult<Email> paginationResult) { PaginationResult<Email> oldValue = this.paginationResult; Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUI.css =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUI.css 2014-06-30 14:14:09 UTC (rev 298) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUI.css 2014-06-30 15:18:16 UTC (rev 299) @@ -19,6 +19,13 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ +.horizontal-separator { + text: " | "; +} +.page-separator { + text: "/"; +} + JSplitPane { oneTouchExpandable:true; } @@ -260,7 +267,7 @@ #searchButton { text: "faxtomail.search.button.label"; - _applicationAction: { com.franciaflex.faxtomail.ui.swing.actions.SearchToGroupAction.class }; + /* _applicationAction: { com.franciaflex.faxtomail.ui.swing.actions.SearchToGroupAction.class };*/ } #dataTable { Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUI.jaxx =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUI.jaxx 2014-06-30 14:14:09 UTC (rev 298) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUI.jaxx 2014-06-30 15:18:16 UTC (rev 299) @@ -41,6 +41,8 @@ org.jdesktop.swingx.JXDatePicker org.jdesktop.swingx.JXTitledPanel org.jdesktop.swingx.JXTable + + java.awt.FlowLayout </import> <script><![CDATA[ @@ -334,7 +336,7 @@ </JScrollPane> <JPanel constraints='BorderLayout.SOUTH'> - <JButton id="searchButton"/> + <JButton id="searchButton" onActionPerformed="handler.searchDemandes()" /> </JPanel> </JPanel> @@ -342,6 +344,19 @@ <JScrollPane constraints='BorderLayout.CENTER'> <JXTable id='dataTable'/> </JScrollPane> + <JPanel layout="{new FlowLayout(FlowLayout.LEADING)}" constraints='BorderLayout.SOUTH'> + <JLabel text="faxtomail.demandeList.totalCount" /> + <JLabel text="{String.valueOf(model.getPaginationResult().getCount())}" /> + <JLabel styleClass="horizontal-separator"/> + <JLabel text="faxtomail.demandeList.pages" /> + <JButton text="faxtomail.demandeList.goToPreviousPage" onActionPerformed="handler.goToPreviousPage()" + enabled="{model.getPaginationResult().hasPreviousPage()}" /> + <JLabel text="{String.valueOf(getModel().getPaginationParameter().getPageNumber() + 1)}" /> + <JLabel styleClass="page-separator"/> + <JLabel text="{String.valueOf(model.getPaginationResult().getLastPage().getPageNumber() + 1)}" /> + <JButton text="faxtomail.demandeList.goToNextPage" onActionPerformed="handler.goToNextPage()" + enabled="{model.getPaginationResult().hasNextPage()}" /> + </JPanel> </JPanel> </JSplitPane> Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java 2014-06-30 14:14:09 UTC (rev 298) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java 2014-06-30 15:18:16 UTC (rev 299) @@ -29,11 +29,14 @@ import com.franciaflex.faxtomail.persistence.entities.MailField; import com.franciaflex.faxtomail.services.service.ReferentielService; import com.franciaflex.faxtomail.ui.swing.actions.GroupAction; +import com.franciaflex.faxtomail.ui.swing.actions.SearchAction; import com.franciaflex.faxtomail.ui.swing.actions.SearchToGroupAction; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailDemandListHandler; import com.franciaflex.faxtomail.ui.swing.util.Cancelable; + import jaxx.runtime.validator.swing.SwingValidator; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.JXTable; @@ -45,6 +48,7 @@ import javax.swing.*; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; + import java.awt.*; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; @@ -216,6 +220,48 @@ } + public void searchDemandes() { + getModel().resetPaginationParameter(); + try { + SearchAction searchAction = getContext().getActionFactory().createLogicAction(this, SearchAction.class); + searchAction.doAction(); + + } catch (Exception e) { + if (log.isErrorEnabled()) { + log.error("error while searching", e); + } + getContext().getErrorHelper().showErrorDialog(t("faxtomail.search.action.error")); + } + } + + public void goToNextPage() { + getModel().setPaginationParameter(getModel().getPaginationResult().getNextPage()); + try { + SearchAction searchAction = getContext().getActionFactory().createLogicAction(this, SearchAction.class); + searchAction.doAction(); + + } catch (Exception e) { + if (log.isErrorEnabled()) { + log.error("error while searching", e); + } + getContext().getErrorHelper().showErrorDialog(t("faxtomail.search.action.error")); + } + } + + public void goToPreviousPage() { + getModel().setPaginationParameter(getModel().getPaginationResult().getPreviousPage()); + try { + SearchAction searchAction = getContext().getActionFactory().createLogicAction(this, SearchAction.class); + searchAction.doAction(); + + } catch (Exception e) { + if (log.isErrorEnabled()) { + log.error("error while searching", e); + } + getContext().getErrorHelper().showErrorDialog(t("faxtomail.search.action.error")); + } + } + @Override protected List<MailField> getColumns() { List<MailField> tableColumns = getContext().getFaxToMailConfiguration().getSearchDisplayColumns(); Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.css =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.css 2014-06-30 14:14:09 UTC (rev 298) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.css 2014-06-30 15:18:16 UTC (rev 299) @@ -19,6 +19,13 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ +.horizontal-separator { + text: " | "; +} +.page-separator { + text: "/"; +} + JSplitPane { oneTouchExpandable:true; } @@ -300,7 +307,7 @@ #searchButton { text: "faxtomail.search.button.label"; - _applicationAction: { com.franciaflex.faxtomail.ui.swing.actions.SearchAction.class }; + /* _applicationAction: { com.franciaflex.faxtomail.ui.swing.actions.SearchAction.class }; */ } #dataTable { Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.jaxx =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.jaxx 2014-06-30 14:14:09 UTC (rev 298) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.jaxx 2014-06-30 15:18:16 UTC (rev 299) @@ -41,6 +41,8 @@ org.jdesktop.swingx.JXDatePicker org.jdesktop.swingx.JXTitledPanel org.jdesktop.swingx.JXTable + + java.awt.FlowLayout </import> <script><![CDATA[ @@ -352,7 +354,7 @@ </JScrollPane> <JPanel constraints='BorderLayout.SOUTH'> - <JButton id="searchButton"/> + <JButton id="searchButton" onActionPerformed="handler.searchDemandes()" /> </JPanel> </JPanel> @@ -362,6 +364,19 @@ onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)' onKeyPressed='handler.openRowMenu(event, tablePopup)'/> </JScrollPane> + <JPanel layout="{new FlowLayout(FlowLayout.LEADING)}" constraints='BorderLayout.SOUTH'> + <JLabel text="faxtomail.demandeList.totalCount" /> + <JLabel text="{String.valueOf(model.getPaginationResult().getCount())}" /> + <JLabel styleClass="horizontal-separator"/> + <JLabel text="faxtomail.demandeList.pages" /> + <JButton text="faxtomail.demandeList.goToPreviousPage" onActionPerformed="handler.goToPreviousPage()" + enabled="{model.getPaginationResult().hasPreviousPage()}" /> + <JLabel text="{String.valueOf(getModel().getPaginationParameter().getPageNumber() + 1)}" /> + <JLabel styleClass="page-separator"/> + <JLabel text="{String.valueOf(model.getPaginationResult().getLastPage().getPageNumber() + 1)}" /> + <JButton text="faxtomail.demandeList.goToNextPage" onActionPerformed="handler.goToNextPage()" + enabled="{model.getPaginationResult().hasNextPage()}" /> + </JPanel> </JPanel> </JSplitPane> Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java 2014-06-30 14:14:09 UTC (rev 298) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java 2014-06-30 15:18:16 UTC (rev 299) @@ -26,19 +26,24 @@ import com.franciaflex.faxtomail.persistence.entities.EmailFilter; import com.franciaflex.faxtomail.persistence.entities.MailField; import com.franciaflex.faxtomail.services.service.ReferentielService; +import com.franciaflex.faxtomail.ui.swing.actions.LoadFolderEmailsAction; import com.franciaflex.faxtomail.ui.swing.actions.SearchAction; import com.franciaflex.faxtomail.ui.swing.actions.ShowDemandeListAction; +import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeListUIHandler; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailDemandListHandler; import com.franciaflex.faxtomail.ui.swing.util.CloseableUI; import com.franciaflex.faxtomail.ui.swing.util.DemandeTableModel; + import jaxx.runtime.validator.swing.SwingValidator; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.JXTable; import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel; import javax.swing.*; + import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.Arrays; @@ -176,6 +181,48 @@ } + public void searchDemandes() { + getModel().resetPaginationParameter(); + try { + SearchAction searchAction = getContext().getActionFactory().createLogicAction(this, SearchAction.class); + searchAction.doAction(); + + } catch (Exception e) { + if (log.isErrorEnabled()) { + log.error("error while searching", e); + } + getContext().getErrorHelper().showErrorDialog(t("faxtomail.search.action.error")); + } + } + + public void goToNextPage() { + getModel().setPaginationParameter(getModel().getPaginationResult().getNextPage()); + try { + SearchAction searchAction = getContext().getActionFactory().createLogicAction(this, SearchAction.class); + searchAction.doAction(); + + } catch (Exception e) { + if (log.isErrorEnabled()) { + log.error("error while searching", e); + } + getContext().getErrorHelper().showErrorDialog(t("faxtomail.search.action.error")); + } + } + + public void goToPreviousPage() { + getModel().setPaginationParameter(getModel().getPaginationResult().getPreviousPage()); + try { + SearchAction searchAction = getContext().getActionFactory().createLogicAction(this, SearchAction.class); + searchAction.doAction(); + + } catch (Exception e) { + if (log.isErrorEnabled()) { + log.error("error while searching", e); + } + getContext().getErrorHelper().showErrorDialog(t("faxtomail.search.action.error")); + } + } + @Override protected List<MailField> getColumns() { List<MailField> tableColumns = getContext().getFaxToMailConfiguration().getSearchDisplayColumns(); Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIModel.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIModel.java 2014-06-30 14:14:09 UTC (rev 298) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIModel.java 2014-06-30 15:18:16 UTC (rev 299) @@ -29,9 +29,12 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; +import org.nuiton.util.pagination.PaginationParameter; +import org.nuiton.util.pagination.PaginationResult; import com.franciaflex.faxtomail.persistence.entities.DemandStatus; import com.franciaflex.faxtomail.persistence.entities.DemandType; +import com.franciaflex.faxtomail.persistence.entities.Email; import com.franciaflex.faxtomail.persistence.entities.EmailFilter; import com.franciaflex.faxtomail.persistence.entities.EtatAttente; import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; @@ -51,9 +54,13 @@ public static final String PROPERTY_RESULTS = "results"; public static final String PROPERTY_MENU_ENABLED = "menuEnabled"; public static final String PROPERTY_GROUP_ENABLED = "groupEnabled"; + public static final String PROPERTY_PAGINATION_PARAMETER = "paginationParameter"; + public static final String PROPERTY_PAGINATION_RESULT = "paginationResult"; protected final EmailFilter editObject = new EmailFilter(); + protected PaginationParameter paginationParameter = PaginationParameter.of(0, 50, Email.PROPERTY_RECEPTION_DATE, true); + protected PaginationResult<Email> paginationResult = PaginationResult.of(null, 0, paginationParameter); protected List<DemandeUIModel> results; protected boolean menuEnabled; @@ -82,16 +89,6 @@ return editObject.getSender(); } - /*public void setRecipient(String recipient) { - Object oldValue = getRecipient(); - editObject.setRecipient(recipient); - firePropertyChanged(EmailFilter.PROPERTY_RECIPIENT, oldValue, recipient); - } - - public String getRecipient() { - return editObject.getRecipient(); - }*/ - public void setDemandObject(String demandObject) { Object oldValue = getDemandObject(); editObject.setDemandObject(demandObject); @@ -131,16 +128,6 @@ public String getBody() { return editObject.getBody(); } -// -// public void setCommandNumber(String commandNumber) { -// Object oldValue = getCommandNumber(); -// editObject.setCommandNumber(commandNumber); -// firePropertyChanged(EmailFilter.PROPERTY_COMMAND_NUMBER, oldValue, commandNumber); -// } -// -// public String getCommandNumber() { -// return editObject.getCommandNumber(); -// } public void setEtatAttente(List<EtatAttente> etatAttente) { editObject.setEtatAttente(etatAttente); @@ -407,6 +394,30 @@ firePropertyChanged(PROPERTY_RESULTS, null, results); } + public void setPaginationParameter(PaginationParameter paginationParameter) { + Object oldValue = this.paginationParameter; + this.paginationParameter = paginationParameter; + firePropertyChanged(PROPERTY_PAGINATION_PARAMETER, oldValue, paginationParameter); + } + + public PaginationParameter getPaginationParameter() { + return paginationParameter; + } + + public void resetPaginationParameter() { + setPaginationParameter(PaginationParameter.of(0, 50, Email.PROPERTY_RECEPTION_DATE, true)); + } + + public void setPaginationResult(PaginationResult<Email> paginationResult) { + Object oldValue = this.paginationResult; + this.paginationResult = paginationResult; + firePropertyChanged(PROPERTY_PAGINATION_RESULT, oldValue, paginationResult); + } + + public PaginationResult<Email> getPaginationResult() { + return paginationResult; + } + public boolean isMenuEnabled() { return menuEnabled; }