This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository faxtomail. See http://git.codelutin.com/faxtomail.git commit 0810bf027973d5c82750fa6d6e67e35624d7024a Author: Kevin Morin <morin@codelutin.com> Date: Tue Aug 25 18:29:50 2015 +0200 - modif du modèle de signatures (plus de Signing, directement des stamp et un lien entre le stamp et le user pour le default) - enregistrement des signatures et mise par défaut refs #7419 --- faxtomail-persistence/src/main/xmi/faxtomail.zargo | Bin 32665 -> 32540 bytes .../faxtomail/services/DecoratorServiceImpl.java | 13 --- .../services/service/LdapServiceImpl.java | 2 +- .../faxtomail/services/service/UserService.java | 4 + .../services/service/UserServiceImpl.java | 31 +++++++ .../services/service/ldap/LdapServiceMock.java | 3 +- .../h2/V1_4_0_150817__add_signings_to_users.sql | 27 ++----- .../V1_4_0_150817__add_signings_to_users.sql | 29 ++----- .../ui/swing/actions/OpenGroupedDemandAction.java | 13 +-- .../ui/swing/content/reply/ReplyFormUI.css | 11 +-- .../ui/swing/content/reply/ReplyFormUI.jaxx | 6 +- .../ui/swing/content/reply/ReplyFormUIHandler.java | 28 +++---- .../ui/swing/content/reply/ReplyFormUIModel.java | 18 ++--- .../ui/swing/content/reply/SigningSettingsUI.css | 6 +- .../ui/swing/content/reply/SigningSettingsUI.jaxx | 4 +- .../content/reply/SigningSettingsUIHandler.java | 90 +++++++++++++++++++-- .../content/reply/SigningSettingsUIModel.java | 77 +++++++++++++++--- .../content/reply/actions/NewSigningAction.java | 21 +++-- .../reply/actions/OpenSigningSettingsAction.java | 12 ++- .../content/reply/actions/SaveSigningAction.java | 49 +++++++++++ .../reply/actions/SetDefaultSigningAction.java | 50 ++++++++++++ .../i18n/faxtomail-ui-swing_fr_FR.properties | 5 +- 22 files changed, 358 insertions(+), 141 deletions(-) diff --git a/faxtomail-persistence/src/main/xmi/faxtomail.zargo b/faxtomail-persistence/src/main/xmi/faxtomail.zargo index f89ff84..dc84d52 100644 Binary files a/faxtomail-persistence/src/main/xmi/faxtomail.zargo and b/faxtomail-persistence/src/main/xmi/faxtomail.zargo differ diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorServiceImpl.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorServiceImpl.java index f4c78f9..18c6ceb 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,11 +30,9 @@ 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; @@ -142,17 +140,6 @@ 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 4ec9421..9045b20 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,7 +390,7 @@ public class LdapServiceImpl extends FaxToMailServiceSupport implements LdapServ // force collection loading to force non lazy collections user.isAffectedFoldersEmpty(); user.isUserGroupsEmpty(); - user.isStampSigningEmpty(); + user.isSigningsEmpty(); return user; } diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserService.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserService.java index 9dbb6bf..1025e0a 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserService.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserService.java @@ -26,6 +26,7 @@ package com.franciaflex.faxtomail.services.service; import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; import com.franciaflex.faxtomail.persistence.entities.FaxToMailUserGroup; +import com.franciaflex.faxtomail.persistence.entities.Stamp; import com.franciaflex.faxtomail.services.FaxToMailService; import java.util.List; @@ -53,4 +54,7 @@ public interface UserService extends FaxToMailService { List<FaxToMailUserGroup> getAllActiveUserGroups(); FaxToMailUser getUser(String topiaId); + + Stamp saveSigning(FaxToMailUser user, Stamp signing, boolean defaultSigning); + } diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserServiceImpl.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserServiceImpl.java index ab10244..d71bbf5 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserServiceImpl.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserServiceImpl.java @@ -28,7 +28,10 @@ import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; import com.franciaflex.faxtomail.persistence.entities.FaxToMailUserGroup; import com.franciaflex.faxtomail.persistence.entities.FaxToMailUserGroupTopiaDao; import com.franciaflex.faxtomail.persistence.entities.FaxToMailUserTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.Stamp; +import com.franciaflex.faxtomail.persistence.entities.StampTopiaDao; import com.franciaflex.faxtomail.services.FaxToMailServiceSupport; +import com.google.common.base.Preconditions; import org.hibernate.Hibernate; import java.util.List; @@ -91,4 +94,32 @@ public class UserServiceImpl extends FaxToMailServiceSupport implements UserServ Hibernate.initialize(user.getAffectedFolders()); return user; } + + @Override + public Stamp saveSigning(FaxToMailUser user, Stamp signing, boolean defaultSigning) { + Preconditions.checkNotNull(user); + Preconditions.checkNotNull(signing); + Preconditions.checkArgument(!signing.isPersisted() || user.containsSignings(signing)); + + StampTopiaDao stampDao = getPersistenceContext().getStampDao(); + FaxToMailUserTopiaDao userDao = getPersistenceContext().getFaxToMailUserDao(); + + if (signing.isPersisted()) { + stampDao.update(signing); + + } else { + stampDao.create(signing); + user.addSignings(signing); + userDao.update(user); + } + + if (defaultSigning) { + user.setDefaultSigning(signing); + userDao.update(user); + } + + getPersistenceContext().commit(); + + return signing; + } } 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 2771fed..fe29972 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,7 +109,8 @@ public class LdapServiceMock extends LdapServiceImpl { // force collection loading to force non lazy collections result.isAffectedFoldersEmpty(); result.isUserGroupsEmpty(); - result.isStampSigningEmpty(); + result.isSigningsEmpty(); + return result; } } diff --git a/faxtomail-service/src/main/resources/db/migration/h2/V1_4_0_150817__add_signings_to_users.sql b/faxtomail-service/src/main/resources/db/migration/h2/V1_4_0_150817__add_signings_to_users.sql index 6362b12..2404832 100644 --- a/faxtomail-service/src/main/resources/db/migration/h2/V1_4_0_150817__add_signings_to_users.sql +++ b/faxtomail-service/src/main/resources/db/migration/h2/V1_4_0_150817__add_signings_to_users.sql @@ -1,25 +1,5 @@ -- add signings -create table SIGNING ( - topiaId varchar(255) not null, - topiaVersion bigint not null, - topiaCreateDate timestamp, - defaultsigning boolean, - stamp varchar(255), - faxtomailuser varchar(255), - primary key (topiaId) -); - -alter table SIGNING - add constraint FK_GD2AAMHXEMVLK1YBJO29P2GE5_INDEX_A - foreign key (faxtomailuser) - references faxtomailuser; - -alter table SIGNING - add constraint FK_QACW13RQL32JL97IM0EOHSL4Y_INDEX_A - foreign key (stamp) - references stamp; - alter table stamp add signing boolean; alter table stamp add faxtomailuser varchar(255); @@ -30,3 +10,10 @@ alter table stamp update stamp set signing = 'f'; +-- add default signing + +alter table faxtomailuser add defaultsigning varchar(255); +alter table faxtomailuser + add constraint FK_CDWL91T1FPNO1PW07532VPN21_INDEX_7 + foreign key (defaultsigning) + references stamp; diff --git a/faxtomail-service/src/main/resources/db/migration/sqlserver/V1_4_0_150817__add_signings_to_users.sql b/faxtomail-service/src/main/resources/db/migration/sqlserver/V1_4_0_150817__add_signings_to_users.sql index 62e34ae..3b9c353 100644 --- a/faxtomail-service/src/main/resources/db/migration/sqlserver/V1_4_0_150817__add_signings_to_users.sql +++ b/faxtomail-service/src/main/resources/db/migration/sqlserver/V1_4_0_150817__add_signings_to_users.sql @@ -1,28 +1,8 @@ -- add signings -create table SIGNING ( - topiaId varchar(255) not null, - topiaVersion bigint not null, - topiaCreateDate datetime2, - defaultsigning bit, - stamp varchar(255), - faxtomailuser varchar(255), - primary key (topiaId) -); - -alter table SIGNING - add constraint FK_GD2AAMHXEMVLK1YBJO29P2GE5_INDEX_A - foreign key (faxtomailuser) - references faxtomailuser; - -alter table SIGNING - add constraint FK_QACW13RQL32JL97IM0EOHSL4Y_INDEX_A - foreign key (stamp) - references stamp; - alter table stamp add signing bit; -alter table stamp add faxtomailuser varchar(255); +alter table stamp add faxtomailuser varchar(255); alter table stamp add constraint FK_KPY7QI4OX3LIY20GRSP7D449M_INDEX_4 foreign key (faxtomailuser) @@ -30,3 +10,10 @@ alter table stamp update stamp set signing = 0; +-- add default signing + +alter table faxtomailuser add defaultsigning varchar(255); +alter table faxtomailuser + add constraint FK_CDWL91T1FPNO1PW07532VPN21_INDEX_7 + foreign key (defaultsigning) + references stamp; \ No newline at end of file diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/OpenGroupedDemandAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/OpenGroupedDemandAction.java index d8bc25d..eab1fc3 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/OpenGroupedDemandAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/OpenGroupedDemandAction.java @@ -27,23 +27,18 @@ package com.franciaflex.faxtomail.ui.swing.actions; import com.franciaflex.faxtomail.persistence.entities.Email; import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; import com.franciaflex.faxtomail.persistence.entities.MailFolder; -import com.franciaflex.faxtomail.persistence.entities.RangeRow; import com.franciaflex.faxtomail.services.FaxToMailServiceContext; import com.franciaflex.faxtomail.services.service.EmailService; import com.franciaflex.faxtomail.services.service.exceptions.AlreadyLockedMailException; import com.franciaflex.faxtomail.services.service.exceptions.FolderNotReadableException; -import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandesUI; -import com.franciaflex.faxtomail.ui.swing.content.demande.RangeRowModel; import com.franciaflex.faxtomail.ui.swing.content.demande.demandgroup.DemandGroupUI; import com.franciaflex.faxtomail.ui.swing.content.demande.demandgroup.DemandGroupUIHandler; import org.apache.commons.lang3.StringUtils; import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler; import javax.swing.*; -import java.util.ArrayList; -import java.util.Collection; import static org.nuiton.i18n.I18n.t; @@ -65,8 +60,8 @@ public class OpenGroupedDemandAction extends AbstractFaxToMailAction<DemandeUIMo public boolean prepareAction() throws Exception { boolean result = super.prepareAction(); - MainUIHandler mainUIHandler = getContext().getMainUI().getHandler(); - DemandesUI parentContainer = (DemandesUI) mainUIHandler.getCurrentBody(); + JFrame currentFrame = getContext().getFrameForDemande(getModel()); + DemandesUI parentContainer = (DemandesUI) currentFrame.getContentPane(); if (parentContainer.getModel().containsDemand(demandToOpen)) { openDemandScreen(); result = false; @@ -175,8 +170,8 @@ public class OpenGroupedDemandAction extends AbstractFaxToMailAction<DemandeUIMo } protected void openDemandScreen() { - MainUIHandler mainUIHandler = getContext().getMainUI().getHandler(); - DemandesUI parentContainer = (DemandesUI) mainUIHandler.getCurrentBody(); + JFrame currentFrame = getContext().getFrameForDemande(getModel()); + DemandesUI parentContainer = (DemandesUI) currentFrame.getContentPane(); parentContainer.getModel().addDemand(demandToOpen); } } 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 4cd1704..7389a8a 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 @@ -121,26 +121,27 @@ editable: { !model.isReadonly() }; } -#signingComboBox { +#stampComboBox { showReset: true; showDecorator: false; bean: {model}; - property: signing; - selectedItem: { model.getSigning() }; + property: stamp; + selectedItem: { model.getStamp() }; } #configureSigningButton { - actionIcon: config; + actionIcon: settings; toolTipText: "faxtomail.reply.action.signing.configure.tip"; _applicationAction: { com.franciaflex.faxtomail.ui.swing.content.reply.actions.OpenSigningSettingsAction.class }; } #signingScrollPanel { - visible: { model.getSigning() != null }; + visible: { model.getStamp() != null }; } #signingPanel { editable: false; + text: { model.getStamp().getText() }; } #attachmentsPanel { 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 fb7b213..b9785cf 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,7 +23,7 @@ implements='com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI<ReplyFormUIModel, ReplyFormUIHandler>'> <import> - com.franciaflex.faxtomail.persistence.entities.Signing + com.franciaflex.faxtomail.persistence.entities.Stamp com.franciaflex.faxtomail.services.service.ldap.Contact com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil @@ -159,9 +159,9 @@ <Table fill="both"> <row> <cell weightx="1"> - <BeanComboBox id="signingComboBox" + <BeanComboBox id="stampComboBox" constructorParams='this' - genericType="Signing"/> + genericType="Stamp"/> </cell> <cell> <JButton id="configureSigningButton"/> 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 497aa67..a2f4c59 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 @@ -28,23 +28,20 @@ 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.AttachmentImpl; +import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; import com.franciaflex.faxtomail.persistence.entities.MailFolder; -import com.franciaflex.faxtomail.persistence.entities.Signing; +import com.franciaflex.faxtomail.persistence.entities.Stamp; 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; @@ -211,23 +208,16 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo } }); - Collection<Signing> stampSigning = getContext().getCurrentUser().getStampSigning(); - List<Signing> signings = new ArrayList<>(); + FaxToMailUser currentUser = getContext().getCurrentUser(); + Collection<Stamp> userStamps = currentUser.getSignings(); + List<Stamp> stamps = 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()); - } + if (userStamps != null) { + stamps.addAll(userStamps); + model.setStamp(currentUser.getDefaultSigning()); } - initBeanComboBox(ui.getSigningComboBox(), signings, model.getSigning()); + initBeanComboBox(ui.getStampComboBox(), stamps, model.getStamp()); } @Override 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 fa51d61..4deecc8 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.Signing; +import com.franciaflex.faxtomail.persistence.entities.Stamp; 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_SIGNING = "signing"; + public static final String PROPERTY_STAMP = "stamp"; 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 Signing signing; + protected Stamp stamp; 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 Signing getSigning() { - return signing; + public Stamp getStamp() { + return stamp; } - public void setSigning(Signing signing) { - Object oldValue = getSigning(); - this.signing = signing; - firePropertyChange(PROPERTY_SIGNING, oldValue, signing); + public void setStamp(Stamp stamp) { + Object oldValue = getStamp(); + this.stamp = stamp; + firePropertyChange(PROPERTY_STAMP, oldValue, stamp); } 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 index 6d3f5ed..15c8e8f 100644 --- 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 @@ -49,12 +49,14 @@ actionIcon: save; text: "faxtomail.signings.settings.action.save"; toolTipText: "faxtomail.signings.settings.action.save.tip"; - //_applicationAction: { com.franciaflex.faxtomail.ui.swing.actions.ReplyAction.class }; + _applicationAction: { com.franciaflex.faxtomail.ui.swing.content.reply.actions.SaveSigningAction.class }; + enabled: { model.getSelectedSigning() != null && model.isModified() }; } #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 }; + _applicationAction: { com.franciaflex.faxtomail.ui.swing.content.reply.actions.SetDefaultSigningAction.class }; + enabled: { model.isSetDefaultButtonEnabled() }; } \ 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 index 860fee1..26afbfa 100644 --- 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 @@ -23,7 +23,7 @@ implements='com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI<SigningSettingsUIModel, SigningSettingsUIHandler>'> <import> - com.franciaflex.faxtomail.persistence.entities.Signing + com.franciaflex.faxtomail.persistence.entities.Stamp com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil @@ -57,7 +57,7 @@ </row> <row> <cell columns="2" weighty="1.0" fill="both"> - <JList id="signingList" genericType="Signing"/> + <JList id="signingList" genericType="Stamp"/> </cell> </row> </Table> 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 index 234e5c7..f0723e7 100644 --- 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 @@ -1,23 +1,37 @@ package com.franciaflex.faxtomail.ui.swing.content.reply; -import com.franciaflex.faxtomail.persistence.entities.Signing; +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); @@ -36,16 +50,63 @@ public class SigningSettingsUIHandler extends AbstractFaxToMailUIHandler<Signing @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()])); + 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<Signing> stampSigning = getContext().getCurrentUser().getStampSigning(); + Collection<Stamp> stampSigning = getContext().getCurrentUser().getSignings(); model.setSignings(stampSigning); - getUI().getSigningList().setCellRenderer(newListCellRender(Signing.class)); + 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.equals(getContext().getCurrentUser().getDefaultSigning())); + } + } + }); + } @Override @@ -66,4 +127,21 @@ public class SigningSettingsUIHandler extends AbstractFaxToMailUIHandler<Signing 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 index 46a5f3c..cdb40dd 100644 --- 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 @@ -1,6 +1,6 @@ package com.franciaflex.faxtomail.ui.swing.content.reply; -import com.franciaflex.faxtomail.persistence.entities.Signing; +import com.franciaflex.faxtomail.persistence.entities.Stamp; import org.jdesktop.beans.AbstractSerializableBean; import java.util.ArrayList; @@ -17,25 +17,39 @@ public class SigningSettingsUIModel extends AbstractSerializableBean { 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<Signing> signings = new ArrayList<>(); - protected Signing selectedSigning; - public Signing getSelectedSigning() { + 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 setSelectedSignings(Signing selectedSigning) { + public void setSelectedSigning(Stamp selectedSigning) { Object oldValue = getSelectedSigning(); this.selectedSigning = selectedSigning; firePropertyChange(PROPERTY_SELECTED_SIGNING, oldValue, selectedSigning); + + setSelectedSigningName(selectedSigning.getLabel()); + setSelectedSigningText(selectedSigning.getText()); + + setModified(false); + updateSetDefaultButtonEnabled(); } - public List<Signing> getSignings() { + public List<Stamp> getSignings() { return signings; } - public void setSignings(Collection<Signing> signings) { + public void setSignings(Collection<Stamp> signings) { this.signings.clear(); if (signings != null) { this.signings.addAll(signings); @@ -43,28 +57,67 @@ public class SigningSettingsUIModel extends AbstractSerializableBean { firePropertyChange(PROPERTY_SIGNINGS, null, this.signings); } - public void addSigning(Signing signing) { + public void addSigning(Stamp signing) { this.signings.add(signing); firePropertyChange(PROPERTY_SIGNINGS, null, this.signings); } public String getSelectedSigningName() { - return selectedSigning != null ? selectedSigning.getStamp().getLabel() : null; + return selectedSigningName; } public void setSelectedSigningName(String selectedSigningName) { Object oldValue = getSelectedSigningName(); - selectedSigning.getStamp().setLabel(selectedSigningName); + this.selectedSigningName = selectedSigningName; firePropertyChange(PROPERTY_SELECTED_SIGNING_NAME, oldValue, selectedSigningName); + setModified(true); } public String getSelectedSigningText() { - return selectedSigning != null ? selectedSigning.getStamp().getText() : null; + return selectedSigningText; } public void setSelectedSigningText(String selectedSigningText) { Object oldValue = getSelectedSigningText(); - selectedSigning.getStamp().setText(selectedSigningText); + 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/NewSigningAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/NewSigningAction.java index 4902471..1fa4c5b 100644 --- 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 @@ -1,7 +1,5 @@ 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; @@ -24,7 +22,7 @@ public class NewSigningAction extends AbstractFaxToMailAction<SigningSettingsUIM */ private static final Log log = LogFactory.getLog(NewSigningAction.class); - protected Signing newSigning; + protected Stamp newSigning; public NewSigningAction(SigningSettingsUIHandler handler) { super(handler, false); @@ -37,22 +35,21 @@ public class NewSigningAction extends AbstractFaxToMailAction<SigningSettingsUIM @Override public void doAction() throws Exception { - newSigning = new SigningImpl(); - Stamp stamp = new StampImpl(); - newSigning.setStamp(stamp); + newSigning = new StampImpl(); + newSigning.setSigning(true); } @Override public void postSuccessAction() { super.postSuccessAction(); - getModel().addSigning(newSigning); - getModel().setSelectedSignings(newSigning); - getModel().setSelectedSigningName(t("faxtomail.signings.settings.action.newSigning.name")); + SigningSettingsUIModel model = getModel(); + model.addSigning(newSigning); + model.setSelectedSigning(newSigning); + model.setSelectedSigningDefault(false); + model.setSelectedSigningName(t("faxtomail.signings.settings.action.newSigning.name")); + model.updateSetDefaultButtonEnabled(); - if (log.isInfoEnabled()) { - log.info("new singning : " + getModel().getSelectedSigning().getStamp().getLabel()); - } } @Override 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 index 79a6144..6faec84 100644 --- 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 @@ -1,5 +1,6 @@ package com.franciaflex.faxtomail.ui.swing.content.reply.actions; +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; @@ -9,6 +10,9 @@ 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) @@ -35,10 +39,10 @@ public class OpenSigningSettingsAction extends AbstractFaxToMailAction<ReplyForm super.postSuccessAction(); SigningSettingsUI signingSettingsUI = new SigningSettingsUI(getUI()); - handler.openDialog(signingSettingsUI, "test", new Dimension(600, 400)); + handler.openDialog(signingSettingsUI, t("faxtomail.signings.settings.title"), new Dimension(600, 400)); - if (log.isInfoEnabled()) { - log.info("setting closed"); - } + 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/SaveSigningAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/SaveSigningAction.java new file mode 100644 index 0000000..bc9a2c5 --- /dev/null +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/SaveSigningAction.java @@ -0,0 +1,49 @@ +package com.franciaflex.faxtomail.ui.swing.content.reply.actions; + +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(); + getModel().updateSetDefaultButtonEnabled(); + getModel().setModified(false); + getUI().getSigningList().repaint(); + } +} 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 new file mode 100644 index 0000000..242c3cb --- /dev/null +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/SetDefaultSigningAction.java @@ -0,0 +1,50 @@ +package com.franciaflex.faxtomail.ui.swing.content.reply.actions; + +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/resources/i18n/faxtomail-ui-swing_fr_FR.properties b/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties index 05027fa..55a061f 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 @@ -317,8 +317,8 @@ 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.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.newSigning.name=Nouvelle signature @@ -329,6 +329,7 @@ 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.signings.settings.title=Configuration des signatures faxtomail.systemUser=Système faxtomail.validator.error.email.clientCode.required=Code 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>.