r19 - in trunk: . faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities faxtomail-persistence/src/main/resources faxtomail-persistence/src/main/resources/i18n faxtomail-persistence/src/main/xmi faxtomail-service/src/main/java/com/franciaflex/faxtomail/services faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service faxtomail-service/src/main/resources/i18n faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing faxtomail-ui-swin
Author: kmorin Date: 2014-03-14 18:07:36 +0100 (Fri, 14 Mar 2014) New Revision: 19 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/19 Log: refs #4654 [ECRAN] Liste des mails / fax refs #4655 [ECRAN] D?\195?\169tail d'un mail / fax Added: trunk/faxtomail-persistence/src/main/resources/faxToMail.properties trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUIModel.java Removed: trunk/faxtomail-persistence/src/main/resources/faxtomail.properties Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/HistoryType.java trunk/faxtomail-persistence/src/main/resources/i18n/faxtomail-persistence_en_GB.properties trunk/faxtomail-persistence/src/main/resources/i18n/faxtomail-persistence_fr_FR.properties trunk/faxtomail-persistence/src/main/xmi/faxtomail.zargo trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorService.java trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailService.java trunk/faxtomail-service/src/main/resources/i18n/faxtomail-service_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/RunFaxToMail.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.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/DemandeUI.css trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.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/attachment/AttachmentCellEditor.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUI.css trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUI.jaxx trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentItem.css trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentItem.jaxx trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/ButtonAttachment.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/SaveAttachmentAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.css trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.jaxx trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItemModel.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUI.css trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUI.jaxx trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUIHandler.java trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_en_GB.properties trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/FaxToMailApplicationContext.java trunk/pom.xml Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/HistoryType.java =================================================================== --- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/HistoryType.java 2014-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/HistoryType.java 2014-03-14 17:07:36 UTC (rev 19) @@ -1,12 +1,24 @@ package com.franciaflex.faxtomail.persistence.entities; +import static org.nuiton.i18n.I18n.n; + /** * @author Kevin Morin (Code Lutin) * @since x.x */ public enum HistoryType { - CREATION, - OPENING, - MODIFICATION + CREATION(n("faxtomail.historyType.creation")), + OPENING(n("faxtomail.historyType.opening")), + MODIFICATION(n("faxtomail.historyType.modification")); + + protected String labelKey; + + private HistoryType(String labelKey) { + this.labelKey = labelKey; + } + + public String getLabelKey() { + return labelKey; + } } Copied: trunk/faxtomail-persistence/src/main/resources/faxToMail.properties (from rev 17, trunk/faxtomail-persistence/src/main/resources/faxtomail.properties) =================================================================== --- trunk/faxtomail-persistence/src/main/resources/faxToMail.properties (rev 0) +++ trunk/faxtomail-persistence/src/main/resources/faxToMail.properties 2014-03-14 17:07:36 UTC (rev 19) @@ -0,0 +1,17 @@ +hibernate.connection.driver_class=org.h2.Driver +hibernate.connection.url=jdbc:h2:file:/tmp/faxtomail/h2data +hibernate.connection.username=sa +hibernate.connection.password= + +hibernate.dialect=org.hibernate.dialect.H2Dialect +hibernate.hbm2ddl.auto=update +hibernate.show_sql=false +hibernate.format_sql=true +hibernate.ejb.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy + +hibernate.c3p0.min_size=5 +hibernate.c3p0.max_size=20 +hibernate.c3p0.timeout=1800 +hibernate.c3p0.max_statements=50 + +# hibernate.connection.provider_class=org.nuiton.topia.framework.TopiaConnectionProvider Deleted: trunk/faxtomail-persistence/src/main/resources/faxtomail.properties =================================================================== --- trunk/faxtomail-persistence/src/main/resources/faxtomail.properties 2014-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-persistence/src/main/resources/faxtomail.properties 2014-03-14 17:07:36 UTC (rev 19) @@ -1,17 +0,0 @@ -hibernate.connection.driver_class=org.h2.Driver -hibernate.connection.url=jdbc:h2:file:/tmp/faxtomail/h2data -hibernate.connection.username=sa -hibernate.connection.password= - -hibernate.dialect=org.hibernate.dialect.H2Dialect -hibernate.hbm2ddl.auto=update -hibernate.show_sql=false -hibernate.format_sql=true -hibernate.ejb.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy - -hibernate.c3p0.min_size=5 -hibernate.c3p0.max_size=20 -hibernate.c3p0.timeout=1800 -hibernate.c3p0.max_statements=50 - -# hibernate.connection.provider_class=org.nuiton.topia.framework.TopiaConnectionProvider Modified: trunk/faxtomail-persistence/src/main/resources/i18n/faxtomail-persistence_en_GB.properties =================================================================== --- trunk/faxtomail-persistence/src/main/resources/i18n/faxtomail-persistence_en_GB.properties 2014-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-persistence/src/main/resources/i18n/faxtomail-persistence_en_GB.properties 2014-03-14 17:07:36 UTC (rev 19) @@ -20,6 +20,9 @@ faxtomail.config.option.ui.showNumberEditorButton.description= faxtomail.config.option.version.description= faxtomail.config.parse.error= +faxtomail.historyType.creation= +faxtomail.historyType.modification= +faxtomail.historyType.opening= faxtomail.persistence.loader.error= faxtomail.persistence.mkDir.error= faxtomail.service.config.deleteTempDirectory.error= 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-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-persistence/src/main/resources/i18n/faxtomail-persistence_fr_FR.properties 2014-03-14 17:07:36 UTC (rev 19) @@ -20,6 +20,9 @@ faxtomail.config.option.ui.showNumberEditorButton.description= faxtomail.config.option.version.description= faxtomail.config.parse.error= +faxtomail.historyType.creation=Création +faxtomail.historyType.modification=Modification +faxtomail.historyType.opening=Ouverture faxtomail.persistence.loader.error= faxtomail.persistence.mkDir.error= faxtomail.service.config.deleteTempDirectory.error= Modified: trunk/faxtomail-persistence/src/main/xmi/faxtomail.zargo =================================================================== (Binary files differ) Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorService.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorService.java 2014-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorService.java 2014-03-14 17:07:36 UTC (rev 19) @@ -27,6 +27,7 @@ import com.franciaflex.faxtomail.persistence.entities.Attachment; import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; import com.franciaflex.faxtomail.persistence.entities.HasLabel; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.LogFactory; import org.nuiton.decorator.Decorator; import org.nuiton.decorator.DecoratorProvider; @@ -34,7 +35,10 @@ import java.io.File; import java.text.DateFormat; import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Collection; import java.util.Date; +import java.util.List; import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; 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-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-03-14 17:07:36 UTC (rev 19) @@ -12,17 +12,22 @@ import com.franciaflex.faxtomail.persistence.entities.RangeRow; import com.franciaflex.faxtomail.persistence.entities.RangeRowTopiaDao; import com.franciaflex.faxtomail.services.FaxToMailServiceSupport; +import com.google.common.collect.Sets; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.persistence.TopiaEntityVisitor; import org.nuiton.topia.persistence.pager.TopiaPagerBean; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; /** * @author kmorin <kmorin@codelutin.com> @@ -33,10 +38,11 @@ private static final Log log = LogFactory.getLog(EmailService.class); public Email getEmailById(String id) { - return getPersistenceContext().getEmailDao().findByTopiaId(id); + Email email = getPersistenceContext().getEmailDao().findByTopiaId(id); + return email; } - public Email saveEmail(Email email, FaxToMailUser user) { + public Email saveEmail(Email email, FaxToMailUser user, String... modifiedFields) { Date now = getNow(); EmailTopiaDao dao = getPersistenceContext().getEmailDao(); HistoryTopiaDao historyDao = getPersistenceContext().getHistoryDao(); @@ -73,6 +79,7 @@ History history = historyDao.create(History.PROPERTY_TYPE, HistoryType.MODIFICATION, History.PROPERTY_FAX_TO_MAIL_USER, user, + History.PROPERTY_FIELDS, Sets.newHashSet(modifiedFields), History.PROPERTY_MODIFICATION_DATE, now); email.addHistory(history); @@ -120,7 +127,12 @@ email.addHistory(history); if (email.getTakenBy() == null) { + history = historyDao.create(History.PROPERTY_TYPE, HistoryType.MODIFICATION, + History.PROPERTY_FAX_TO_MAIL_USER, user, + History.PROPERTY_FIELDS, Sets.newHashSet(Email.PROPERTY_TAKEN_BY), + History.PROPERTY_MODIFICATION_DATE, date); email.setTakenBy(user); + email.addHistory(history); } email = emailDao.update(email); @@ -137,6 +149,7 @@ HistoryTopiaDao historyDao = getPersistenceContext().getHistoryDao(); History history = historyDao.create(History.PROPERTY_TYPE, HistoryType.MODIFICATION, History.PROPERTY_FAX_TO_MAIL_USER, user, + History.PROPERTY_FIELDS, Sets.newHashSet(Email.PROPERTY_TAKEN_BY), History.PROPERTY_MODIFICATION_DATE, new Date()); email.addHistory(history); Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailService.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailService.java 2014-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailService.java 2014-03-14 17:07:36 UTC (rev 19) @@ -55,6 +55,7 @@ import com.franciaflex.faxtomail.services.DecoratorService; import com.franciaflex.faxtomail.services.FaxToMailServiceSupport; import com.google.common.collect.Lists; +import com.google.common.collect.Sets; import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -338,6 +339,13 @@ Date now = new Date(); History history = historyDao.create(History.PROPERTY_TYPE, HistoryType.CREATION, + History.PROPERTY_FIELDS, Sets.newHashSet(Email.PROPERTY_SENDER, + Email.PROPERTY_CLIENT_CODE, + Email.PROPERTY_PROJECT_REFERENCE, + Email.PROPERTY_OBJECT, + Email.PROPERTY_RECEPTION_DATE, + Email.PROPERTY_MAIL_FOLDER, + Email.PROPERTY_DEMAND_STATUS), History.PROPERTY_MODIFICATION_DATE, now); String projectRef = t("faxtomail.email.projectReference.default", dateDecorator.toString(now)); @@ -357,13 +365,20 @@ email.setDemandType(types.get(random.nextInt(types.size()))); email.setPriority(priorities.get(random.nextInt(priorities.size()))); email.setRangeRow(rangeRows); - getEmailService().saveEmail(email, user); + getEmailService().saveEmail(email, user, Email.PROPERTY_DEMAND_TYPE, Email.PROPERTY_PRIORITY, Email.PROPERTY_RANGE_ROW); } Calendar cal = Calendar.getInstance(); cal.add(Calendar.DAY_OF_MONTH, -1); Date yesterday = cal.getTime(); history = historyDao.create(History.PROPERTY_TYPE, HistoryType.CREATION, + History.PROPERTY_FIELDS, Sets.newHashSet(Email.PROPERTY_SENDER, + Email.PROPERTY_CLIENT_CODE, + Email.PROPERTY_PROJECT_REFERENCE, + Email.PROPERTY_OBJECT, + Email.PROPERTY_RECEPTION_DATE, + Email.PROPERTY_MAIL_FOLDER, + Email.PROPERTY_DEMAND_STATUS), History.PROPERTY_MODIFICATION_DATE, yesterday); projectRef = t("faxtomail.email.projectReference.default", dateDecorator.toString(yesterday)); @@ -383,7 +398,7 @@ email.setDemandType(types.get(random.nextInt(types.size()))); email.setPriority(priorities.get(random.nextInt(priorities.size()))); email.setRangeRow(rangeRows); - getEmailService().saveEmail(email, user); + getEmailService().saveEmail(email, user, Email.PROPERTY_DEMAND_TYPE, Email.PROPERTY_PRIORITY, Email.PROPERTY_RANGE_ROW); } } Modified: trunk/faxtomail-service/src/main/resources/i18n/faxtomail-service_fr_FR.properties =================================================================== --- trunk/faxtomail-service/src/main/resources/i18n/faxtomail-service_fr_FR.properties 2014-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-service/src/main/resources/i18n/faxtomail-service_fr_FR.properties 2014-03-14 17:07:36 UTC (rev 19) @@ -1 +1,5 @@ faxtomail.email.projectReference.default=Votre demande du %s +faxtomail.service.referential.import.clients.error= +faxtomail.validator.error.email.clientCode.required= +faxtomail.validator.error.email.demandType.required= +faxtomail.validator.error.email.projectReference.required= 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-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java 2014-03-14 17:07:36 UTC (rev 19) @@ -38,6 +38,7 @@ import com.franciaflex.faxtomail.services.service.MailFolderService; import com.franciaflex.faxtomail.services.service.ReferentielService; import com.franciaflex.faxtomail.services.service.UserService; +import com.franciaflex.faxtomail.services.service.ValidationService; import com.franciaflex.faxtomail.ui.swing.content.MainUI; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; import com.franciaflex.faxtomail.ui.swing.util.UIMessageNotifier; @@ -512,6 +513,10 @@ return serviceContext.newService(DecoratorService.class); } + public ValidationService getValidationService() { + return serviceContext.newService(ValidationService.class); + } + public MailFolderService getMailFolderService() { return serviceContext.newService(MailFolderService.class); } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/RunFaxToMail.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/RunFaxToMail.java 2014-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/RunFaxToMail.java 2014-03-14 17:07:36 UTC (rev 19) @@ -57,7 +57,7 @@ // Create configuration FaxToMailConfiguration config = - new FaxToMailConfiguration("faxtomail.properties", args); + new FaxToMailConfiguration("faxToMail.properties", args); // Create application context FaxToMailUIContext context = FaxToMailUIContext.newContext(config); Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java 2014-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java 2014-03-14 17:07:36 UTC (rev 19) @@ -1,6 +1,7 @@ package com.franciaflex.faxtomail.ui.swing.actions; import com.franciaflex.faxtomail.persistence.entities.Email; +import com.franciaflex.faxtomail.persistence.entities.EmailImpl; import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; import com.franciaflex.faxtomail.persistence.entities.RangeRow; import com.franciaflex.faxtomail.ui.swing.FaxToMailScreen; @@ -12,8 +13,12 @@ import com.franciaflex.faxtomail.ui.swing.content.demande.RangeRowModel; import com.franciaflex.faxtomail.ui.swing.content.demande.RangeTableModel; import com.google.common.collect.Maps; +import org.apache.commons.lang3.StringUtils; import org.nuiton.topia.persistence.TopiaEntities; +import org.nuiton.util.beans.BeanMonitor; +import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.Map; @@ -32,12 +37,23 @@ DemandeUIModel model = getModel(); FaxToMailUIContext context = getContext(); - Email persistedEmail = context.getEmailService().getEmailById(model.getTopiaId()); - + Email persistedEmail; + String topiaId = model.getTopiaId(); + if (!StringUtils.isBlank(topiaId)) { + persistedEmail = context.getEmailService().getEmailById(topiaId); + } else { + persistedEmail = new EmailImpl(); + } + RangeTableModel rtm = (RangeTableModel) getUI().getRangeTable().getModel(); List<RangeRowModel> rows = rtm.getRows(); - Map<String, RangeRow> rangeRowsById = Maps.uniqueIndex(model.getRangeRow(), TopiaEntities.getTopiaIdFunction()); + Collection<RangeRow> rangeRows = model.getRangeRow(); + if (rangeRows == null) { + rangeRows = new ArrayList<>(); + } + Map<String, RangeRow> rangeRowsById = Maps.uniqueIndex(rangeRows, TopiaEntities.getTopiaIdFunction()); + for (RangeRowModel rangeRowModel : rows) { if (rangeRowModel.isValid()) { RangeRow rangeRow = rangeRowsById.get(rangeRowModel.getTopiaId()); @@ -52,7 +68,8 @@ FaxToMailUser currentUser = context.getCurrentUser(); Email email = model.toEntity(persistedEmail); - context.getEmailService().saveEmail(email, currentUser); + String[] modifiedProperties = getHandler().getMonitor().getModifiedProperties(); + context.getEmailService().saveEmail(email, currentUser, modifiedProperties); } } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-03-14 17:07:36 UTC (rev 19) @@ -74,12 +74,13 @@ break; case JOptionPane.NO_OPTION: - // TODO kmorin 201410305 how to set the email in readonly + currentEmail.setEditable(false); break; case JOptionPane.YES_OPTION: - getContext().getEmailService().takeEmail(currentEmail.getTopiaId(), currentUser); - // TODO kmorin 201410305 how to update on screen + Email email = getContext().getEmailService().takeEmail(currentEmail.getTopiaId(), currentUser); + currentEmail.fromEntity(email); + currentEmail.setEditable(true); break; } } 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-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-03-14 17:07:36 UTC (rev 19) @@ -107,6 +107,7 @@ for (Email email : emails) { DemandeUIModel demand = new DemandeUIModel(); demand.fromEntity(email); + demand.setValid(isDemandeValid(demand)); demands.add(demand); } model.setEmails(demands); Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css 2014-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css 2014-03-14 17:07:36 UTC (rev 19) @@ -23,12 +23,17 @@ showReset: false; showDecorator: false; bean: {model}; + enabled: { model.isEditable() }; } JXDatePicker { _selectOnFocus: { true }; } +JTextField, JXTable, BeanFilterableComboBox, #messageField, ButtonAttachment { + editable: { model.isEditable() }; +} + .rightLabel { horizontalAlignment: { SwingConstants.RIGHT }; font-style: "italic"; @@ -70,27 +75,19 @@ #clientField { text: {model.getClientCode()}; - _validatorLabel: { t("faxtomail.demande.client.label") }; + _validatorLabel: { t("faxtomail.demande.clientCode.label") }; } #docTypeLabel { - text: "faxtomail.demande.docType.label"; + text: "faxtomail.demande.demandType.label"; } #docTypeComboBox { property: demandType; selectedItem: { model.getDemandType() }; - _validatorLabel: { t("faxtomail.demande.docType.label") }; + _validatorLabel: { t("faxtomail.demande.demandType.label") }; } -#ediCodeNumberLabel { - text: "faxtomail.demande.ediCodeNumber.label"; -} - -#ediCodeNumberField { - text: { model.getEdiCodeNumber() }; -} - #priorityLabel { text: "faxtomail.demande.priority.label"; } @@ -102,7 +99,7 @@ } #statusLabel { - text: "faxtomail.demande.status.label"; + text: "faxtomail.demande.demandStatus.label"; } #statusField { @@ -190,6 +187,17 @@ text: { handler.decorate(model.getLastModificationDate()) }; } +#ediCodeNumberLabel { + text: "faxtomail.demande.ediCodeNumber.label"; + visible: { model.getEdiCodeNumber() != null }; +} + +#ediCodeNumberField { + text: { model.getEdiCodeNumber() }; + visible: { model.getEdiCodeNumber() != null }; +} + + .horizontal-separator { text: " | "; } @@ -225,29 +233,29 @@ #saveButton { text: "faxtomail.demande.save.button.label"; actionIcon: save; - enabled: { model.isValid() }; + enabled: { model.isValid() && model.isEditable() }; _applicationAction: { com.franciaflex.faxtomail.ui.swing.actions.SaveDemandeAndExitAction.class }; } #transmitButton { text: "faxtomail.demande.transmit.button.label"; actionIcon: transmit; - enabled: { model.isValid() }; + enabled: { model.isValid() && model.isEditable() }; } #printButton { text: "faxtomail.demande.print.button.label"; actionIcon: print; - enabled: { model.isValid() }; + enabled: { model.isValid() && model.isEditable() }; } #archiveButton { text: "faxtomail.demande.archive.button.label"; - enabled: { model.isValid() }; + enabled: { model.isValid() && model.isEditable() }; } #replyButton { text: "faxtomail.demande.reply.button.label"; actionIcon: reply; - enabled: { model.isValid() }; + enabled: { model.isValid() && model.isEditable() }; } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx 2014-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx 2014-03-14 17:07:36 UTC (rev 19) @@ -164,26 +164,7 @@ <JLabel id='statusField'/> </cell> </row> - <row> - <cell> - <JLabel id='ediCodeNumberLabel'/> - </cell> - <cell weightx='1'> - <JTextField id='ediCodeNumberField' - onKeyReleased='handler.setText(event, "ediCodeNumber")'/> - </cell> - </row> - <!--<row>--> - <!--<cell anchor='east'>--> - <!--<JLabel id='gammeLabel'/>--> - <!--</cell>--> - <!--<cell weightx='1' columns='6'>--> - <!--<BeanFilterableComboBox id='gammeComboBox'--> - <!--constructorParams='this'--> - <!--genericType="Range"/>--> - <!--</cell>--> - <!--</row>--> <row> <cell> <JLabel id="takenByLabel"/> @@ -235,6 +216,16 @@ </cell> </row> + <row> + <cell> + <JLabel id='ediCodeNumberLabel'/> + </cell> + <cell weightx='1'> + <JTextField id='ediCodeNumberField' + onKeyReleased='handler.setText(event, "ediCodeNumber")'/> + </cell> + </row> + </Table> </JScrollPane> Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java 2014-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java 2014-03-14 17:07:36 UTC (rev 19) @@ -48,6 +48,7 @@ import org.nuiton.jaxx.application.swing.table.MoveToPreviousEditableCellAction; import org.nuiton.jaxx.application.swing.table.MoveToPreviousEditableRowAction; import org.nuiton.topia.persistence.TopiaEntities; +import org.nuiton.util.beans.BeanMonitor; import javax.swing.*; import javax.swing.event.ListSelectionEvent; @@ -71,8 +72,10 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -89,6 +92,8 @@ /** Logger. */ private static final Log log = LogFactory.getLog(DemandeUIHandler.class); + protected BeanMonitor monitor; + /** * Persistence service. * @@ -103,6 +108,9 @@ DemandeUIModel model = getContext().getCurrentEmail(); listModelIsModify(model); + Set<String> propertiesToIgnore = getPropertiesToIgnore(); + monitor = new BeanMonitor(true, propertiesToIgnore.toArray(new String[propertiesToIgnore.size()])); + monitor.setBean(model); this.ui.setContextValue(model); } @@ -162,11 +170,15 @@ // init range model final RangeTableModel rangeTableModel = new RangeTableModel(columnModel); List<RangeRowModel> rangeRowModels = new ArrayList<RangeRowModel>(); - for (RangeRow rangeRow : model.getRangeRow()) { - RangeRowModel rangeRowModel = new RangeRowModel(); - rangeRowModel.fromEntity(rangeRow); - rangeRowModel.setValid(isRangeRowValid(rangeRowModel)); - rangeRowModels.add(rangeRowModel); + + Collection<RangeRow> rangeRows = model.getRangeRow(); + if (rangeRows != null) { + for (RangeRow rangeRow : rangeRows) { + RangeRowModel rangeRowModel = new RangeRowModel(); + rangeRowModel.fromEntity(rangeRow); + rangeRowModel.setValid(isRangeRowValid(rangeRowModel)); + rangeRowModels.add(rangeRowModel); + } } rangeTableModel.setRows(rangeRowModels); @@ -279,18 +291,16 @@ @Override public boolean isHighlighted(Component renderer, ComponentAdapter adapter) { boolean result = false; - if (adapter.isEditable()) { - AbstractApplicationTableModel model = (AbstractApplicationTableModel) table.getModel(); - int viewRow = adapter.row; - int modelRow = adapter.convertRowIndexToModel(viewRow); - RangeRowModel row = (RangeRowModel) model.getEntry(modelRow); - result = !row.isValid(); - } + AbstractApplicationTableModel model = (AbstractApplicationTableModel) table.getModel(); + int viewRow = adapter.row; + int modelRow = adapter.convertRowIndexToModel(viewRow); + RangeRowModel row = (RangeRowModel) model.getEntry(modelRow); + result = !row.isValid(); return result; } }; Color color = new Color(255, 51, 51); - table.addHighlighter(new ColorHighlighter(rowIsInvalidPredicate, color, null, color.darker(), null)); + table.addHighlighter(new ColorHighlighter(rowIsInvalidPredicate, color, Color.WHITE, color.darker(), Color.WHITE)); SwingValidator validator = this.ui.getValidator(); listenValidatorValid(validator, model); @@ -308,11 +318,20 @@ } @Override + protected Set<String> getPropertiesToIgnore() { + Set<String> result = super.getPropertiesToIgnore(); + result.add(DemandeUIModel.PROPERTY_EDITABLE); + return result; + } + + @Override public void onCloseUI() { if (log.isDebugEnabled()) { log.debug("closing: " + ui); } clearValidators(); + ui.getAttachmentsButton().setSelected(false); + ui.getHistoryButton().setSelected(false); } @Override @@ -332,6 +351,10 @@ return ui.getValidator(); } + public BeanMonitor getMonitor() { + return monitor; + } + protected boolean isRangeRowValid(RangeRowModel rangeRow) { return (rangeRow.getProductQuantity() != null && rangeRow.getProductQuantity() > 0 || rangeRow.getSavQuantity() != null && rangeRow.getSavQuantity() > 0) 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-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-03-14 17:07:36 UTC (rev 19) @@ -23,7 +23,6 @@ */ import com.franciaflex.faxtomail.persistence.entities.Attachment; -import com.franciaflex.faxtomail.persistence.entities.Client; import com.franciaflex.faxtomail.persistence.entities.DemandStatus; import com.franciaflex.faxtomail.persistence.entities.DemandType; import com.franciaflex.faxtomail.persistence.entities.Email; @@ -36,7 +35,6 @@ import com.franciaflex.faxtomail.persistence.entities.Priority; import com.franciaflex.faxtomail.persistence.entities.RangeRow; import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailBeanUIModel; -import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil; import com.franciaflex.faxtomail.ui.swing.util.attachment.AttachmentModelAware; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -48,7 +46,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Date; -import java.util.List; import static org.nuiton.i18n.I18n.t; @@ -62,6 +59,7 @@ public static final String PROPERTY_PF_NB = "pfNb"; public static final String PROPERTY_SAV_NB = "savNb"; + public static final String PROPERTY_EDITABLE = "editable"; protected final Email editObject = new EmailImpl(); @@ -73,6 +71,8 @@ protected int savNb; + protected boolean editable = true; + protected static Binder<DemandeUIModel, Email> toBeanBinder = BinderFactory.newBinder(DemandeUIModel.class, Email.class); @@ -113,6 +113,7 @@ setSavNb(savNb); } }); + } public Boolean getFax() { @@ -411,6 +412,16 @@ firePropertyChange(PROPERTY_SAV_NB, oldValue, savNb); } + public boolean isEditable() { + return editable; + } + + public void setEditable(boolean editable) { + Object oldValue = isEditable(); + this.editable = editable; + firePropertyChange(PROPERTY_EDITABLE, oldValue, editable); + } + @Override protected Email newEntity() { return new EmailImpl(); 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-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java 2014-03-14 17:07:36 UTC (rev 19) @@ -6,9 +6,11 @@ import com.franciaflex.faxtomail.persistence.entities.HasLabel; import com.franciaflex.faxtomail.persistence.entities.Priority; import com.franciaflex.faxtomail.persistence.entities.RangeRow; +import com.franciaflex.faxtomail.services.service.ValidationService; import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; import com.franciaflex.faxtomail.ui.swing.actions.ShowDemandeAction; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; +import com.franciaflex.faxtomail.ui.swing.content.demande.RangeRowModel; import com.franciaflex.faxtomail.ui.swing.util.attachment.AttachmentCellEditor; import com.franciaflex.faxtomail.ui.swing.util.attachment.AttachmentCellRenderer; import com.google.common.base.Function; @@ -17,12 +19,16 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.JXTable; +import org.jdesktop.swingx.decorator.ColorHighlighter; import org.jdesktop.swingx.decorator.ComponentAdapter; +import org.jdesktop.swingx.decorator.HighlightPredicate; import org.jdesktop.swingx.decorator.Highlighter; import org.jdesktop.swingx.table.DefaultTableColumnModelExt; import org.jdesktop.swingx.table.TableColumnModelExt; import org.nuiton.decorator.Decorator; import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel; +import org.nuiton.validator.NuitonValidatorFactory; +import org.nuiton.validator.NuitonValidatorResult; import javax.swing.*; import javax.swing.event.ChangeListener; @@ -161,6 +167,18 @@ }; table.addHighlighter(highlighter); + HighlightPredicate rowIsInvalidPredicate = new HighlightPredicate() { + @Override + public boolean isHighlighted(Component renderer, ComponentAdapter adapter) { + int viewRow = adapter.row; + int modelRow = adapter.convertRowIndexToModel(viewRow); + DemandeUIModel row = tableModel.getEntry(modelRow); + return !row.isValid() && row.getTakenBy()!= null; + } + }; + Color color = new Color(255, 51, 51); + table.addHighlighter(new ColorHighlighter(rowIsInvalidPredicate, color, Color.WHITE, color.darker(), Color.WHITE)); + table.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { JXTable table = (JXTable) evt.getSource(); @@ -188,6 +206,11 @@ context.getActionEngine().runAction(new ShowDemandeAction(context.getMainUI().getHandler())); } + protected boolean isDemandeValid(DemandeUIModel d) { + NuitonValidatorResult result = NuitonValidatorFactory.newValidator(DemandeUIModel.class).validate(d); + return result.isValid(); + } + public class QuantityTableCellRenderer extends DefaultTableCellRenderer { protected Function<RangeRow, Integer> getQuantityFunction; Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentCellEditor.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentCellEditor.java 2014-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentCellEditor.java 2014-03-14 17:07:36 UTC (rev 19) @@ -129,14 +129,14 @@ public boolean stopCellEditing() { boolean b = super.stopCellEditing(); if (b) { - editorButton.setBean(null); + editorButton.init(null); } return b; } @Override public void cancelCellEditing() { - editorButton.setBean(null); + editorButton.init(null); super.cancelCellEditing(); } } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUI.css =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUI.css 2014-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUI.css 2014-03-14 17:07:36 UTC (rev 19) @@ -2,23 +2,22 @@ title: "faxtomail.attachmentEditor.title"; } +#attachments { + editable: true; +} + #fileLabel { text: "faxtomail.attachmentEditor.field.file"; - labelFor: {file}; + labelFor: { file }; } -#fileNameLabel { - text: "faxtomail.attachmentEditor.field.fileName"; - labelFor: {fileName}; +#file { + enabled: { model.isEditable() }; } -#fileCommentLabel { - text: "faxtomail.attachmentEditor.field.fileComment"; - labelFor: {fileComment}; -} - #addButton { actionIcon: add; toolTipText: "faxtomail.attachmentEditor.action.add.tip"; + enabled: { model.isEditable() }; } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUI.jaxx =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUI.jaxx 2014-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUI.jaxx 2014-03-14 17:07:36 UTC (rev 19) @@ -1,11 +1,14 @@ <com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupUI - superGenericType="FaxToMailUIContext, AttachmentEditorUIHandler" + superGenericType="AttachmentEditorUIModel, AttachmentEditorUIHandler" id='attachmentDialog'> <import> - com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext + com.franciaflex.faxtomail.persistence.entities.Attachment jaxx.runtime.swing.editor.FileEditor + jaxx.runtime.swing.model.JaxxDefaultListModel + + org.jdesktop.swingx.JXTable org.jdesktop.swingx.JXTitledPanel javax.swing.JComponent </import> @@ -14,19 +17,16 @@ and the button to remove existing attachments --> <Boolean id='editable' javaBean='true'/> - <!-- bean property --> - <AttachmentModelAware id='bean' javaBean='null'/> + <AttachmentEditorUIModel id='model' + initializer='new AttachmentEditorUIModel()'/> - <FaxToMailUIContext id='model' - initializer='getContextValue(FaxToMailUIContext.class)'/> - <JXTitledPanel id='body'> <JScrollPane id='attachmentBodyScrollPane'> <Table id='mainPanel'> <row fill='both' weighty='1'> <cell fill='both' weightx='1' columns='3'> - <JPanel id='attachments' layout='{new GridLayout(0, 1)}'></JPanel> + <JXTable id='attachments' /> </cell> </row> <row fill='both'> Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUIHandler.java 2014-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUIHandler.java 2014-03-14 17:07:36 UTC (rev 19) @@ -3,26 +3,45 @@ import com.franciaflex.faxtomail.persistence.entities.Attachment; import com.franciaflex.faxtomail.persistence.entities.AttachmentImpl; import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; -import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupHandler; import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil; +import com.google.common.base.Function; +import com.google.common.collect.Iterables; import jaxx.runtime.SwingUtil; -import jaxx.runtime.swing.ComponentMover; -import jaxx.runtime.swing.ComponentResizer; +import jaxx.runtime.swing.model.JaxxDefaultListModel; import jaxx.runtime.validator.swing.SwingValidator; -import org.apache.commons.lang3.StringUtils; +import org.apache.commons.collections4.CollectionUtils; +import org.jdesktop.swingx.JXList; +import org.jdesktop.swingx.JXTable; +import org.jdesktop.swingx.decorator.HighlighterFactory; +import org.jdesktop.swingx.table.DefaultTableColumnModelExt; +import org.jdesktop.swingx.table.TableColumnExt; +import org.jdesktop.swingx.table.TableColumnModelExt; import org.nuiton.jaxx.application.ApplicationTechnicalException; +import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel; +import org.nuiton.jaxx.application.swing.table.ColumnIdentifier; import javax.swing.*; +import javax.swing.event.TableModelEvent; +import javax.swing.event.TableModelListener; +import javax.swing.table.AbstractTableModel; +import javax.swing.table.DefaultTableCellRenderer; +import javax.swing.table.DefaultTableColumnModel; +import javax.swing.table.DefaultTableModel; +import javax.swing.table.TableCellEditor; +import javax.swing.table.TableCellRenderer; +import javax.swing.table.TableColumn; +import javax.swing.table.TableColumnModel; +import javax.swing.table.TableModel; import java.awt.*; import java.awt.event.ActionEvent; -import java.awt.event.KeyEvent; +import java.awt.event.ActionListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; import java.io.IOException; +import java.util.ArrayList; import java.util.Collection; -import java.util.List; import static org.nuiton.i18n.I18n.t; @@ -31,24 +50,65 @@ * @author tchemit <chemit@codelutin.com> * @since 0.2 */ -public class AttachmentEditorUIHandler extends AbstractToolbarPopupHandler<FaxToMailUIContext, AttachmentEditorUI> { +public class AttachmentEditorUIHandler extends AbstractToolbarPopupHandler<AttachmentEditorUIModel, AttachmentEditorUI> { @Override - public void beforeInit(AttachmentEditorUI ui) { - super.beforeInit(ui); + public void afterInit(AttachmentEditorUI ui) { - getUI().addPropertyChangeListener(AttachmentEditorUI.PROPERTY_BEAN, new PropertyChangeListener() { + ui.getFile().setDialogOwner(ui); + super.afterInit(ui); + + initTable(ui.getAttachments()); + + getModel().addPropertyChangeListener(AttachmentEditorUIModel.PROPERTY_ATTACHMENT, new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { - init(); + AbstractTableModel tableModel = (AbstractTableModel) getUI().getAttachments().getModel(); + tableModel.fireTableDataChanged(); } }); } - @Override - public void afterInit(AttachmentEditorUI ui) { - ui.getFile().setDialogOwner(ui); - super.afterInit(ui); + protected void initTable(JXTable table) { + + TableModel attachmentTableModel = new AbstractTableModel() { + @Override + public int getRowCount() { + return CollectionUtils.size(getModel().getAttachment()); + } + + @Override + public int getColumnCount() { + return 1; + } + + @Override + public Object getValueAt(int rowIndex, int columnIndex) { + return Iterables.get(getModel().getAttachment(), rowIndex); + } + + @Override + public boolean isCellEditable(int rowIndex, int columnIndex) { + return true; + } + }; + + attachmentTableModel.addTableModelListener(new TableModelListener() { + @Override + public void tableChanged(TableModelEvent e) { + getUI().pack(); + } + }); + + TableColumnModel columnModel = new DefaultTableColumnModel(); + TableColumn column = new TableColumn(); + column.setCellRenderer(new AttachmentItemRenderer()); + column.setCellEditor(new AttachmentItemEditor()); + columnModel.addColumn(column); + + table.setModel(attachmentTableModel); + table.setColumnModel(columnModel); + table.addHighlighter(HighlighterFactory.createAlternateStriping()); } @Override @@ -61,24 +121,10 @@ } @Override - public SwingValidator<FaxToMailUIContext> getValidator() { + public SwingValidator<AttachmentEditorUIModel> getValidator() { return null; } - public void init() { - resetFields(); - ui.getAttachments().removeAll(); - AttachmentModelAware bean = ui.getBean(); - if (bean != null) { - Collection<Attachment> attachments = bean.getAttachment(); - if (attachments != null) { - for (Attachment attachment : attachments) { - addAttachment(attachment); - } - } - } - } - public void place(JComponent component) { // Computes the location of bottom left corner of the cell Component comp = component; @@ -100,42 +146,18 @@ } public void addAttachment() { - AttachmentModelAware bean = ui.getBean(); Attachment attachment = new AttachmentImpl(); File file = ui.getFile().getSelectedFile(); if (file != null) { -// String name = ui.getFileName().getText(); -// if (StringUtils.isEmpty(name)) { - String name = file.getName(); -// } -// attachment.setObjectType(bean.getObjectType()); -// attachment.setObjectId(bean.getObjectId()); -// attachment.setName(name); -// attachment.setComment(ui.getFileComment().getText()); attachment.setFile(file); - -// attachment = getPersistenceService().createAttachment(attachment, file); - bean.addAttachment(attachment); - + getModel().addAttachment(attachment); resetFields(); - addAttachment(attachment); - - ui.pack(); } } - protected void addAttachment(final Attachment attachment) { - AttachmentItem item = new AttachmentItem(); - item.setAttachment(attachment); - item.setHandler(this); - ui.getAttachments().add(item); - } - protected void resetFields() { ui.getFile().setSelectedFilePath(null); -// ui.getFileName().setText(""); -// ui.getFileComment().setText(""); } public void openAttachment(Attachment attachment) { @@ -155,14 +177,6 @@ } } - public void saveAttachment(Attachment attachment) { - - SaveAttachmentAction action = getContext().getActionFactory().createLogicAction( - this, SaveAttachmentAction.class); - action.setAttachment(attachment); - getContext().getActionEngine().runAction(action); - } - public void removeAttachment(AttachmentItem attachmentItem) { Attachment attachment = attachmentItem.getAttachment(); boolean hackDialog = ui.isAlwaysOnTop(); @@ -178,13 +192,56 @@ } if (answer == JOptionPane.YES_OPTION) { - AttachmentModelAware bean = ui.getBean(); // getPersistenceService().deleteAttachment(attachment.getId()); - bean.removeAttachment(attachment); - ui.getAttachments().remove(attachmentItem); + getModel().removeAttachment(attachment); ui.pack(); } } + + protected class AttachmentItemRenderer extends AttachmentItem implements TableCellRenderer { + + public AttachmentItemRenderer() { + setHandler(AttachmentEditorUIHandler.this); + } + + public Component getTableCellRendererComponent(JTable table, Object value, + boolean isSelected, boolean hasFocus, int row, int column) { + Attachment attachment = (Attachment) value; + setAttachment(attachment); + return this; + } + } + + protected class AttachmentItemEditor extends AbstractCellEditor implements TableCellEditor { + + protected AttachmentItem attachmentItem; + + public AttachmentItemEditor() { + attachmentItem = new AttachmentItem(); + attachmentItem.setHandler(AttachmentEditorUIHandler.this); + } + + public Component getTableCellEditorComponent(JTable table, Object value, + boolean isSelected, int row, int column) { + Attachment attachment = (Attachment) value; + attachmentItem.setAttachment(attachment); + return attachmentItem; + } + + @Override + public Object getCellEditorValue() { + return attachmentItem.getAttachment(); + } + + public boolean stopCellEditing() { + return super.stopCellEditing(); + } + + protected void fireEditingStopped() { + super.fireEditingStopped(); + } + } + } Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUIModel.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUIModel.java (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUIModel.java 2014-03-14 17:07:36 UTC (rev 19) @@ -0,0 +1,91 @@ +package com.franciaflex.faxtomail.ui.swing.util.attachment; + +import com.franciaflex.faxtomail.persistence.entities.Attachment; +import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailBeanUIModel; +import org.nuiton.util.beans.Binder; +import org.nuiton.util.beans.BinderFactory; + +import java.io.File; +import java.util.ArrayList; +import java.util.Collection; + +/** + * @author Kevin Morin (Code Lutin) + * @since x.x + */ +public class AttachmentEditorUIModel extends AbstractFaxToMailBeanUIModel<AttachmentModelAware, AttachmentEditorUIModel> + implements AttachmentModelAware { + + public static final String PROPERTY_FILE = "file"; + public static final String PROPERTY_EDITABLE = "editable"; + + protected File file; + protected boolean editable = true; + + protected final Collection<Attachment> attachments = new ArrayList<Attachment>(); + + protected static Binder<AttachmentEditorUIModel, AttachmentModelAware> toBeanBinder = + BinderFactory.newBinder(AttachmentEditorUIModel.class, + AttachmentModelAware.class); + + protected static Binder<AttachmentModelAware, AttachmentEditorUIModel> fromBeanBinder = + BinderFactory.newBinder(AttachmentModelAware.class, AttachmentEditorUIModel.class); + + protected AttachmentEditorUIModel() { + super(fromBeanBinder, toBeanBinder); + } + + public File getFile() { + return file; + } + + public void setFile(File file) { + Object oldValue = getFile(); + this.file = file; + firePropertyChange(PROPERTY_FILE, oldValue, file); + } + + public boolean isEditable() { + return editable; + } + + public void setEditable(boolean editable) { + Object oldValue = isEditable(); + this.editable = editable; + firePropertyChange(PROPERTY_EDITABLE, oldValue, editable); + } + + @Override + public Collection<Attachment> getAttachment() { + return attachments; + } + + @Override + public void addAllAttachment(Collection<Attachment> attachments) { + this.attachments.addAll(attachments); + firePropertyChange(AttachmentModelAware.PROPERTY_ATTACHMENT, null, this.attachments); + } + + @Override + public void addAttachment(Attachment attachment) { + attachments.add(attachment); + firePropertyChange(AttachmentModelAware.PROPERTY_ATTACHMENT, null, attachments); + } + + @Override + public void removeAttachment(Attachment attachment) { + attachments.remove(attachment); + firePropertyChange(AttachmentModelAware.PROPERTY_ATTACHMENT, null, attachments); + } + + public void setAttachments(Collection<Attachment> attachments) { + this.attachments.clear(); + this.attachments.addAll(attachments); + firePropertyChange(AttachmentModelAware.PROPERTY_ATTACHMENT, null, this.attachments); + } + + @Override + protected AttachmentModelAware newEntity() { + return null; + } +} Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentItem.css =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentItem.css 2014-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentItem.css 2014-03-14 17:07:36 UTC (rev 19) @@ -12,11 +12,6 @@ toolTipText: "faxtomail.attachmentEditor.action.open.tip"; } -#saveAttachmentButton { - actionIcon: "import"; - toolTipText: "faxtomail.attachmentEditor.action.save.tip"; -} - #removeAttachmentButton { actionIcon: "delete"; toolTipText: "faxtomail.attachmentEditor.action.remove.tip"; Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentItem.jaxx =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentItem.jaxx 2014-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentItem.jaxx 2014-03-14 17:07:36 UTC (rev 19) @@ -15,8 +15,6 @@ <JToolBar id='toolbar' constraints='BorderLayout.EAST'> <JButton id='openAttachmentButton' onActionPerformed='handler.openAttachment(attachment)'/> - <JButton id='saveAttachmentButton' - onActionPerformed='handler.saveAttachment(attachment)'/> <JButton id='removeAttachmentButton' onActionPerformed='handler.removeAttachment(this)'/> </JToolBar> Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/ButtonAttachment.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/ButtonAttachment.java 2014-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/ButtonAttachment.java 2014-03-14 17:07:36 UTC (rev 19) @@ -30,11 +30,17 @@ */ public class ButtonAttachment extends AbstractToolbarPopupButton<AttachmentEditorUI> { - private transient PropertyChangeListener listenAttachmentsChanged; public ButtonAttachment(AttachmentModelAware model) { setToolTipText(t("faxtomail.attachmentEditor.action.tip")); - setBean(model); + popup.getModel().addPropertyChangeListener(AttachmentEditorUIModel.PROPERTY_ATTACHMENT, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + List<Attachment> attachment = (List<Attachment>) evt.getNewValue(); + setText(getButtonText(attachment)); + } + }); + init(model); } @Override @@ -52,47 +58,17 @@ return t("faxtomail.attachmentEditor.text", attachmentNb); } - public void init() { - popup.getHandler().init(); - } - public void init(AttachmentModelAware model) { - setBean(model); - init(); + popup.getModel().fromEntity(model); + setText(getButtonText(model != null ? model.getAttachment() : null)); } public AttachmentModelAware getBean() { - return popup.getBean(); + return popup.getModel(); } - protected void setBean(AttachmentModelAware model) { - AttachmentModelAware bean = popup.getBean(); - if (bean != null) { - ((AbstractSerializableBean) bean).removePropertyChangeListener(AttachmentModelAware.PROPERTY_ATTACHMENT, getListenAttachmentsChanged()); - } - popup.setBean(model); - - if (model != null) { - - ((AbstractSerializableBean) model).addPropertyChangeListener(AttachmentModelAware.PROPERTY_ATTACHMENT, getListenAttachmentsChanged()); - Collection<Attachment> attachments = model.getAttachment(); - setText(ButtonAttachment.getButtonText(attachments)); - } + public void setEditable(boolean editable) { + popup.getModel().setEditable(editable); } - protected PropertyChangeListener getListenAttachmentsChanged() { - if (listenAttachmentsChanged == null) { - listenAttachmentsChanged = new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - List<Attachment> attachment = (List<Attachment>) evt.getNewValue(); - setText(getButtonText(attachment)); - if (!popup.isVisible()) { - init(); - } - } - }; - } - return listenAttachmentsChanged; - } } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/SaveAttachmentAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/SaveAttachmentAction.java 2014-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/SaveAttachmentAction.java 2014-03-14 17:07:36 UTC (rev 19) @@ -15,7 +15,7 @@ * @author tchemit <chemit@codelutin.com> * @since 2.4 */ -public class SaveAttachmentAction extends AbstractFaxToMailAction<FaxToMailUIContext, AttachmentEditorUI, AttachmentEditorUIHandler> { +public class SaveAttachmentAction extends AbstractFaxToMailAction<AttachmentEditorUIModel, AttachmentEditorUI, AttachmentEditorUIHandler> { private Attachment attachment; Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.css =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.css 2014-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.css 2014-03-14 17:07:36 UTC (rev 19) @@ -1,8 +1,20 @@ +#historyItemPanel { + border: { BorderFactory.createEmptyBorder(2, 3, 2, 3) }; +} + #type { - text : { JAXXUtil.getStringValue(model.getType()) }; + text : { JAXXUtil.getStringValue(model.getType().getLabelKey()) }; font-weight: "bold"; } +#fields { + text : { handler.decorateFields(model.getFields()) }; +} + +#data { + opaque: false; +} + #userLabel { text : "faxtomail.common.by.label"; font-style: "italic"; Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.jaxx =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.jaxx 2014-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.jaxx 2014-03-14 17:07:36 UTC (rev 19) @@ -11,20 +11,22 @@ static jaxx.runtime.JAXXUtil.getStringValue </import> - <HistoryItemModel id='model' initializer="new HistoryItemModel(getContextValue(History.class))" /> + <HistoryItemModel id='model' initializer="new HistoryItemModel()" /> <HistoryListUIHandler id="handler" initializer="getContextValue(HistoryListUIHandler.class)" /> <script><![CDATA[ -public HistoryItem(History history, HistoryListUIHandler handler) { - setContextValue(history); +public HistoryItem(HistoryListUIHandler handler) { setContextValue(handler); } ]]></script> <JLabel id='type'/> - <JPanel layout="{new FlowLayout(FlowLayout.LEADING)}"> + <JLabel id='fields'/> + + <JPanel id="data" + layout="{new FlowLayout(FlowLayout.LEADING)}"> <JLabel id='userLabel'/> <JLabel id='user'/> <JLabel id='dateLabel'/> Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItemModel.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItemModel.java 2014-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItemModel.java 2014-03-14 17:07:36 UTC (rev 19) @@ -6,12 +6,18 @@ import com.franciaflex.faxtomail.persistence.entities.HistoryImpl; import com.franciaflex.faxtomail.persistence.entities.HistoryType; import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailBeanUIModel; +import org.apache.commons.lang3.StringUtils; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; import java.text.DateFormat; +import java.util.ArrayList; +import java.util.Collection; import java.util.Date; +import java.util.List; +import static org.nuiton.i18n.I18n.t; + /** * @author Kevin Morin (Code Lutin) * @since x.x @@ -27,9 +33,8 @@ protected final History editObject = new HistoryImpl(); - public HistoryItemModel(History history) { + public HistoryItemModel() { super(fromBeanBinder, toBeanBinder); - fromEntity(history); } public HistoryType getType() { @@ -42,6 +47,15 @@ firePropertyChanged(History.PROPERTY_TYPE, oldValue, type); } + public void setFields(Collection<String> fields) { + editObject.setFields(fields); + firePropertyChanged(History.PROPERTY_FIELDS, null, fields); + } + + public Collection<String> getFields() { + return editObject.getFields(); + } + public Date getModificationDate() { return editObject.getModificationDate(); } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUI.css =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUI.css 2014-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUI.css 2014-03-14 17:07:36 UTC (rev 19) @@ -1,3 +1,7 @@ #body { title: "faxtomail.historyList.title"; } + +#histories { + enabled: false; +} \ No newline at end of file Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUI.jaxx =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUI.jaxx 2014-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUI.jaxx 2014-03-14 17:07:36 UTC (rev 19) @@ -3,6 +3,7 @@ id='historyListDialog'> <import> + org.jdesktop.swingx.JXList org.jdesktop.swingx.JXTitledPanel </import> @@ -11,7 +12,7 @@ <JXTitledPanel id='body'> <JScrollPane id='attachmentBodyScrollPane'> - <JPanel id='histories' layout='{new GridLayout(0, 1)}'></JPanel> + <JXList id='histories' /> </JScrollPane> </JXTitledPanel> Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUIHandler.java 2014-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUIHandler.java 2014-03-14 17:07:36 UTC (rev 19) @@ -1,19 +1,30 @@ package com.franciaflex.faxtomail.ui.swing.util.history; -import com.franciaflex.faxtomail.persistence.entities.Email; import com.franciaflex.faxtomail.persistence.entities.History; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; -import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupHandler; -import jaxx.runtime.JAXXUtil; +import com.google.common.collect.Iterables; +import jaxx.runtime.swing.model.JaxxDefaultListModel; import jaxx.runtime.validator.swing.SwingValidator; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.jdesktop.swingx.JXList; +import org.jdesktop.swingx.decorator.HighlighterFactory; +import org.nuiton.util.StringUtil; import javax.swing.*; +import javax.swing.text.Highlighter; import java.awt.*; -import java.util.Collection; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.util.*; +import java.util.List; +import static org.nuiton.i18n.I18n.n; +import static org.nuiton.i18n.I18n.t; + /** * @author Kevin Morin (Code Lutin) * @since x.x @@ -22,6 +33,25 @@ private final static Log log = LogFactory.getLog(HistoryListUIHandler.class); + static { + n("faxtomail.demande.receptionDate.label"); + n("faxtomail.demande.ediCodeNumber.label"); + n("faxtomail.demande.projectReference.label"); + n("faxtomail.demande.sender.label"); + n("faxtomail.demande.fax.label"); + n("faxtomail.demande.recipient.label"); + n("faxtomail.demande.object.label"); + n("faxtomail.demande.clientCode.label"); + n("faxtomail.demande.mailFolder.label"); + n("faxtomail.demande.attachment.label"); + n("faxtomail.demande.demandStatus.label"); + n("faxtomail.demande.demandType.label"); + n("faxtomail.demande.priority.label"); + n("faxtomail.demande.etatAttente.label"); + n("faxtomail.demande.takenBy.label"); + n("faxtomail.demande.rangeRow.label"); + } + @Override public void beforeInit(HistoryListUI ui) { super.beforeInit(ui); @@ -37,13 +67,12 @@ public void afterInit(HistoryListUI ui) { super.afterInit(ui); - Collection<History> histories = getModel().getHistory(); - if (histories != null) { - for (History history : histories) { - HistoryItem item = new HistoryItem(history, this); - ui.getHistories().add(item); - } - } + JXList list = ui.getHistories(); + list.setCellRenderer(new HistoryListCellRenderer()); + JaxxDefaultListModel listModel = new JaxxDefaultListModel<History>(); + listModel.setAllElements(getModel().getHistory()); + list.setModel(listModel); + list.addHighlighter(HighlighterFactory.createAlternateStriping()); } @Override @@ -59,4 +88,43 @@ protected JComponent getComponentToFocus() { return null; } + + public String decorateFields(Collection<String> fields) { + List<String> fieldLabels = new ArrayList<String>(); + if (fields != null) { + for (String field : fields) { + fieldLabels.add(t("faxtomail.demande." + field + ".label")); + } + } + return StringUtils.join(fieldLabels, ", "); + } + + protected class HistoryListCellRenderer extends HistoryItem + implements ListCellRenderer { + + public HistoryListCellRenderer() { + super(HistoryListUIHandler.this); + + getModel().addPropertyChangeListener(History.PROPERTY_FIELDS, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + if (evt.getNewValue() != null) { + add(getFields(), 1); + } else { + remove(getFields()); + } + } + }); + } + + @Override + public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { + History history = (History) value; + getModel().fromEntity(history); + if (CollectionUtils.isEmpty(getModel().getFields())) { + remove(getFields()); + } + return this; + } + } } Modified: trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_en_GB.properties =================================================================== --- trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_en_GB.properties 2014-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_en_GB.properties 2014-03-14 17:07:36 UTC (rev 19) @@ -103,22 +103,30 @@ faxtomail.demande.archive.button.mnemonic= faxtomail.demande.askCancelEditBeforeLeaving.cancelSave= faxtomail.demande.askSaveBeforeLeaving.save= +faxtomail.demande.attachment.label= faxtomail.demande.back.button.label= faxtomail.demande.back.button.mnemonic= faxtomail.demande.client.label= +faxtomail.demande.clientCode.label= +faxtomail.demande.demandStatus.label= +faxtomail.demande.demandType.label= faxtomail.demande.demandeNumber.label= +faxtomail.demande.demandeType.label= faxtomail.demande.docType.label= faxtomail.demande.ediCodeNumber.label= faxtomail.demande.etatAttente.label= +faxtomail.demande.fax.label= faxtomail.demande.finishedProducts.label= faxtomail.demande.firstOpened.label= faxtomail.demande.firstOpenedBy.label= faxtomail.demande.firstOpeningDate.label= faxtomail.demande.gamme.label= +faxtomail.demande.history.label= faxtomail.demande.lastModificationDate.label= faxtomail.demande.lastModified.label= faxtomail.demande.lastModifiedBy.label= faxtomail.demande.mailBody.label= +faxtomail.demande.mailFolder.label= faxtomail.demande.message.label= faxtomail.demande.object.label= faxtomail.demande.print.button.label= @@ -126,8 +134,12 @@ faxtomail.demande.priority.label= faxtomail.demande.projectReference.default= faxtomail.demande.projectReference.label= +faxtomail.demande.rangeRow.label= faxtomail.demande.received.label= faxtomail.demande.receivedDate.label= +faxtomail.demande.receptionDate= +faxtomail.demande.receptionDate.label= +faxtomail.demande.recipient.label= faxtomail.demande.ref.label= faxtomail.demande.reply.button.label= faxtomail.demande.reply.button.mnemonic= 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-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-03-14 17:07:36 UTC (rev 19) @@ -37,25 +37,32 @@ faxtomail.demande.archive.button.label=Archiver faxtomail.demande.askCancelEditBeforeLeaving.cancelSave=L'élément n'est pas valide et ne peut être sauvé. faxtomail.demande.askSaveBeforeLeaving.save=Vous avez modifié l'élément mais vous n'avez pas enregistré ces modifications. +faxtomail.demande.attachment.label= faxtomail.demande.back.button.label=Quitter -faxtomail.demande.client.label=Client -faxtomail.demande.docType.label=Type +faxtomail.demande.client.label= +faxtomail.demande.clientCode.label=Client +faxtomail.demande.demandStatus.label=Statut +faxtomail.demande.demandType.label=Type faxtomail.demande.ediCodeNumber.label=Retour EDI faxtomail.demande.etatAttente.label=État attente +faxtomail.demande.fax.label= faxtomail.demande.firstOpened.label=Première ouverture faxtomail.demande.lastModified.label=Dernière modification faxtomail.demande.mailBody.label=Corps du mail +faxtomail.demande.mailFolder.label=Dossier faxtomail.demande.message.label=Message faxtomail.demande.object.label=Objet faxtomail.demande.print.button.label=Imprimer faxtomail.demande.priority.label=Priorité faxtomail.demande.projectReference.label=Référence chantier +faxtomail.demande.rangeRow.label=Gammes faxtomail.demande.receivedDate.label=Reçu le +faxtomail.demande.receptionDate.label=Date de réception +faxtomail.demande.recipient.label=Destinataire faxtomail.demande.reply.button.label=Répondre faxtomail.demande.save.button.label=Enregistrer faxtomail.demande.sender.label=Émetteur faxtomail.demande.sender.manualCreation=Création manuelle -faxtomail.demande.status.label=Statut faxtomail.demande.takenBy.label=Pris par faxtomail.demande.transmit.button.label=Transmettre faxtomail.demandeList.action.archive=Archiver Modified: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/FaxToMailApplicationContext.java =================================================================== --- trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/FaxToMailApplicationContext.java 2014-03-12 18:14:43 UTC (rev 18) +++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/FaxToMailApplicationContext.java 2014-03-14 17:07:36 UTC (rev 19) @@ -25,7 +25,7 @@ public static FaxToMailConfiguration getApplicationConfig() { if (applicationConfig == null) { - applicationConfig = new FaxToMailConfiguration("faxtomail.properties"); + applicationConfig = new FaxToMailConfiguration("faxToMail.properties"); } return applicationConfig; } Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2014-03-12 18:14:43 UTC (rev 18) +++ trunk/pom.xml 2014-03-14 17:07:36 UTC (rev 19) @@ -83,7 +83,7 @@ <nuitonCsvVersion>3.0-alpha-3</nuitonCsvVersion> <nuitonDecoratorVersion>3.0-alpha-3</nuitonDecoratorVersion> <nuitonUpdaterVersion>3.0-alpha-2</nuitonUpdaterVersion> - <nuitonUtilsVersion>3.0-rc-2</nuitonUtilsVersion> + <nuitonUtilsVersion>3.0-SNAPSHOT</nuitonUtilsVersion> <nuitonValidatorVersion>3.0-alpha-3</nuitonValidatorVersion> <nuitonWebVersion>1.15-alpha-3</nuitonWebVersion>
participants (1)
-
kmorin@users.forge.codelutin.com