This is an automated email from the git hooks/post-receive script. New commit to branch feature/7419 in repository faxtomail. See http://git.codelutin.com/faxtomail.git commit 53ec3ff53c139b8363c2ae40b3ada55243d3385a Author: Kevin Morin <morin@codelutin.com> Date: Mon Aug 24 18:20:32 2015 +0200 ajout de la signature dans le formulaire de réponse + début d'écran de configuration des signatures (refs #7419) --- .../faxtomail/services/DecoratorServiceImpl.java | 13 +++ .../services/service/LdapServiceImpl.java | 1 + .../services/service/ldap/LdapServiceMock.java | 1 + .../ui/swing/content/reply/ReplyFormUI.css | 24 ++++- .../ui/swing/content/reply/ReplyFormUI.jaxx | 35 +++++++- .../ui/swing/content/reply/ReplyFormUIHandler.java | 25 +++++- .../ui/swing/content/reply/ReplyFormUIModel.java | 13 +++ .../ui/swing/content/reply/SigningSettingsUI.css | 60 +++++++++++++ .../ui/swing/content/reply/SigningSettingsUI.jaxx | 100 +++++++++++++++++++++ .../content/reply/SigningSettingsUIHandler.java | 69 ++++++++++++++ .../content/reply/SigningSettingsUIModel.java | 70 +++++++++++++++ .../content/reply/actions/NewSigningAction.java | 63 +++++++++++++ .../reply/actions/OpenSigningSettingsAction.java | 44 +++++++++ .../i18n/faxtomail-ui-swing_fr_FR.properties | 13 +++ .../src/main/resources/icons/action-default.png | Bin 0 -> 670 bytes .../src/main/resources/icons/action-settings.png | Bin 0 -> 512 bytes 16 files changed, 525 insertions(+), 6 deletions(-) diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorServiceImpl.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorServiceImpl.java index 18c6ceb..f4c78f9 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorServiceImpl.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorServiceImpl.java @@ -30,9 +30,11 @@ import com.franciaflex.faxtomail.persistence.entities.Client; import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; import com.franciaflex.faxtomail.persistence.entities.HasLabel; import com.franciaflex.faxtomail.persistence.entities.Reply; +import com.franciaflex.faxtomail.persistence.entities.Signing; import com.franciaflex.faxtomail.services.service.ldap.Contact; import org.nuiton.decorator.Decorator; import org.nuiton.decorator.DecoratorProvider; +import org.nuiton.decorator.JXPathDecorator; import java.text.DateFormat; import java.util.Date; @@ -140,6 +142,17 @@ public class DecoratorServiceImpl extends FaxToMailServiceSupport implements Dec registerMultiJXPathDecorator(Reply.class, "${sentDate}$s#${subject}$s", SEPARATOR, " - "); registerMultiJXPathDecorator(FaxToMailUser.class, "${lastName}$s#${firstName}$s#${trigraph}$s", SEPARATOR, " "); registerMultiJXPathDecorator(Client.class, "${code}$s#${name}$s#${brand}$s", SEPARATOR, " - "); + registerDecorator(new JXPathDecorator<Signing>(Signing.class, "", null) { + private static final long serialVersionUID = 1L; + + @Override + public String toString(Object bean) { + if (bean == null) { + return ""; + } + return ((Signing) bean).getStamp().getLabel(); + } + }); } }; } diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/LdapServiceImpl.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/LdapServiceImpl.java index 023992b..4ec9421 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/LdapServiceImpl.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/LdapServiceImpl.java @@ -390,6 +390,7 @@ public class LdapServiceImpl extends FaxToMailServiceSupport implements LdapServ // force collection loading to force non lazy collections user.isAffectedFoldersEmpty(); user.isUserGroupsEmpty(); + user.isStampSigningEmpty(); return user; } diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ldap/LdapServiceMock.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ldap/LdapServiceMock.java index 11d70ea..2771fed 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ldap/LdapServiceMock.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ldap/LdapServiceMock.java @@ -109,6 +109,7 @@ public class LdapServiceMock extends LdapServiceImpl { // force collection loading to force non lazy collections result.isAffectedFoldersEmpty(); result.isUserGroupsEmpty(); + result.isStampSigningEmpty(); return result; } } 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 252011b..4cd1704 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 @@ -112,7 +112,7 @@ editable: { !model.isReadonly() }; } -#splitPane { +#messageSplitPane { dividerLocation: 270; } @@ -121,6 +121,28 @@ editable: { !model.isReadonly() }; } +#signingComboBox { + showReset: true; + showDecorator: false; + bean: {model}; + property: signing; + selectedItem: { model.getSigning() }; +} + +#configureSigningButton { + actionIcon: config; + toolTipText: "faxtomail.reply.action.signing.configure.tip"; + _applicationAction: { com.franciaflex.faxtomail.ui.swing.content.reply.actions.OpenSigningSettingsAction.class }; +} + +#signingScrollPanel { + visible: { model.getSigning() != null }; +} + +#signingPanel { + editable: false; +} + #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 c78cc5d..fb7b213 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 @@ -23,6 +23,7 @@ implements='com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI<ReplyFormUIModel, ReplyFormUIHandler>'> <import> + com.franciaflex.faxtomail.persistence.entities.Signing com.franciaflex.faxtomail.services.service.ldap.Contact com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil @@ -33,6 +34,7 @@ jaxx.runtime.swing.CardLayout2Ext jaxx.runtime.swing.editor.bean.BeanFilterableComboBox + jaxx.runtime.swing.editor.bean.BeanComboBox static org.nuiton.i18n.I18n.t </import> @@ -143,13 +145,38 @@ </row> </Table> - <JSplitPane id="splitPane" + <JSplitPane id="messageSplitPane" orientation="{JSplitPane.VERTICAL_SPLIT}" constraints='BorderLayout.CENTER'> - <JScrollPane> - <JTextPane id="message" + + <JSplitPane id="signingSplitPane" + orientation="{JSplitPane.VERTICAL_SPLIT}"> + <JScrollPane> + <JTextPane id="message" onKeyReleased='handler.setText(event, "message")'/> - </JScrollPane> + </JScrollPane> + + <Table fill="both"> + <row> + <cell weightx="1"> + <BeanComboBox id="signingComboBox" + constructorParams='this' + genericType="Signing"/> + </cell> + <cell> + <JButton id="configureSigningButton"/> + </cell> + </row> + <row> + <cell columns="2" weighty="1.0"> + <JScrollPane id="signingScrollPanel"> + <JTextPane id="signingPanel"/> + </JScrollPane> + </cell> + </row> + </Table> + + </JSplitPane> <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 8bdecde..497aa67 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 @@ -29,17 +29,22 @@ import com.franciaflex.faxtomail.persistence.entities.AttachmentFile; import com.franciaflex.faxtomail.persistence.entities.AttachmentFileImpl; import com.franciaflex.faxtomail.persistence.entities.AttachmentImpl; import com.franciaflex.faxtomail.persistence.entities.MailFolder; +import com.franciaflex.faxtomail.persistence.entities.Signing; import com.franciaflex.faxtomail.services.service.ldap.Contact; import com.franciaflex.faxtomail.ui.swing.actions.AddAttachmentToReplyAction; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil; +import com.google.common.base.Optional; +import com.google.common.base.Predicate; import com.google.common.base.Strings; +import com.google.common.collect.Iterables; 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; +import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -205,6 +210,24 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo model.setValid((Boolean) evt.getNewValue()); } }); + + Collection<Signing> stampSigning = getContext().getCurrentUser().getStampSigning(); + List<Signing> signings = new ArrayList<>(); + + if (stampSigning != null) { + signings.addAll(stampSigning); + Optional<Signing> signingOptional = Iterables.tryFind(stampSigning, new Predicate<Signing>() { + @Override + public boolean apply(Signing input) { + return BooleanUtils.isTrue(input.getDefaultSigning()); + } + }); + if (signingOptional.isPresent()) { + model.setSigning(signingOptional.get()); + } + } + + initBeanComboBox(ui.getSigningComboBox(), signings, model.getSigning()); } @Override @@ -228,7 +251,7 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo @Override public Component getTopestUI() { - return getUI(); + return getParentContainer(Window.class); } public void removeAttachment(ReplyAttachmentModel attachment) { 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 7576737..fa51d61 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,6 +24,7 @@ package com.franciaflex.faxtomail.ui.swing.content.reply; * #L% */ +import com.franciaflex.faxtomail.persistence.entities.Signing; import com.franciaflex.faxtomail.services.service.ldap.Contact; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; import com.google.common.base.Preconditions; @@ -53,6 +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_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"; @@ -71,6 +73,7 @@ public class ReplyFormUIModel extends AbstractSerializableBean { protected String subject; protected String message; protected DemandeUIModel originalDemand; + protected Signing signing; protected long maxAttachmentLength = 0; protected long totalAttachmentLength = 0; protected boolean valid = true; @@ -177,6 +180,16 @@ public class ReplyFormUIModel extends AbstractSerializableBean { firePropertyChange(PROPERTY_ORIGINAL_DEMAND, oldValue, originalDemand); } + public Signing getSigning() { + return signing; + } + + public void setSigning(Signing signing) { + Object oldValue = getSigning(); + this.signing = signing; + firePropertyChange(PROPERTY_SIGNING, oldValue, signing); + } + public Set<ReplyAttachmentModel> getAttachments() { return attachments; } 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 new file mode 100644 index 0000000..6d3f5ed --- /dev/null +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/SigningSettingsUI.css @@ -0,0 +1,60 @@ +#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"; +} + +#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.actions.ReplyAction.class }; +} + +#setDefaultButton { + actionIcon: default; + text: "faxtomail.signings.settings.action.default"; + toolTipText: "faxtomail.signings.settings.action.default.tip"; + //_applicationAction: { com.franciaflex.faxtomail.ui.swing.actions.ReplyAction.class }; +} \ 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 new file mode 100644 index 0000000..860fee1 --- /dev/null +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/SigningSettingsUI.jaxx @@ -0,0 +1,100 @@ +<!-- + #%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.Signing + 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='from' component='fromComboBox'/>--> + <!--<field name='to' component='toField'/>--> + <!--<field name='subject' component='subjectField'/>--> + <!--<field name='totalAttachmentLength' component="attachmentsPanel"/>--> + <!--</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="Signing"/> + </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"/> + </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 new file mode 100644 index 0000000..234e5c7 --- /dev/null +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/SigningSettingsUIHandler.java @@ -0,0 +1,69 @@ +package com.franciaflex.faxtomail.ui.swing.content.reply; + +import com.franciaflex.faxtomail.persistence.entities.Signing; +import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; +import jaxx.runtime.validator.swing.SwingValidator; +import org.nuiton.jaxx.application.swing.util.Cancelable; + +import javax.swing.*; +import java.awt.*; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.util.Collection; +import java.util.List; + +/** + * @author Kevin Morin (Code Lutin) + * @since 1.4 + */ +public class SigningSettingsUIHandler extends AbstractFaxToMailUIHandler<SigningSettingsUIModel, SigningSettingsUI> implements Cancelable { + + @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<Signing> signings = (List<Signing>) evt.getNewValue(); + JList<Signing> signingList = getUI().getSigningList(); + signingList.setListData(signings.toArray(new Signing[signings.size()])); + } + }); + + Collection<Signing> stampSigning = getContext().getCurrentUser().getStampSigning(); + model.setSignings(stampSigning); + + getUI().getSigningList().setCellRenderer(newListCellRender(Signing.class)); + } + + @Override + public void cancel() { + getParentContainer(Dialog.class).setVisible(false); + } + + @Override + public void onCloseUI() { + } + + @Override + public SwingValidator<SigningSettingsUIModel> getValidator() { + return null; + } + + @Override + protected JComponent getComponentToFocus() { + return null; + } +} 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 new file mode 100644 index 0000000..46a5f3c --- /dev/null +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/SigningSettingsUIModel.java @@ -0,0 +1,70 @@ +package com.franciaflex.faxtomail.ui.swing.content.reply; + +import com.franciaflex.faxtomail.persistence.entities.Signing; +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"; + + protected List<Signing> signings = new ArrayList<>(); + protected Signing selectedSigning; + + public Signing getSelectedSigning() { + return selectedSigning; + } + + public void setSelectedSignings(Signing selectedSigning) { + Object oldValue = getSelectedSigning(); + this.selectedSigning = selectedSigning; + firePropertyChange(PROPERTY_SELECTED_SIGNING, oldValue, selectedSigning); + } + + public List<Signing> getSignings() { + return signings; + } + + public void setSignings(Collection<Signing> signings) { + this.signings.clear(); + if (signings != null) { + this.signings.addAll(signings); + } + firePropertyChange(PROPERTY_SIGNINGS, null, this.signings); + } + + public void addSigning(Signing signing) { + this.signings.add(signing); + firePropertyChange(PROPERTY_SIGNINGS, null, this.signings); + } + + public String getSelectedSigningName() { + return selectedSigning != null ? selectedSigning.getStamp().getLabel() : null; + } + + public void setSelectedSigningName(String selectedSigningName) { + Object oldValue = getSelectedSigningName(); + selectedSigning.getStamp().setLabel(selectedSigningName); + firePropertyChange(PROPERTY_SELECTED_SIGNING_NAME, oldValue, selectedSigningName); + } + + public String getSelectedSigningText() { + return selectedSigning != null ? selectedSigning.getStamp().getText() : null; + } + + public void setSelectedSigningText(String selectedSigningText) { + Object oldValue = getSelectedSigningText(); + selectedSigning.getStamp().setText(selectedSigningText); + firePropertyChange(PROPERTY_SELECTED_SIGNING_TEXT, oldValue, selectedSigningText); + } +} 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 new file mode 100644 index 0000000..4902471 --- /dev/null +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/NewSigningAction.java @@ -0,0 +1,63 @@ +package com.franciaflex.faxtomail.ui.swing.content.reply.actions; + +import com.franciaflex.faxtomail.persistence.entities.Signing; +import com.franciaflex.faxtomail.persistence.entities.SigningImpl; +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 Signing 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 SigningImpl(); + Stamp stamp = new StampImpl(); + newSigning.setStamp(stamp); + } + + @Override + public void postSuccessAction() { + super.postSuccessAction(); + + getModel().addSigning(newSigning); + getModel().setSelectedSignings(newSigning); + getModel().setSelectedSigningName(t("faxtomail.signings.settings.action.newSigning.name")); + + if (log.isInfoEnabled()) { + log.info("new singning : " + getModel().getSelectedSigning().getStamp().getLabel()); + } + } + + @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 new file mode 100644 index 0000000..79a6144 --- /dev/null +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/OpenSigningSettingsAction.java @@ -0,0 +1,44 @@ +package com.franciaflex.faxtomail.ui.swing.content.reply.actions; + +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.*; + +/** + * @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, "test", new Dimension(600, 400)); + + if (log.isInfoEnabled()) { + log.info("setting closed"); + } + } +} 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 f6a0949..05027fa 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 @@ -278,6 +278,7 @@ 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) @@ -316,6 +317,18 @@ 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=Annuler +faxtomail.signings.settings.action.cancel.tip=Annuler et fermer la configuration des signatures +faxtomail.signings.settings.action.default=Par défault +faxtomail.signings.settings.action.default.tip=Signature par défault +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.text.label=Texte faxtomail.systemUser=Système faxtomail.validator.error.email.clientCode.required=Code client requis faxtomail.validator.error.email.comment.required=Message requis diff --git a/faxtomail-ui-swing/src/main/resources/icons/action-default.png b/faxtomail-ui-swing/src/main/resources/icons/action-default.png new file mode 100644 index 0000000..b88c857 Binary files /dev/null and b/faxtomail-ui-swing/src/main/resources/icons/action-default.png differ diff --git a/faxtomail-ui-swing/src/main/resources/icons/action-settings.png b/faxtomail-ui-swing/src/main/resources/icons/action-settings.png new file mode 100644 index 0000000..67de2c6 Binary files /dev/null and b/faxtomail-ui-swing/src/main/resources/icons/action-settings.png differ -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.