Author: echatellier Date: 2014-08-01 18:25:18 +0200 (Fri, 01 Aug 2014) New Revision: 459 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/459 Log: fixes #5558: Pouvoir configurer le nombre de mails lors de la pagination (dans l'UI swing) Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfiguration.java trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationOption.java trunk/faxtomail-persistence/src/main/resources/i18n/faxtomail-persistence_fr_FR.properties trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.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/demande/DemandesUIHandler.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 trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfiguration.java =================================================================== --- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfiguration.java 2014-08-01 15:47:29 UTC (rev 458) +++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfiguration.java 2014-08-01 16:25:18 UTC (rev 459) @@ -405,6 +405,14 @@ return applicationConfig.getOptionAsColor(FaxToMailConfigurationOption.COLOR_SELECTED_ROW.getKey()); } + public int getResultPerPage() { + return applicationConfig.getOptionAsInt(FaxToMailConfigurationOption.RESULT_PER_PAGE.getKey()); + } + + public void setResultPerPage(int resultPerPage) { + applicationConfig.setOption(FaxToMailConfigurationOption.RESULT_PER_PAGE.getKey(), String.valueOf(resultPerPage)); + } + @Override public KeyStroke getShortcutClosePopup() { return applicationConfig.getOptionAsKeyStroke(FaxToMailConfigurationOption.SHORTCUT_CLOSE_POPUP.getKey()); Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationOption.java =================================================================== --- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationOption.java 2014-08-01 15:47:29 UTC (rev 458) +++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationOption.java 2014-08-01 16:25:18 UTC (rev 459) @@ -297,6 +297,13 @@ n("faxtomail.config.option.ui.dateFormat.description"), "dd/MM/yyyy", String.class + ), + + RESULT_PER_PAGE( + "faxtomail.ui.resultPerPage", + n("faxtomail.config.option.ui.resultPerPage.description"), + "50", + Integer.class ); /** Configuration key. */ Modified: trunk/faxtomail-persistence/src/main/resources/i18n/faxtomail-persistence_fr_FR.properties =================================================================== --- trunk/faxtomail-persistence/src/main/resources/i18n/faxtomail-persistence_fr_FR.properties 2014-08-01 15:47:29 UTC (rev 458) +++ trunk/faxtomail-persistence/src/main/resources/i18n/faxtomail-persistence_fr_FR.properties 2014-08-01 16:25:18 UTC (rev 459) @@ -18,6 +18,7 @@ faxtomail.config.option.ui.color.selectedRow.description= faxtomail.config.option.ui.config.file.description= faxtomail.config.option.ui.dateFormat.description= +faxtomail.config.option.ui.resultPerPage.description= faxtomail.config.option.ui.shortcut.closePopup.description= faxtomail.config.option.ui.showNumberEditorButton.description= faxtomail.config.option.version.description= Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java 2014-08-01 15:47:29 UTC (rev 458) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java 2014-08-01 16:25:18 UTC (rev 459) @@ -425,7 +425,7 @@ } /** - * Retourne l'utilsateur connecté sur la session utilsateur (ou a defaut un utilisateur de test). + * Retourne l'utilsateur connecté sur la session utilisateur (ou a defaut un utilisateur de test). * * @return trigramme */ 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-08-01 15:47:29 UTC (rev 458) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.css 2014-08-01 16:25:18 UTC (rev 459) @@ -121,6 +121,10 @@ text: { String.valueOf(model.getPaginationResult().getCount()) }; } +#resultsPerPageLabel { + text: "faxtomail.demandeList.resultPerPage"; +} + #pageNumberLabel { text: "faxtomail.demandeList.pages"; } 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-08-01 15:47:29 UTC (rev 458) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.jaxx 2014-08-01 16:25:18 UTC (rev 459) @@ -97,6 +97,10 @@ <JLabel id="totalDemandCountLabel" /> <JLabel id="totalDemandCountValue" /> + <JLabel styleClass="horizontal-separator" /> + <JLabel id="resultsPerPageLabel" /> + <JComboBox id="resultPerPageCombo" genericType="Integer" /> + <JLabel styleClass="horizontal-separator"/> <JLabel id="pageNumberLabel" /> 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-08-01 15:47:29 UTC (rev 458) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-08-01 16:25:18 UTC (rev 459) @@ -27,9 +27,12 @@ import java.awt.Color; import java.awt.Component; import java.awt.Dimension; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; import java.awt.event.MouseEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.io.ObjectInputStream.GetField; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -39,6 +42,7 @@ import java.util.List; import java.util.Map; +import javax.swing.DefaultComboBoxModel; import javax.swing.JComponent; import javax.swing.JPopupMenu; import javax.swing.JTable; @@ -54,10 +58,6 @@ import javax.swing.tree.TreeModel; import javax.swing.tree.TreePath; -import com.franciaflex.faxtomail.ui.swing.actions.PrintOnDefaultPrinterAction; -import com.google.common.collect.HashMultimap; -import com.google.common.collect.Multimap; - import jaxx.runtime.JAXXUtil; import jaxx.runtime.validator.swing.SwingValidator; @@ -87,6 +87,7 @@ import com.franciaflex.faxtomail.ui.swing.actions.ArchiveFromListAction; import com.franciaflex.faxtomail.ui.swing.actions.ComputeQuantitiesByRangeAction; import com.franciaflex.faxtomail.ui.swing.actions.LoadFolderEmailsAction; +import com.franciaflex.faxtomail.ui.swing.actions.PrintOnDefaultPrinterAction; import com.franciaflex.faxtomail.ui.swing.actions.SaveDemandeFromListAction; import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUI; import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUIModel; @@ -94,6 +95,8 @@ 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 com.google.common.collect.HashMultimap; +import com.google.common.collect.Multimap; /** * Handler of UI {@link com.franciaflex.faxtomail.ui.swing.content.demande.DemandeListUIHandler}. @@ -143,8 +146,6 @@ this.ui.setContextValue(model); } - private boolean loading = false; - @Override public void afterInit(DemandeListUI ui) { @@ -317,6 +318,18 @@ } }); + // int combo box for result per page + ui.getResultPerPageCombo().setModel(new DefaultComboBoxModel<Integer>(new Integer[] {10, 20, 30, 40, 50})); + int resultPerPage = getConfig().getResultPerPage(); + ui.getModel().setResultPerPage(resultPerPage); + ui.getResultPerPageCombo().setSelectedItem(resultPerPage); + ui.getResultPerPageCombo().addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + updateResultPerPage(e); + } + }); + MailFolder currentMailFolder = getContext().getCurrentMailFolder(); DemandeUIModel currentEmail = getContext().getCurrentEmail(); @@ -327,24 +340,36 @@ DefaultMutableTreeNode node = nodesByFolder.get(currentMailFolder); navigationTree.setSelectionPath(new TreePath(node.getPath())); } - } public void goToNextPage() { getModel().setPaginationParameter(getModel().getPaginationResult().getNextPage()); - LoadFolderEmailsAction loadFolderEmailsAction = - getContext().getActionFactory().createLogicAction(DemandeListUIHandler.this, - LoadFolderEmailsAction.class); - getContext().getActionEngine().runAction(loadFolderEmailsAction); + runListAction(); } public void goToPreviousPage() { getModel().setPaginationParameter(getModel().getPaginationResult().getPreviousPage()); - LoadFolderEmailsAction loadFolderEmailsAction = - getContext().getActionFactory().createLogicAction(DemandeListUIHandler.this, - LoadFolderEmailsAction.class); - getContext().getActionEngine().runAction(loadFolderEmailsAction); + runListAction(); } + + public void updateResultPerPage(ItemEvent event) { + //FIXME echatellier 20140801 this produce transasction exception + int resultPerPage = (Integer)event.getItem(); + getModel().setResultPerPage(resultPerPage); + getConfig().setResultPerPage(resultPerPage); + getConfig().save(); + getModel().resetPaginationParameter(); + runListAction(); + } + + protected void runListAction() { + if (getModel().getSelectedFolder() != null) { // can be when update result per page + LoadFolderEmailsAction loadFolderEmailsAction = + getContext().getActionFactory().createLogicAction(DemandeListUIHandler.this, + LoadFolderEmailsAction.class); + getContext().getActionEngine().runAction(loadFolderEmailsAction); + } + } @Override public void initDemandeTable(final JXTable table, boolean sortable) { 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-08-01 15:47:29 UTC (rev 458) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIModel.java 2014-08-01 16:25:18 UTC (rev 459) @@ -53,13 +53,16 @@ public static final String PROPERTY_ARCHIVE_ENABLED = "archiveEnabled"; public static final String PROPERTY_COMPUTE_QUANTITIES_BY_RANGE_ENABLED = "computeQuantitiesByRangeEnabled"; public static final String PROPERTY_NEW_DEMAND_ENABLED = "newDemandEnabled"; + public static final String PROPERTY_RESULT_PER_PAGE = "resultPerPage"; protected List<MailFolder> folders; protected List<DemandeUIModel> emails; - protected PaginationParameter paginationParameter = PaginationParameter.of(0, 50, Email.PROPERTY_RECEPTION_DATE, false); + protected int resultPerPage = 50; + protected PaginationParameter paginationParameter = PaginationParameter.of(0, resultPerPage, Email.PROPERTY_RECEPTION_DATE, false); + protected PaginationResult<Email> paginationResult = PaginationResult.of(null, 0, paginationParameter); protected List<DemandeUIModel> filteredEmails; @@ -113,7 +116,7 @@ } public void resetPaginationParameter() { - setPaginationParameter(PaginationParameter.of(0, 50, Email.PROPERTY_RECEPTION_DATE, false)); + setPaginationParameter(PaginationParameter.of(0, resultPerPage, Email.PROPERTY_RECEPTION_DATE, false)); } public void setPaginationResult(PaginationResult<Email> paginationResult) { @@ -254,4 +257,14 @@ this.savNb = savNb; firePropertyChange(PROPERTY_SAV_NB, oldValue, savNb); } + + public void setResultPerPage(int resultPerPage) { + int oldValue = this.resultPerPage; + this.resultPerPage = resultPerPage; + firePropertyChange(PROPERTY_RESULT_PER_PAGE, oldValue, resultPerPage); + } + + public int getResultPerPage() { + return resultPerPage; + } } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java 2014-08-01 15:47:29 UTC (rev 458) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java 2014-08-01 16:25:18 UTC (rev 459) @@ -40,8 +40,10 @@ import com.franciaflex.faxtomail.ui.swing.content.transmit.MailFolderChooserUI; import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; import com.franciaflex.faxtomail.ui.swing.util.CloseableUI; + import jaxx.runtime.JAXXUtil; import jaxx.runtime.validator.swing.SwingValidator; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler; @@ -53,6 +55,7 @@ import org.nuiton.jaxx.application.swing.tab.TabHandler; import javax.swing.*; + import java.awt.*; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; 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-08-01 15:47:29 UTC (rev 458) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUI.css 2014-08-01 16:25:18 UTC (rev 459) @@ -296,6 +296,10 @@ text: { String.valueOf(model.getPaginationResult().getCount()) }; } +#resultsPerPageLabel { + text: "faxtomail.demandeList.resultPerPage"; +} + #pageNumberLabel { text: "faxtomail.demandeList.pages"; } 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-08-01 15:47:29 UTC (rev 458) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUI.jaxx 2014-08-01 16:25:18 UTC (rev 459) @@ -347,6 +347,10 @@ <JLabel id="totalDemandCountLabel" /> <JLabel id="totalDemandCountValue" /> + <JLabel styleClass="horizontal-separator" /> + <JLabel id="resultsPerPageLabel" /> + <JComboBox id="resultPerPageCombo" genericType="Integer" /> + <JLabel styleClass="horizontal-separator"/> <JLabel id="pageNumberLabel" /> 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-08-01 15:47:29 UTC (rev 458) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java 2014-08-01 16:25:18 UTC (rev 459) @@ -30,6 +30,7 @@ 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; @@ -50,6 +51,8 @@ import javax.swing.event.ListSelectionListener; import java.awt.*; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; @@ -219,40 +222,47 @@ }; dataTable.addHighlighter(new ColorHighlighter(rowAlreadyInGroupPredicate, null, Color.GRAY, Color.GRAY, Color.WHITE)); + // int combo box for result per page + ui.getResultPerPageCombo().setModel(new DefaultComboBoxModel<Integer>(new Integer[] {10, 20, 30, 40, 50})); + int resultPerPage = getConfig().getResultPerPage(); + ui.getModel().setResultPerPage(resultPerPage); + ui.getResultPerPageCombo().setSelectedItem(resultPerPage); + ui.getResultPerPageCombo().addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + updateResultPerPage(e); + } + }); } public void searchDemandes() { getModel().resetPaginationParameter(); - try { - SearchToGroupAction searchAction = getContext().getActionFactory().createLogicAction(this, SearchToGroupAction.class); - searchAction.doAction(); - - } catch (Exception e) { - if (log.isErrorEnabled()) { - log.error("error while searching", e); - } - getContext().getErrorHelper().showErrorDialog(t("faxtomail.search.action.error")); - } + runSearchAction(); } public void goToNextPage() { getModel().setPaginationParameter(getModel().getPaginationResult().getNextPage()); - try { - SearchToGroupAction searchAction = getContext().getActionFactory().createLogicAction(this, SearchToGroupAction.class); - searchAction.doAction(); - - } catch (Exception e) { - if (log.isErrorEnabled()) { - log.error("error while searching", e); - } - getContext().getErrorHelper().showErrorDialog(t("faxtomail.search.action.error")); - } + runSearchAction(); } public void goToPreviousPage() { getModel().setPaginationParameter(getModel().getPaginationResult().getPreviousPage()); + runSearchAction(); + } + + public void updateResultPerPage(ItemEvent event) { + getContext().createNewTransaction(); + int resultPerPage = (Integer)event.getItem(); + getConfig().setResultPerPage(resultPerPage); + getConfig().save(); + getModel().setResultPerPage(resultPerPage); + getModel().resetPaginationParameter(); + runSearchAction(); + } + + protected void runSearchAction() { try { - SearchToGroupAction searchAction = getContext().getActionFactory().createLogicAction(this, SearchToGroupAction.class); + SearchAction searchAction = getContext().getActionFactory().createLogicAction(this, SearchAction.class); searchAction.doAction(); } catch (Exception e) { 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-08-01 15:47:29 UTC (rev 458) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.css 2014-08-01 16:25:18 UTC (rev 459) @@ -322,6 +322,10 @@ text: { String.valueOf(model.getPaginationResult().getCount()) }; } +#resultsPerPageLabel { + text: "faxtomail.demandeList.resultPerPage"; +} + #pageNumberLabel { text: "faxtomail.demandeList.pages"; } 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-08-01 15:47:29 UTC (rev 458) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.jaxx 2014-08-01 16:25:18 UTC (rev 459) @@ -367,11 +367,16 @@ <JLabel id="totalDemandCountLabel" /> <JLabel id="totalDemandCountValue" /> + <JLabel styleClass="horizontal-separator" /> + <JLabel id="resultsPerPageLabel" /> + <JComboBox id="resultPerPageCombo" genericType="Integer" /> + <JLabel styleClass="horizontal-separator"/> <JLabel id="pageNumberLabel" /> <JButton id="previousPageButton" onActionPerformed="handler.goToPreviousPage()"/> + <JLabel id="currentPageLabel" /> <JLabel styleClass="page-separator"/> <JLabel id="totalPageNumberLabel" /> 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-08-01 15:47:29 UTC (rev 458) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java 2014-08-01 16:25:18 UTC (rev 459) @@ -24,14 +24,16 @@ import static org.nuiton.i18n.I18n.t; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; -import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.List; +import javax.swing.DefaultComboBoxModel; import javax.swing.JComponent; import javax.swing.ListSelectionModel; @@ -96,7 +98,6 @@ initUI(ui); - long before = System.currentTimeMillis(); final ReferentielService referentielService = getContext().getReferentielService(); // this loading take 1,5 seconds @@ -182,41 +183,47 @@ getContext().getErrorHelper().showErrorDialog(t("faxtomail.search.action.error")); } } - long after = System.currentTimeMillis(); - System.out.println("Time = " + (after - before) + " ms"); + + // int combo box for result per page + ui.getResultPerPageCombo().setModel(new DefaultComboBoxModel<Integer>(new Integer[] {10, 20, 30, 40, 50})); + int resultPerPage = getConfig().getResultPerPage(); + ui.getModel().setResultPerPage(resultPerPage); + ui.getResultPerPageCombo().setSelectedItem(resultPerPage); + ui.getResultPerPageCombo().addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + updateResultPerPage(e); + } + }); } public void searchDemandes() { getContext().createNewTransaction(); 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")); - } + runSearchAction(); } 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")); - } + runSearchAction(); } public void goToPreviousPage() { getModel().setPaginationParameter(getModel().getPaginationResult().getPreviousPage()); + runSearchAction(); + } + + public void updateResultPerPage(ItemEvent event) { + getContext().createNewTransaction(); + int resultPerPage = (Integer)event.getItem(); + getConfig().setResultPerPage(resultPerPage); + getConfig().save(); + getModel().setResultPerPage(resultPerPage); + getModel().resetPaginationParameter(); + runSearchAction(); + } + + protected void runSearchAction() { try { SearchAction searchAction = getContext().getActionFactory().createLogicAction(this, SearchAction.class); searchAction.doAction(); 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-08-01 15:47:29 UTC (rev 458) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIModel.java 2014-08-01 16:25:18 UTC (rev 459) @@ -56,10 +56,12 @@ public static final String PROPERTY_GROUP_ENABLED = "groupEnabled"; public static final String PROPERTY_PAGINATION_PARAMETER = "paginationParameter"; public static final String PROPERTY_PAGINATION_RESULT = "paginationResult"; + public static final String PROPERTY_RESULT_PER_PAGE = "resultPerPage"; protected final EmailFilter editObject = new EmailFilter(); - protected PaginationParameter paginationParameter = PaginationParameter.of(0, 50, Email.PROPERTY_RECEPTION_DATE, false); + protected int resultPerPage = 50; + protected PaginationParameter paginationParameter = PaginationParameter.of(0, resultPerPage, Email.PROPERTY_RECEPTION_DATE, false); protected PaginationResult<Email> paginationResult = PaginationResult.of(null, 0, paginationParameter); protected List<DemandeUIModel> results; @@ -393,6 +395,16 @@ firePropertyChanged(PROPERTY_RESULTS, null, results); } + public void setResultPerPage(int resultPerPage) { + int oldValue = this.resultPerPage; + this.resultPerPage = resultPerPage; + firePropertyChanged(PROPERTY_RESULT_PER_PAGE, oldValue, resultPerPage); + } + + public int getResultPerPage() { + return resultPerPage; + } + public void setPaginationParameter(PaginationParameter paginationParameter) { Object oldValue = this.paginationParameter; this.paginationParameter = paginationParameter; @@ -404,7 +416,7 @@ } public void resetPaginationParameter() { - setPaginationParameter(PaginationParameter.of(0, 50, Email.PROPERTY_RECEPTION_DATE, false)); + setPaginationParameter(PaginationParameter.of(0, resultPerPage, Email.PROPERTY_RECEPTION_DATE, false)); } public void setPaginationResult(PaginationResult<Email> paginationResult) { Modified: trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties =================================================================== --- trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-08-01 15:47:29 UTC (rev 458) +++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-08-01 16:25:18 UTC (rev 459) @@ -143,6 +143,7 @@ faxtomail.demandeList.pages=Pages \: faxtomail.demandeList.pfNbLabel=Nombre de produits finis faxtomail.demandeList.quotationNbLabel=Nombre de devis +faxtomail.demandeList.resultPerPage=Nombre de résultat par page \: faxtomail.demandeList.savNbLabel=Nombre de SAV faxtomail.demandeList.table.header.attachment=PJ faxtomail.demandeList.table.header.attachment.tip=Pièces-jointes