branch feature/7714 created (now 9559e07)
This is an automated email from the git hooks/post-receive script. New change to branch feature/7714 in repository faxtomail. See http://git.codelutin.com/faxtomail.git at 9559e07 gestion du cas où plusieurs parties text/plain seraient dans le mail (refs #7714) This branch includes the following new commits: new d688262 affichage des différentes parties text/html de l'email à la suite (refs #7714) new 9559e07 gestion du cas où plusieurs parties text/plain seraient dans le mail (refs #7714) The 2 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 9559e072d6e41b8349c4a985c3e9e1f4b47324c4 Author: Kevin Morin <morin@codelutin.com> Date: Thu Nov 12 16:23:40 2015 +0100 gestion du cas où plusieurs parties text/plain seraient dans le mail (refs #7714) commit d688262473ada9fa99292148e62a77a01bf66f3d Author: Kevin Morin <morin@codelutin.com> Date: Thu Nov 12 16:10:48 2015 +0100 affichage des différentes parties text/html de l'email à la suite (refs #7714) -- 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/7714 in repository faxtomail. See http://git.codelutin.com/faxtomail.git commit d688262473ada9fa99292148e62a77a01bf66f3d Author: Kevin Morin <morin@codelutin.com> Date: Thu Nov 12 16:10:48 2015 +0100 affichage des différentes parties text/html de l'email à la suite (refs #7714) --- .../ui/swing/content/demande/DemandeUI.css | 4 - .../ui/swing/content/demande/DemandeUI.jaxx | 6 +- .../ui/swing/content/demande/DemandeUIHandler.java | 4 +- .../ui/swing/content/demande/DemandeUIModel.java | 17 ++- .../faxtomail/ui/swing/util/FaxToMailUIUtil.java | 133 +++++++++++++-------- 5 files changed, 99 insertions(+), 65 deletions(-) diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css index 7661cfd..6b33800 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css @@ -191,10 +191,6 @@ JTextField, JXTable, BeanFilterableComboBox, #commentField, ButtonAttachment, Bu verticalAlignment: { SwingConstants.TOP }; } -#mailBodyField { - editable: false; -} - .text-row { layout: { new FlowLayout(FlowLayout.LEADING) }; } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx index 82b420c..4fb811c 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx @@ -43,6 +43,7 @@ org.jdesktop.swingx.JXTitledPanel org.jdesktop.swingx.JXTable + javax.swing.BoxLayout javax.swing.ListSelectionModel javax.swing.SwingConstants @@ -312,8 +313,9 @@ <!--</row>--> <row> <cell weighty="1" columns="2"> - <JScrollPane id='mailBodyPane'> - <JTextPane id='mailBodyField'/> + <JScrollPane id='mailBodyScrollPane'> + <JPanel id="mailBodyPanel" layout="{new BoxLayout(mailBodyPanel, BoxLayout.PAGE_AXIS)}"> + </JPanel> </JScrollPane> </cell> </row> diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java index 2455bf7..647ecb5 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java @@ -208,8 +208,8 @@ public class DemandeUIHandler extends AbstractFaxToMailUIHandler<DemandeUIModel, } initBeanFilterableComboBox(ui.getWaitingStateComboBox(), waitingStates, model.getWaitingState()); - JTextPane editor = ui.getMailBodyField(); - FaxToMailUIUtil.setEmailContentInTextPane(this, editor, model); + JPanel editorPanel = ui.getMailBodyPanel(); + FaxToMailUIUtil.setEmailContentInTextPane(this, model, editorPanel); // init table final JXTable table = ui.getRangeTable(); 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 1c0ffa9..bc22fc0 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 @@ -115,7 +115,7 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU protected boolean editable = true; - protected String htmlContent; + protected List<String> htmlContents; protected String plainContent; @@ -342,11 +342,11 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU return plainContent; } - public String getHtmlContent() { - if (htmlContent == null) { + public List<String> getHtmlContent() { + if (htmlContents == null) { decomposeEmail(); } - return htmlContent; + return htmlContents; } public void setOriginalEmail(OriginalEmail originalEmail) { @@ -966,14 +966,21 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU if (bp.isMimeType("text/plain")) { plainContent = content; + } else { - htmlContent = content; + if (htmlContents == null) { + htmlContents = new ArrayList<String>(); + } + + htmlContents.add(content); + } // if it is multipart part, decompose it } else if (bp.isMimeType("multipart/*")) { decomposeMultipartEmail(bp); } + } } 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 ee33699..5e0e049 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 @@ -340,64 +340,22 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { return EDITABLE_EXTENSIONS.contains(extension.toUpperCase()); } - public static void setEmailContentInTextPane(DemandeUIHandler handler, JTextPane textPane, DemandeUIModel demandeUIModel) { - String content = demandeUIModel.getHtmlContent(); - if (content != null) { - textPane.setContentType("text/html"); - HTMLEditorKit htmlEditorKit = new HTMLEditorKit(); - textPane.setEditorKit(htmlEditorKit); - - textPane.putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, true); - Font font = new Font(Font.MONOSPACED, Font.PLAIN, 16); - textPane.setFont(font); - - textPane.addHyperlinkListener(new HyperlinkListener() { - @Override - public void hyperlinkUpdate(HyperlinkEvent e) { - if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { - FaxToMailUIUtil.openLink(e.getURL()); - } - } - }); - - // the meta tag makes the content is not displayed - content = content.replaceAll("<meta (.*?)>(</meta>)?", ""); + public static void setEmailContentInTextPane(DemandeUIHandler handler, + DemandeUIModel demandeUIModel, + JPanel textPanePanel) { - if (log.isTraceEnabled()) { - log.trace("Content before mail = " + content); - } + List<String> contents = demandeUIModel.getHtmlContent(); - for (Attachment attachment : demandeUIModel.getAttachment()) { - String key = attachment.getContentId(); - if (key == null) { - key = attachment.getOriginalFileName(); - } - - // get file content - forceAttachmentFileLoading(handler.getContext(), attachment); - AttachmentFile attachmentFile = attachment.getOriginalFile(); - File file = attachmentFile.getFile(); - - // replace the inline attachments with the extracted attachment file url - // match les patterns: - // <td background="cid:bg.gif" height="52"> - // <img border=0 src="cid:bg.gif" /> - // <img src='cid:5e9ef859-ea65-4f9b-a9fa-30d4a2c5837c' - content = content.replaceAll("(\\w+)=([\"'])cid:" + Pattern.quote(key) + "([\"'])", "$1=$2" + file.toURI() + "$3"); - - if (log.isDebugEnabled()) { - log.debug("Mapping attachment id " + key + " to file " + file.toURI()); - } - } - - if (log.isTraceEnabled()) { - log.trace("Content after mail = " + content); + if (contents != null) { + for (String content : contents) { + addHtmlTextPane(handler, demandeUIModel, textPanePanel, content); } } else { - content = demandeUIModel.getPlainContent(); + JTextPane textPane = new JTextPane(); + textPane.setText(demandeUIModel.getPlainContent()); + textPanePanel.add(textPane);e } - textPane.setText(content); } /** @@ -814,4 +772,75 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { return demandType != null && FaxToMailServiceUtils.contains(demandType.getRequiredFields(), MailField.RANGE_ROW); } + protected static void addHtmlTextPane(DemandeUIHandler handler, + DemandeUIModel demandeUIModel, + JPanel textPanePanel, + String content) { + + JTextPane textPane = createHtmlTextPane(); + + // the meta tag makes the content is not displayed + content = content.replaceAll("<meta (.*?)>(</meta>)?", ""); + + if (log.isTraceEnabled()) { + log.trace("Content before mail = " + content); + } + + for (Attachment attachment : demandeUIModel.getAttachment()) { + String key = attachment.getContentId(); + if (key == null) { + key = attachment.getOriginalFileName(); + } + + // get file content + forceAttachmentFileLoading(handler.getContext(), attachment); + AttachmentFile attachmentFile = attachment.getOriginalFile(); + File file = attachmentFile.getFile(); + + // replace the inline attachments with the extracted attachment file url + // match les patterns: + // <td background="cid:bg.gif" height="52"> + // <img border=0 src="cid:bg.gif" /> + // <img src='cid:5e9ef859-ea65-4f9b-a9fa-30d4a2c5837c' + content = content.replaceAll("(\\w+)=([\"'])cid:" + Pattern.quote(key) + "([\"'])", "$1=$2" + file.toURI() + "$3"); + + if (log.isDebugEnabled()) { + log.debug("Mapping attachment id " + key + " to file " + file.toURI()); + } + } + + if (log.isTraceEnabled()) { + log.trace("Content after mail = " + content); + } + + textPane.setText(content); + + textPanePanel.add(textPane); + + textPanePanel.add(Box.createVerticalStrut(3)); + } + + protected static JTextPane createHtmlTextPane() { + JTextPane textPane = new JTextPane(); + textPane.setEditable(false); + + textPane.setContentType("text/html"); + HTMLEditorKit htmlEditorKit = new HTMLEditorKit(); + textPane.setEditorKit(htmlEditorKit); + + textPane.putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, true); + Font font = new Font(Font.MONOSPACED, Font.PLAIN, 16); + textPane.setFont(font); + + textPane.addHyperlinkListener(new HyperlinkListener() { + @Override + public void hyperlinkUpdate(HyperlinkEvent e) { + if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { + FaxToMailUIUtil.openLink(e.getURL()); + } + } + }); + return textPane; + } + } -- 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/7714 in repository faxtomail. See http://git.codelutin.com/faxtomail.git commit 9559e072d6e41b8349c4a985c3e9e1f4b47324c4 Author: Kevin Morin <morin@codelutin.com> Date: Thu Nov 12 16:23:40 2015 +0100 gestion du cas où plusieurs parties text/plain seraient dans le mail (refs #7714) --- .../ui/swing/content/demande/DemandeUIModel.java | 21 ++++++++++++++------- .../ui/swing/content/reply/ReplyFormUIHandler.java | 15 +++++++++++---- .../faxtomail/ui/swing/util/FaxToMailUIUtil.java | 11 ++++++++--- 3 files changed, 33 insertions(+), 14 deletions(-) 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 bc22fc0..1d5ebd9 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 @@ -44,6 +44,7 @@ import com.franciaflex.faxtomail.services.FaxToMailServiceUtils; import com.franciaflex.faxtomail.ui.swing.content.attachment.AttachmentModelAware; import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailBeanUIModel; import com.google.common.collect.Lists; +import jaxx.runtime.JAXXUtil; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; @@ -117,7 +118,7 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU protected List<String> htmlContents; - protected String plainContent; + protected List<String> plainContents; protected String subject; @@ -335,11 +336,11 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU return StringUtils.join(ccRecipients, ", "); } - public String getPlainContent() { - if (plainContent == null) { + public List<String> getPlainContent() { + if (plainContents == null) { decomposeEmail(); } - return plainContent; + return plainContents; } public List<String> getHtmlContent() { @@ -929,7 +930,10 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU } else if (message.isMimeType("text/*")) { String content = IOUtils.toString(message.getInputStream(), charset); - plainContent = content; + if (plainContents == null) { + plainContents = new ArrayList<String>(); + } + plainContents.add(JAXXUtil.getStringValue(content)); } } catch (Exception e) { @@ -937,7 +941,7 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU log.warn("error while parsing the original email content, may come from the imported archives", e); } //may comes from the imported archives - plainContent = getOriginalEmailContent(); + plainContents = Lists.newArrayList(getOriginalEmailContent()); toRecipients = Lists.newArrayList(getRecipient()); } } @@ -965,7 +969,10 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU String content = IOUtils.toString(bp.getInputStream(), charset); if (bp.isMimeType("text/plain")) { - plainContent = content; + if (plainContents == null) { + plainContents = new ArrayList<String>(); + } + plainContents.add(JAXXUtil.getStringValue(content)); } else { if (htmlContents == null) { diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java index 8bdecde..f05b4ea 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java @@ -36,7 +36,6 @@ import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil; import com.google.common.base.Strings; import com.google.common.collect.Lists; -import jaxx.runtime.JAXXUtil; import jaxx.runtime.SwingUtil; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.io.FileUtils; @@ -46,8 +45,16 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.jaxx.application.swing.util.Cancelable; import org.nuiton.validator.bean.simple.SimpleBeanValidator; -import javax.swing.*; -import java.awt.*; +import javax.swing.ComboBoxEditor; +import javax.swing.DefaultComboBoxModel; +import javax.swing.JComboBox; +import javax.swing.JComponent; +import javax.swing.JFileChooser; +import javax.swing.JPanel; +import javax.swing.JTextField; +import javax.swing.JTextPane; +import java.awt.Component; +import java.awt.Dimension; import java.awt.event.ActionListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; @@ -123,7 +130,7 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo model.setSubject(t("faxtomail.reply.subject", demand.getSubject())); - String plainContent = JAXXUtil.getStringValue(demand.getPlainContent()); + String plainContent = StringUtils.join(demand.getPlainContent(), "\n\n----------------\n\n"); String quotedReply = t("faxtomail.reply.message", decorate(demand.getReceptionDate()), demand.getSender(), 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 5e0e049..16ed24a 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 @@ -352,9 +352,14 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { } } else { - JTextPane textPane = new JTextPane(); - textPane.setText(demandeUIModel.getPlainContent()); - textPanePanel.add(textPane);e + contents = demandeUIModel.getPlainContent(); + + for (String content : contents) { + JTextPane textPane = new JTextPane(); + textPane.setText(content); + textPanePanel.add(textPane); + textPanePanel.add(Box.createVerticalStrut(3)); + } } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm