Author: kmorin Date: 2014-08-11 12:43:42 +0200 (Mon, 11 Aug 2014) New Revision: 516 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/516 Log: fixes #5528 filtre sur les colonnes : il manque l'icone qui indique que la colonne est filtr?\195?\169e fixes #5526 dans la recherche, bug dans le statut : il apparait un 'sans' alors qu'il n'existe pas dans la liste bind seulement les propri?\195?\169t?\195?\169s r?\195?\169cup?\195?\169r?\195?\169es par le service Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java 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/DemandeUIModel.java 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/CheckBoxComboBoxModel.java Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java 2014-08-11 09:25:21 UTC (rev 515) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java 2014-08-11 10:43:42 UTC (rev 516) @@ -30,6 +30,8 @@ import java.util.Collection; import java.util.List; +import com.ezware.oxbow.swingbits.table.filter.TableRowFilterSupport; +import com.franciaflex.faxtomail.persistence.entities.MailField; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.JXTable; @@ -75,6 +77,9 @@ dataTable.setName("dataTable" + columns); getContext().getSwingSession().add(dataTable, true); + // fixes #5528 filtre sur les colonnes : il manque l'icone qui indique que la colonne est filtrée + TableRowFilterSupport.forFilter(handler.getTableFilter()).searchable(true).useTableRenderers(true).apply(); + return true; } @@ -85,10 +90,11 @@ MailFolder folder = model.getSelectedFolder(); FaxToMailUser currentUser = getContext().getCurrentUser(); + List<MailField> columns = handler.getColumns(); PaginationResult<Email> paginationResult = getContext().newServiceContext().getEmailService() .getEmailForFolder(folder, currentUser, - handler.getColumns(), + columns, model.getPaginationParameter()); List<Email> emails = paginationResult.getElements(); if (log.isDebugEnabled()) { @@ -98,7 +104,7 @@ List<DemandeUIModel> demands = new ArrayList<DemandeUIModel>(); for (Email email : emails) { DemandeUIModel demand = new DemandeUIModel(); - demand.fromEntity(email); + demand.fromEntity(email, columns); // on ajoute toutes les lignes de rangeRow, // qui sont toutes valides puisqu'on les récupère de la base et qu'on ne sauvegarde que les lignes valides 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-11 09:25:21 UTC (rev 515) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-08-11 10:43:42 UTC (rev 516) @@ -113,9 +113,11 @@ /** Logger. */ private static final Log log = LogFactory.getLog(DemandeListUIHandler.class); - protected Map<String, String> pdfFieldValues; + protected ITableFilter<JTable> tableFilter; - protected DateFormat dayFormat = new SimpleDateFormat("dd/MM/yyyy"); + public ITableFilter<JTable> getTableFilter() { + return tableFilter; + } public final PropertyChangeListener selectedDemandeChangeListener = new PropertyChangeListener() { @Override @@ -160,7 +162,7 @@ initDemandeTable(dataTable, false); - final ITableFilter<JTable> tableFilter = new JTableFilter(dataTable) { + tableFilter = new JTableFilter(dataTable) { @Override protected boolean execute(int col, Collection<DistinctColumnItem> items) { @@ -175,10 +177,10 @@ return b; } - @Override - public void modelChanged(TableModel model) { - // do nothing - } +// @Override +// public void modelChanged(TableModel model) { +// // do nothing +// } }; TableRowFilterSupport.forFilter(tableFilter).searchable(true).useTableRenderers(true).apply(); Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-08-11 09:25:21 UTC (rev 515) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-08-11 10:43:42 UTC (rev 516) @@ -47,6 +47,7 @@ import com.google.common.base.Strings; import com.google.common.collect.Collections2; +import com.google.common.collect.Lists; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; @@ -193,9 +194,92 @@ */ @Override public void fromEntity(Email entity) { -// super.fromEntity(entity); fromBeanBinder.copyExcluding(entity, this, Email.PROPERTY_ATTACHMENT, Email.PROPERTY_MAIL_FOLDER); - + + loadAttachments(entity); + } + + public void fromEntity(Email entity, List<MailField> fields) { + List<String> properties = new ArrayList<>(); + properties.add(Email.PROPERTY_TOPIA_ID); + properties.add(Email.PROPERTY_TOPIA_ID); + properties.add(Email.PROPERTY_TOPIA_ID); + properties.add(Email.PROPERTY_TOPIA_ID); + properties.add(Email.PROPERTY_TOPIA_ID); + + boolean noFields = CollectionUtils.isEmpty(fields); + if (noFields || fields.contains(MailField.OBJECT)) { + properties.add(Email.PROPERTY_OBJECT); + } + if (noFields || fields.contains(MailField.PROJECT_REFERENCE)) { + properties.add(Email.PROPERTY_PROJECT_REFERENCE); + } + if (noFields || fields.contains(MailField.COMPANY_REFERENCE)) { + properties.add(Email.PROPERTY_COMPANY_REFERENCE); + } + if (noFields || fields.contains(MailField.COMMENT)) { + properties.add(Email.PROPERTY_COMMENT); + } + if (noFields || fields.contains(MailField.SENDER)) { + properties.add(Email.PROPERTY_SENDER); + } + if (noFields || fields.contains(MailField.RECEPTION_DATE)) { + properties.add(Email.PROPERTY_RECEPTION_DATE); + } + if (noFields || fields.contains(MailField.RECIPIENT)) { + properties.add(Email.PROPERTY_RECIPIENT); + } + if (noFields || fields.contains(MailField.DEMAND_STATUS)) { + properties.add(Email.PROPERTY_DEMAND_STATUS); + } + if (noFields || fields.contains(MailField.RECEPTION_DATE)) { + properties.add(Email.PROPERTY_RECEPTION_DATE); + } + if (noFields || fields.contains(MailField.EDI_RETURN)) { + properties.add(Email.PROPERTY_EDI_ERROR); + } + if (noFields || fields.contains(MailField.PRIORITY)) { + properties.add(Email.PROPERTY_PRIORITY); + } + if (noFields || fields.contains(MailField.DEMAND_TYPE)) { + properties.add(Email.PROPERTY_DEMAND_TYPE); + } + if (noFields || CollectionUtils.containsAny(fields, + Lists.newArrayList(MailField.CLIENT_BRAND, + MailField.CLIENT_CODE))) { + properties.add(Email.PROPERTY_CLIENT); + } + if (noFields || CollectionUtils.containsAny(fields, + Lists.newArrayList(MailField.REFERENCE, + MailField.QUOTATION_NB, + MailField.PF_NB, + MailField.SAV_NB))) { + properties.add(Email.PROPERTY_RANGE_ROW); + } + if (noFields || fields.contains(MailField.ETAT_ATTENTE)) { + properties.add(Email.PROPERTY_ETAT_ATTENTE); + } + if (noFields || fields.contains(MailField.TAKEN_BY)) { + properties.add(Email.PROPERTY_TAKEN_BY); + } + if (noFields || fields.contains(MailField.REPLIES)) { + properties.add(Email.PROPERTY_REPLIES); + } + if (noFields || fields.contains(MailField.ATTACHMENT)) { + properties.add(Email.PROPERTY_ATTACHMENT); + } + if (noFields || fields.contains(MailField.LAST_ATTACHMENT_OPENING_IN_THIS_FOLDER_USER)) { + properties.add(Email.PROPERTY_HISTORY); + } + + fromBeanBinder.copy(entity, this, properties.toArray(new String[properties.size()])); + + if (noFields || fields.contains(MailField.ATTACHMENT)) { + loadAttachments(entity); + } + } + + protected void loadAttachments(Email entity) { // On ne copie pas entierrement les attachments pour ne pas force le chargement du contenu binaire du fichier en mémoire. List<Attachment> attachmentCopy = new ArrayList<Attachment>(); if (entity.getAttachment() != null) { 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-08-11 09:25:21 UTC (rev 515) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java 2014-08-11 10:43:42 UTC (rev 516) @@ -230,9 +230,6 @@ table.setModel(tableModel); table.setColumnModel(columnModel); - // fixes #5528 filtre sur les colonnes : il manque l'icone qui indique que la colonne est filtrée - TableRowFilterSupport.forTable(table).apply(); - return StringUtils.join(columns, "-"); } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/CheckBoxComboBoxModel.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/CheckBoxComboBoxModel.java 2014-08-11 09:25:21 UTC (rev 515) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/CheckBoxComboBoxModel.java 2014-08-11 10:43:42 UTC (rev 516) @@ -37,8 +37,8 @@ */ public class CheckBoxComboBoxModel<HL extends HasLabel> extends AbstractListModel<HL> implements ComboBoxModel<HL> { - List<Object> selection; - List<HL> values; + private List<Object> selection; + private List<HL> values; public CheckBoxComboBoxModel(List<HL> values, List<HL> selection) { this.values = new ArrayList<HL>(); @@ -57,7 +57,9 @@ selection = new ArrayList<Object>(selection); if (selection.contains(anItem)) { selection.remove(anItem); - } else { + + // do not add the item if it si not in the universe values + } else if (values.contains(anItem)) { selection.add(anItem); } }