This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository faxtomail. See https://gitlab.nuiton.org/codelutin/faxtomail.git commit e2c8061760a0fead9f60ab377700199bd5182d06 Author: Kevin Morin <morin@codelutin.com> Date: Mon Apr 18 09:37:25 2016 +0200 on ajoute automatiquement la signature du nom de domaine de l'adresse de l'expéditeur au début du mail (remplacée si l'utilisateur change d'adresse expéditeur) (fixes #8258) --- .../faxtomail/services/service/EmailService.java | 3 +- .../services/service/EmailServiceImpl.java | 58 +++++-- .../faxtomail/ui/swing/FaxToMailUIContext.java | 10 +- .../content/attachment/AttachmentEditorUI.jaxx | 4 +- .../attachment/AttachmentEditorUIHandler.java | 2 +- .../swing/content/attachment/ButtonAttachment.java | 2 +- .../actions/SaveAndOpenReplyFormAction.java | 9 +- .../demande/demandgroup/ButtonEmailGroup.java | 2 +- .../content/demande/demandgroup/DemandGroupUI.jaxx | 4 +- .../demande/demandgroup/DemandGroupUIHandler.java | 2 +- .../content/demande/history/ButtonHistory.java | 2 +- .../content/demande/history/HistoryListUI.jaxx | 4 +- .../demande/history/HistoryListUIHandler.java | 2 +- .../demande/replies/ButtonDemandReplies.java | 2 +- .../content/demande/replies/DemandRepliesUI.jaxx | 4 +- .../demande/replies/DemandRepliesUIHandler.java | 2 +- .../ui/swing/content/reply/ReplyFormUI.css | 37 ----- .../ui/swing/content/reply/ReplyFormUI.jaxx | 40 +---- .../ui/swing/content/reply/ReplyFormUIHandler.java | 115 ++++++++++--- .../ui/swing/content/reply/ReplyFormUIModel.java | 18 +-- .../ui/swing/content/reply/SigningSettingsUI.css | 95 ----------- .../ui/swing/content/reply/SigningSettingsUI.jaxx | 101 ------------ .../content/reply/SigningSettingsUIHandler.java | 178 --------------------- .../content/reply/SigningSettingsUIModel.java | 152 ------------------ .../content/reply/actions/DeleteSigningAction.java | 94 ----------- .../content/reply/actions/NewSigningAction.java | 84 ---------- .../reply/actions/OpenSigningSettingsAction.java | 72 --------- .../swing/content/reply/actions/ReplyAction.java | 17 +- .../content/reply/actions/SaveSigningAction.java | 74 --------- .../content/reply/actions/SenderChangedAction.java | 57 +++++++ .../reply/actions/SetDefaultSigningAction.java | 74 --------- .../faxtomail/ui/swing/util/FaxToMailUIUtil.java | 3 - .../ui/swing/util/data/DataConnection.java | 33 ++++ .../faxtomail/ui/swing/util/data/Handler.java | 34 ++++ .../{ => toolbar}/AbstractToolbarPopupButton.java | 3 +- .../{ => toolbar}/AbstractToolbarPopupHandler.java | 3 +- .../util/{ => toolbar}/AbstractToolbarPopupUI.css | 0 .../util/{ => toolbar}/AbstractToolbarPopupUI.jaxx | 0 .../i18n/faxtomail-ui-swing_fr_FR.properties | 22 +-- 39 files changed, 321 insertions(+), 1097 deletions(-) diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java index 0005165..77dbc2e 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java @@ -38,7 +38,6 @@ import com.franciaflex.faxtomail.persistence.entities.Range; import com.franciaflex.faxtomail.persistence.entities.Reply; import com.franciaflex.faxtomail.persistence.entities.ReplyContent; import com.franciaflex.faxtomail.persistence.entities.SearchFilter; -import com.franciaflex.faxtomail.persistence.entities.Stamp; import com.franciaflex.faxtomail.services.FaxToMailService; import com.franciaflex.faxtomail.services.service.exceptions.AlreadyLockedMailException; import com.franciaflex.faxtomail.services.service.exceptions.FolderNotReadableException; @@ -102,7 +101,7 @@ public interface EmailService extends FaxToMailService { Email groupEmails(String email1Id, String email2Id, FaxToMailUser user); Email reply(String from, String to, String cc, String bcc, String subject, - String content, Stamp signing, Collection<AttachmentFile> attachments, + String content, Collection<AttachmentFile> attachments, String originalEmailId, FaxToMailUser user) throws EmailException, MessagingException, IOException; /** 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 0d97002..0d4b2dd 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 @@ -24,7 +24,51 @@ package com.franciaflex.faxtomail.services.service; * #L% */ -import com.franciaflex.faxtomail.persistence.entities.*; +import com.franciaflex.faxtomail.persistence.entities.AbstractFaxToMailTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.Attachment; +import com.franciaflex.faxtomail.persistence.entities.AttachmentFile; +import com.franciaflex.faxtomail.persistence.entities.AttachmentFileImpl; +import com.franciaflex.faxtomail.persistence.entities.AttachmentFileTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.AttachmentImpl; +import com.franciaflex.faxtomail.persistence.entities.AttachmentTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.Client; +import com.franciaflex.faxtomail.persistence.entities.DemandStatus; +import com.franciaflex.faxtomail.persistence.entities.DemandType; +import com.franciaflex.faxtomail.persistence.entities.DemandTypeTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.EdiReturn; +import com.franciaflex.faxtomail.persistence.entities.Email; +import com.franciaflex.faxtomail.persistence.entities.EmailFilter; +import com.franciaflex.faxtomail.persistence.entities.EmailGroup; +import com.franciaflex.faxtomail.persistence.entities.EmailGroupTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.EmailTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.ExtensionCommand; +import com.franciaflex.faxtomail.persistence.entities.FaxToMailTopiaPersistenceContext; +import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; +import com.franciaflex.faxtomail.persistence.entities.FaxToMailUserGroup; +import com.franciaflex.faxtomail.persistence.entities.History; +import com.franciaflex.faxtomail.persistence.entities.HistoryTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.HistoryType; +import com.franciaflex.faxtomail.persistence.entities.MailField; +import com.franciaflex.faxtomail.persistence.entities.MailFolder; +import com.franciaflex.faxtomail.persistence.entities.MailFolderTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.MailLock; +import com.franciaflex.faxtomail.persistence.entities.MailLockImpl; +import com.franciaflex.faxtomail.persistence.entities.MailLockTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.OriginalEmail; +import com.franciaflex.faxtomail.persistence.entities.OriginalEmailTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.Priority; +import com.franciaflex.faxtomail.persistence.entities.PriorityTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.Range; +import com.franciaflex.faxtomail.persistence.entities.RangeRow; +import com.franciaflex.faxtomail.persistence.entities.RangeRowTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.RangeTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.Reply; +import com.franciaflex.faxtomail.persistence.entities.ReplyContent; +import com.franciaflex.faxtomail.persistence.entities.ReplyContentTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.ReplyTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.SearchFilter; +import com.franciaflex.faxtomail.persistence.entities.WaitingState; +import com.franciaflex.faxtomail.persistence.entities.WaitingStateTopiaDao; import com.franciaflex.faxtomail.services.FaxToMailServiceSupport; import com.franciaflex.faxtomail.services.FaxToMailServiceUtils; import com.franciaflex.faxtomail.services.service.exceptions.AlreadyLockedMailException; @@ -68,6 +112,7 @@ import org.apache.commons.logging.LogFactory; import org.apache.commons.mail.DefaultAuthenticator; import org.apache.commons.mail.EmailConstants; import org.apache.commons.mail.EmailException; +import org.apache.commons.mail.HtmlEmail; import org.apache.commons.mail.MultiPartEmail; import org.hibernate.Hibernate; import org.hibernate.HibernateException; @@ -1085,7 +1130,7 @@ public class EmailServiceImpl extends FaxToMailServiceSupport implements EmailSe */ @Override public Email reply(String from, String to, String cc, String bcc, String subject, - String content, Stamp signing, Collection<AttachmentFile> attachments, + String content, Collection<AttachmentFile> attachments, String originalEmailId, FaxToMailUser user) throws EmailException, MessagingException, IOException { Email email = getEmailById(originalEmailId, @@ -1096,7 +1141,7 @@ public class EmailServiceImpl extends FaxToMailServiceSupport implements EmailSe final String password = getApplicationConfig().getSmtpPassword(); final boolean useSsl = getApplicationConfig().isSmtpUseSsl(); - MultiPartEmail message = new MultiPartEmail(); + HtmlEmail message = new HtmlEmail(); message.setHostName(getApplicationConfig().getSmtpHost()); message.setSmtpPort(getApplicationConfig().getSmtpPort()); if (StringUtils.isNotBlank(smtpUser) && password != null) { @@ -1124,12 +1169,7 @@ public class EmailServiceImpl extends FaxToMailServiceSupport implements EmailSe toSendContent.append(content); } - // l'insertion de cette signature sera faîte pour l'envoi de fax uniquement si un corps de mail est renseigné. - if (signing != null && (!email.isFax() || StringUtils.isNotEmpty(content))) { - toSendContent.append("\n\n").append(signing.getText()); - } - - message.setMsg(toSendContent.toString()); + message.setHtmlMsg(toSendContent.toString()); for (AttachmentFile attachmentFile : attachments) { // Create the attachment diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java index dfebc45..e578793 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java @@ -43,6 +43,7 @@ import com.franciaflex.faxtomail.ui.swing.content.MainUI; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; import com.franciaflex.faxtomail.ui.swing.content.search.SearchUIModel; import com.franciaflex.faxtomail.ui.swing.util.UIMessageNotifier; +import com.franciaflex.faxtomail.ui.swing.util.data.Handler; import com.google.common.base.Preconditions; import com.google.common.collect.Maps; import com.google.common.collect.Sets; @@ -79,8 +80,11 @@ import org.nuiton.util.converter.ConverterUtil; import org.nuiton.util.pagination.PaginationParameter; import org.nuiton.util.pagination.PaginationResult; -import javax.swing.*; -import java.awt.*; +import javax.swing.JFrame; +import javax.swing.JOptionPane; +import java.awt.Color; +import java.awt.Component; +import java.awt.Container; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.Closeable; @@ -346,6 +350,8 @@ public class FaxToMailUIContext extends AbstractBean implements Closeable, UIMes public void init() { + Handler.install(); + config.prepareDirectories(); // use our special classLoader (which will read some files from resources from a configuration directory) 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 b355c84..f1fb63f 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 @@ -21,7 +21,7 @@ <http://www.gnu.org/licenses/gpl-3.0.html>. #L% --> -<com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupUI +<com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupUI superGenericType="AttachmentEditorUIModel, AttachmentEditorUIHandler" id='attachmentDialog'> @@ -110,4 +110,4 @@ </JPanel> </JScrollPane> </JXTitledPanel> -</com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupUI> +</com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupUI> 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 4b1811b..a8d4b0a 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 @@ -27,7 +27,7 @@ package com.franciaflex.faxtomail.ui.swing.content.attachment; import com.franciaflex.faxtomail.persistence.entities.Attachment; import com.franciaflex.faxtomail.ui.swing.content.attachment.actions.EditAttachmentAction; import com.franciaflex.faxtomail.ui.swing.content.attachment.actions.OpenAttachmentAction; -import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupHandler; +import com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupHandler; import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil; import com.google.common.collect.Iterables; import jaxx.runtime.SwingUtil; 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 5f46702..8af8d2a 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 @@ -26,7 +26,7 @@ package com.franciaflex.faxtomail.ui.swing.content.attachment; import com.franciaflex.faxtomail.persistence.entities.Attachment; import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; -import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupButton; +import com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupButton; import jaxx.runtime.swing.JAXXWidgetUtil; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.ListUtils; diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveAndOpenReplyFormAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveAndOpenReplyFormAction.java index 00f4d3b..2c94e47 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveAndOpenReplyFormAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveAndOpenReplyFormAction.java @@ -24,6 +24,7 @@ package com.franciaflex.faxtomail.ui.swing.content.demande.actions; * #L% */ +import com.franciaflex.faxtomail.persistence.entities.SigningForDomain; import com.franciaflex.faxtomail.services.FaxToMailServiceUtils; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandesUIHandler; @@ -31,7 +32,7 @@ import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUI; import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUIModel; import jaxx.runtime.JAXXUtil; -import java.awt.*; +import java.awt.Dimension; import static org.nuiton.i18n.I18n.t; @@ -63,6 +64,12 @@ public class SaveAndOpenReplyFormAction extends SaveAndOpenModalFrameAction<Repl ReplyFormUIModel model = frameContent.getModel(); DemandeUIModel currentDemand = getModel(); + SigningForDomain signingForDomain = null; + if (!currentDemand.isFax()) { + signingForDomain = getContext().newServiceContext().getConfigurationService().getSigningForEmailAddress(currentDemand.getRecipient()).orNull(); + } + model.setSigning(signingForDomain); + model.setOriginalDemand(currentDemand); String sender = JAXXUtil.getStringValue(currentDemand.getSender()); diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/ButtonEmailGroup.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/ButtonEmailGroup.java index 4759691..d544aa2 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/ButtonEmailGroup.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/ButtonEmailGroup.java @@ -26,7 +26,7 @@ package com.franciaflex.faxtomail.ui.swing.content.demande.demandgroup; 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 com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupButton; import jaxx.runtime.swing.JAXXWidgetUtil; import javax.swing.*; diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUI.jaxx b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUI.jaxx index 73ab13c..666d247 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUI.jaxx +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUI.jaxx @@ -21,7 +21,7 @@ <http://www.gnu.org/licenses/gpl-3.0.html>. #L% --> -<com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupUI +<com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupUI superGenericType="com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel, DemandGroupUIHandler" id='groupedDemandDialog'> @@ -52,4 +52,4 @@ </JScrollPane> </JXTitledPanel> -</com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupUI> +</com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupUI> diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUIHandler.java index 695403d..356f8e1 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUIHandler.java @@ -26,7 +26,7 @@ package com.franciaflex.faxtomail.ui.swing.content.demande.demandgroup; import com.franciaflex.faxtomail.ui.swing.content.demande.demandgroup.actions.OpenGroupedDemandAction; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; -import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupHandler; +import com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupHandler; import com.google.common.collect.Iterables; import jaxx.runtime.validator.swing.SwingValidator; import org.jdesktop.swingx.JXTable; diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/ButtonHistory.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/ButtonHistory.java index 11e6e9e..733b2ae 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/ButtonHistory.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/ButtonHistory.java @@ -28,7 +28,7 @@ import com.franciaflex.faxtomail.persistence.entities.Email; import com.franciaflex.faxtomail.persistence.entities.History; 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 com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupButton; import jaxx.runtime.swing.JAXXWidgetUtil; import org.apache.commons.collections4.CollectionUtils; diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUI.jaxx b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUI.jaxx index e12bb8a..4c88ef4 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUI.jaxx +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUI.jaxx @@ -21,7 +21,7 @@ <http://www.gnu.org/licenses/gpl-3.0.html>. #L% --> -<com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupUI +<com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupUI superGenericType="com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel, HistoryListUIHandler" id='historyListDialog'> @@ -50,4 +50,4 @@ </JScrollPane> </JXTitledPanel> -</com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupUI> +</com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupUI> diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUIHandler.java index 086f7b8..3d9278f 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUIHandler.java @@ -27,7 +27,7 @@ package com.franciaflex.faxtomail.ui.swing.content.demande.history; import com.franciaflex.faxtomail.persistence.entities.Email; import com.franciaflex.faxtomail.persistence.entities.History; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; -import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupHandler; +import com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupHandler; import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil; import com.google.common.base.Function; import com.google.common.collect.Ordering; diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/ButtonDemandReplies.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/ButtonDemandReplies.java index af89479..2143127 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/ButtonDemandReplies.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/ButtonDemandReplies.java @@ -28,7 +28,7 @@ import com.franciaflex.faxtomail.persistence.entities.Email; 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 com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupButton; import jaxx.runtime.swing.JAXXWidgetUtil; import org.apache.commons.collections4.CollectionUtils; diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUI.jaxx b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUI.jaxx index 5e0cc10..e9d371a 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUI.jaxx +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUI.jaxx @@ -21,7 +21,7 @@ <http://www.gnu.org/licenses/gpl-3.0.html>. #L% --> -<com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupUI +<com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupUI superGenericType="com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel, DemandRepliesUIHandler" id='repliesDialog'> @@ -55,4 +55,4 @@ </JScrollPane> </JXTitledPanel> -</com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupUI> +</com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupUI> diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUIHandler.java index b6319c8..19226b1 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUIHandler.java @@ -38,7 +38,7 @@ import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyAttachmentModel; import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUI; import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUIModel; -import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupHandler; +import com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupHandler; import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil; import com.google.common.collect.Iterables; import jaxx.runtime.JAXXUtil; diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.css b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.css index b3e1cd7..e813e30 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.css +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.css @@ -119,48 +119,11 @@ dividerLocation: 270; } -#signingSplitPane { - dividerSize: { model.isReadonly() ? 0 : 10 }; - resizeWeight: 1.0; - name: { "signingSplitPane" + model.isReadonly() }; // to save the state differently in the swing session -} - #message { text: { model.getMessage() }; editable: { !model.isReadonly() }; } -#signingPanel { - visible: { !model.isReadonly() }; -} - -#signingLabel { - text: "faxtomail.reply.label.signing"; -} - -#stampComboBox { - showReset: true; - showDecorator: false; - bean: {model}; - property: stamp; - selectedItem: { model.getStamp() }; -} - -#configureSigningButton { - actionIcon: settings; - toolTipText: "faxtomail.reply.action.signing.configure.tip"; - _applicationAction: { com.franciaflex.faxtomail.ui.swing.content.reply.actions.OpenSigningSettingsAction.class }; -} - -#signingScrollPanel { - visible: { model.getStamp() != null }; -} - -#signingTextPanel { - editable: false; - text: { model.getStamp().getText() }; -} - #attachmentsPanel { background: { Color.WHITE }; } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.jaxx b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.jaxx index 2756629..66b2e4e 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.jaxx +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.jaxx @@ -150,42 +150,10 @@ orientation="{JSplitPane.VERTICAL_SPLIT}" constraints='BorderLayout.CENTER'> - <JSplitPane id="signingSplitPane" - orientation="{JSplitPane.VERTICAL_SPLIT}"> - - - <JScrollPane> - <JTextPane id="message" - onKeyReleased='handler.setText(event, "message")'/> - </JScrollPane> - - <JPanel id="signingPanel" - layout="{new BorderLayout()}"> - - <JPanel layout="{new BorderLayout()}" - constraints="BorderLayout.NORTH"> - - <JLabel id="signingLabel" - constraints="BorderLayout.WEST"/> - - <BeanComboBox id="stampComboBox" - constructorParams='this' - genericType="Stamp" - constraints="BorderLayout.CENTER"/> - - <JButton id="configureSigningButton" - constraints="BorderLayout.EAST"/> - - </JPanel> - - <JScrollPane id="signingScrollPanel" - constraints="BorderLayout.CENTER"> - <JTextPane id="signingTextPanel"/> - </JScrollPane> - - </JPanel> - - </JSplitPane> + <JScrollPane> + <JTextPane id="message" + onKeyReleased='handler.setText(event, "message")'/> + </JScrollPane> <JPanel layout='{new BorderLayout()}'> <JLabel id="attachmentsLabel" constraints='BorderLayout.NORTH'/> 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 ef1317b..192c948 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 @@ -30,10 +30,11 @@ import com.franciaflex.faxtomail.persistence.entities.AttachmentFileImpl; import com.franciaflex.faxtomail.persistence.entities.AttachmentImpl; import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; import com.franciaflex.faxtomail.persistence.entities.MailFolder; -import com.franciaflex.faxtomail.persistence.entities.Stamp; +import com.franciaflex.faxtomail.persistence.entities.SigningForDomain; import com.franciaflex.faxtomail.services.service.ldap.Contact; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; import com.franciaflex.faxtomail.ui.swing.content.reply.actions.AddAttachmentToReplyAction; +import com.franciaflex.faxtomail.ui.swing.content.reply.actions.SenderChangedAction; import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil; import com.google.common.base.Strings; @@ -50,12 +51,14 @@ import org.nuiton.validator.bean.simple.SimpleBeanValidator; import javax.swing.ComboBoxEditor; import javax.swing.JComboBox; import javax.swing.JComponent; +import javax.swing.JEditorPane; 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.Font; import java.awt.Window; import java.awt.event.ActionListener; import java.beans.PropertyChangeEvent; @@ -66,7 +69,9 @@ import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.Date; import java.util.List; +import java.util.regex.Pattern; import static org.nuiton.i18n.I18n.t; @@ -78,14 +83,22 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo private static final Log log = LogFactory.getLog(ReplyFormUIHandler.class); + private static final String SIGNING_CLASS_PREFIX = "faxToMailSigning"; + + private static final String CONTENT_SEPARATOR = "<br/><br/>----------------<br/><br/>"; + + private String signingClass; + protected AddAttachmentToReplyAction addAttachmentToReplyAction; + protected SenderChangedAction senderChangedAction; + @Override public void beforeInit(ReplyFormUI ui) { super.beforeInit(ui); - addAttachmentToReplyAction = - getContext().getActionFactory().createLogicAction(this, AddAttachmentToReplyAction.class); + addAttachmentToReplyAction = getContext().getActionFactory().createLogicAction(this, AddAttachmentToReplyAction.class); + senderChangedAction = getContext().getActionFactory().createLogicAction(this, SenderChangedAction.class); ReplyFormUIModel model = new ReplyFormUIModel(); //TODO kmorin 20140813 action ? @@ -102,6 +115,12 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo JTextPane editor = ui.getMessage(); editor.setCaretPosition(0); + editor.setContentType("text/html"); + + editor.putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, true); + Font font = new Font(Font.MONOSPACED, Font.PLAIN, 16); + editor.setFont(font); + ReplyFormUIModel model = getModel(); model.addPropertyChangeListener(ReplyFormUIModel.PROPERTY_ORIGINAL_DEMAND, new PropertyChangeListener() { @Override @@ -109,7 +128,7 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo DemandeUIModel demand = (DemandeUIModel) evt.getNewValue(); ReplyFormUIModel model = (ReplyFormUIModel) evt.getSource(); - List<DemandeUIModel> models = new ArrayList<DemandeUIModel>(); + List<DemandeUIModel> models = new ArrayList<>(); models.addAll(demand.getGroupedDemandes()); for (DemandeUIModel demandeUIModel : models) { @@ -132,14 +151,9 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo model.setSubject(t("faxtomail.reply.subject", demand.getSubject())); - String plainContent = StringUtils.join(demand.getPlainContent(), "\n\n----------------\n\n"); - String quotedReply = t("faxtomail.reply.message", - decorate(demand.getReceptionDate()), - demand.getSender(), - plainContent != null ? plainContent.replaceAll("\n", "\n> ") : ""); - model.setMessage(quotedReply); - String recipient = demand.getRecipient(); + String signing; + // this have to be disable for read only mode (useless) if (!model.isReadonly()) { @@ -150,8 +164,8 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo // sender combo MailFolder folder = demand.getMailFolder(); - List<String> folderReplyAdresses = new ArrayList<String>(); - List<String> folderReplyDomains = new ArrayList<String>(); + List<String> folderReplyAdresses = new ArrayList<>(); + List<String> folderReplyDomains = new ArrayList<>(); while (folder != null) { folderReplyAdresses.addAll(folder.getReplyAddresses()); folderReplyDomains.addAll(folder.getReplyDomains()); @@ -171,9 +185,6 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo } Collections.sort(replyToAddresses); -// DefaultComboBoxModel comboBoxModel = SwingUtil.newComboModel(replyToAddresses.toArray()); -// comboBoxModel.setSelectedItem(selectedItem); -// ui.getFromComboBox().setModel(comboBoxModel); ui.getFromComboBox().setBeanType(String.class); initBeanFilterableComboBox(ui.getFromComboBox(), replyToAddresses, selectedItem); @@ -181,9 +192,24 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo initBeanFilterableComboBox(ui.getContactField(), getContext().getContactCache(), null); + signingClass = SIGNING_CLASS_PREFIX + new Date().getTime(); + + signing = getSigningParagraph(createSigning(recipient)); + } else { model.setFrom(recipient); + signing = ""; } + + String plainContent = StringUtils.join(demand.getPlainContent(), CONTENT_SEPARATOR); + String quotedText = plainContent != null ? plainContent.replaceAll("\n", "<br/> ") : ""; + + String quotedReply = t("faxtomail.reply.message", + signing, + decorate(demand.getReceptionDate()), + demand.getSender(), + quotedText); + model.setMessage(quotedReply); } }); @@ -201,6 +227,17 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo } }); + model.addPropertyChangeListener(ReplyFormUIModel.PROPERTY_FROM, new PropertyChangeListener() { + + @Override + public void propertyChange(PropertyChangeEvent evt) { + ReplyFormUIModel model = (ReplyFormUIModel) evt.getSource(); + if (!model.isReadonly()) { + getContext().getActionEngine().runAction(senderChangedAction); + } + } + }); + JComboBox addAttachmentFile = ui.getAddAttachmentFile(); addAttachmentFile.setEditor(new FileComboBoxEditor()); @@ -218,16 +255,7 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo } }); - FaxToMailUser currentUser = getContext().getCurrentUser(); - Collection<Stamp> userStamps = currentUser.getSignings(); - List<Stamp> stamps = new ArrayList<>(); - - if (userStamps != null) { - stamps.addAll(userStamps); - model.setStamp(currentUser.getDefaultSigning()); - } - - initBeanComboBox(ui.getStampComboBox(), stamps, model.getStamp()); + } @Override @@ -514,4 +542,39 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo model.setCci(cci); } } + + public void replaceSigning() { + ReplyFormUIModel model = getModel(); + String signing = createSigning(model.getFrom()); + String message = model.getMessage(); + if (message != null) { + message = Pattern.compile(getSigningParagraph(".*?"), Pattern.DOTALL).matcher(message).replaceFirst(getSigningParagraph(signing)); + model.setMessage(message); + } + } + + protected String createSigning(String from) { + FaxToMailUser currentUser = getContext().getCurrentUser(); + String signing = currentUser.getFirstName() + " " + currentUser.getLastName() + + "<br/>" + from + "<br/>"; + + SigningForDomain signingForDomain = getModel().getSigning(); + if (signingForDomain != null) { + if (signingForDomain.getImage() != null) { + signing += "<img src=\"" + signingForDomain.getImage() + "\"/>"; + } else { + signing += signingForDomain.getText().replaceAll("\\n", "<br/>"); + + if (log.isInfoEnabled()) { + log.info("signing " + signing); + } + } + } + + return signing; + } + + protected String getSigningParagraph(String signing) { + return "<div class=\"" + signingClass + "\">" + signing + "</div>"; + } } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel.java index e3fea53..de82dd7 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel.java @@ -24,7 +24,7 @@ package com.franciaflex.faxtomail.ui.swing.content.reply; * #L% */ -import com.franciaflex.faxtomail.persistence.entities.Stamp; +import com.franciaflex.faxtomail.persistence.entities.SigningForDomain; import com.franciaflex.faxtomail.services.service.ldap.Contact; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; import com.google.common.base.Preconditions; @@ -54,7 +54,7 @@ public class ReplyFormUIModel extends AbstractSerializableBean { public static final String PROPERTY_SUBJECT = "subject"; public static final String PROPERTY_MESSAGE = "message"; public static final String PROPERTY_ORIGINAL_DEMAND = "originalDemand"; - public static final String PROPERTY_STAMP = "stamp"; + public static final String PROPERTY_SIGNING = "signing"; public static final String PROPERTY_ATTACHMENT = "attachment"; public static final String PROPERTY_MAX_ATTACHMENT_LENGTH = "maxAttachmentLength"; public static final String PROPERTY_TOTAL_ATTACHMENT_LENGTH = "totalAttachmentLength"; @@ -73,7 +73,7 @@ public class ReplyFormUIModel extends AbstractSerializableBean { protected String subject; protected String message; protected DemandeUIModel originalDemand; - protected Stamp stamp; + protected SigningForDomain signing; protected long maxAttachmentLength = 0; protected long totalAttachmentLength = 0; protected boolean valid = true; @@ -180,14 +180,14 @@ public class ReplyFormUIModel extends AbstractSerializableBean { firePropertyChange(PROPERTY_ORIGINAL_DEMAND, oldValue, originalDemand); } - public Stamp getStamp() { - return stamp; + public SigningForDomain getSigning() { + return signing; } - public void setStamp(Stamp stamp) { - Object oldValue = getStamp(); - this.stamp = stamp; - firePropertyChange(PROPERTY_STAMP, oldValue, stamp); + public void setSigning(SigningForDomain signing) { + Object oldValue = getSigning(); + this.signing = signing; + firePropertyChange(PROPERTY_SIGNING, oldValue, signing); } public Set<ReplyAttachmentModel> getAttachments() { diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/SigningSettingsUI.css b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/SigningSettingsUI.css deleted file mode 100644 index 4baf2ea..0000000 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/SigningSettingsUI.css +++ /dev/null @@ -1,95 +0,0 @@ -/* - * #%L - * FaxToMail :: UI - * $Id:$ - * $HeadURL:$ - * %% - * Copyright (C) 2014 - 2015 Mac-Groupe, Code Lutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ -#signingsLabel { - text: "faxtomail.signings.settings.label"; -} - -#newSigningButton { - actionIcon: add; - toolTipText: "faxtomail.signings.settings.action.newSigning.tip"; - _applicationAction: { com.franciaflex.faxtomail.ui.swing.content.reply.actions.NewSigningAction.class }; -} - -/* -#signingList { - items: { model.getSignings() }; - selectedItem: { model.getSelectedSigning() }; -} -*/ - -#signingPanelLayout { - selected: { String.valueOf(model.getSelectedSigning() != null) }; -} - -#nameLabel { - text: "faxtomail.signings.settings.name.label"; -} - -#nameField { - text: { model.getSelectedSigningName() }; -} - -#textLabel { - text: "faxtomail.signings.settings.text.label"; -} - -#textField { - text: { model.getSelectedSigningText() }; -} - -#noSigningSelected { - text: "faxtomail.signings.settings.noSelection.label"; - horizontalAlignment: { SwingConstants.CENTER }; - enabled: false; -} - -#cancelButton { - actionIcon: cancel; - text: "faxtomail.signings.settings.action.cancel"; - toolTipText: "faxtomail.signings.settings.action.cancel.tip"; -} - -#saveButton { - actionIcon: save; - text: "faxtomail.signings.settings.action.save"; - toolTipText: "faxtomail.signings.settings.action.save.tip"; - _applicationAction: { com.franciaflex.faxtomail.ui.swing.content.reply.actions.SaveSigningAction.class }; - enabled: { model.getSelectedSigning() != null && model.isModified() && validator.isValid() }; -} - -#setDefaultButton { - actionIcon: default; - text: "faxtomail.signings.settings.action.default"; - toolTipText: "faxtomail.signings.settings.action.default.tip"; - _applicationAction: { com.franciaflex.faxtomail.ui.swing.content.reply.actions.SetDefaultSigningAction.class }; - enabled: { model.isSetDefaultButtonEnabled() && validator.isValid() }; -} - -#deleteButton { - actionIcon: delete; - text: "faxtomail.signings.settings.action.delete"; - toolTipText: "faxtomail.signings.settings.action.delete.tip"; - _applicationAction: { com.franciaflex.faxtomail.ui.swing.content.reply.actions.DeleteSigningAction.class }; - enabled: { model.getSelectedSigning() != null }; -} \ No newline at end of file diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/SigningSettingsUI.jaxx b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/SigningSettingsUI.jaxx deleted file mode 100644 index 8045303..0000000 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/SigningSettingsUI.jaxx +++ /dev/null @@ -1,101 +0,0 @@ -<!-- - #%L - FaxToMail :: UI - %% - Copyright (C) 2014 Mac-Groupe, Code Lutin - %% - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public - License along with this program. If not, see - <http://www.gnu.org/licenses/gpl-3.0.html>. - #L% - --> -<JSplitPane id='signingSettingsPanel' - implements='com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI<SigningSettingsUIModel, SigningSettingsUIHandler>'> - - <import> - com.franciaflex.faxtomail.persistence.entities.Stamp - com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI - com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil - - javax.swing.SwingConstants - - jaxx.runtime.swing.CardLayout2Ext - </import> - - <SigningSettingsUIModel id='model' - initializer='getContextValue(SigningSettingsUIModel.class)'/> - - <BeanValidator id='validator' bean='model' - uiClass='jaxx.runtime.validator.swing.ui.ImageValidationUI'> - <field name='selectedSigningName' component='nameField'/> - <field name='selectedSigningText' component='textField'/> - </BeanValidator> - - <CardLayout2Ext id='signingPanelLayout' - constructorParams='this, "signingPanel"'/> - - <Table> - <row> - <cell weightx="1.0" fill="both"> - <JLabel id="signingsLabel"/> - </cell> - <cell> - <JButton id="newSigningButton"/> - </cell> - </row> - <row> - <cell columns="2" weighty="1.0" fill="both"> - <JList id="signingList" genericType="Stamp"/> - </cell> - </row> - </Table> - - <JPanel layout="{new BorderLayout()}"> - - <JPanel id="signingPanel" - layout="{ signingPanelLayout }" - constraints="BorderLayout.CENTER"> - - <Table constraints='"true"'> - <row> - <cell> - <JLabel id="nameLabel"/> - </cell> - <cell weightx="1.0" fill="both" > - <JTextField id="nameField" onKeyReleased='handler.setText(event, "selectedSigningName")'/> - </cell> - </row> - <row> - <cell anchor="northwest"> - <JLabel id="textLabel"/> - </cell> - <cell weightx="1.0" weighty="1.0" fill="both" > - <JTextPane id="textField" onKeyReleased='handler.setText(event, "selectedSigningText")'/> - </cell> - </row> - </Table> - - <JLabel id="noSigningSelected" constraints='"false"'/> - - </JPanel> - - <JPanel constraints="BorderLayout.SOUTH"> - <JButton id="cancelButton" onActionPerformed="handler.cancel()"/> - <JButton id="saveButton"/> - <JButton id="setDefaultButton"/> - <JButton id="deleteButton"/> - </JPanel> - - </JPanel> - -</JSplitPane> diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/SigningSettingsUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/SigningSettingsUIHandler.java deleted file mode 100644 index b90997a..0000000 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/SigningSettingsUIHandler.java +++ /dev/null @@ -1,178 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.content.reply; - -/* - * #%L - * FaxToMail :: UI - * $Id:$ - * $HeadURL:$ - * %% - * Copyright (C) 2014 - 2015 Mac-Groupe, Code Lutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import com.franciaflex.faxtomail.persistence.entities.Stamp; -import com.franciaflex.faxtomail.ui.swing.content.reply.actions.SaveSigningAction; -import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; -import jaxx.runtime.swing.renderer.DecoratorListCellRenderer; -import jaxx.runtime.validator.swing.SwingValidator; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.decorator.Decorator; -import org.nuiton.jaxx.application.swing.util.Cancelable; - -import javax.swing.*; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; -import java.awt.*; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.Collection; -import java.util.List; - -import static org.nuiton.i18n.I18n.t; - -/** - * @author Kevin Morin (Code Lutin) - * @since 1.4 - */ -public class SigningSettingsUIHandler extends AbstractFaxToMailUIHandler<SigningSettingsUIModel, SigningSettingsUI> implements Cancelable { - - /** - * Logger. - */ - private static final Log log = LogFactory.getLog(SigningSettingsUIHandler.class); - - @Override - public void beforeInit(SigningSettingsUI ui) { - super.beforeInit(ui); - - SigningSettingsUIModel model = new SigningSettingsUIModel(); - this.ui.setContextValue(model); - } - - @Override - public void afterInit(SigningSettingsUI ui) { - initUI(ui); - - SigningSettingsUIModel model = getModel(); - - model.addPropertyChangeListener(SigningSettingsUIModel.PROPERTY_SIGNINGS, new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - - List<Stamp> signings = (List<Stamp>) evt.getNewValue(); - JList<Stamp> signingList = getUI().getSigningList(); - signingList.setListData(signings.toArray(new Stamp[signings.size()])); - } - }); - - model.addPropertyChangeListener(SigningSettingsUIModel.PROPERTY_SELECTED_SIGNING, new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - getUI().getSigningList().setSelectedValue(evt.getNewValue(), true); - } - }); - - Collection<Stamp> stampSigning = getContext().getCurrentUser().getSignings(); - model.setSignings(stampSigning); - - JList<Stamp> signingList = getUI().getSigningList(); - - Decorator<Stamp> signingDecorator = getDecorator(Stamp.class, null); - ListCellRenderer listCellRenderer = new SigningListCellRenderer(signingDecorator); - signingList.setCellRenderer(listCellRenderer); - - signingList.addListSelectionListener(new ListSelectionListener() { - @Override - public void valueChanged(ListSelectionEvent e) { - if (!e.getValueIsAdjusting()) { - - SigningSettingsUIModel model = getModel(); - JList<Stamp> list = (JList<Stamp>) e.getSource(); - - if (model.isModified()) { - int saveAnswer = askSaveBeforeLeaving(t("faxtomail.signings.settings.saveBeforeLeaving", - model.getSelectedSigningName())); - switch (saveAnswer) { - case JOptionPane.CANCEL_OPTION: - model.setModified(false); // don't cause yet another prompt when reverting selection - list.setSelectedValue(model.getSelectedSigning(), true); - model.setModified(true); - return; - - case JOptionPane.YES_OPTION: - getContext().getActionEngine().runActionAndWait(SigningSettingsUIHandler.this, SaveSigningAction.class); - break; - - case JOptionPane.NO_OPTION: - model.resetSelectedSigning(); - break; - } - } - - Stamp selectedValue = list.getSelectedValue(); - model.setSelectedSigning(selectedValue); - model.setSelectedSigningDefault(selectedValue != null && - selectedValue.equals(getContext().getCurrentUser().getDefaultSigning())); - } - } - }); - - } - - @Override - public void cancel() { - getParentContainer(Dialog.class).setVisible(false); - } - - @Override - public void onCloseUI() { - } - - - @Override - public Component getTopestUI() { - return getUI(); - } - - @Override - public SwingValidator<SigningSettingsUIModel> getValidator() { - return getUI().getValidator(); - } - - @Override - protected JComponent getComponentToFocus() { - return null; - } - - private class SigningListCellRenderer extends DecoratorListCellRenderer { - - public SigningListCellRenderer(Decorator<Stamp> decorator) { - super(decorator); - } - - @Override - protected Object decorateValue(Object value, int index) { - String label = (String) super.decorateValue(value, index); - Stamp signing = (Stamp) value; - if (signing != null && signing.equals(getContext().getCurrentUser().getDefaultSigning())) { - label = "<html><strong>" + label + "</strong></html>"; - } - return label; - } - } -} diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/SigningSettingsUIModel.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/SigningSettingsUIModel.java deleted file mode 100644 index 9c78e38..0000000 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/SigningSettingsUIModel.java +++ /dev/null @@ -1,152 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.content.reply; - -/* - * #%L - * FaxToMail :: UI - * $Id:$ - * $HeadURL:$ - * %% - * Copyright (C) 2014 - 2015 Mac-Groupe, Code Lutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import com.franciaflex.faxtomail.persistence.entities.Stamp; -import org.jdesktop.beans.AbstractSerializableBean; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -/** - * @author Kevin Morin (Code Lutin) - * @since 1.4 - */ -public class SigningSettingsUIModel extends AbstractSerializableBean { - - public static final String PROPERTY_SIGNINGS = "signings"; - public static final String PROPERTY_SELECTED_SIGNING = "selectedSigning"; - public static final String PROPERTY_SELECTED_SIGNING_NAME = "selectedSigningName"; - public static final String PROPERTY_SELECTED_SIGNING_TEXT = "selectedSigningText"; - public static final String PROPERTY_SELECTED_SIGNING_DEFAULT = "selectedSigningDefault"; - public static final String PROPERTY_SET_DEFAULT_BUTTON_ENABLED = "setDefaultButtonEnabled"; - public static final String PROPERTY_MODIFIED = "modified"; - - - protected List<Stamp> signings = new ArrayList<>(); - protected Stamp selectedSigning; - protected String selectedSigningName; - protected String selectedSigningText; - protected boolean selectedSigningDefault; - protected boolean modified; - - public Stamp getSelectedSigning() { - return selectedSigning; - } - - public void setSelectedSigning(Stamp selectedSigning) { - Object oldValue = getSelectedSigning(); - this.selectedSigning = selectedSigning; - firePropertyChange(PROPERTY_SELECTED_SIGNING, oldValue, selectedSigning); - - setSelectedSigningName(selectedSigning != null ? selectedSigning.getLabel() : ""); - setSelectedSigningText(selectedSigning != null ? selectedSigning.getText() : ""); - - setModified(false); - updateSetDefaultButtonEnabled(); - } - - public List<Stamp> getSignings() { - return signings; - } - - public void setSignings(Collection<Stamp> signings) { - this.signings.clear(); - if (signings != null) { - this.signings.addAll(signings); - } - firePropertyChange(PROPERTY_SIGNINGS, null, this.signings); - } - - public void addSigning(Stamp signing) { - this.signings.add(signing); - firePropertyChange(PROPERTY_SIGNINGS, null, this.signings); - } - - public void removeSigning(Stamp signing) { - this.signings.remove(signing); - firePropertyChange(PROPERTY_SIGNINGS, null, this.signings); - } - - public String getSelectedSigningName() { - return selectedSigningName; - } - - public void setSelectedSigningName(String selectedSigningName) { - Object oldValue = getSelectedSigningName(); - this.selectedSigningName = selectedSigningName; - firePropertyChange(PROPERTY_SELECTED_SIGNING_NAME, oldValue, selectedSigningName); - setModified(true); - } - - public String getSelectedSigningText() { - return selectedSigningText; - } - - public void setSelectedSigningText(String selectedSigningText) { - Object oldValue = getSelectedSigningText(); - this.selectedSigningText = selectedSigningText; - firePropertyChange(PROPERTY_SELECTED_SIGNING_TEXT, oldValue, selectedSigningText); - setModified(true); - } - - public boolean isSelectedSigningDefault() { - return selectedSigningDefault; - } - - public void setSelectedSigningDefault(boolean selectedSigningDefault) { - Object oldValue = isSelectedSigningDefault(); - this.selectedSigningDefault = selectedSigningDefault; - firePropertyChange(PROPERTY_SELECTED_SIGNING_DEFAULT, oldValue, selectedSigningDefault); - updateSetDefaultButtonEnabled(); - } - - public boolean isSetDefaultButtonEnabled() { - return selectedSigning != null - && selectedSigning.isPersisted() - && !selectedSigningDefault; - } - - public void updateSetDefaultButtonEnabled() { - firePropertyChange(PROPERTY_SET_DEFAULT_BUTTON_ENABLED, null, isSetDefaultButtonEnabled()); - } - - public boolean isModified() { - return modified; - } - - public void setModified(boolean modified) { - Object oldValue = isModified(); - this.modified = modified; - firePropertyChange(PROPERTY_MODIFIED, oldValue, modified); - } - - public void resetSelectedSigning() { - setSelectedSigningName(selectedSigning.getLabel()); - setSelectedSigningText(selectedSigning.getText()); - setModified(false); - } -} diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/DeleteSigningAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/DeleteSigningAction.java deleted file mode 100644 index a0f0cc3..0000000 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/DeleteSigningAction.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.content.reply.actions; - -/* - * #%L - * FaxToMail :: UI - * $Id:$ - * $HeadURL:$ - * %% - * Copyright (C) 2014 - 2015 Mac-Groupe, Code Lutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; -import com.franciaflex.faxtomail.persistence.entities.Stamp; -import com.franciaflex.faxtomail.services.service.UserService; -import com.franciaflex.faxtomail.ui.swing.actions.AbstractFaxToMailAction; -import com.franciaflex.faxtomail.ui.swing.content.reply.SigningSettingsUI; -import com.franciaflex.faxtomail.ui.swing.content.reply.SigningSettingsUIHandler; -import com.franciaflex.faxtomail.ui.swing.content.reply.SigningSettingsUIModel; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import static org.nuiton.i18n.I18n.t; - -/** - * @author Kevin Morin (Code Lutin) - * @since 1.4 - */ -public class DeleteSigningAction extends AbstractFaxToMailAction<SigningSettingsUIModel, SigningSettingsUI, SigningSettingsUIHandler> { - - /** - * Logger. - */ - private static final Log log = LogFactory.getLog(DeleteSigningAction.class); - - public DeleteSigningAction(SigningSettingsUIHandler handler) { - super(handler, false); - } - - @Override - public boolean prepareAction() throws Exception { - boolean result = super.prepareAction(); - - if (result) { - result = askBeforeDelete(t("faxtomail.signings.settings.action.delete.confirm.title"), - t("faxtomail.signings.settings.action.delete.confirm.message", - getModel().getSelectedSigningName())); - } - - return result; - } - - @Override - public void doAction() throws Exception { - SigningSettingsUIModel model = getModel(); - Stamp signing = model.getSelectedSigning(); - - FaxToMailUser user = getContext().getCurrentUser(); - - UserService userService = getContext().newServiceContext().getUserService(); - userService.deleteSigning(user, signing); - - } - - @Override - public void postSuccessAction() { - super.postSuccessAction(); - - SigningSettingsUIModel model = getModel(); - model.setModified(false); - - Stamp selectedSigning = model.getSelectedSigning(); - model.setSelectedSigning(null); - model.removeSigning(selectedSigning); - - model.updateSetDefaultButtonEnabled(); - - getUI().getSigningList().repaint(); - } -} diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/NewSigningAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/NewSigningAction.java deleted file mode 100644 index 487fe99..0000000 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/NewSigningAction.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.content.reply.actions; - -/* - * #%L - * FaxToMail :: UI - * $Id:$ - * $HeadURL:$ - * %% - * Copyright (C) 2014 - 2015 Mac-Groupe, Code Lutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import com.franciaflex.faxtomail.persistence.entities.Stamp; -import com.franciaflex.faxtomail.persistence.entities.StampImpl; -import com.franciaflex.faxtomail.ui.swing.actions.AbstractFaxToMailAction; -import com.franciaflex.faxtomail.ui.swing.content.reply.SigningSettingsUI; -import com.franciaflex.faxtomail.ui.swing.content.reply.SigningSettingsUIHandler; -import com.franciaflex.faxtomail.ui.swing.content.reply.SigningSettingsUIModel; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import static org.nuiton.i18n.I18n.t; - -/** - * @author Kevin Morin (Code Lutin) - * @since 1.4 - */ -public class NewSigningAction extends AbstractFaxToMailAction<SigningSettingsUIModel, SigningSettingsUI, SigningSettingsUIHandler> { - - /** - * Logger. - */ - private static final Log log = LogFactory.getLog(NewSigningAction.class); - - protected Stamp newSigning; - - public NewSigningAction(SigningSettingsUIHandler handler) { - super(handler, false); - } - - @Override - public boolean prepareAction() throws Exception { - return super.prepareAction(); - } - - @Override - public void doAction() throws Exception { - newSigning = new StampImpl(); - newSigning.setSigning(true); - } - - @Override - public void postSuccessAction() { - super.postSuccessAction(); - - SigningSettingsUIModel model = getModel(); - model.addSigning(newSigning); - newSigning.setLabel(t("faxtomail.signings.settings.action.newSigning.name")); - model.setSelectedSigning(newSigning); - model.setSelectedSigningDefault(false); - model.updateSetDefaultButtonEnabled(); - - } - - @Override - protected void releaseAction() { - super.releaseAction(); - newSigning = null; - } -} diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/OpenSigningSettingsAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/OpenSigningSettingsAction.java deleted file mode 100644 index 5890fab..0000000 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/OpenSigningSettingsAction.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.content.reply.actions; - -/* - * #%L - * FaxToMail :: UI - * $Id:$ - * $HeadURL:$ - * %% - * Copyright (C) 2014 - 2015 Mac-Groupe, Code Lutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import com.franciaflex.faxtomail.persistence.entities.Stamp; -import com.franciaflex.faxtomail.ui.swing.actions.AbstractFaxToMailAction; -import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUI; -import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUIHandler; -import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUIModel; -import com.franciaflex.faxtomail.ui.swing.content.reply.SigningSettingsUI; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import java.awt.*; -import java.util.List; - -import static org.nuiton.i18n.I18n.t; - -/** - * @author Kevin Morin (Code Lutin) - * @since 1.4 - */ -public class OpenSigningSettingsAction extends AbstractFaxToMailAction<ReplyFormUIModel, ReplyFormUI, ReplyFormUIHandler> { - - /** - * Logger. - */ - private static final Log log = LogFactory.getLog(OpenSigningSettingsAction.class); - - public OpenSigningSettingsAction(ReplyFormUIHandler handler) { - super(handler, false); - } - - @Override - public void doAction() throws Exception { - // do nothing - } - - @Override - public void postSuccessAction() { - super.postSuccessAction(); - - SigningSettingsUI signingSettingsUI = new SigningSettingsUI(getUI()); - handler.openDialog(signingSettingsUI, t("faxtomail.signings.settings.title"), new Dimension(700, 400)); - - List<Stamp> signings = signingSettingsUI.getModel().getSignings(); - getContext().getCurrentUser().setSignings(signings); - getUI().getStampComboBox().setData(signings); - } -} diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/ReplyAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/ReplyAction.java index 7a8ba79..6bc96a9 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/ReplyAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/ReplyAction.java @@ -71,15 +71,14 @@ public class ReplyAction extends AbstractFaxToMailAction<ReplyFormUIModel, Reply } }); Email email = emailService.reply(model.getFrom(), - model.getTo(), - model.getCc(), - model.getCci(), - model.getSubject(), - model.getMessage(), - model.getStamp(), - attachmentFiles, - originalDemand.getTopiaId(), - getContext().getCurrentUser()); + model.getTo(), + model.getCc(), + model.getCci(), + model.getSubject(), + model.getMessage(), + attachmentFiles, + originalDemand.getTopiaId(), + getContext().getCurrentUser()); originalDemand.fromEntityIncluding(email, Sets.newHashSet(Email.PROPERTY_REPLIES, Email.PROPERTY_HISTORY)); } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/SaveSigningAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/SaveSigningAction.java deleted file mode 100644 index 976cdee..0000000 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/SaveSigningAction.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.content.reply.actions; - -/* - * #%L - * FaxToMail :: UI - * $Id:$ - * $HeadURL:$ - * %% - * Copyright (C) 2014 - 2015 Mac-Groupe, Code Lutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; -import com.franciaflex.faxtomail.persistence.entities.Stamp; -import com.franciaflex.faxtomail.services.service.UserService; -import com.franciaflex.faxtomail.ui.swing.actions.AbstractFaxToMailAction; -import com.franciaflex.faxtomail.ui.swing.content.reply.SigningSettingsUI; -import com.franciaflex.faxtomail.ui.swing.content.reply.SigningSettingsUIHandler; -import com.franciaflex.faxtomail.ui.swing.content.reply.SigningSettingsUIModel; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * @author Kevin Morin (Code Lutin) - * @since 1.4 - */ -public class SaveSigningAction extends AbstractFaxToMailAction<SigningSettingsUIModel, SigningSettingsUI, SigningSettingsUIHandler> { - - /** - * Logger. - */ - private static final Log log = LogFactory.getLog(SaveSigningAction.class); - - public SaveSigningAction(SigningSettingsUIHandler handler) { - super(handler, false); - } - - @Override - public void doAction() throws Exception { - SigningSettingsUIModel model = getModel(); - Stamp signing = model.getSelectedSigning(); - signing.setLabel(model.getSelectedSigningName()); - signing.setText(model.getSelectedSigningText()); - - FaxToMailUser user = getContext().getCurrentUser(); - - UserService userService = getContext().newServiceContext().getUserService(); - userService.saveSigning(user, signing, user.isSigningsEmpty()); - - } - - @Override - public void postSuccessAction() { - super.postSuccessAction(); - SigningSettingsUIModel model = getModel(); - model.updateSetDefaultButtonEnabled(); - model.setModified(false); - getUI().getSigningList().repaint(); - } -} diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/SenderChangedAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/SenderChangedAction.java new file mode 100644 index 0000000..943cb39 --- /dev/null +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/SenderChangedAction.java @@ -0,0 +1,57 @@ +package com.franciaflex.faxtomail.ui.swing.content.reply.actions; + +import com.franciaflex.faxtomail.persistence.entities.SigningForDomain; +import com.franciaflex.faxtomail.services.FaxToMailServiceContext; +import com.franciaflex.faxtomail.ui.swing.actions.AbstractFaxToMailAction; +import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUI; +import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUIHandler; +import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUIModel; +import com.google.common.base.Optional; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import static org.nuiton.i18n.I18n.t; + +/** + * @author Kevin Morin (Code Lutin) + * @since 2.0.4 + */ +public class SenderChangedAction extends AbstractFaxToMailAction<ReplyFormUIModel, ReplyFormUI, ReplyFormUIHandler> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(SenderChangedAction.class); + + private SigningForDomain signingForDomain; + + public SenderChangedAction(ReplyFormUIHandler handler) { + super(handler, false); + setActionDescription(t("faxtomail.action.senderChanged.tip")); + } + + @Override + public boolean prepareAction() throws Exception { + return super.prepareAction() && !getModel().isReadonly(); + } + + @Override + public void doAction() throws Exception { + ReplyFormUIModel model = getModel(); + FaxToMailServiceContext serviceContext = getContext().newServiceContext(); + Optional<SigningForDomain> signingForEmailAddress = serviceContext.getConfigurationService().getSigningForEmailAddress(model.getFrom()); + signingForDomain = signingForEmailAddress.orNull(); + } + + @Override + public void postSuccessAction() { + super.postSuccessAction(); + + getModel().setSigning(signingForDomain); + getHandler().replaceSigning(); + } + + @Override + protected void releaseAction() { + super.releaseAction(); + signingForDomain = null; + } +} \ No newline at end of file diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/SetDefaultSigningAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/SetDefaultSigningAction.java deleted file mode 100644 index 298f7dc..0000000 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/SetDefaultSigningAction.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.content.reply.actions; - -/* - * #%L - * FaxToMail :: UI - * $Id:$ - * $HeadURL:$ - * %% - * Copyright (C) 2014 - 2015 Mac-Groupe, Code Lutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; -import com.franciaflex.faxtomail.persistence.entities.Stamp; -import com.franciaflex.faxtomail.services.service.UserService; -import com.franciaflex.faxtomail.ui.swing.actions.AbstractFaxToMailAction; -import com.franciaflex.faxtomail.ui.swing.content.reply.SigningSettingsUI; -import com.franciaflex.faxtomail.ui.swing.content.reply.SigningSettingsUIHandler; -import com.franciaflex.faxtomail.ui.swing.content.reply.SigningSettingsUIModel; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * @author Kevin Morin (Code Lutin) - * @since 1.4 - */ -public class SetDefaultSigningAction extends AbstractFaxToMailAction<SigningSettingsUIModel, SigningSettingsUI, SigningSettingsUIHandler> { - - /** - * Logger. - */ - private static final Log log = LogFactory.getLog(SetDefaultSigningAction.class); - - public SetDefaultSigningAction(SigningSettingsUIHandler handler) { - super(handler, false); - } - - @Override - public void doAction() throws Exception { - SigningSettingsUIModel model = getModel(); - Stamp signing = model.getSelectedSigning(); - signing.setLabel(model.getSelectedSigningName()); - signing.setText(model.getSelectedSigningText()); - - FaxToMailUser user = getContext().getCurrentUser(); - - UserService userService = getContext().newServiceContext().getUserService(); - userService.saveSigning(user, signing, true); - } - - @Override - public void postSuccessAction() { - super.postSuccessAction(); - - getModel().setSelectedSigningDefault(true); - getModel().updateSetDefaultButtonEnabled(); - getModel().setModified(false); - getUI().getSigningList().repaint(); - } -} 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 42c1b24..4deca44 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 @@ -80,7 +80,6 @@ import javax.swing.JTextPane; import javax.swing.JTree; import javax.swing.event.HyperlinkEvent; import javax.swing.event.HyperlinkListener; -import javax.swing.text.html.HTMLEditorKit; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeCellRenderer; import javax.swing.tree.DefaultTreeModel; @@ -866,8 +865,6 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { 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); diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/data/DataConnection.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/data/DataConnection.java new file mode 100644 index 0000000..55ff86e --- /dev/null +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/data/DataConnection.java @@ -0,0 +1,33 @@ +package com.franciaflex.faxtomail.ui.swing.util.data; + +import javax.xml.bind.DatatypeConverter; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.net.URLConnection; + +/** + * @author Kevin Morin (Code Lutin) + * @since 2.0.4 + */ +public class DataConnection extends URLConnection { + + public DataConnection(URL u) { + super(u); + } + + @Override + public void connect() throws IOException { + connected = true; + } + + @Override + public InputStream getInputStream() throws IOException { + String data = url.toString(); + data = data.replaceFirst("^.*;base64,", ""); + byte[] bytes = DatatypeConverter.parseBase64Binary(data); + return new ByteArrayInputStream(bytes); + } + +} diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/data/Handler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/data/Handler.java new file mode 100644 index 0000000..283cc67 --- /dev/null +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/data/Handler.java @@ -0,0 +1,34 @@ +package com.franciaflex.faxtomail.ui.swing.util.data; + +import java.io.IOException; +import java.net.URL; +import java.net.URLConnection; +import java.net.URLStreamHandler; + +/** + * Handler to display base64 images in html emails in the jtextpane + * + * @author Kevin Morin (Code Lutin) + * @since 2.0.4 + */ +public class Handler extends URLStreamHandler { + + @Override + protected URLConnection openConnection(URL u) throws IOException { + return new DataConnection(u); + } + + public static void install() { + String pkgName = Handler.class.getPackage().getName(); + String pkg = pkgName.substring(0, pkgName.lastIndexOf('.')); + + String protocolHandlers = System.getProperty("java.protocol.handler.pkgs", ""); + if (!protocolHandlers.contains(pkg)) { + if (!protocolHandlers.isEmpty()) { + protocolHandlers += "|"; + } + protocolHandlers += pkg; + System.setProperty("java.protocol.handler.pkgs", protocolHandlers); + } + } +} \ No newline at end of file diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupButton.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/toolbar/AbstractToolbarPopupButton.java similarity index 97% rename from faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupButton.java rename to faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/toolbar/AbstractToolbarPopupButton.java index 3dab88f..9cb0216 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupButton.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/toolbar/AbstractToolbarPopupButton.java @@ -1,4 +1,4 @@ -package com.franciaflex.faxtomail.ui.swing.util; +package com.franciaflex.faxtomail.ui.swing.util.toolbar; /* * #%L @@ -24,6 +24,7 @@ package com.franciaflex.faxtomail.ui.swing.util; * #L% */ +import com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupUI; import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.JAXXWidgetUtil; import org.apache.commons.logging.Log; diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/toolbar/AbstractToolbarPopupHandler.java similarity index 97% rename from faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupHandler.java rename to faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/toolbar/AbstractToolbarPopupHandler.java index f3b370d..d452b9b 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/toolbar/AbstractToolbarPopupHandler.java @@ -1,4 +1,4 @@ -package com.franciaflex.faxtomail.ui.swing.util; +package com.franciaflex.faxtomail.ui.swing.util.toolbar; /* * #%L @@ -24,6 +24,7 @@ package com.franciaflex.faxtomail.ui.swing.util; * #L% */ +import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.ComponentMover; import jaxx.runtime.swing.ComponentResizer; diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupUI.css b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/toolbar/AbstractToolbarPopupUI.css similarity index 100% rename from faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupUI.css rename to faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/toolbar/AbstractToolbarPopupUI.css diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupUI.jaxx b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/toolbar/AbstractToolbarPopupUI.jaxx similarity index 100% rename from faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupUI.jaxx rename to faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/toolbar/AbstractToolbarPopupUI.jaxx diff --git a/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties b/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties index d5f3f40..f469c11 100644 --- a/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties +++ b/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties @@ -289,7 +289,6 @@ faxtomail.reply.action.close=Fermer faxtomail.reply.action.close.tip=Fermer faxtomail.reply.action.forward=Transférer faxtomail.reply.action.forward.tip=Retransférer la réponse vers une autre adresse email -faxtomail.reply.action.signing.configure.tip=Configurer les signatures faxtomail.reply.action.validate=Envoyer faxtomail.reply.action.validate.tip=Envoyer la réponse au mail faxtomail.reply.attachment.label=%1$s (%2$s ko) @@ -301,10 +300,9 @@ faxtomail.reply.label.cc=Copie \: faxtomail.reply.label.cci=Copie cachée \: faxtomail.reply.label.contact=Contact \: faxtomail.reply.label.from=De \: -faxtomail.reply.label.signing=Signature faxtomail.reply.label.subject=Objet \: faxtomail.reply.label.to=À \: -faxtomail.reply.message=\nLe %1$s, %2$s a écrit \:\n> %3$s +faxtomail.reply.message=<html><body><p></p>%s<p>Le %s, %s a écrit \:</p><p style\='border-left\: 2px solid blue;padding-left\: 5px;'>%s</p> faxtomail.reply.subject=Re \: %s faxtomail.reply.title=Réponse à \: %s faxtomail.search.action.error=Erreur lors de la recherche @@ -329,24 +327,6 @@ faxtomail.searchToGroup.action.cancel.tip=Fermer la fenêtre sans grouper l'él faxtomail.searchToGroup.action.group=Grouper faxtomail.searchToGroup.action.group.tip=Grouper avec l'élément courant faxtomail.searchToGroup.title=Recherche de l'élément avec lequel grouper l'élément %s -faxtomail.signings.settings.action.cancel=Fermer -faxtomail.signings.settings.action.cancel.tip=Fermer la configuration des signatures sans enregistrer -faxtomail.signings.settings.action.default=Par défault -faxtomail.signings.settings.action.default.tip=Signature par défault -faxtomail.signings.settings.action.delete=Supprimer -faxtomail.signings.settings.action.delete.confirm.message=Vous êtes sur le point de supprimer la signature %s. -faxtomail.signings.settings.action.delete.confirm.title=Suppression de signature -faxtomail.signings.settings.action.delete.tip=Supprimer la signature -faxtomail.signings.settings.action.newSigning.name=Nouvelle signature -faxtomail.signings.settings.action.newSigning.tip=Créer une nouvelle signature -faxtomail.signings.settings.action.save=Enregistrer -faxtomail.signings.settings.action.save.tip=Enregistrer les modifications faites à la signature -faxtomail.signings.settings.label=Signatures -faxtomail.signings.settings.name.label=Nom -faxtomail.signings.settings.noSelection.label=Sélectionnez une signature pour l'éditer -faxtomail.signings.settings.saveBeforeLeaving=Vous avez modifié la signature %s. Voulez-vous l'enregistrer avant d'éditer une autre signature ? -faxtomail.signings.settings.text.label=Texte -faxtomail.signings.settings.title=Configuration des signatures faxtomail.systemUser=Système faxtomail.validator.error.email.client.required=Client requis faxtomail.validator.error.email.comment.required=Message requis -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.