Author: kmorin Date: 2014-08-12 11:24:40 +0200 (Tue, 12 Aug 2014) New Revision: 522 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/522 Log: fixes #5554 ?\195?\137diteur de pi?\195?\168ces jointes : Ajout des ?\195?\169l?\195?\169ments ?\195?\160 l?\226?\128?\153endroit o?\195?\185 on clique fixes #5555 ?\195?\137diteur de pi?\195?\168ces jointes : lignes verticales v?\195?\169rification qu'un ?\195?\169l?\195?\169ment est toujous lisible et n'a pas chang?\195?\169 de dossier quand on l'ouvre am?\195?\169lioration du code d'ouverture de demandes group?\195?\169es Added: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/exceptions/FolderNotReadableException.java trunk/faxtomail-ui-swing/src/main/resources/icons/action-hline.png trunk/faxtomail-ui-swing/src/main/resources/icons/action-vline.png Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractChangeScreenAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractFaxToMailAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/GroupAction.java 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/OpenGroupedDemandAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ReplyAction.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/actions/TransmitAction.java 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/DemandeUIModel.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/demande/DemandesUIModel.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/ButtonHistory.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUI.jaxx trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorNoteUI.css trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUI.css trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUI.jaxx trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIModel.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.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/persistence/entities/EmailTopiaDao.java =================================================================== --- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java 2014-08-12 09:08:06 UTC (rev 521) +++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java 2014-08-12 09:24:40 UTC (rev 522) @@ -34,6 +34,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateUtils; +import org.apache.commons.lang3.tuple.Pair; import org.nuiton.util.pagination.PaginationParameter; import org.nuiton.util.pagination.PaginationResult; @@ -404,4 +405,19 @@ return result; } + +// public Map<String, FaxToMailUser> getLastForEmails(List<String> emailIds) { +//// récupérer l'utilisateur de l'historique max date pour type = ouverture pj +// String query = "SELECT topiaId, " + +// "FROM " + Email.class.getName() + " AS email " + +// "INNER JOIN email." + Email.PROPERTY_HISTORY + " AS history " + +// "INNER JOIN rangeRow." + RangeRow.PROPERTY_RANGE + " AS range " + +// "WHERE email." + Email.PROPERTY_TOPIA_ID + " IN :emailIds " + +// "AND history" +// "GROUP BY topiaId"; +// +// Map<String, Object> params = new HashMap<>(); +// params.put("emailIds", emailIds); +// List<Pair<String, FaxToMailUser>> result = findAll(query, params); +// } } 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-08-12 09:08:06 UTC (rev 521) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-08-12 09:24:40 UTC (rev 522) @@ -36,6 +36,7 @@ import com.franciaflex.faxtomail.persistence.entities.Range; import com.franciaflex.faxtomail.services.FaxToMailService; import com.franciaflex.faxtomail.services.service.exceptions.AlreadyLockedMailException; +import com.franciaflex.faxtomail.services.service.exceptions.FolderNotReadableException; import com.franciaflex.faxtomail.services.service.exceptions.InvalidClientException; import org.apache.commons.mail.EmailException; @@ -58,15 +59,17 @@ public interface EmailService extends FaxToMailService { Email getEmailById(String id); - Email getEmailById(String id, FaxToMailUser user); + Email getFullEmailById(String id); + Email getFullEmailById(String id, FaxToMailUser user); + Email saveEmail(Email email, FaxToMailUser user, String... modifiedFields) throws InvalidClientException; Email saveEmail(Email email, Collection<Attachment> attachments, String clientCode, FaxToMailUser user, String... modifiedFields) throws InvalidClientException; void transmitPendingDemandsToEdi(); - PaginationResult<Email> getEmailForFolder(MailFolder folder, FaxToMailUser currentUser, List<MailField> fields, PaginationParameter page); + PaginationResult<Email> getEmailForFolder(MailFolder folder, FaxToMailUser currentUser, PaginationParameter page); List<MailFolder> getChildrenRecursively(MailFolder folder); @@ -74,15 +77,17 @@ Email addToHistory(String emailId, HistoryType type, FaxToMailUser user, Date date, String... fields); + Email openEmail(String emailId, FaxToMailUser user, boolean takeEmail) throws FolderNotReadableException; + Email takeEmail(String emailId, FaxToMailUser user); - Email lockEmail(String emailId, FaxToMailUser currentUser) throws AlreadyLockedMailException; + Email lockEmail(String emailId, FaxToMailUser currentUser) throws AlreadyLockedMailException, FolderNotReadableException; void unlockEmail(String emailId); PaginationResult<Email> search(EmailFilter emailFilter, FaxToMailUser user, PaginationParameter pagination); - Email groupEmails(Email email1, Email email2, FaxToMailUser user); + Email groupEmails(String email1Id, String email2Id, FaxToMailUser user); Email reply(String from, String to, String cc, String bcc, String subject, String content, Collection<AttachmentFile> attachments, Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-08-12 09:08:06 UTC (rev 521) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-08-12 09:24:40 UTC (rev 522) @@ -51,6 +51,8 @@ import javax.activation.FileDataSource; import javax.mail.MessagingException; +import com.franciaflex.faxtomail.services.service.exceptions.FolderNotReadableException; +import com.google.common.collect.Collections2; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.Predicate; import org.apache.commons.io.FileUtils; @@ -107,6 +109,12 @@ @Override public Email getEmailById(String id) { + Email email = getPersistenceContext().getEmailDao().forTopiaIdEquals(id).findUnique(); + return email; + } + + @Override + public Email getFullEmailById(String id) { Email email = getPersistenceContext().getEmailDao() .forTopiaIdEquals(id) .addAllFetches(Email.PROPERTY_DEMAND_TYPE, @@ -131,8 +139,8 @@ } @Override - public Email getEmailById(String id, FaxToMailUser user) { - Email email = getEmailById(id); + public Email getFullEmailById(String id, FaxToMailUser user) { + Email email = getFullEmailById(id); MailFolderService mailFolderService = serviceContext.getMailFolderService(); MailFolder folder = email.getMailFolder(); @@ -546,65 +554,27 @@ @Override public PaginationResult<Email> getEmailForFolder(MailFolder folder, FaxToMailUser currentUser, - List<MailField> fields, PaginationParameter page) { // perform request or not depending on rigths PaginationResult<Email> result; if (folder.isFolderReadable()) { EmailTopiaDao dao = getPersistenceContext().getEmailDao(); - TopiaQueryBuilderAddCriteriaOrRunQueryStep queryStep = - dao.forMailFolderEquals(folder) + result = dao.forMailFolderEquals(folder) .addNull(Email.PROPERTY_ARCHIVE_DATE) - .addNotEquals(Email.PROPERTY_DEMAND_STATUS, DemandStatus.ARCHIVED); + .addNotEquals(Email.PROPERTY_DEMAND_STATUS, DemandStatus.ARCHIVED) + .addAllFetches(Email.PROPERTY_PRIORITY, + Email.PROPERTY_DEMAND_TYPE, + Email.PROPERTY_CLIENT, + Email.PROPERTY_RANGE_ROW + "." + RangeRow.PROPERTY_RANGE, + Email.PROPERTY_ETAT_ATTENTE, + Email.PROPERTY_TAKEN_BY, + Email.PROPERTY_REPLIES, + Email.PROPERTY_ATTACHMENT, + Email.PROPERTY_HISTORY + "." + History.PROPERTY_FAX_TO_MAIL_USER, + Email.PROPERTY_HISTORY + "." + History.PROPERTY_FIELDS) + .findPage(page); - boolean noFields = CollectionUtils.isEmpty(fields); - if (noFields || fields.contains(MailField.PRIORITY)) { - queryStep.addFetch(Email.PROPERTY_PRIORITY); - } - if (noFields || fields.contains(MailField.DEMAND_TYPE)) { - queryStep.addFetch(Email.PROPERTY_DEMAND_TYPE); - } - if (noFields || CollectionUtils.containsAny(fields, - Lists.newArrayList(MailField.CLIENT_BRAND, - MailField.CLIENT_CODE))) { - queryStep.addFetch(Email.PROPERTY_CLIENT); - } - if (noFields || CollectionUtils.containsAny(fields, - Lists.newArrayList(MailField.REFERENCE, - MailField.QUOTATION_NB, - MailField.PF_NB, - MailField.SAV_NB))) { - queryStep.addFetch(Email.PROPERTY_RANGE_ROW + "." + RangeRow.PROPERTY_RANGE); - } - if (noFields || fields.contains(MailField.ETAT_ATTENTE)) { - queryStep.addFetch(Email.PROPERTY_ETAT_ATTENTE); - } - if (noFields || fields.contains(MailField.TAKEN_BY)) { - queryStep.addFetch(Email.PROPERTY_TAKEN_BY); - } - if (noFields || fields.contains(MailField.REPLIES)) { - queryStep.addFetch(Email.PROPERTY_REPLIES); - } - if (noFields || fields.contains(MailField.ATTACHMENT)) { - queryStep.addFetch(Email.PROPERTY_ATTACHMENT); - } - //TODO 20140808 kmorin remove when hql query coded - if (noFields || fields.contains(MailField.LAST_ATTACHMENT_OPENING_IN_THIS_FOLDER_USER)) { - queryStep.addAllFetches(Email.PROPERTY_HISTORY + "." + History.PROPERTY_FAX_TO_MAIL_USER, - Email.PROPERTY_HISTORY + "." + History.PROPERTY_FIELDS); - } - - result = queryStep.findPage(page); - - if (noFields || fields.contains(MailField.LAST_ATTACHMENT_OPENING_IN_THIS_FOLDER_USER)) { - Collection<String> topiaIds = Collections2.transform(result.getElements(), TopiaEntities.getTopiaIdFunction()); - //TODO 20140808 kmorin hql pour récupérer l'utilisateur de l'historique max date pour type = ouverture pj -// Email.PROPERTY_HISTORY, -// Email.PROPERTY_HISTORY + "." + History.PROPERTY_FAX_TO_MAIL_USER, -// Email.PROPERTY_HISTORY + "." + History.PROPERTY_FIELDS, - } - } else { List<Email> elements = Collections.emptyList(); result = PaginationResult.of(elements, 0, page); @@ -633,7 +603,7 @@ @Override public Email addToHistory(String emailId, HistoryType type, FaxToMailUser user, Date date, String... fields) { EmailTopiaDao emailDao = getPersistenceContext().getEmailDao(); - Email email = getEmailById(emailId, user); + Email email = getEmailById(emailId); HistoryTopiaDao historyDao = getPersistenceContext().getHistoryDao(); History history = historyDao.create(History.PROPERTY_TYPE, type, @@ -649,6 +619,38 @@ return email; } + @Override + public Email openEmail(String emailId, FaxToMailUser user, boolean takeEmail) throws FolderNotReadableException { + EmailTopiaDao emailDao = getPersistenceContext().getEmailDao(); + Email email = getFullEmailById(emailId, user); + + MailFolder mailFolder = email.getMailFolder(); + if (!mailFolder.isFolderReadable()) { + throw new FolderNotReadableException(String.format("Mail folder %s not readable by %s", + mailFolder.getName(), + user.getLogin()), + mailFolder); + } + + HistoryTopiaDao historyDao = getPersistenceContext().getHistoryDao(); + History history = historyDao.create(History.PROPERTY_TYPE, HistoryType.OPENING, + History.PROPERTY_FAX_TO_MAIL_USER, user, + History.PROPERTY_MODIFICATION_DATE, new Date()); + email.addHistory(history); + if (takeEmail) { + 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); + email.setTakenBy(user); + } + + email = emailDao.update(email); + getPersistenceContext().commit(); + return email; + } + /** * Take email (takenBy). * @@ -683,12 +685,27 @@ * @throws AlreadyLockedMailException if email is already locked by another user */ @Override - public Email lockEmail(String emailId, FaxToMailUser currentUser) throws AlreadyLockedMailException { + public Email lockEmail(String emailId, FaxToMailUser currentUser) throws AlreadyLockedMailException, + FolderNotReadableException { // get current lock on mail if any EmailTopiaDao emailDao = getPersistenceContext().getEmailDao(); MailLockTopiaDao mailLockDao = getPersistenceContext().getMailLockDao(); Email email = emailDao.forTopiaIdEquals(emailId).findUnique(); + + MailFolderService mailFolderService = serviceContext.getMailFolderService(); + MailFolder folder = email.getMailFolder(); + browseFolderParent(folder, currentUser, mailFolderService); + + if (!folder.isFolderReadable()) { + throw new FolderNotReadableException(String.format("Mail folder %s not readable by %s", + folder.getName(), + currentUser.getLogin()), + folder); + } + + Hibernate.initialize(email.getTakenBy()); + MailLock mailLock = mailLockDao.forLockOnEquals(email).findUniqueOrNull(); // if no lock found, create new one @@ -714,6 +731,7 @@ mailLockDao.deleteAll(mailLocksToRemove); getPersistenceContext().commit(); + } else if (!mailLock.getLockBy().equals(currentUser)) { // throw exception if already locked by another user throw new AlreadyLockedMailException(String.format("Mail %s already locked by %s", emailId, mailLock.getLockBy().getTopiaId()), mailLock.getLockBy()); @@ -787,9 +805,12 @@ } @Override - public Email groupEmails(Email email1, Email email2, FaxToMailUser user) { + public Email groupEmails(String email1Id, String email2Id, FaxToMailUser user) { EmailGroupTopiaDao groupDao = getPersistenceContext().getEmailGroupDao(); + Email email1 = getFullEmailById(email1Id, user); + Email email2 = getEmailById(email2Id); + EmailGroup group1 = email1.getEmailGroup(); EmailGroup group2 = email2.getEmailGroup(); Added: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/exceptions/FolderNotReadableException.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/exceptions/FolderNotReadableException.java (rev 0) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/exceptions/FolderNotReadableException.java 2014-08-12 09:24:40 UTC (rev 522) @@ -0,0 +1,20 @@ +package com.franciaflex.faxtomail.services.service.exceptions; + +import com.franciaflex.faxtomail.persistence.entities.MailFolder; + +/** + * @author Kevin Morin (Code Lutin) + */ +public class FolderNotReadableException extends Exception { + + protected MailFolder forbiddenFolder; + + public FolderNotReadableException(String message, MailFolder forbiddenFolder) { + super(message); + this.forbiddenFolder = forbiddenFolder; + } + + public MailFolder getForbiddenFolder() { + return forbiddenFolder; + } +} Modified: trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java =================================================================== --- trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java 2014-08-12 09:08:06 UTC (rev 521) +++ trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java 2014-08-12 09:24:40 UTC (rev 522) @@ -144,11 +144,11 @@ MailFolderTopiaDao mailFolderDao = getServiceContext().getPersistenceContext().getMailFolderDao(); MailFolder cyril = mailFolderDao.forNameEquals("Cyril").findUnique(); - PaginationResult<Email> page1 = service.getEmailForFolder(cyril, getCurrentUser(), null, page); + PaginationResult<Email> page1 = service.getEmailForFolder(cyril, getCurrentUser(), page); Assert.assertEquals(10, page1.getCount()); Assert.assertEquals(7, page1.getElements().size()); - PaginationResult<Email> page2 = service.getEmailForFolder(cyril, getCurrentUser(), null, page1.getNextPage()); + PaginationResult<Email> page2 = service.getEmailForFolder(cyril, getCurrentUser(), page1.getNextPage()); Assert.assertEquals(10, page2.getCount()); Assert.assertEquals(3, page2.getElements().size()); Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractChangeScreenAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractChangeScreenAction.java 2014-08-12 09:08:06 UTC (rev 521) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractChangeScreenAction.java 2014-08-12 09:24:40 UTC (rev 522) @@ -103,16 +103,11 @@ } @Override - public void postFailedAction(Throwable error) { + public void releaseAction() { + super.releaseAction(); setTopBarButtonEnabled(true); } - @Override - public void postSuccessAction() { - super.postSuccessAction(); - setTopBarButtonEnabled(true); - } - protected void setTopBarButtonEnabled(boolean enabled) { MainUI ui = getUI(); ui.getSearchButton().setEnabled(enabled); Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractFaxToMailAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractFaxToMailAction.java 2014-08-12 09:08:06 UTC (rev 521) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractFaxToMailAction.java 2014-08-12 09:24:40 UTC (rev 522) @@ -61,10 +61,6 @@ return (ProgressionModel) getContext().getActionUI().getModel().getProgressionModel(); } -// public FaxToMailDataContext getDataContext() { -// return getContext().getDataContext(); -// } - @Override protected FaxToMailConfiguration getConfig() { return getContext().getConfig(); Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/GroupAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/GroupAction.java 2014-08-12 09:08:06 UTC (rev 521) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/GroupAction.java 2014-08-12 09:24:40 UTC (rev 522) @@ -65,7 +65,7 @@ int i = JOptionPane.showConfirmDialog( null, - t("faxtomail.alert.groupConfirmation.message", currentEmail.getObject(), selectedEmail.getObject()), + t("faxtomail.alert.groupConfirmation.message", currentEmail.getTitle(), selectedEmail.getTitle()), t("faxtomail.alert.groupConfirmation.title"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); @@ -78,16 +78,14 @@ public void doAction() throws Exception { FaxToMailServiceContext serviceContext = getContext().newServiceContext(); EmailService emailService = serviceContext.getEmailService(); + FaxToMailUser user = getContext().getCurrentUser(); - Email email2 = emailService.getEmailById(selectedEmail.getTopiaId()); - Email email1 = emailService.getEmailById(currentEmail.getTopiaId()); - FaxToMailUser currentUser = getContext().getCurrentUser(); - email1 = emailService.groupEmails(email1, email2, currentUser); - currentEmail.fromEntity(email1); - currentEmail.setGroupedDemandes(email1.getEmailGroup()); + Email email = emailService.groupEmails(currentEmail.getTopiaId(), selectedEmail.getTopiaId(), currentUser); + currentEmail.fromEntity(email); + currentEmail.setGroupedDemandes(email.getEmailGroup()); - handler.showInformationMessage(t("faxtomail.demande.group.successful", email2.getObject())); + handler.showInformationMessage(t("faxtomail.demande.group.successful")); handler.closeFrame(); } 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-12 09:08:06 UTC (rev 521) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java 2014-08-12 09:24:40 UTC (rev 522) @@ -28,10 +28,15 @@ import java.util.ArrayList; import java.util.Collection; +import java.util.HashSet; import java.util.List; +import java.util.Set; import com.ezware.oxbow.swingbits.table.filter.TableRowFilterSupport; import com.franciaflex.faxtomail.persistence.entities.MailField; +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.JXTable; @@ -91,10 +96,15 @@ FaxToMailUser currentUser = getContext().getCurrentUser(); List<MailField> columns = handler.getColumns(); + Collection<MailField> fields = new HashSet<MailField>(); + if (columns != null) { + fields.addAll(columns); + } + fields.add(MailField.TAKEN_BY); + PaginationResult<Email> paginationResult = getContext().newServiceContext().getEmailService() .getEmailForFolder(folder, currentUser, - columns, model.getPaginationParameter()); List<Email> emails = paginationResult.getElements(); if (log.isDebugEnabled()) { @@ -104,7 +114,7 @@ List<DemandeUIModel> demands = new ArrayList<DemandeUIModel>(); for (Email email : emails) { DemandeUIModel demand = new DemandeUIModel(); - demand.fromEntity(email, columns); + demand.fromEntityExcluding(email, Sets.newHashSet(Email.PROPERTY_MAIL_FOLDER, Email.PROPERTY_EMAIL_GROUP)); // 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/actions/OpenGroupedDemandAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/OpenGroupedDemandAction.java 2014-08-12 09:08:06 UTC (rev 521) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/OpenGroupedDemandAction.java 2014-08-12 09:24:40 UTC (rev 522) @@ -2,8 +2,12 @@ import com.franciaflex.faxtomail.persistence.entities.Email; import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; +import com.franciaflex.faxtomail.persistence.entities.MailFolder; import com.franciaflex.faxtomail.services.FaxToMailServiceContext; +import com.franciaflex.faxtomail.services.service.EmailService; import com.franciaflex.faxtomail.services.service.exceptions.AlreadyLockedMailException; +import com.franciaflex.faxtomail.services.service.exceptions.FolderNotReadableException; +import com.franciaflex.faxtomail.ui.swing.FaxToMailScreen; import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; @@ -23,6 +27,7 @@ public class OpenGroupedDemandAction extends AbstractFaxToMailAction<DemandeUIModel, DemandGroupUI, DemandGroupUIHandler> { protected DemandeUIModel demandToOpen; + protected boolean takeEmail; public OpenGroupedDemandAction(DemandGroupUIHandler handler, DemandeUIModel demandToOpen) { super(handler, false); @@ -34,76 +39,112 @@ public boolean prepareAction() throws Exception { boolean result = super.prepareAction(); - // tentative de verrouillages des email existants - if (StringUtils.isNotBlank(demandToOpen.getTopiaId())) { - FaxToMailUser currentUser = getContext().getCurrentUser(); + MainUIHandler mainUIHandler = getContext().getMainUI().getHandler(); + DemandesUI parentContainer = (DemandesUI) mainUIHandler.getCurrentBody(); + if (parentContainer.getModel().containsDemand(demandToOpen)) { + openDemandScreen(); + result = false; - try { - FaxToMailServiceContext serviceContext = getContext().newServiceContext(); - serviceContext.getEmailService().lockEmail(demandToOpen.getTopiaId(), currentUser); + } else { + String topiaId = demandToOpen.getTopiaId(); + if (StringUtils.isNotBlank(topiaId)) { + FaxToMailUser currentUser = getContext().getCurrentUser(); + int answer = -1; - } catch (AlreadyLockedMailException ex) { - result = false; + try { + FaxToMailServiceContext serviceContext = getContext().newServiceContext(); + EmailService emailService = serviceContext.getEmailService(); - String htmlMessage = t("faxtomail.alert.alreadyLockedBy.message", decorate(ex.getLockedBy())); - JOptionPane.showMessageDialog(getHandler().getTopestUI(), - htmlMessage, - t("faxtomail.alert.alreadyLockedBy.title"), - JOptionPane.ERROR_MESSAGE); + // tentative de verrouillages des email existants + Email email = emailService.lockEmail(topiaId, currentUser); + + FaxToMailUser takenBy = email.getTakenBy(); + + // si le mail est pris par quelqu'un d'autre, le prend-on ou pas ? + if (takenBy != null && !currentUser.equals(takenBy)) { + String htmlMessage = String.format( + AbstractApplicationUIHandler.CONFIRMATION_FORMAT, + t("faxtomail.alert.alreadyTakenBy.message", decorate(takenBy)), + t("faxtomail.alert.alreadyTakenBy.help")); + + answer = JOptionPane.showConfirmDialog(getHandler().getTopestUI(), + htmlMessage, + t("faxtomail.alert.alreadyTakenBy.title"), + JOptionPane.YES_NO_CANCEL_OPTION, + JOptionPane.QUESTION_MESSAGE); + } + + // si on annule, on délock + if (answer == JOptionPane.CANCEL_OPTION) { + result = false; + emailService.unlockEmail(topiaId); + + } else { + // sinon on ouvre + + // si on ne prend pas, le mail est en readonly + if (answer == JOptionPane.NO_OPTION) { + demandToOpen.setEditable(false); + takeEmail = false; + } + // si on prend, on prend et on rend editable + else if (answer == JOptionPane.YES_OPTION) { + takeEmail = true; + demandToOpen.setEditable(true); + } + } + } + // le mail est locké, on ne fait rien + catch (AlreadyLockedMailException ex) { + result = false; + + String htmlMessage = t("faxtomail.alert.alreadyLockedBy.message", decorate(ex.getLockedBy())); + JOptionPane.showMessageDialog(getHandler().getTopestUI(), + htmlMessage, + t("faxtomail.alert.alreadyLockedBy.title"), + JOptionPane.ERROR_MESSAGE); + } + // l'utilisateur n'a pas les droits de lecture sur le dossier + catch (FolderNotReadableException e) { + result = false; + + String htmlMessage = t("faxtomail.alert.userNotAuthorizedToReadEmail.message", e.getForbiddenFolder().getName()); + JOptionPane.showMessageDialog(getHandler().getTopestUI(), + htmlMessage, + t("faxtomail.alert.userNotAuthorizedToReadEmail.title"), + JOptionPane.ERROR_MESSAGE); + } } } - return result; } @Override public void doAction() throws Exception { - FaxToMailUIContext context = getContext(); - Email email = context.newServiceContext().getEmailService().getEmailById(demandToOpen.getTopiaId(), - context.getCurrentUser()); - demandToOpen.fromEntity(email); - demandToOpen.setMailFolder(email.getMailFolder()); - demandToOpen.setCloseable(true); + if (StringUtils.isNotBlank(demandToOpen.getTopiaId())) { + FaxToMailServiceContext serviceContext = getContext().newServiceContext(); + + Email email = serviceContext.getEmailService().openEmail(demandToOpen.getTopiaId(), + getContext().getCurrentUser(), + takeEmail); + + demandToOpen.fromEntity(email); + MailFolder folder = demandToOpen.getMailFolder(); + if (demandToOpen.getArchiveDate() != null || !folder.isFolderWritable()) { + demandToOpen.setEditable(false); + } + demandToOpen.setCloseable(true); + } } @Override public void postSuccessAction() { super.postSuccessAction(); - FaxToMailUser takenBy = demandToOpen.getTakenBy(); - FaxToMailUser currentUser = getContext().getCurrentUser(); + openDemandScreen(); + } - if (demandToOpen.getArchiveDate() != null) { - demandToOpen.setEditable(false); - - } else if (takenBy != null && !currentUser.equals(takenBy)) { - String htmlMessage = String.format( - AbstractApplicationUIHandler.CONFIRMATION_FORMAT, - t("faxtomail.alert.alreadyTakenBy.message", decorate(takenBy)), - t("faxtomail.alert.alreadyTakenBy.help")); - - int result = JOptionPane.showConfirmDialog(getHandler().getTopestUI(), - htmlMessage, - t("faxtomail.alert.alreadyTakenBy.title"), - JOptionPane.YES_NO_CANCEL_OPTION, - JOptionPane.QUESTION_MESSAGE); - - switch (result) { - case JOptionPane.CANCEL_OPTION: - return; - - case JOptionPane.NO_OPTION: - demandToOpen.setEditable(false); - break; - - case JOptionPane.YES_OPTION: - Email email = getContext().newServiceContext().getEmailService().takeEmail(demandToOpen.getTopiaId(), currentUser); - demandToOpen.fromEntity(email); - demandToOpen.setEditable(true); - break; - } - } - + protected void openDemandScreen() { MainUIHandler mainUIHandler = getContext().getMainUI().getHandler(); DemandesUI parentContainer = (DemandesUI) mainUIHandler.getCurrentBody(); parentContainer.getModel().addDemand(demandToOpen); Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ReplyAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ReplyAction.java 2014-08-12 09:08:06 UTC (rev 521) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ReplyAction.java 2014-08-12 09:24:40 UTC (rev 522) @@ -35,6 +35,7 @@ import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUIModel; import com.google.common.base.Function; import com.google.common.collect.Collections2; +import com.google.common.collect.Sets; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -81,7 +82,7 @@ originalDemand.getTopiaId(), getContext().getCurrentUser()); - originalDemand.fromEntity(email); + originalDemand.fromEntityIncluding(email, Sets.newHashSet(Email.PROPERTY_REPLIES, Email.PROPERTY_HISTORY)); } @Override 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-08-12 09:08:06 UTC (rev 521) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java 2014-08-12 09:24:40 UTC (rev 522) @@ -68,7 +68,7 @@ String topiaId = model.getTopiaId(); FaxToMailServiceContext serviceContext = context.newServiceContext(); if (!StringUtils.isBlank(topiaId)) { - persistedEmail = serviceContext.getEmailService().getEmailById(topiaId); + persistedEmail = serviceContext.getEmailService().getFullEmailById(topiaId); } else { persistedEmail = new EmailImpl(); } 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-08-12 09:08:06 UTC (rev 521) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-08-12 09:24:40 UTC (rev 522) @@ -27,7 +27,9 @@ import com.franciaflex.faxtomail.persistence.entities.HistoryType; import com.franciaflex.faxtomail.persistence.entities.MailFolder; import com.franciaflex.faxtomail.services.FaxToMailServiceContext; +import com.franciaflex.faxtomail.services.service.EmailService; import com.franciaflex.faxtomail.services.service.exceptions.AlreadyLockedMailException; +import com.franciaflex.faxtomail.services.service.exceptions.FolderNotReadableException; import com.franciaflex.faxtomail.ui.swing.FaxToMailScreen; import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; @@ -44,11 +46,16 @@ /** * To show demande screen. + * TODO kmorin 20140811 gérer le cas où la demande a changé de dossier entre le moment où on a affiché la liste + * et le moment où on l'ouvre * * @author kmorin - morin@codelutin.com */ public class ShowDemandeAction extends AbstractChangeScreenAction { + // if true, take the email when opening + protected boolean takeEmail; + public ShowDemandeAction(MainUIHandler handler) { super(handler, true, FaxToMailScreen.DEMANDE); setActionDescription(t("faxtomail.action.goto.demand.tip")); @@ -60,49 +67,53 @@ DemandeUIModel currentEmail = getContext().getCurrentEmail(); - FaxToMailUser takenBy = currentEmail.getTakenBy(); - FaxToMailUser currentUser = getContext().getCurrentUser(); - int answer = -1; + String topiaId = currentEmail.getTopiaId(); + if (StringUtils.isNotBlank(topiaId)) { + FaxToMailUser currentUser = getContext().getCurrentUser(); + int answer = -1; - // si le mail est pris par quelqu'un d'autre, le prend-on ou pas ? - if (takenBy != null && !currentUser.equals(takenBy)) { - String htmlMessage = String.format( - AbstractApplicationUIHandler.CONFIRMATION_FORMAT, - t("faxtomail.alert.alreadyTakenBy.message", decorate(takenBy)), - t("faxtomail.alert.alreadyTakenBy.help")); + try { + FaxToMailServiceContext serviceContext = getContext().newServiceContext(); + EmailService emailService = serviceContext.getEmailService(); - answer = JOptionPane.showConfirmDialog(getHandler().getTopestUI(), - htmlMessage, - t("faxtomail.alert.alreadyTakenBy.title"), - JOptionPane.YES_NO_CANCEL_OPTION, - JOptionPane.QUESTION_MESSAGE); - } + // tentative de verrouillages des email existants + Email email = emailService.lockEmail(topiaId, currentUser); - // si on annule, on n'ouvre pas - if (answer == JOptionPane.CANCEL_OPTION) { - result = false; + FaxToMailUser takenBy = email.getTakenBy(); - } else { - // sinon on ouvre - try { - // tentative de verrouillages des email existants - if (StringUtils.isNotBlank(currentEmail.getTopiaId())) { - FaxToMailServiceContext serviceContext = getContext().newServiceContext(); - serviceContext.getEmailService().lockEmail(currentEmail.getTopiaId(), currentUser); + // si le mail est pris par quelqu'un d'autre, le prend-on ou pas ? + if (takenBy != null && !currentUser.equals(takenBy)) { + String htmlMessage = String.format( + AbstractApplicationUIHandler.CONFIRMATION_FORMAT, + t("faxtomail.alert.alreadyTakenBy.message", decorate(takenBy)), + t("faxtomail.alert.alreadyTakenBy.help")); + + answer = JOptionPane.showConfirmDialog(getHandler().getTopestUI(), + htmlMessage, + t("faxtomail.alert.alreadyTakenBy.title"), + JOptionPane.YES_NO_CANCEL_OPTION, + JOptionPane.QUESTION_MESSAGE); } - // si on ne prend pas, le mail est en readonly - if (answer == JOptionPane.NO_OPTION) { - currentEmail.setEditable(false); + // si on annule, on délock + if (answer == JOptionPane.CANCEL_OPTION) { + result = false; + emailService.unlockEmail(topiaId); + + } else { + // sinon on ouvre + + // si on ne prend pas, le mail est en readonly + if (answer == JOptionPane.NO_OPTION) { + currentEmail.setEditable(false); + takeEmail = false; + } + // si on prend, on prend et on rend editable + else if (answer == JOptionPane.YES_OPTION) { + takeEmail = true; + currentEmail.setEditable(true); + } } - // si on prend, on prend et on rend editable - else if (answer == JOptionPane.YES_OPTION) { - FaxToMailServiceContext serviceContext = getContext().newServiceContext(); - serviceContext.getEmailService().takeEmail(currentEmail.getTopiaId(), currentUser); - currentEmail.setTakenBy(currentUser); - currentEmail.setEditable(true); - } - } // le mail est locké, on ne fait rien catch (AlreadyLockedMailException ex) { @@ -113,9 +124,19 @@ htmlMessage, t("faxtomail.alert.alreadyLockedBy.title"), JOptionPane.ERROR_MESSAGE); + } + // l'utilisateur n'a pas les droits de lecture sur le dossier + catch (FolderNotReadableException e) { + result = false; + + String htmlMessage = t("faxtomail.alert.userNotAuthorizedToReadEmail.message", e.getForbiddenFolder().getName()); + JOptionPane.showMessageDialog(getHandler().getTopestUI(), + htmlMessage, + t("faxtomail.alert.userNotAuthorizedToReadEmail.title"), + JOptionPane.ERROR_MESSAGE); + } } - return result; } @@ -125,29 +146,29 @@ if (StringUtils.isNotBlank(currentEmail.getTopiaId())) { FaxToMailServiceContext serviceContext = getContext().newServiceContext(); - Email email = serviceContext.getEmailService().addToHistory(currentEmail.getTopiaId(), - HistoryType.OPENING, - getContext().getCurrentUser(), - new Date()); + Email email = serviceContext.getEmailService().openEmail(currentEmail.getTopiaId(), + getContext().getCurrentUser(), + takeEmail); - currentEmail.setHistory(email.getHistory()); - currentEmail.setEtatAttente(email.getEtatAttente()); - currentEmail.setDemandType(email.getDemandType()); - currentEmail.setGroupedDemandes(email.getEmailGroup()); - currentEmail.setMailFolder(email.getMailFolder()); + MailFolder currentFolder = currentEmail.getMailFolder(); + MailFolder actualFolder = email.getMailFolder(); + if (!currentFolder.equals(actualFolder)) { + displayWarningMessage(t("faxtomail.alert.emailMoved.title"), + t("faxtomail.alert.emailMoved.message", + currentFolder.getName(), + actualFolder.getName(), + currentEmail.getTitle())); + } + + currentEmail.fromEntity(email); + + MailFolder folder = currentEmail.getMailFolder(); + if (currentEmail.getArchiveDate() != null || !folder.isFolderWritable()) { + currentEmail.setEditable(false); + } } + super.doAction(); } - @Override - public void postSuccessAction() { - super.postSuccessAction(); - - DemandeUIModel currentEmail = getContext().getCurrentEmail(); - MailFolder folder = currentEmail.getMailFolder(); - - if (currentEmail.getArchiveDate() != null || !folder.isFolderWritable()) { - currentEmail.setEditable(false); - } - } } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/TransmitAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/TransmitAction.java 2014-08-12 09:08:06 UTC (rev 521) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/TransmitAction.java 2014-08-12 09:24:40 UTC (rev 522) @@ -25,6 +25,8 @@ */ import static org.nuiton.i18n.I18n.t; + +import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI; import jaxx.runtime.JAXXContext; import jaxx.runtime.JAXXUtil; @@ -60,27 +62,28 @@ // suivant la condition on est soit dans le cas d'une edition de demande // soit dans le cas d'une action contextuel depuis la liste des demandes - DemandeListUI parentDemandeListUI = (DemandeListUI)getUI().getContextValue(JAXXContext.class, JAXXUtil.PARENT); + FaxToMailUI parentDemandeListUI = (FaxToMailUI) getUI().getContextValue(JAXXContext.class, JAXXUtil.PARENT); if (parentDemandeListUI != null) { + if (DemandeListUI.class.isAssignableFrom(parentDemandeListUI.getClass())) { + // appel du service pour sauver les mails + // mais il faudrai sauver tous les mails d'un seul coup + for (DemandeUIModel demande : model.getDemandeUIModels()) { + String topiaId = demande.getTopiaId(); + Email email = getContext().newServiceContext().getEmailService().getEmailById(topiaId); + email = demande.toEntity(email); + getContext().newServiceContext().getEmailService().saveEmail(email, null, Email.PROPERTY_MAIL_FOLDER); + } - // appel du service pour sauver les mails - // mais il faudrai sauver tous les mails d'un seul coup - for (DemandeUIModel demande : model.getDemandeUIModels()) { - String topiaId = demande.getTopiaId(); - Email email = getContext().newServiceContext().getEmailService().getEmailById(topiaId); - email = demande.toEntity(email); - getContext().newServiceContext().getEmailService().saveEmail(email, null, Email.PROPERTY_MAIL_FOLDER); + // appel de l'action de rechargement de la liste + getContext().getActionEngine().runInternalAction(parentDemandeListUI.getHandler(), + LoadFolderEmailsAction.class); + + } else { + DemandesUI parentUI = (DemandesUI) getUI().getContextValue(JAXXContext.class, JAXXUtil.PARENT); + DemandeUI demandeUI = (DemandeUI) parentUI.getDemandsTabPane().getSelectedComponent(); + getContext().getActionEngine().runInternalAction(demandeUI.getHandler(), + SaveDemandeAndExitAction.class); } - - // appel de l'action de rechargement de la liste - getContext().getActionEngine().runInternalAction(parentDemandeListUI.getHandler(), - LoadFolderEmailsAction.class); - - } else { - DemandesUI parentUI = (DemandesUI) getUI().getContextValue(JAXXContext.class, JAXXUtil.PARENT); - DemandeUI demandeUI = (DemandeUI) parentUI.getDemandsTabPane().getSelectedComponent(); - getContext().getActionEngine().runInternalAction(demandeUI.getHandler(), - SaveDemandeAndExitAction.class); } } } 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-08-12 09:08:06 UTC (rev 521) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx 2014-08-12 09:24:40 UTC (rev 522) @@ -81,7 +81,8 @@ <JToolBar id='topToolBar'> <ButtonDemandReplies id="demandRepliesButton" constructorParams="model"/> - <ButtonHistory id="historyButton"/> + <ButtonHistory id="historyButton" + constructorParams="model"/> <ButtonAttachment id="attachmentsButton" constructorParams="model"/> </JToolBar> 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-12 09:08:06 UTC (rev 521) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-08-12 09:24:40 UTC (rev 522) @@ -72,7 +72,9 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Date; +import java.util.HashSet; import java.util.List; +import java.util.Set; import static org.nuiton.i18n.I18n.t; @@ -194,89 +196,31 @@ */ @Override public void fromEntity(Email entity) { - fromBeanBinder.copyExcluding(entity, this, Email.PROPERTY_ATTACHMENT, Email.PROPERTY_MAIL_FOLDER); - + fromBeanBinder.copyExcluding(entity, this, Email.PROPERTY_ATTACHMENT); loadAttachments(entity); + setGroupedDemandes(entity.getEmailGroup()); } - public void fromEntity(Email entity, List<MailField> fields) { - List<String> properties = new ArrayList<String>(); - 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); + public void fromEntityExcluding(Email entity, Set<String> properties) { + boolean includeAttachment = properties.add(Email.PROPERTY_ATTACHMENT); + boolean includeDemandGroup = properties.add(Email.PROPERTY_EMAIL_GROUP); + fromBeanBinder.copyExcluding(entity, this, properties.toArray(new String[properties.size()])); + if (includeAttachment) { + loadAttachments(entity); } - if (noFields || fields.contains(MailField.PROJECT_REFERENCE)) { - properties.add(Email.PROPERTY_PROJECT_REFERENCE); + if (includeDemandGroup) { + setGroupedDemandes(entity.getEmailGroup()); } - 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); - } + } + public void fromEntityIncluding(Email entity, Set<String> properties) { fromBeanBinder.copy(entity, this, properties.toArray(new String[properties.size()])); - - if (noFields || fields.contains(MailField.ATTACHMENT)) { + if (properties.isEmpty() || properties.contains(Email.PROPERTY_ATTACHMENT)) { loadAttachments(entity); } + if (properties.isEmpty() || properties.contains(Email.PROPERTY_EMAIL_GROUP)) { + setGroupedDemandes(entity.getEmailGroup()); + } } protected void loadAttachments(Email entity) { 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-12 09:08:06 UTC (rev 521) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java 2014-08-12 09:24:40 UTC (rev 522) @@ -401,7 +401,7 @@ SaveAndOpenDialogAction action = new SaveAndOpenDialogAction(demandeUI.getHandler(), false, dialogContent, - t("faxtomail.reply.title", currentDemand.getObject()), + t("faxtomail.reply.title", currentDemand.getTitle()), new Dimension(800, 600), true); @@ -416,7 +416,7 @@ SaveAndOpenDialogAction action = new SaveAndOpenDialogAction(demandeUI.getHandler(), false, dialogContent, - t("faxtomail.searchToGroup.title", demandeUI.getModel().getObject()), + t("faxtomail.searchToGroup.title", demandeUI.getModel().getTitle()), getContext().getMainUI().getSize(), true); Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIModel.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIModel.java 2014-08-12 09:08:06 UTC (rev 521) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIModel.java 2014-08-12 09:24:40 UTC (rev 522) @@ -127,6 +127,10 @@ fireDemandRemoved(demand, i); } + public boolean containsDemand(DemandeUIModel demand) { + return demands.contains(demand); + } + public void addDemandsListener(DemandsListener listener) { listeners.add(listener); } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/ButtonHistory.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/ButtonHistory.java 2014-08-12 09:08:06 UTC (rev 521) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/ButtonHistory.java 2014-08-12 09:24:40 UTC (rev 522) @@ -26,13 +26,17 @@ import com.franciaflex.faxtomail.persistence.entities.Email; import com.franciaflex.faxtomail.persistence.entities.History; +import com.franciaflex.faxtomail.persistence.entities.Reply; import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; +import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupButton; +import org.apache.commons.collections4.CollectionUtils; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.Collection; +import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; /** @@ -42,22 +46,35 @@ */ public class ButtonHistory extends AbstractToolbarPopupButton<HistoryListUI> { - public ButtonHistory() { + private PropertyChangeListener listener = new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + Collection<History> histories = (Collection<History>) evt.getNewValue(); + setText(getButtonText(histories)); + } + }; + + public ButtonHistory(DemandeUIModel model) { setToolTipText(t("faxtomail.historyList.action.tip")); - int historySize = popup.getModel().sizeHistory(); - setText(t("faxtomail.historyList.text", historySize)); + init(model); + } - popup.getModel().addPropertyChangeListener(Email.PROPERTY_HISTORY, new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - Collection<History> history = (Collection<History>) evt.getNewValue(); - if (history != null) { - setText(t("faxtomail.historyList.text", history.size())); - } - } - }); + public String getButtonText(Collection<History> histories) { + int replyNb = CollectionUtils.size(histories); + return t("faxtomail.historyList.text", replyNb); } + public void init(DemandeUIModel model) { + if (popup.getModel() != null) { + popup.getModel().removePropertyChangeListener(Email.PROPERTY_HISTORY, listener); + } + popup.setModel(model); + if (model != null) { + popup.getModel().addPropertyChangeListener(Email.PROPERTY_HISTORY, listener); + setText(getButtonText(model != null ? model.getHistory() : null)); + } + } + @Override protected String getActionIcon() { return "view-history"; Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUI.jaxx =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUI.jaxx 2014-08-12 09:08:06 UTC (rev 521) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUI.jaxx 2014-08-12 09:24:40 UTC (rev 522) @@ -33,7 +33,7 @@ </import> <DemandeUIModel id='model' - initializer='getContextValue(DemandeUIModel.class)'/> + javaBean="null"/> <JXTitledPanel id='body'> <JScrollPane id='attachmentBodyScrollPane'> Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUIHandler.java 2014-08-12 09:08:06 UTC (rev 521) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUIHandler.java 2014-08-12 09:24:40 UTC (rev 522) @@ -84,44 +84,49 @@ protected Action sendAction; @Override - public void beforeInit(HistoryListUI ui) { - super.beforeInit(ui); - - DemandeUIModel currentEmail = getContext().getCurrentEmail(); - this.ui.setContextValue(currentEmail); - } - - @Override public void afterInit(HistoryListUI ui) { super.afterInit(ui); - JXList list = ui.getHistories(); + final JXList list = ui.getHistories(); list.setCellRenderer(new HistoryListCellRenderer()); JaxxDefaultListModel listModel = new JaxxDefaultListModel<History>(); - final List<History> histories; - if (getModel().getHistory() != null) { - histories = new ArrayList<History>(getModel().getHistory()); - } else { - histories = new ArrayList<History>(); - } - //sort histories by modification date - Collections.sort(histories, Ordering.natural().onResultOf(new Function<History, Comparable>() { - @Override - public Comparable apply(History history) { - return history.getModificationDate(); - } - })); - + List<History> histories = new ArrayList<History>(); listModel.setAllElements(histories); list.setModel(listModel); list.addHighlighter(HighlighterFactory.createAlternateStriping()); - getModel().addPropertyChangeListener(Email.PROPERTY_HISTORY, new PropertyChangeListener() { + + final PropertyChangeListener listener = new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { - Collection<History> history = (Collection<History>) evt.getNewValue(); - ((JaxxDefaultListModel) getUI().getHistories().getModel()).setAllElements(history); + Collection<History> newValue = (Collection<History>) evt.getNewValue(); + List<History> histories = new ArrayList<History>(); + if (newValue != null) { + histories.addAll(newValue); + } + //sort histories by modification date + Collections.sort(histories, Ordering.natural().onResultOf(new Function<History, Comparable>() { + @Override + public Comparable apply(History history) { + return history.getModificationDate(); + } + })); + ((JaxxDefaultListModel) getUI().getHistories().getModel()).setAllElements(histories); } + }; + getUI().addPropertyChangeListener(HistoryListUI.PROPERTY_MODEL, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + DemandeUIModel oldModel = (DemandeUIModel) evt.getOldValue(); + if (oldModel != null) { + oldModel.removePropertyChangeListener(Email.PROPERTY_HISTORY, listener); + } + DemandeUIModel newModel = (DemandeUIModel) evt.getNewValue(); + if (newModel != null) { + newModel.addPropertyChangeListener(Email.PROPERTY_HISTORY, listener); + listener.propertyChange(new PropertyChangeEvent(newModel, Email.PROPERTY_HISTORY, null, newModel.getHistory())); + } + } }); sendAction = new AbstractAction() { @@ -132,7 +137,7 @@ // AbstractToolbarPopupHandler.this.ui.dispose(); // AbstractToolbarPopupHandler.this.ui.setVisible(false); StringBuilder historyAsString = new StringBuilder(); - for (History history : histories) { + for (History history : getModel().getHistory()) { historyAsString.append(t("faxtomail.common.on.label") + " " + decorate(history.getModificationDate())) .append(" : " + JAXXUtil.getStringValue(history.getType().getLabel())); String decoratedFields = decorateFields(history.getFields()); Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorNoteUI.css =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorNoteUI.css 2014-08-12 09:08:06 UTC (rev 521) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorNoteUI.css 2014-08-12 09:24:40 UTC (rev 522) @@ -38,10 +38,10 @@ #removeButton { text: "X"; - borderPainted: { false }; + /*borderPainted: { false }; border: { null }; opaque : { false }; - background: { null }; + background: { null }; */ } #noteText { Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUI.css =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUI.css 2014-08-12 09:08:06 UTC (rev 521) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUI.css 2014-08-12 09:24:40 UTC (rev 522) @@ -34,6 +34,7 @@ #noteButton { actionIcon: note; toolTipText: "faxtomail.pdfEditor.button.addNote.tip"; + selected: true; } #crossButton { @@ -41,11 +42,16 @@ toolTipText: "faxtomail.pdfEditor.button.addCross.tip"; } -#lineButton { - actionIcon: line; - toolTipText: "faxtomail.pdfEditor.button.addLine.tip"; +#hLineButton { + actionIcon: hline; + toolTipText: "faxtomail.pdfEditor.button.addHLine.tip"; } +#vLineButton { + actionIcon: vline; + toolTipText: "faxtomail.pdfEditor.button.addVLine.tip"; +} + #highlighterButton { actionIcon: highlighter; toolTipText: "faxtomail.pdfEditor.button.addHighlighter.tip"; Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUI.jaxx =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUI.jaxx 2014-08-12 09:08:06 UTC (rev 521) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUI.jaxx 2014-08-12 09:24:40 UTC (rev 522) @@ -49,15 +49,17 @@ <JToolBar id="toolbar" constraints='BorderLayout.NORTH'> - <JButton id='noteButton' - onActionPerformed="handler.addNote()"/> - <JButton id='crossButton' - onActionPerformed="handler.addCross()"/> - <JButton id='lineButton' - onActionPerformed="handler.addLine()"/> - <JButton id='highlighterButton' - onActionPerformed="handler.addHighlighter()"/> + <JToggleButton id='noteButton' buttonGroup="actionGroup" value="NOTE"/> + <!--onActionPerformed="handler.addNote()"/>--> + <JToggleButton id='crossButton' buttonGroup="actionGroup" value="CROSS"/> + <!--onActionPerformed="handler.addCross()"/>--> + <JToggleButton id='hLineButton' buttonGroup="actionGroup" value="HLINE"/> + <JToggleButton id='vLineButton' buttonGroup="actionGroup" value="VLINE"/> + <!--onActionPerformed="handler.addLine()"/>--> + <JToggleButton id='highlighterButton' buttonGroup="actionGroup" value="HIGHLIGHTER"/> + <!--onActionPerformed="handler.addHighlighter()"/>--> + <JSeparator constructorParams="SwingConstants.VERTICAL"/> <JButton id="prevPageButton" @@ -89,7 +91,7 @@ <JScrollPane constraints='BorderLayout.CENTER'> <JPanel> <JPanel id="container" layout="{null}"> - <JImagePanel id="documentPanel"> + <JImagePanel id="documentPanel" onMouseClicked="handler.addEditionComponent(event)"> </JImagePanel> </JPanel> </JPanel> Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIHandler.java 2014-08-12 09:08:06 UTC (rev 521) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIHandler.java 2014-08-12 09:24:40 UTC (rev 522) @@ -26,14 +26,10 @@ import static org.nuiton.i18n.I18n.t; -import java.awt.Component; -import java.awt.Cursor; -import java.awt.Dimension; -import java.awt.Image; -import java.awt.Insets; -import java.awt.Rectangle; +import java.awt.*; import java.awt.event.ContainerEvent; import java.awt.event.ContainerListener; +import java.awt.event.MouseEvent; import java.awt.geom.Rectangle2D; import java.awt.image.RenderedImage; import java.beans.PropertyChangeEvent; @@ -58,6 +54,7 @@ import com.franciaflex.faxtomail.services.FaxToMailServiceContext; import jaxx.runtime.swing.ComponentMover; import jaxx.runtime.swing.ComponentResizer; +import jaxx.runtime.swing.JAXXButtonGroup; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.logging.Log; @@ -107,8 +104,20 @@ cm.setDragInsets(cr.getDragInsets()); cm.setEdgeInsets(new Insets(0, 0, 0, 0)); + final PDFEditorUIModel model = getModel(); - final PDFEditorUIModel model = getModel(); + JAXXButtonGroup actionGroup = ui.getActionGroup(); + actionGroup.addPropertyChangeListener(JAXXButtonGroup.SELECTED_VALUE_PROPERTY, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + String value = (String) evt.getNewValue(); + model.setSelectedComponent(PDFEditorUIModel.EditionComponent.valueOf(value)); + } + }); + + String value = (String) actionGroup.getSelectedValue(); + model.setSelectedComponent(PDFEditorUIModel.EditionComponent.valueOf(value)); + ui.getContainer().addContainerListener(new ContainerListener() { @Override public void componentAdded(ContainerEvent e) { @@ -256,39 +265,67 @@ } - public void addNote() { + public void addEditionComponent(MouseEvent event) { + PDFEditorUIModel.EditionComponent editionComponent = getModel().getSelectedComponent(); + switch (editionComponent) { + case NOTE: + addNote(event.getX(), event.getY()); + break; + case CROSS: + addCross(event.getX(), event.getY()); + break; + case HLINE: + addHLine(event.getX(), event.getY()); + break; + case VLINE: + addVLine(event.getX(), event.getY()); + break; + case HIGHLIGHTER: + addHighlighter(event.getX(), event.getY()); + break; + } + } + + public void addNote(int x, int y) { PDFEditorNoteUI note = new PDFEditorNoteUI(); String title = decorate(new Date()) + " - " + getContext().getCurrentUser().getTrigraph(); note.setTitle(title); - addPanel(note); + addPanel(note, x, y); } - public void addCross() { + public void addCross(int x, int y) { PDFEditorCrossUI cross = new PDFEditorCrossUI(); - addPanel(cross); + addPanel(cross, x, y); cr.registerComponent(cross); } - public void addLine() { + public void addHLine(int x, int y) { PDFEditorLineUI line = new PDFEditorLineUI(); - addPanel(line); + line.setHorizontal(true); + addPanel(line, x, y); cr.registerComponent(ComponentResizer.DIRECTION_HORIZONTAL, line); } - public void addHighlighter() { + public void addVLine(int x, int y) { + PDFEditorLineUI line = new PDFEditorLineUI(); + line.setHorizontal(false); + addPanel(line, x, y); + cr.registerComponent(ComponentResizer.DIRECTION_VERTICAL, line); + } + + public void addHighlighter(int x, int y) { PDFEditorHighlighterUI highlighter = new PDFEditorHighlighterUI(); - addPanel(highlighter); + addPanel(highlighter, x, y); cr.registerComponent(highlighter); } - protected void addPanel(JPanel panel) { + protected void addPanel(JPanel panel, int x, int y) { JPanel container = ui.getContainer(); container.add(panel, 0); Insets insets = container.getInsets(); Dimension size = panel.getPreferredSize(); - Rectangle rect = container.getVisibleRect(); - panel.setBounds(rect.x + insets.left, rect.y + insets.top, + panel.setBounds(x + insets.left, y + insets.top, size.width, size.height); container.updateUI(); Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIModel.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIModel.java 2014-08-12 09:08:06 UTC (rev 521) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIModel.java 2014-08-12 09:24:40 UTC (rev 522) @@ -54,6 +54,12 @@ protected DemandeUIModel demand; + protected EditionComponent selectedComponent; + + public static enum EditionComponent { + NOTE, CROSS, HLINE, VLINE, HIGHLIGHTER + } + public class Page { protected List<PDFEditorNoteUI> notes = new ArrayList<PDFEditorNoteUI>(); @@ -255,6 +261,14 @@ this.demand = demand; } + public EditionComponent getSelectedComponent() { + return selectedComponent; + } + + public void setSelectedComponent(EditionComponent selectedComponent) { + this.selectedComponent = selectedComponent; + } + @Override protected Attachment newEntity() { return new AttachmentImpl(); Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java 2014-08-12 09:08:06 UTC (rev 521) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java 2014-08-12 09:24:40 UTC (rev 522) @@ -121,10 +121,7 @@ models.addAll(demand.getGroupedDemandes()); for (DemandeUIModel demandeUIModel : models) { - String prefix = demandeUIModel.getObject() + " - "; - if (StringUtils.isNotBlank(demandeUIModel.getCompanyReference())) { - prefix = demandeUIModel.getCompanyReference() + " - " + prefix; - } + String prefix = demandeUIModel.getTitle(); for (Attachment attachment : demandeUIModel.getAttachment()) { ReplyAttachmentModel replyOriginalAttachmentModel = 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-12 09:08:06 UTC (rev 521) +++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-08-12 09:24:40 UTC (rev 522) @@ -30,8 +30,12 @@ faxtomail.alert.alreadyTakenBy.title=Document déjà pris faxtomail.alert.archiveConfirmation.message=<html>Êtes vous sûr de vouloir archiver cet élément ?<br/>L'archivage est définitif.</html> faxtomail.alert.archiveConfirmation.title=Confirmation de l'archivage +faxtomail.alert.emailMoved.message=<html>Depuis que vous avez chargé les éléments du dossier %1$s, l'élément<br/>%3$s<br/>a été déplacé dans le dossier %2$s.</html> +faxtomail.alert.emailMoved.title=Élément déplacé faxtomail.alert.groupConfirmation.message=<html>Êtes vous sûr de vouloir grouper les éléments<br/>%1$s et<br/>%2$s ?<br/>Le groupement est définitif.</html> faxtomail.alert.groupConfirmation.title=Confirmation du groupement +faxtomail.alert.userNotAuthorizedToReadEmail.message=Vous n'avez pas le droit de lire les éléments du dossier %s +faxtomail.alert.userNotAuthorizedToReadEmail.title=Dossier interdit faxtomail.attachment.editedFile.name=%s-annoté faxtomail.attachmentCellRenderer.text=(%s) faxtomail.attachmentEditor.action.add.tip=Ajouter une pièce jointe @@ -98,7 +102,7 @@ faxtomail.demande.firstOpened.label=Première ouverture faxtomail.demande.gamme.label=Gamme faxtomail.demande.group.button.label=Grouper -faxtomail.demande.group.successful=Groupement réussi avec l'élément %s +faxtomail.demande.group.successful=Groupement réussi faxtomail.demande.history.action.send.tip=Envoyer l'historique par email faxtomail.demande.history.send.subject=Historique de %s faxtomail.demande.lastAttachmentOpening.label=Dernière ouverture de pièce-jointe @@ -213,9 +217,11 @@ faxtomail.pdfEditor.action.validate.tip=Enregistrer les changements et fermer faxtomail.pdfEditor.askSaveBeforeLeaving.save=Les modifications apportées n'ont pas été sauvegardées. faxtomail.pdfEditor.button.addCross.tip=Ajouter une croix +faxtomail.pdfEditor.button.addHLine.tip= faxtomail.pdfEditor.button.addHighlighter.tip=Ajouter un surlignement faxtomail.pdfEditor.button.addLine.tip=Ajouter une ligne faxtomail.pdfEditor.button.addNote.tip=Ajouter une note +faxtomail.pdfEditor.button.addVLine.tip= faxtomail.pdfEditor.button.nextPage=Page suivante faxtomail.pdfEditor.button.previousPage=Page précédente faxtomail.pdfEditor.convertToPdf.error= Added: trunk/faxtomail-ui-swing/src/main/resources/icons/action-hline.png =================================================================== (Binary files differ) Property changes on: trunk/faxtomail-ui-swing/src/main/resources/icons/action-hline.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/faxtomail-ui-swing/src/main/resources/icons/action-vline.png =================================================================== (Binary files differ) Property changes on: trunk/faxtomail-ui-swing/src/main/resources/icons/action-vline.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream