Author: kmorin Date: 2014-04-24 21:44:56 +0200 (Thu, 24 Apr 2014) New Revision: 46 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/46 Log: refs #4654 [ECRAN] Liste des mails / fax ajout du filtre Modified: trunk/faxtomail-ui-swing/pom.xml 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/util/AbstractFaxToMailDemandListHandler.java trunk/pom.xml Modified: trunk/faxtomail-ui-swing/pom.xml =================================================================== --- trunk/faxtomail-ui-swing/pom.xml 2014-04-24 16:26:22 UTC (rev 45) +++ trunk/faxtomail-ui-swing/pom.xml 2014-04-24 19:44:56 UTC (rev 46) @@ -203,6 +203,11 @@ <artifactId>swingx-autocomplete</artifactId> </dependency> + <dependency> + <groupId>com.ezware.oxbow</groupId> + <artifactId>swing-bits</artifactId> + </dependency> + <!-- Logging --> <dependency> 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-04-24 16:26:22 UTC (rev 45) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-04-24 19:44:56 UTC (rev 46) @@ -22,6 +22,11 @@ * #L% */ +import com.ezware.oxbow.swingbits.table.filter.AbstractTableFilter; +import com.ezware.oxbow.swingbits.table.filter.DistinctColumnItem; +import com.ezware.oxbow.swingbits.table.filter.ITableFilter; +import com.ezware.oxbow.swingbits.table.filter.JTableFilter; +import com.ezware.oxbow.swingbits.table.filter.TableRowFilterSupport; import com.franciaflex.faxtomail.persistence.entities.Company; import com.franciaflex.faxtomail.persistence.entities.Email; import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; @@ -49,6 +54,7 @@ import javax.swing.event.ListSelectionListener; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; +import javax.swing.table.TableModel; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.TreeModel; import javax.swing.tree.TreePath; @@ -135,8 +141,32 @@ // init table final JXTable dataTable = getUI().getDataTable(); + final AbstractApplicationTableModel<DemandeUIModel> tableModel = initDemandeTable(dataTable, false); + final ITableFilter<JTable> tableFilter = new JTableFilter(dataTable) { + + @Override + protected boolean execute(int col, Collection<DistinctColumnItem> items) { + boolean b = super.execute(col, items); + List<DemandeUIModel> filteredEmails = new ArrayList<DemandeUIModel>(); + for (int i = 0; i < dataTable.getRowCount(); i++) { + int modelIndex = dataTable.convertRowIndexToModel(i); + filteredEmails.add(tableModel.getEntry(modelIndex)); + } + getModel().setFilteredEmails(filteredEmails); + return b; + } + + @Override + public void modelChanged(TableModel model) { + // do nothing + log.info("modelChanged"); + } + + }; + TableRowFilterSupport.forFilter(tableFilter).searchable(true).useTableRenderers(true).apply(); + dataTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() { @Override @@ -163,7 +193,15 @@ public void propertyChange(PropertyChangeEvent evt) { List<DemandeUIModel> emails = (List<DemandeUIModel>) evt.getNewValue(); tableModel.setRows(emails); + tableFilter.clear(); + } + }); + model.addPropertyChangeListener(DemandeListUIModel.PROPERTY_FILTERED_EMAILS, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + List<DemandeUIModel> emails = (List<DemandeUIModel>) evt.getNewValue(); + int quotationNb = 0; int pfNb = 0; int savNb = 0; 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-04-24 16:26:22 UTC (rev 45) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIModel.java 2014-04-24 19:44:56 UTC (rev 46) @@ -37,6 +37,7 @@ public static final String PROPERTY_FOLDERS = "folders"; public static final String PROPERTY_EMAILS = "emails"; + public static final String PROPERTY_FILTERED_EMAILS = "filteredEmails"; public static final String PROPERTY_CURRENT_EMAILS = "currentEmails"; public static final String PROPERTY_EMAIL_NB = "emailNb"; public static final String PROPERTY_SELECTED_FOLDER = "selectedFolder"; @@ -50,6 +51,8 @@ protected List<DemandeUIModel> emails; + protected List<DemandeUIModel> filteredEmails; + protected List<DemandeUIModel> currentEmails; protected MailFolder selectedFolder; @@ -79,10 +82,20 @@ } public void setEmails(List<DemandeUIModel> emails) { + this.emails = emails; + setFilteredEmails(emails); + firePropertyChange(PROPERTY_EMAILS, null, emails); + } + + public List<DemandeUIModel> getFilteredEmails() { + return filteredEmails; + } + + public void setFilteredEmails(List<DemandeUIModel> filteredEmails) { Object oldValue = getEmailNb(); - this.emails = emails; + this.filteredEmails = filteredEmails; Object newValue = getEmailNb(); - firePropertyChange(PROPERTY_EMAILS, null, emails); + firePropertyChange(PROPERTY_FILTERED_EMAILS, null, this.filteredEmails); firePropertyChange(PROPERTY_EMAIL_NB, oldValue, newValue); } @@ -97,7 +110,7 @@ } public int getEmailNb() { - return emails == null ? 0 : emails.size(); + return filteredEmails == null ? 0 : filteredEmails.size(); } public void addEmail(DemandeUIModel email) { @@ -115,8 +128,10 @@ if (emails != null) { Object oldValue = getEmailNb(); this.emails.removeAll(emails); + this.filteredEmails.removeAll(emails); Object newValue = getEmailNb(); firePropertyChange(PROPERTY_EMAILS, null, this.emails); + firePropertyChange(PROPERTY_FILTERED_EMAILS, null, this.filteredEmails); firePropertyChange(PROPERTY_EMAIL_NB, oldValue, newValue); } } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java 2014-04-24 16:26:22 UTC (rev 45) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java 2014-04-24 19:44:56 UTC (rev 46) @@ -35,6 +35,7 @@ import javax.swing.event.ChangeListener; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableCellRenderer; +import javax.swing.table.TableModel; import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; @@ -53,7 +54,7 @@ private static final Log log = LogFactory.getLog(AbstractFaxToMailDemandListHandler.class); public AbstractApplicationTableModel<DemandeUIModel> initDemandeTable(JXTable table, boolean sortable) { - table.setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN); +// table.setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN); TableColumnModelExt columnModel = new DefaultTableColumnModelExt(); Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2014-04-24 16:26:22 UTC (rev 45) +++ trunk/pom.xml 2014-04-24 19:44:56 UTC (rev 46) @@ -352,11 +352,11 @@ <version>${swingXVersion}</version> </dependency> - <!--<dependency>--> - <!--<groupId>de.intarsys.opensource</groupId>--> - <!--<artifactId>jPodRenderer</artifactId>--> - <!--<version>5.5.1</version>--> - <!--</dependency>--> + <dependency> + <groupId>com.ezware.oxbow</groupId> + <artifactId>swing-bits</artifactId> + <version>0.5.0</version> + </dependency> <dependency> <groupId>org.swinglabs</groupId>