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>.