This is an automated email from the git hooks/post-receive script. New change to branch feature/9096_print_only_one_content in repository faxtomail. See https://gitlab.nuiton.org/codelutin/faxtomail.git from 216e057 refs #9096 ne pas imprimer les pj inline par defaut new be551e9 refs #9096 #9100 #9104 ajout des configurations new 975a31d suppression code mort new 8e7e3b0 refs #9096 #9100 #9104 ajout des configurations dans l'admin new 08c3256 refs #9096 #9100 #9104 - impression ou non des pièces jointes de type inline - affichage des pj à la suite de l'email - affichage de la pj de conenu du mail dans le men "divers" The 4 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 08c32567afcb1b617a815f0c82b0cfe249887180 Author: Kevin Morin <morin@codelutin.com> Date: Mon Apr 3 16:52:09 2017 +0200 refs #9096 #9100 #9104 - impression ou non des pièces jointes de type inline - affichage des pj à la suite de l'email - affichage de la pj de conenu du mail dans le men "divers" commit 8e7e3b09e66516aca790e4e371999acd124cfca1 Author: Kevin Morin <morin@codelutin.com> Date: Mon Apr 3 16:50:25 2017 +0200 refs #9096 #9100 #9104 ajout des configurations dans l'admin commit 975a31d9c056b6e531e7ff12e9ff9aff4d148c9d Author: Kevin Morin <morin@codelutin.com> Date: Mon Apr 3 16:50:03 2017 +0200 suppression code mort commit be551e938bf581f1bde80f7a94f51841e2d50799 Author: Kevin Morin <morin@codelutin.com> Date: Mon Apr 3 16:48:02 2017 +0200 refs #9096 #9100 #9104 ajout des configurations Summary of changes: faxtomail-persistence/src/main/xmi/faxtomail.zargo | Bin 35918 -> 36206 bytes .../services/service/EmailServiceImpl.java | 32 +++++-- ...ttachments_mailContentWithInlineAttachments.sql | 11 +++ .../V2_4_170403_1__add_showAttachmentPreview.sql | 4 + ...ttachments_mailContentWithInlineAttachments.sql | 15 +++ .../V2_4_170403_1__add_showAttachmentPreview.sql | 5 + .../content/attachment/AttachmentCellRenderer.java | 8 -- .../content/attachment/AttachmentEditorUI.jaxx | 10 +- .../attachment/AttachmentEditorUIHandler.java | 26 ++++-- .../attachment/AttachmentEditorUIModel.java | 25 ++++- .../swing/content/attachment/AttachmentItem.jaxx | 2 +- .../content/attachment/AttachmentModelAware.java | 2 + .../swing/content/attachment/ButtonAttachment.java | 10 +- .../content/demande/DemandeListUIHandler.java | 9 +- .../ui/swing/content/demande/DemandeUIModel.java | 14 +++ .../content/pdfeditor/PDFEditorUIHandler.java | 4 - .../print/AttachmentToPrintChooserUIHandler.java | 13 ++- .../faxtomail/ui/swing/util/FaxToMailUIUtil.java | 102 ++++++++++++++++++++- .../WEB-INF/content/admin/configuration-input.jsp | 51 +++++++++++ .../src/main/webapp/js/configuration.js | 9 ++ pom.xml | 2 +- 21 files changed, 310 insertions(+), 44 deletions(-) create mode 100644 faxtomail-service/src/main/resources/db/migration/h2/V2_4_170330_2__add_mailContentType_printinlineattachments_mailContentWithInlineAttachments.sql create mode 100644 faxtomail-service/src/main/resources/db/migration/h2/V2_4_170403_1__add_showAttachmentPreview.sql create mode 100644 faxtomail-service/src/main/resources/db/migration/sqlserver/V2_4_170330_2__add_mailContentType_printinlineattachments_mailContentWithInlineAttachments.sql create mode 100644 faxtomail-service/src/main/resources/db/migration/sqlserver/V2_4_170403_1__add_showAttachmentPreview.sql -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/9096_print_only_one_content in repository faxtomail. See https://gitlab.nuiton.org/codelutin/faxtomail.git commit be551e938bf581f1bde80f7a94f51841e2d50799 Author: Kevin Morin <morin@codelutin.com> Date: Mon Apr 3 16:48:02 2017 +0200 refs #9096 #9100 #9104 ajout des configurations --- faxtomail-persistence/src/main/xmi/faxtomail.zargo | Bin 35918 -> 36206 bytes ...attachments_mailContentWithInlineAttachments.sql | 11 +++++++++++ .../h2/V2_4_170403_1__add_showAttachmentPreview.sql | 4 ++++ ...attachments_mailContentWithInlineAttachments.sql | 15 +++++++++++++++ .../V2_4_170403_1__add_showAttachmentPreview.sql | 5 +++++ pom.xml | 2 +- 6 files changed, 36 insertions(+), 1 deletion(-) diff --git a/faxtomail-persistence/src/main/xmi/faxtomail.zargo b/faxtomail-persistence/src/main/xmi/faxtomail.zargo index 87a6572..7bdf00c 100644 Binary files a/faxtomail-persistence/src/main/xmi/faxtomail.zargo and b/faxtomail-persistence/src/main/xmi/faxtomail.zargo differ diff --git a/faxtomail-service/src/main/resources/db/migration/h2/V2_4_170330_2__add_mailContentType_printinlineattachments_mailContentWithInlineAttachments.sql b/faxtomail-service/src/main/resources/db/migration/h2/V2_4_170330_2__add_mailContentType_printinlineattachments_mailContentWithInlineAttachments.sql new file mode 100644 index 0000000..5242bde --- /dev/null +++ b/faxtomail-service/src/main/resources/db/migration/h2/V2_4_170330_2__add_mailContentType_printinlineattachments_mailContentWithInlineAttachments.sql @@ -0,0 +1,11 @@ +-- add mailContentType + +alter table attachment add mailContent boolean; +update attachment set mailContent = 'f'; +update attachment set mailContent = 't' where originalFileName like 'contenu % du mail%.pdf'; + +-- add printinlineattachments and mailContentWithInlineAttachments + +alter table mailfolder add printinlineattachments boolean; +alter table mailfolder add mailContentWithInlineAttachments boolean; +update mailfolder set printinlineattachments = 't', mailContentWithInlineAttachments = 'f' where parent is null; \ No newline at end of file diff --git a/faxtomail-service/src/main/resources/db/migration/h2/V2_4_170403_1__add_showAttachmentPreview.sql b/faxtomail-service/src/main/resources/db/migration/h2/V2_4_170403_1__add_showAttachmentPreview.sql new file mode 100644 index 0000000..a3cb54e --- /dev/null +++ b/faxtomail-service/src/main/resources/db/migration/h2/V2_4_170403_1__add_showAttachmentPreview.sql @@ -0,0 +1,4 @@ +-- add showAttachmentPreview + +alter table mailfolder add showAttachmentPreview boolean; +update mailfolder set showAttachmentPreview = 'f' where parent is null; \ No newline at end of file diff --git a/faxtomail-service/src/main/resources/db/migration/sqlserver/V2_4_170330_2__add_mailContentType_printinlineattachments_mailContentWithInlineAttachments.sql b/faxtomail-service/src/main/resources/db/migration/sqlserver/V2_4_170330_2__add_mailContentType_printinlineattachments_mailContentWithInlineAttachments.sql new file mode 100644 index 0000000..fb02f0f --- /dev/null +++ b/faxtomail-service/src/main/resources/db/migration/sqlserver/V2_4_170330_2__add_mailContentType_printinlineattachments_mailContentWithInlineAttachments.sql @@ -0,0 +1,15 @@ +-- add mailContentType + +alter table attachment add mailContent bit; +GO +update attachment set mailContent = 0; +update attachment set mailContent = 1 where originalFileName like 'contenu % du mail%.pdf'; +GO + +-- add printinlineattachments and mailContentWithInlineAttachments + +alter table mailfolder add printinlineattachments bit; +alter table mailfolder add mailContentWithInlineAttachments bit; +GO +update mailfolder set printinlineattachments = 1, mailContentWithInlineAttachments = 0 where parent is null; +GO \ No newline at end of file diff --git a/faxtomail-service/src/main/resources/db/migration/sqlserver/V2_4_170403_1__add_showAttachmentPreview.sql b/faxtomail-service/src/main/resources/db/migration/sqlserver/V2_4_170403_1__add_showAttachmentPreview.sql new file mode 100644 index 0000000..487e4f5 --- /dev/null +++ b/faxtomail-service/src/main/resources/db/migration/sqlserver/V2_4_170403_1__add_showAttachmentPreview.sql @@ -0,0 +1,5 @@ +-- add showAttachmentPreview +alter table mailfolder add showAttachmentPreview bit; +GO +update mailfolder set showAttachmentPreview = 0 where parent is null; +GO \ No newline at end of file diff --git a/pom.xml b/pom.xml index fad7a54..85f87cd 100644 --- a/pom.xml +++ b/pom.xml @@ -750,7 +750,7 @@ <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox</artifactId> - <version>2.0.1</version> + <version>2.0.5</version> </dependency> <dependency> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/9096_print_only_one_content in repository faxtomail. See https://gitlab.nuiton.org/codelutin/faxtomail.git commit 975a31d9c056b6e531e7ff12e9ff9aff4d148c9d Author: Kevin Morin <morin@codelutin.com> Date: Mon Apr 3 16:50:03 2017 +0200 suppression code mort --- .../ui/swing/content/attachment/AttachmentCellRenderer.java | 8 -------- .../faxtomail/ui/swing/content/pdfeditor/PDFEditorUIHandler.java | 4 ---- 2 files changed, 12 deletions(-) diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentCellRenderer.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentCellRenderer.java index 8f0edf8..8902c33 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentCellRenderer.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentCellRenderer.java @@ -106,14 +106,6 @@ public class AttachmentCellRenderer extends DefaultTableCellRenderer { setEnabled(editable); setText(textValue); setToolTipText(toolTipTextValue); -// setBackground(null); -// setForeground(Color.BLACK); - -// if (isSelected) { -// setFont(selectedFont); -// } else { -// setFont(defaulfFont); -// } return this; } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIHandler.java index 703fee7..cb6c4b1 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIHandler.java @@ -201,10 +201,6 @@ public class PDFEditorUIHandler extends AbstractFaxToMailUIHandler<PDFEditorUIMo if (FaxToMailUIUtil.isFileAPDF(attachmentFile)) { try { -// pdDocument = PDDocument.loadLegacy(file); -// if (pdDocument.isEncrypted()) { -// pdDocument.decrypt(""); -// } pdDocument = PDDocument.load(file); model.setPageNumber(pdDocument.getNumberOfPages()); model.setCurrentPageIndex(1); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/9096_print_only_one_content in repository faxtomail. See https://gitlab.nuiton.org/codelutin/faxtomail.git commit 8e7e3b09e66516aca790e4e371999acd124cfca1 Author: Kevin Morin <morin@codelutin.com> Date: Mon Apr 3 16:50:25 2017 +0200 refs #9096 #9100 #9104 ajout des configurations dans l'admin --- .../WEB-INF/content/admin/configuration-input.jsp | 51 ++++++++++++++++++++++ .../src/main/webapp/js/configuration.js | 9 ++++ 2 files changed, 60 insertions(+) diff --git a/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/configuration-input.jsp b/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/configuration-input.jsp index f4127e0..243f845 100644 --- a/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/configuration-input.jsp +++ b/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/configuration-input.jsp @@ -480,6 +480,23 @@ ({{parentScopeValues.printActionEqualTakeOnlyIfNotTaken ? 'Oui' : 'Non'}}) </label> </div> + + <div class="form-group"> + <label class="control-label">Par défaut, imprimer aussi les images incluses dans le mail séparément ?</label><br /> + <label class="radio-inline"> + <input type="radio" + ng-model="selectedMailFolder.printInlineAttachments" ng-value="true"> oui + </label> + <label class="radio-inline"> + <input type="radio" + ng-model="selectedMailFolder.printInlineAttachments" ng-value="false"> non + </label> + <label class="radio-inline" ng-if="selectedMailFolder.$parent"> + <input type="radio" + ng-model="selectedMailFolder.printInlineAttachments" ng-value="undefined"> hériter du dossier parent + ({{parentScopeValues.printInlineAttachments ? 'Oui' : 'Non'}}) + </label> + </div> <div class="form-group"> <label class="control-label">Colorer les demandes invalides dans la listes ?</label><br /> @@ -567,6 +584,40 @@ </div> <div class="form-group"> + <label class="control-label">Afficher les aperçus des pièces jointes à la suite du mail ?</label><br /> + <label class="radio-inline"> + <input type="radio" + ng-model="selectedMailFolder.showAttachmentPreview" ng-value="true"> oui + </label> + <label class="radio-inline"> + <input type="radio" + ng-model="selectedMailFolder.showAttachmentPreview" ng-value="false"> non + </label> + <label class="radio-inline" ng-if="selectedMailFolder.$parent"> + <input type="radio" + ng-model="selectedMailFolder.showAttachmentPreview" ng-value="undefined"> hériter du dossier parent + ({{parentScopeValues.showAttachmentPreview ? 'Oui' : 'Non'}}) + </label> + </div> + + <div class="form-group"> + <label class="control-label">Regrouper la pièce-jointe de contenu du mail dans la partie "Divers" ?</label><br /> + <label class="radio-inline"> + <input type="radio" + ng-model="selectedMailFolder.mailContentWithInlineAttachments" ng-value="true"> oui + </label> + <label class="radio-inline"> + <input type="radio" + ng-model="selectedMailFolder.mailContentWithInlineAttachments" ng-value="false"> non + </label> + <label class="radio-inline" ng-if="selectedMailFolder.$parent"> + <input type="radio" + ng-model="selectedMailFolder.mailContentWithInlineAttachments" ng-value="undefined"> hériter du dossier parent + ({{parentScopeValues.mailContentWithInlineAttachments ? 'Oui' : 'Non'}}) + </label> + </div> + + <div class="form-group"> <label class="control-label">Afficher l'aide sur le message à la fermeture d'un élément non enregistré ?</label><br /> <label class="radio-inline"> <input type="radio" diff --git a/faxtomail-ui-web/src/main/webapp/js/configuration.js b/faxtomail-ui-web/src/main/webapp/js/configuration.js index c603c50..e51f027 100644 --- a/faxtomail-ui-web/src/main/webapp/js/configuration.js +++ b/faxtomail-ui-web/src/main/webapp/js/configuration.js @@ -879,12 +879,21 @@ ConfigurationModule.controller('ConfigurationTreeController', ['$scope', '$windo if (angular.isUndefined($scope.parentScopeValues.printActionEqualTakeOnlyIfNotTaken)) { $scope.parentScopeValues.printActionEqualTakeOnlyIfNotTaken = folder.printActionEqualTakeOnlyIfNotTaken; } + if (angular.isUndefined($scope.parentScopeValues.printInlineAttachments)) { + $scope.parentScopeValues.printInlineAttachments = folder.printInlineAttachments; + } if (angular.isUndefined($scope.parentScopeValues.lockedDemandsOpenableInReadOnly)) { $scope.parentScopeValues.lockedDemandsOpenableInReadOnly = folder.lockedDemandsOpenableInReadOnly; } if (angular.isUndefined($scope.parentScopeValues.canViewOriginalAttachments)) { $scope.parentScopeValues.canViewOriginalAttachments = folder.canViewOriginalAttachments; } + if (angular.isUndefined($scope.parentScopeValues.mailContentWithInlineAttachments)) { + $scope.parentScopeValues.mailContentWithInlineAttachments = folder.mailContentWithInlineAttachments; + } + if (angular.isUndefined($scope.parentScopeValues.showAttachmentPreview)) { + $scope.parentScopeValues.showAttachmentPreview = folder.showAttachmentPreview; + } if (angular.isUndefined($scope.parentScopeValues.mustTakeToEditDemand)) { $scope.parentScopeValues.mustTakeToEditDemand = folder.mustTakeToEditDemand; } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/9096_print_only_one_content in repository faxtomail. See https://gitlab.nuiton.org/codelutin/faxtomail.git commit 08c32567afcb1b617a815f0c82b0cfe249887180 Author: Kevin Morin <morin@codelutin.com> Date: Mon Apr 3 16:52:09 2017 +0200 refs #9096 #9100 #9104 - impression ou non des pièces jointes de type inline - affichage des pj à la suite de l'email - affichage de la pj de conenu du mail dans le men "divers" --- .../services/service/EmailServiceImpl.java | 32 +++++-- .../content/attachment/AttachmentEditorUI.jaxx | 10 +- .../attachment/AttachmentEditorUIHandler.java | 26 ++++-- .../attachment/AttachmentEditorUIModel.java | 25 ++++- .../swing/content/attachment/AttachmentItem.jaxx | 2 +- .../content/attachment/AttachmentModelAware.java | 2 + .../swing/content/attachment/ButtonAttachment.java | 10 +- .../content/demande/DemandeListUIHandler.java | 9 +- .../ui/swing/content/demande/DemandeUIModel.java | 14 +++ .../print/AttachmentToPrintChooserUIHandler.java | 13 ++- .../faxtomail/ui/swing/util/FaxToMailUIUtil.java | 102 ++++++++++++++++++++- 11 files changed, 214 insertions(+), 31 deletions(-) diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java index 09dc4d3..be24ec8 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java @@ -1904,6 +1904,7 @@ public class EmailServiceImpl extends FaxToMailServiceSupport implements EmailSe name = t("faxtomail.email.content.attachment.plainFileName"); } Attachment attachment = convertTextToPdf(content, name); + attachment.setMailContent(decomposingForwardedEmail == 0); attachments.add(attachment); } @@ -2010,6 +2011,10 @@ public class EmailServiceImpl extends FaxToMailServiceSupport implements EmailSe if (decomposingForwardedEmail > 0) { plainTextFileName += decomposingForwardedEmail; } + String htmlFileName = t("faxtomail.email.content.attachment.htmlFileName"); + if (decomposingForwardedEmail > 0) { + htmlFileName += decomposingForwardedEmail; + } List<Attachment> attachments = new ArrayList<>(); if (message.isMimeType("multipart/*")) { @@ -2020,17 +2025,15 @@ public class EmailServiceImpl extends FaxToMailServiceSupport implements EmailSe if (log.isDebugEnabled()) { log.debug("Converting html content to pdf : " + message.getSubject()); } - String htmlFileName = t("faxtomail.email.content.attachment.htmlFileName"); - if (decomposingForwardedEmail > 0) { - htmlFileName += decomposingForwardedEmail; - } Attachment attachment = convertHTMLToPdf(attachments, htmlContent, htmlFileName); if (attachment != null) { - //remove text plain attachement if exists, to avoid having twice the mail content in the attachments + attachment.setAddedByUser(false); + attachment.setMailContent(true); + //remove text plain attachement if exists, to avoid having twice the mail content in the attachments for (Attachment a : attachments) { - if (plainTextFileName.equals(a.getOriginalFileName())) { + if (plainTextFileName.equals(FileUtil.basename(a.getOriginalFileName(), ".pdf"))) { attachments.remove(a); break; } @@ -2044,8 +2047,20 @@ public class EmailServiceImpl extends FaxToMailServiceSupport implements EmailSe String content = FaxToMailServiceUtils.getTextFromMessage(message); if (StringUtils.isNotBlank(content)) { - Attachment attachment = convertTextToPdf(content, plainTextFileName); - attachments.add(0, attachment); + boolean alreadyHtmlContent = false; + //remove html attachement if exists, to avoid having twice the mail content in the attachments + for (Attachment a : attachments) { + if (htmlFileName.equals(FileUtil.basename(a.getOriginalFileName(), ".pdf"))) { + alreadyHtmlContent = true; + break; + } + } + if (!alreadyHtmlContent) { + Attachment attachment = convertTextToPdf(content, plainTextFileName); + attachment.setAddedByUser(false); + attachment.setMailContent(true); + attachments.add(0, attachment); + } } //directly an attachment @@ -2064,6 +2079,7 @@ public class EmailServiceImpl extends FaxToMailServiceSupport implements EmailSe // create new attachment Attachment attachment = new AttachmentImpl(); attachment.setAddedByUser(false); + attachment.setMailContent(false); AttachmentFile attachmentFile = getAttachmentFileFromStream(dh.getInputStream()); attachmentFile.setFilename(fileName); attachment.setOriginalFile(attachmentFile); diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUI.jaxx b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUI.jaxx index f1fb63f..57b8829 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUI.jaxx +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUI.jaxx @@ -64,8 +64,7 @@ <JLabel id='noAttachmentsLabel' constraints="BorderLayout.NORTH"/> - <Table fill="both" - constraints="BorderLayout.CENTER"> + <Table fill="both" constraints="BorderLayout.CENTER"> <row> <cell weightx="1.0"> @@ -75,14 +74,15 @@ </row> <row> - <cell> + <cell weightx="1.0"> <HidorButton id='inlineAttachmentsHidor'/> </cell> </row> <row> - <cell> - <JXTable id='inlineAttachments'/> + <cell weightx="1.0"> + <JXTable id='inlineAttachments' + onMouseClicked='handler.autoSelectRowInTable(event, attachmentsPopup)'/> </cell> </row> diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUIHandler.java index 512a73a..35bbb1b 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUIHandler.java @@ -90,7 +90,13 @@ public class AttachmentEditorUIHandler extends AbstractToolbarPopupHandler<Attac public void propertyChange(PropertyChangeEvent evt) { AbstractTableModel tableModel = (AbstractTableModel) getUI().getAttachments().getModel(); tableModel.fireTableDataChanged(); - tableModel = (AbstractTableModel) getUI().getInlineAttachments().getModel(); + } + }); + + getModel().addPropertyChangeListener(AttachmentEditorUIModel.PROPERTY_INLINE_ATTACHMENTS, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + AbstractTableModel tableModel = (AbstractTableModel) getUI().getInlineAttachments().getModel(); tableModel.fireTableDataChanged(); } }); @@ -153,8 +159,18 @@ public class AttachmentEditorUIHandler extends AbstractToolbarPopupHandler<Attac return null; } - public void onLabelClicked(MouseEvent event, Attachment attachment) { - if (event.getClickCount() == 2) { + @Override + public void autoSelectRowInTable(MouseEvent event, JPopupMenu popup) { + super.autoSelectRowInTable(event, popup); + + if (event.getClickCount() == 2 && SwingUtilities.isLeftMouseButton(event)) { + Point p = event.getPoint(); + JXTable source = (JXTable) event.getSource(); + // get the row index at this point + int rowIndex = source.rowAtPoint(p); + int modelRowIndex = rowIndex == -1 ? -1 : source.convertRowIndexToModel(rowIndex); + + Attachment attachment = (Attachment) source.getModel().getValueAt(modelRowIndex, 0); if (getModel().isEditable()) { editAttachment(attachment); } else { @@ -180,18 +196,16 @@ public class AttachmentEditorUIHandler extends AbstractToolbarPopupHandler<Attac } public void editAttachment(Attachment attachment) { - OpenAttachmentAction openAttachmentAction = new OpenAttachmentAction(this); AttachmentEditorUIModel model = getModel(); if (model.isEditable() && FaxToMailUIUtil.isFileTypeEditable(attachment.getOriginalFileName())) { - getContext().closeSecondaryFrame(); - EditAttachmentAction editAttachmentAction = new EditAttachmentAction(this, attachment); // run Internal to prevent multiple successive execution (#5668) getContext().getActionEngine().runAction(editAttachmentAction); } else if (attachment.getEditedFileName() != null) { + OpenAttachmentAction openAttachmentAction = new OpenAttachmentAction(this); openAttachmentAction.setAttachment(attachment, false); // run Internal to prevent multiple successive execution (#5668) getContext().getActionEngine().runAction(openAttachmentAction); diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUIModel.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUIModel.java index 2f06150..09f539b 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUIModel.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUIModel.java @@ -47,6 +47,7 @@ public class AttachmentEditorUIModel extends AbstractFaxToMailBeanUIModel<Attach //public static final String PROPERTY_FILE = "file"; public static final String PROPERTY_EDITABLE = "editable"; public static final String PROPERTY_CAN_VIEW_ORIGINAL_ATTACHMENTS = "canViewOriginalAttachments"; + public static final String PROPERTY_MAIL_CONTENT_AS_INLINE_ATTACHMENT = "mailContentAsInlineAttachment"; public static final String PROPERTY_INLINE_ATTACHMENTS = "inlineAttachments"; public static final String PROPERTY_SELECTED_ATTACHMENT = "selectedAttachment"; @@ -69,6 +70,14 @@ public class AttachmentEditorUIModel extends AbstractFaxToMailBeanUIModel<Attach return o1.isLessImportant() ? 1 : -1; } + if (o1.isInlineAttachment() ^ o2.isInlineAttachment()) { + return o1.isInlineAttachment() ? 1 : -1; + } + + if (o1.isMailContent() ^ o2.isMailContent()) { + return o1.isMailContent() ? 1 : -1; + } + return ObjectUtils.compare(StringUtils.lowerCase(o1.getOriginalFileName()), StringUtils.lowerCase(o2.getOriginalFileName())); } @@ -79,6 +88,8 @@ public class AttachmentEditorUIModel extends AbstractFaxToMailBeanUIModel<Attach protected boolean canViewOriginalAttachments; + protected boolean mailContentAsInlineAttachment; + protected final List<Attachment> attachments = new ArrayList<Attachment>(); protected final List<Attachment> inlineAttachments = new ArrayList<Attachment>(); @@ -117,6 +128,16 @@ public class AttachmentEditorUIModel extends AbstractFaxToMailBeanUIModel<Attach firePropertyChange(PROPERTY_CAN_VIEW_ORIGINAL_ATTACHMENTS, oldValue, canViewOriginalAttachments); } + public boolean isMailContentAsInlineAttachment() { + return mailContentAsInlineAttachment; + } + + public void setMailContentAsInlineAttachment(boolean mailContentAsInlineAttachment) { + Object oldValue = isMailContentAsInlineAttachment(); + this.mailContentAsInlineAttachment = mailContentAsInlineAttachment; + firePropertyChange(PROPERTY_MAIL_CONTENT_AS_INLINE_ATTACHMENT, oldValue, mailContentAsInlineAttachment); + } + public List<Attachment> getAttachment() { return attachments; } @@ -150,13 +171,13 @@ public class AttachmentEditorUIModel extends AbstractFaxToMailBeanUIModel<Attach inlineAttachments.addAll(Collections2.filter(attachments, new Predicate<Attachment>() { @Override public boolean apply(Attachment input) { - return input.isInlineAttachment(); + return input.isInlineAttachment() || mailContentAsInlineAttachment && input.isMailContent(); } })); this.attachments.addAll(attachments); - if (!inlineAttachments.isEmpty()) { + if (inlineAttachments.size() > 1) { this.attachments.removeAll(inlineAttachments); } else { diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentItem.jaxx b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentItem.jaxx index 31aa1b6..44fd486 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentItem.jaxx +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentItem.jaxx @@ -40,7 +40,7 @@ <Boolean id="originalViewable" javaBean="null"/> - <JLabel id='attachmentNameLabel' constraints='BorderLayout.CENTER' onMouseClicked="handler.onLabelClicked(event, attachment)"/> + <JLabel id='attachmentNameLabel' constraints='BorderLayout.CENTER'/> <JToolBar id='toolbar' constraints='BorderLayout.EAST'> <JButton id='openOriginalAttachmentButton' diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentModelAware.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentModelAware.java index 61e8e3d..ac4e375 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentModelAware.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentModelAware.java @@ -48,4 +48,6 @@ public interface AttachmentModelAware extends Serializable { boolean isCanViewOriginalAttachments(); + boolean isMailContentAsInlineAttachment(); + } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/ButtonAttachment.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/ButtonAttachment.java index 9f0ea1b..20a64d2 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/ButtonAttachment.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/ButtonAttachment.java @@ -98,10 +98,14 @@ public class ButtonAttachment extends AbstractToolbarPopupButton<AttachmentEdito public void init(AttachmentModelAware model) { attachmentModelAware = model; + + popup.getModel().setCanViewOriginalAttachments(model != null && model.isCanViewOriginalAttachments()); + popup.getModel().setMailContentAsInlineAttachment(model != null && model.isMailContentAsInlineAttachment()); + popup.getModel().removePropertyChangeListener(AttachmentModelAware.PROPERTY_ATTACHMENT, listener); popup.getModel().fromEntity(model); popup.getModel().addPropertyChangeListener(AttachmentModelAware.PROPERTY_ATTACHMENT, listener); - popup.getModel().setCanViewOriginalAttachments(model != null && model.isCanViewOriginalAttachments()); + setText(getButtonText(model != null ? model.getAttachment() : null)); } @@ -113,10 +117,6 @@ public class ButtonAttachment extends AbstractToolbarPopupButton<AttachmentEdito popup.getModel().setEditable(editable); } - public void setCanViewOriginalAttachments(boolean canViewOriginalAttachments) { - popup.getModel().setCanViewOriginalAttachments(canViewOriginalAttachments); - } - @Override public void onCloseUI() { super.onCloseUI(); diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java index a5ea2b0..dc8d1d6 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java @@ -872,8 +872,15 @@ public class DemandeListUIHandler extends AbstractFaxToMailDemandListHandler<Dem attachmentToPrints.put(demandeUIModel, null); } else { + + selectedFolder = model.getSelectedFolder(); + while (selectedFolder.getParent() != null && selectedFolder.getPrintInlineAttachments() == null) { + selectedFolder = selectedFolder.getParent(); + } + boolean printInlineAttachment = Boolean.TRUE.equals(selectedFolder.getPrintInlineAttachments()); + for (Attachment attachment : attachments) { - if (!attachment.isInlineAttachment()) { + if (printInlineAttachment || !attachment.isInlineAttachment()) { // force lazy loading // TODO kmorin 20140813 action ? FaxToMailUIUtil.forceAttachmentFileLoading(getContext(), attachment); diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java index 5f85f42..55006fb 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java @@ -126,6 +126,8 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU protected Boolean canViewOriginalAttachments; + protected Boolean mailContentAsInlineAttachment; + protected static final Binder<DemandeUIModel, Email> toBeanBinder = BinderFactory.newBinder(DemandeUIModel.class, Email.class); @@ -629,6 +631,18 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU return Boolean.TRUE.equals(canViewOriginalAttachments); } + @Override + public boolean isMailContentAsInlineAttachment() { + if (mailContentAsInlineAttachment == null) { + MailFolder folder = getMailFolder(); + while (folder.getParent() != null && folder.getMailContentWithInlineAttachments() == null) { + folder = folder.getParent(); + } + mailContentAsInlineAttachment = folder.getMailContentWithInlineAttachments(); + } + return Boolean.TRUE.equals(mailContentAsInlineAttachment); + } + public void setAttachment(List<Attachment> attachment) { Object oldValue = new ArrayList<Attachment>(getAttachment()); attachments.clear(); diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/print/AttachmentToPrintChooserUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/print/AttachmentToPrintChooserUIHandler.java index a4c29fb..283a497 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/print/AttachmentToPrintChooserUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/print/AttachmentToPrintChooserUIHandler.java @@ -27,6 +27,7 @@ package com.franciaflex.faxtomail.ui.swing.content.print; import com.franciaflex.faxtomail.persistence.entities.Attachment; import com.franciaflex.faxtomail.persistence.entities.AttachmentFile; import com.franciaflex.faxtomail.persistence.entities.Email; +import com.franciaflex.faxtomail.persistence.entities.MailFolder; import com.franciaflex.faxtomail.services.FaxToMailServiceContext; import com.franciaflex.faxtomail.services.service.EmailService; import com.franciaflex.faxtomail.ui.swing.actions.PrintOnDefaultPrinterAction; @@ -54,6 +55,8 @@ public class AttachmentToPrintChooserUIHandler extends AbstractFaxToMailUIHandle private static final Log log = LogFactory.getLog(AttachmentToPrintChooserUIHandler.class); + private boolean printInlineAttachment; + @Override public void afterInit(AttachmentToPrintChooserUI attachmentToPrintChooserUI) { initUI(attachmentToPrintChooserUI); @@ -61,6 +64,12 @@ public class AttachmentToPrintChooserUIHandler extends AbstractFaxToMailUIHandle AttachmentToPrintChooserUIModel model = getModel(); DemandeUIModel demand = model.getDemand(); + MailFolder folder = demand.getMailFolder(); + while (folder.getParent() != null && folder.getPrintInlineAttachments() == null) { + folder = folder.getParent(); + } + printInlineAttachment = Boolean.TRUE.equals(folder.getPrintInlineAttachments()); + // add demand details FaxToMailServiceContext serviceContext = getContext().newServiceContext(); EmailService emailService = serviceContext.getEmailService(); @@ -104,8 +113,8 @@ public class AttachmentToPrintChooserUIHandler extends AbstractFaxToMailUIHandle } String attachmentName = attachmentFile.getFilename(); boolean printable = FaxToMailUIUtil.isFileTypeEditable(attachmentName); - - JCheckBox checkBox = new JCheckBox(attachmentName, printable && !attachment.isInlineAttachment()); + boolean selected = (printInlineAttachment || !attachment.isInlineAttachment()) && printable; + JCheckBox checkBox = new JCheckBox(attachmentName, selected); checkBox.setEnabled(printable); ui.getAttachmentPanel().add(checkBox); diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java index 055e9e6..78e7b8a 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java @@ -56,6 +56,7 @@ import jaxx.runtime.JAXXUtil; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.Predicate; import org.apache.commons.io.Charsets; +import org.apache.commons.io.FileUtils; import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; @@ -72,6 +73,7 @@ import org.nuiton.util.StringUtil; import javax.media.jai.PlanarImage; import javax.print.attribute.HashPrintRequestAttributeSet; import javax.print.attribute.PrintRequestAttributeSet; +import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.Icon; import javax.swing.JEditorPane; @@ -92,6 +94,7 @@ import java.awt.Component; import java.awt.Desktop; import java.awt.Font; import java.awt.Graphics; +import java.awt.Image; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.image.BufferedImage; @@ -398,6 +401,18 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { } } } + + MailFolder mailFolder = demandeUIModel.getMailFolder(); + while (mailFolder.getParent() != null && mailFolder.getShowAttachmentPreview() == null) { + mailFolder = mailFolder.getParent(); + } + if (Boolean.TRUE.equals(mailFolder.getShowAttachmentPreview())) { + for (Attachment attachment : demandeUIModel.getAttachment()) { + if (!attachment.isInlineAttachment() && !attachment.isMailContent() && !attachment.isAddedByUser()) { + addAttachmentPane(handler, textPanePanel, attachment); + } + } + } } /** @@ -483,7 +498,7 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { * @return true if file has been printed, false otherwise */ public static boolean printText(String printName, String text, boolean defaultPrinter) { - boolean result = false; + boolean result; FileInputStream fileInputStream = null; ByteArrayInputStream byteArrayInputStream = null; @@ -892,6 +907,91 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { return textPane; } + protected static void addAttachmentPane(final DemandeUIHandler handler, + JPanel textPanePanel, + Attachment attachment) { + + if (isFileTypeEditable(attachment.getOriginalFileName())) { + forceAttachmentFileLoading(handler.getContext(), attachment); + final AttachmentFile originalAttachmentFile = attachment.getOriginalFile(); + final File originalFile = originalAttachmentFile.getFile(); + + Box box = Box.createVerticalBox(); + box.setBorder(BorderFactory.createTitledBorder(attachment.getOriginalFileName())); +// box.addMouseListener(new MouseAdapter() { +// +// @Override +// public void mouseClicked(MouseEvent e) { +// if (SwingUtilities.isLeftMouseButton(e) && e.getClickCount() == 2) { +// openFile(handler.getContext(), originalAttachmentFile); +// } +// } +// }); + + PDDocument pdDocument = null; + try { + if (isFileAPDF(originalAttachmentFile)) { + pdDocument = PDDocument.load(originalFile); + PDFRenderer renderer = new PDFRenderer(pdDocument); + for (int i = 0 ; i < pdDocument.getNumberOfPages() ; i++) { + JImagePanel imagePanel = new JImagePanel(); + imagePanel.setScaleImageToFitPanel(true); + imagePanel.setImage(renderer.renderImage(i)); + box.add(imagePanel); + box.add(Box.createVerticalStrut(3)); + } + + } else if (isFileATif(originalAttachmentFile)) { + FileInputStream fis = new FileInputStream(originalFile); + try { + FileChannel channel = fis.getChannel(); + ByteBuffer buffer = ByteBuffer.allocate((int) channel.size()); + channel.read(buffer); + SeekableStream stream = new ByteArraySeekableStream(buffer.array()); + String[] names = ImageCodec.getDecoderNames(stream); + ImageDecoder tifImageDecoder = ImageCodec.createImageDecoder(names[0], stream, null); + + for (int i = 0 ; i < tifImageDecoder.getNumPages() ; i++) { + RenderedImage renderedImage = tifImageDecoder.decodeAsRenderedImage(i); + Image awtImage = PlanarImage.wrapRenderedImage(renderedImage).getAsBufferedImage(); + JImagePanel imagePanel = new JImagePanel(); + imagePanel.setScaleImageToFitPanel(true); + imagePanel.setImage(awtImage); + box.add(imagePanel); + box.add(Box.createVerticalStrut(3)); + } + + } finally { + IOUtils.closeQuietly(fis); + } + + } else if (isFileATxt(originalAttachmentFile)) { + JTextPane textPane = new JTextPane(); + textPane.setText(FileUtils.readFileToString(originalFile)); + box.add(textPane); + + } else { + JImagePanel imagePanel = new JImagePanel(); + imagePanel.setScaleImageToFitPanel(true); + imagePanel.setImage(originalFile); + box.add(imagePanel); + } + + box.setAlignmentY(Component.TOP_ALIGNMENT); + textPanePanel.add(box); + + } catch (IOException e) { + if (log.isErrorEnabled()) { + log.error("Error while reading the file " + originalFile, e); + } + } finally { + if (pdDocument != null) { + IOUtils.closeQuietly(pdDocument); + } + } + } + } + public static String getQuotedReplyContent(String signing, String receptionDate, String sender, String originalEmail) { String quotedReply = t("faxtomail.reply.message", signing, -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm