Author: kmorin Date: 2014-03-10 10:32:30 +0100 (Mon, 10 Mar 2014) New Revision: 17 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/17 Log: refs #4231 Faire les UI de tous les ?\195?\169crans Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ComputeQuantitiesByRangeAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAndExitAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.css trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.jaxx trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUI.css trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUI.jaxx trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUIModel.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/RangeRowModel.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.css trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.jaxx trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel.java trunk/faxtomail-ui-swing/src/main/resources/icons/action-compute.png trunk/faxtomail-ui-swing/src/main/resources/icons/action-delete.png trunk/faxtomail-ui-swing/src/main/resources/icons/action-edit-attachment.png trunk/faxtomail-ui-swing/src/main/resources/icons/action-import.png trunk/faxtomail-ui-swing/src/main/resources/icons/action-new-demand.png trunk/faxtomail-ui-swing/src/main/resources/icons/action-open-file.png Removed: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.css trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.jaxx trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUI.css trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUI.jaxx trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUIModel.java Modified: trunk/faxtomail-persistence/pom.xml trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/HistoryType.java trunk/faxtomail-persistence/src/main/resources/faxtomail.properties trunk/faxtomail-persistence/src/main/xmi/faxtomail.zargo trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorService.java trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceSupport.java trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailService.java trunk/faxtomail-service/src/main/resources/i18n/faxtomail-service_en_GB.properties trunk/faxtomail-service/src/main/resources/i18n/faxtomail-service_fr_FR.properties trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ReplyAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/TransmitAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUI.css trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.css trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.jaxx trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIModel.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/RangeTableModel.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.css trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIModel.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailBeanUIModel.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/DemandeTableModel.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentCellRenderer.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUI.css trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentItem.css trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.css trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.jaxx trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItemModel.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUIHandler.java trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_en_GB.properties trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ConfigurationAction.java Modified: trunk/faxtomail-persistence/pom.xml =================================================================== --- trunk/faxtomail-persistence/pom.xml 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-persistence/pom.xml 2014-03-10 09:32:30 UTC (rev 17) @@ -144,6 +144,7 @@ <artifactId>eugene-maven-plugin</artifactId> <executions> <execution> + <id>generate-entities</id> <phase>generate-sources</phase> <configuration> <inputs>zargo</inputs> Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/HistoryType.java =================================================================== --- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/HistoryType.java 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/HistoryType.java 2014-03-10 09:32:30 UTC (rev 17) @@ -6,6 +6,7 @@ */ public enum HistoryType { + CREATION, OPENING, MODIFICATION } Modified: trunk/faxtomail-persistence/src/main/resources/faxtomail.properties =================================================================== --- trunk/faxtomail-persistence/src/main/resources/faxtomail.properties 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-persistence/src/main/resources/faxtomail.properties 2014-03-10 09:32:30 UTC (rev 17) @@ -1,26 +1,3 @@ -### -# #%L -# Extranet ENC-AHI :: Persistence -# $Id: extranet-enc-ahi.properties 827 2013-12-04 15:30:35Z bleny $ -# $HeadURL: http://svn.forge.codelutin.com/svn/extranet-enc-ahi/trunk/extranet-persisten... $ -# %% -# Copyright (C) 2013 Ministère des Affaires sociales et de la Santé -# %% -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser 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 Lesser Public License for more details. -# -# You should have received a copy of the GNU General Lesser Public -# License along with this program. If not, see -# <http://www.gnu.org/licenses/lgpl-3.0.html>. -# #L% -### hibernate.connection.driver_class=org.h2.Driver hibernate.connection.url=jdbc:h2:file:/tmp/faxtomail/h2data hibernate.connection.username=sa Modified: trunk/faxtomail-persistence/src/main/xmi/faxtomail.zargo =================================================================== (Binary files differ) Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorService.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorService.java 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorService.java 2014-03-10 09:32:30 UTC (rev 17) @@ -24,6 +24,7 @@ * #L% */ +import com.franciaflex.faxtomail.persistence.entities.Attachment; import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; import com.franciaflex.faxtomail.persistence.entities.HasLabel; import org.apache.commons.logging.LogFactory; @@ -32,6 +33,7 @@ import java.io.File; import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.Date; import static org.nuiton.i18n.I18n.n; @@ -47,6 +49,8 @@ public static final String SEPARATOR = "#"; + public static final String DATE = "date"; + /** Delegate decorator provider. */ protected DecoratorProvider decoratorProvider; @@ -98,10 +102,22 @@ if (bean == null) { return ""; } - return DateFormat.getDateTimeInstance().format(bean); + return DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT).format(bean); } }); + registerDecorator(DATE, new Decorator<Date>(Date.class) { + private static final long serialVersionUID = 1L; + + @Override + public String toString(Object bean) { + if (bean == null) { + return ""; + } + return DateFormat.getDateInstance(DateFormat.MEDIUM).format(bean); + } + }); registerMultiJXPathDecorator(HasLabel.class, "${label}$s", SEPARATOR, " - "); + registerMultiJXPathDecorator(Attachment.class, "${file}$s", SEPARATOR, " - "); registerMultiJXPathDecorator(FaxToMailUser.class, "${trigraph}$s#${firstName}$s#${lastName}$s", SEPARATOR, " "); } }; Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceSupport.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceSupport.java 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceSupport.java 2014-03-10 09:32:30 UTC (rev 17) @@ -65,6 +65,10 @@ return serviceContext.newService(serviceClass); } + public DecoratorService getDecoratorService() { + return newService(DecoratorService.class); + } + public CompanyService getCompanyService() { return newService(CompanyService.class); } Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-03-10 09:32:30 UTC (rev 17) @@ -30,6 +30,9 @@ private static final Log log = LogFactory.getLog(EmailService.class); public Email saveEmail(Email email, FaxToMailUser user) { + Date now = getNow(); + EmailTopiaDao dao = getPersistenceContext().getEmailDao(); + HistoryTopiaDao historyDao = getPersistenceContext().getHistoryDao(); if (email.getAttachment() != null) { AttachmentTopiaDao attachmentDao = getPersistenceContext().getAttachmentDao(); @@ -53,13 +56,19 @@ } } - HistoryTopiaDao historyDao = getPersistenceContext().getHistoryDao(); + if (!email.isPersisted()) { + if (email.getHistory() != null) { + historyDao.createAll(email.getHistory()); + } + + email = dao.create(email); + } + History history = historyDao.create(History.PROPERTY_TYPE, HistoryType.MODIFICATION, History.PROPERTY_FAX_TO_MAIL_USER, user, - History.PROPERTY_MODIFICATION_DATE, new Date()); + History.PROPERTY_MODIFICATION_DATE, now); email.addHistory(history); - EmailTopiaDao dao = getPersistenceContext().getEmailDao(); Email result = dao.update(email); getPersistenceContext().commit(); @@ -68,9 +77,29 @@ public List<Email> getEmailForFolder(MailFolder folder) { EmailTopiaDao dao = getPersistenceContext().getEmailDao(); - return new ArrayList<>(dao.forMailFolderEquals(folder).findAll()); + return new ArrayList<>(dao.forMailFolderEquals(folder) + .setOrderByArguments(Email.PROPERTY_RECEPTION_DATE) + .findAll()); } + public List<Email> getEmailForFolderAndSubfolders(MailFolder folder) { + EmailTopiaDao dao = getPersistenceContext().getEmailDao(); + List<MailFolder> folders = new ArrayList<>(); + folders.addAll(getChildrenRecursively(folder)); + return new ArrayList<>(dao.forMailFolderIn(folders) + .findAll()); + } + + protected List<MailFolder> getChildrenRecursively(MailFolder folder) { + List<MailFolder> folders = new ArrayList<>(); + folders.add(folder); + Collection<MailFolder> children = folder.getChildren(); + for (MailFolder child : children) { + folders.addAll(getChildrenRecursively(child)); + } + return folders; + } + public Email addToOpeningHistory(Email email, FaxToMailUser user, Date date) { HistoryTopiaDao historyDao = getPersistenceContext().getHistoryDao(); History history = historyDao.create(History.PROPERTY_TYPE, HistoryType.OPENING, @@ -87,15 +116,29 @@ email = emailDao.update(email); getPersistenceContext().commit(); - log.info("history " + email.getHistory().size()); return email; } + public Email takeEmail(Email email, FaxToMailUser user) { + email.setTakenBy(user); + + HistoryTopiaDao historyDao = getPersistenceContext().getHistoryDao(); + History history = historyDao.create(History.PROPERTY_TYPE, HistoryType.MODIFICATION, + History.PROPERTY_FAX_TO_MAIL_USER, user, + History.PROPERTY_MODIFICATION_DATE, new Date()); + email.addHistory(history); + + EmailTopiaDao emailDao = getPersistenceContext().getEmailDao(); + email = emailDao.update(email); + getPersistenceContext().commit(); + return email; + } + public List<Email> search(Email emailLike) { EmailTopiaDao dao = getPersistenceContext().getEmailDao(); List<Email> result = new ArrayList<>(dao.newQueryBuilder() .addContainsText(Email.PROPERTY_OBJECT, emailLike.getObject()) - .addContainsText(Email.PROPERTY_SENDER_EMAIL_ADDRESS, emailLike.getSenderEmailAddress()) + .addContainsText(Email.PROPERTY_SENDER, emailLike.getSender()) .addContainsText(Email.PROPERTY_CLIENT_CODE, emailLike.getClientCode()) .addContainsText(Email.PROPERTY_EDI_CODE_NUMBER, emailLike.getEdiCodeNumber()) .addContainsText(Email.PROPERTY_PROJECT_REFERENCE, emailLike.getProjectReference()) Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailService.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailService.java 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailService.java 2014-03-10 09:32:30 UTC (rev 17) @@ -52,11 +52,13 @@ 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.services.DecoratorService; import com.franciaflex.faxtomail.services.FaxToMailServiceSupport; import com.google.common.collect.Lists; import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.decorator.Decorator; import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; @@ -65,10 +67,13 @@ import java.net.URISyntaxException; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Random; +import static org.nuiton.i18n.I18n.t; + public class InitFaxToMailService extends FaxToMailServiceSupport { private static final Log log = LogFactory.getLog(InitFaxToMailService.class); @@ -76,7 +81,7 @@ public void init() { if (log.isInfoEnabled()) { - log.info("extranet initialization started"); + log.info("faxtomail initialization started"); } checkStorage(); @@ -92,7 +97,7 @@ // XWork2ValidatorUtil.setSharedValueStack(null); if (log.isInfoEnabled()) { - log.info("extranet initialization done"); + log.info("faxtomail initialization done"); } } @@ -138,10 +143,12 @@ if (count == 0) { List<Client> clients; try { - File clientFile = new File(ClassLoader.getSystemResource("fx_clients.csv").toURI()); +// File clientFile = new File(ClassLoader.getSystemResource("fx_clients.csv").toURI()); + File clientFile = new File("/home/kmorin/Projects/faxToMail/faxtomail-service/src/main/resources/fx_clients.csv"); clients = getReferentielService().importClients(clientFile); - } catch(IOException | URISyntaxException e) { + } catch(Exception e) { + log.error("error", e); return; } @@ -186,7 +193,6 @@ PriorityTopiaDao priorityDao = getPersistenceContext().getPriorityDao(); List<Priority> priorities = Lists.newArrayList( - priorityDao.create(Priority.PROPERTY_LABEL, "-"), priorityDao.create(Priority.PROPERTY_LABEL, "!"), priorityDao.create(Priority.PROPERTY_LABEL, "F") ); @@ -309,9 +315,6 @@ MailFolder folder, FaxToMailUser user) { - History history = historyDao.create(History.PROPERTY_TYPE, HistoryType.MODIFICATION, - History.PROPERTY_MODIFICATION_DATE, new Date()); - List<RangeRow> rangeRows = new ArrayList<>(); for (int j = 0 ; j < random.nextInt(4) + 1 ; j++) { RangeRow rangeRow = rangeRowDao.create(RangeRow.PROPERTY_RANGE, ranges.get(random.nextInt(ranges.size())), @@ -322,28 +325,66 @@ } Client client = clients.get(random.nextInt(clients.size())); - String senderEmail = client.getEmailAddress(); - if (senderEmail == null && client.getFaxNumber() != null) { - senderEmail = client.getFaxNumber().replace(" ", "") + "@franciaflex.fax"; + String sender = client.getEmailAddress(); + boolean fax = false; + if (sender == null && client.getFaxNumber() != null) { + sender = client.getFaxNumber(); + fax = true; } boolean opened = random.nextBoolean(); - Email email = emailDao.create(Email.PROPERTY_SENDER_EMAIL_ADDRESS, senderEmail, + + Decorator<Date> dateDecorator = getDecoratorService().getDecoratorByType(Date.class, DecoratorService.DATE); + + Date now = new Date(); + History history = historyDao.create(History.PROPERTY_TYPE, HistoryType.CREATION, + History.PROPERTY_MODIFICATION_DATE, now); + String projectRef = t("faxtomail.email.projectReference.default", dateDecorator.toString(now)); + + Email email = emailDao.create(Email.PROPERTY_SENDER, sender, + Email.PROPERTY_FAX, fax, Email.PROPERTY_CLIENT_CODE, client.getCode(), - Email.PROPERTY_OBJECT, client.getCaracteristic1() + " / " + client.getCode() + " / " + client.getName() + " / " + client.getFaxNumber() + " / " + - SimpleDateFormat.getDateTimeInstance().format(new Date()), - Email.PROPERTY_RECEPTION_DATE, new Date(), + Email.PROPERTY_PROJECT_REFERENCE, projectRef, + Email.PROPERTY_OBJECT, client.getCaracteristic1() + " / " + client.getCode() + " / " + client.getName() + " / " + client.getFaxNumber() + " / " + dateDecorator.toString(now), + Email.PROPERTY_RECEPTION_DATE, now, Email.PROPERTY_MAIL_FOLDER, folder, - Email.PROPERTY_DEMAND_TYPE, types.get(random.nextInt(types.size())), Email.PROPERTY_DEMAND_STATUS, statuses.get(opened ? 1 : 0), - Email.PROPERTY_PRIORITY, priorities.get(0), - Email.PROPERTY_RANGE_ROW, rangeRows, Email.PROPERTY_HISTORY, Lists.newArrayList(history)); if (opened) { - getEmailService().addToOpeningHistory(email, user, new Date()); + getEmailService().addToOpeningHistory(email, user, now); + email.setDemandType(types.get(random.nextInt(types.size()))); + email.setPriority(priorities.get(random.nextInt(priorities.size()))); + email.setRangeRow(rangeRows); + getEmailService().saveEmail(email, user); } + + Calendar cal = Calendar.getInstance(); + cal.add(Calendar.DAY_OF_MONTH, -1); + Date yesterday = cal.getTime(); + history = historyDao.create(History.PROPERTY_TYPE, HistoryType.CREATION, + History.PROPERTY_MODIFICATION_DATE, yesterday); + projectRef = t("faxtomail.email.projectReference.default", dateDecorator.toString(yesterday)); + + email = emailDao.create(Email.PROPERTY_SENDER, sender, + Email.PROPERTY_FAX, fax, + Email.PROPERTY_CLIENT_CODE, client.getCode(), + Email.PROPERTY_PROJECT_REFERENCE, projectRef, + Email.PROPERTY_OBJECT, client.getCaracteristic1() + " / " + client.getCode() + " / " + client.getName() + " / " + client.getFaxNumber() + " / " + dateDecorator.toString(yesterday), + Email.PROPERTY_RECEPTION_DATE, yesterday, + Email.PROPERTY_MAIL_FOLDER, folder, + Email.PROPERTY_DEMAND_STATUS, statuses.get(opened ? 1 : 0), + Email.PROPERTY_HISTORY, Lists.newArrayList(history)); + + + if (opened) { + getEmailService().addToOpeningHistory(email, user, now); + email.setDemandType(types.get(random.nextInt(types.size()))); + email.setPriority(priorities.get(random.nextInt(priorities.size()))); + email.setRangeRow(rangeRows); + getEmailService().saveEmail(email, user); + } } } Modified: trunk/faxtomail-service/src/main/resources/i18n/faxtomail-service_en_GB.properties =================================================================== --- trunk/faxtomail-service/src/main/resources/i18n/faxtomail-service_en_GB.properties 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-service/src/main/resources/i18n/faxtomail-service_en_GB.properties 2014-03-10 09:32:30 UTC (rev 17) @@ -7,6 +7,7 @@ faxtomail.config.option.tmp.directory.description= faxtomail.config.option.version.description= faxtomail.config.service= +faxtomail.email.projectReference.default= faxtomail.service.compressZipFile.error= faxtomail.service.config.deleteTempDirectory.error= faxtomail.service.mkDir.error= Modified: trunk/faxtomail-service/src/main/resources/i18n/faxtomail-service_fr_FR.properties =================================================================== --- trunk/faxtomail-service/src/main/resources/i18n/faxtomail-service_fr_FR.properties 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-service/src/main/resources/i18n/faxtomail-service_fr_FR.properties 2014-03-10 09:32:30 UTC (rev 17) @@ -1,66 +1 @@ -faxtomail.config.option.basedir.description= -faxtomail.config.option.csv.separator.description= -faxtomail.config.option.data.directory.description= -faxtomail.config.option.inceptionYear.description= -faxtomail.config.option.organizationName.description= -faxtomail.config.option.site.url.description= -faxtomail.config.option.tmp.directory.description= -faxtomail.config.option.version.description= -faxtomail.config.service= -faxtomail.service.compressZipFile.error= -faxtomail.service.config.deleteTempDirectory.error= -faxtomail.service.mkDir.error= -faxtomail.service.referential.import.clients.error= -faxtomail.validator.error.email.clientCode.required= -faxtomail.validator.error.email.demandType.required= -faxtomail.validator.error.email.projectReference.required= -tutti.config.option.basedir.description= -tutti.config.option.csv.separator.description= -tutti.config.option.inceptionYear.description= -tutti.config.option.organizationName.description= -tutti.config.option.site.url.description= -tutti.config.option.tmp.directory.description= -tutti.config.option.version.description= -tutti.property.attachment= -tutti.property.caracteristic= -tutti.property.country= -tutti.property.cruise= -tutti.property.date= -tutti.property.department= -tutti.property.firstName= -tutti.property.fishingOperation= -tutti.property.fishingOperationLocation= -tutti.property.fishingOperationNumber= -tutti.property.fractionName= -tutti.property.gear= -tutti.property.gearShootingStartDate= -tutti.property.genusSpecies= -tutti.property.internationalRegistrationCode= -tutti.property.label= -tutti.property.lastName= -tutti.property.marineLitterCategory= -tutti.property.matrixName= -tutti.property.methodName= -tutti.property.multirigAggregation= -tutti.property.name= -tutti.property.parameterName= -tutti.property.person= -tutti.property.program= -tutti.property.protocol= -tutti.property.rankOrder= -tutti.property.refTaxCode= -tutti.property.sortedUnsortedCategory= -tutti.property.species= -tutti.property.stationNumber= -tutti.property.strata= -tutti.property.surveyCode= -tutti.property.tuttiLocation= -tutti.property.user= -tutti.property.vessel= -tutti.property.zone= -tutti.propety.no.species.speciesCode= -tutti.propety.no.vessel.name= -tutti.propety.no.zone= -tutti.propety.vessel.nation.registrationCode= -tutti.service.compressZipFile.error= -tutti.service.context.serviceInstanciation.error= +faxtomail.email.projectReference.default=Votre demande du %s Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ComputeQuantitiesByRangeAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ComputeQuantitiesByRangeAction.java (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ComputeQuantitiesByRangeAction.java 2014-03-10 09:32:30 UTC (rev 17) @@ -0,0 +1,75 @@ +package com.franciaflex.faxtomail.ui.swing.actions; + +import com.franciaflex.faxtomail.persistence.entities.Email; +import com.franciaflex.faxtomail.persistence.entities.MailFolder; +import com.franciaflex.faxtomail.persistence.entities.Range; +import com.franciaflex.faxtomail.persistence.entities.RangeRow; +import com.franciaflex.faxtomail.persistence.entities.RangeRowImpl; +import com.franciaflex.faxtomail.ui.swing.content.demande.QuantitiesByRangeUI; +import com.franciaflex.faxtomail.ui.swing.content.demande.QuantitiesByRangeUIHandler; +import com.franciaflex.faxtomail.ui.swing.content.demande.QuantitiesByRangeUIModel; +import com.franciaflex.faxtomail.ui.swing.content.demande.RangeRowModel; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.awt.*; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static org.nuiton.i18n.I18n.t; + +/** + * @author Kevin Morin (Code Lutin) + * @since x.x + */ +public class ComputeQuantitiesByRangeAction extends AbstractFaxToMailAction<QuantitiesByRangeUIModel, QuantitiesByRangeUI, QuantitiesByRangeUIHandler> { + + private static final Log log = LogFactory.getLog(ComputeQuantitiesByRangeAction.class); + + public ComputeQuantitiesByRangeAction(QuantitiesByRangeUIHandler handler) { + super(handler, false); + } + + @Override + public void doAction() throws Exception { + Map<Range, RangeRowModel> quantitiesByRange = new HashMap<Range, RangeRowModel>(); + MailFolder folder = getModel().getRootFolder(); + List<Email> emails = getContext().getEmailService().getEmailForFolderAndSubfolders(folder); + + for (Email email : emails) { + Collection<RangeRow> rangeRows = email.getRangeRow(); + if (rangeRows != null) { + for (RangeRow rangeRow : rangeRows) { + Range range = rangeRow.getRange(); + RangeRowModel row = quantitiesByRange.get(range); + if (row == null) { + row = new RangeRowModel(); + row.fromEntity(rangeRow); + quantitiesByRange.put(range, row); + + } else { + Integer productQuantity = rangeRow.getProductQuantity(); + if (productQuantity != null) { + row.setProductQuantity(row.getProductQuantity() + productQuantity); + } + + Integer savQuantity = rangeRow.getSavQuantity(); + if (savQuantity != null) { + row.setSavQuantity(row.getSavQuantity() + savQuantity); + } + } + + } + } + } + getModel().setRangeRows(quantitiesByRange.values()); + } + + @Override + public void postSuccessAction() { + super.postSuccessAction(); + handler.openDialog(getUI(), t("faxtomail.quantitiesByRange.title"), new Dimension(350, 300)); + } +} \ No newline at end of file Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ReplyAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ReplyAction.java 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ReplyAction.java 2014-03-10 09:32:30 UTC (rev 17) @@ -1,8 +1,8 @@ package com.franciaflex.faxtomail.ui.swing.actions; -import com.franciaflex.faxtomail.ui.swing.content.demande.ReplyFormUI; -import com.franciaflex.faxtomail.ui.swing.content.demande.ReplyFormUIHandler; -import com.franciaflex.faxtomail.ui.swing.content.demande.ReplyFormUIModel; +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 org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java 2014-03-10 09:32:30 UTC (rev 17) @@ -2,42 +2,48 @@ import com.franciaflex.faxtomail.persistence.entities.Email; import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; +import com.franciaflex.faxtomail.persistence.entities.RangeRow; +import com.franciaflex.faxtomail.ui.swing.FaxToMailScreen; import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler; +import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUI; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIHandler; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; +import com.franciaflex.faxtomail.ui.swing.content.demande.RangeRowModel; +import com.franciaflex.faxtomail.ui.swing.content.demande.RangeTableModel; +import com.google.common.collect.Maps; +import org.nuiton.topia.persistence.TopiaEntities; +import java.util.List; +import java.util.Map; + /** * @author Kevin Morin (Code Lutin) * @since x.x */ -public class SaveDemandeAction extends ShowDemandeListAction { +public class SaveDemandeAction extends AbstractFaxToMailAction<DemandeUIModel, DemandeUI, DemandeUIHandler> { - protected DemandeUIModel demandeModel; - - public SaveDemandeAction(MainUIHandler handler) { - super(handler); - } - public SaveDemandeAction(DemandeUIHandler handler) { - super(handler.getContext().getMainUI().getHandler()); + super(handler, false); } - public DemandeUIModel getDemandeModel() { - return demandeModel; - } - - public void setDemandeModel(DemandeUIModel demandeModel) { - this.demandeModel = demandeModel; - } - @Override public void doAction() throws Exception { + RangeTableModel rtm = (RangeTableModel) getUI().getRangeTable().getModel(); + List<RangeRowModel> rows = rtm.getRows(); + Map<String, RangeRow> rangeRowsById = Maps.uniqueIndex(getModel().getRangeRow(), TopiaEntities.getTopiaIdFunction()); + for (RangeRowModel rangeRowModel : rows) { + RangeRow rangeRow = rangeRowsById.get(rangeRowModel.getTopiaId()); + if (rangeRow == null) { + getModel().addRangeRow(rangeRowModel.toEntity()); + } else { + rangeRowModel.toEntity(rangeRow); + } + } + FaxToMailUser currentUser = getContext().getCurrentUser(); Email currentEmail = getContext().getCurrentEmail(); - Email email = demandeModel.toEntity(currentEmail); + Email email = getModel().toEntity(currentEmail); getContext().getEmailService().saveEmail(email, currentUser); - - super.doAction(); } } Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAndExitAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAndExitAction.java (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAndExitAction.java 2014-03-10 09:32:30 UTC (rev 17) @@ -0,0 +1,22 @@ +package com.franciaflex.faxtomail.ui.swing.actions; + +import com.franciaflex.faxtomail.ui.swing.FaxToMailScreen; +import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIHandler; + +/** + * @author Kevin Morin (Code Lutin) + * @since x.x + */ +public class SaveDemandeAndExitAction extends SaveDemandeAction { + + public SaveDemandeAndExitAction(DemandeUIHandler handler) { + super(handler); + } + + @Override + public void postSuccessAction() { + super.postSuccessAction(); + + getContext().setScreen(FaxToMailScreen.LIST); + } +} Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-03-10 09:32:30 UTC (rev 17) @@ -23,8 +23,10 @@ */ import com.franciaflex.faxtomail.persistence.entities.Email; +import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; import com.franciaflex.faxtomail.ui.swing.FaxToMailScreen; import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler; +import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler; import javax.swing.*; @@ -50,9 +52,37 @@ super.postSuccessAction(); Email currentEmail = getContext().getCurrentEmail(); - if (!getContext().getCurrentUser().equals(currentEmail.getTakenBy())) { - displayWarningMessage(t("faxtomail.alert.alreadyTakenBy.title"), - t("faxtomail.alert.alreadyTakenBy.message", decorate(currentEmail.getTakenBy()))); + FaxToMailUser takenBy = currentEmail.getTakenBy(); + FaxToMailUser currentUser = getContext().getCurrentUser(); + + if (takenBy != null && !currentUser.equals(takenBy)) { +// displayWarningMessage(t("faxtomail.alert.alreadyTakenBy.title"), +// t("faxtomail.alert.alreadyTakenBy.message", decorate(takenBy))); + String htmlMessage = String.format( + AbstractApplicationUIHandler.CONFIRMATION_FORMAT, + t("faxtomail.alert.alreadyTakenBy.message", decorate(takenBy)), + t("faxtomail.alert.alreadyTakenBy.help")); + + int result = JOptionPane.showConfirmDialog(getHandler().getTopestUI(), + htmlMessage, + t("faxtomail.alert.alreadyTakenBy.title"), + JOptionPane.YES_NO_CANCEL_OPTION, + JOptionPane.QUESTION_MESSAGE); + + switch (result) { + case JOptionPane.CANCEL_OPTION: + getContext().setScreen(FaxToMailScreen.LIST); + break; + + case JOptionPane.NO_OPTION: + // TODO kmorin 201410305 how to set the email in readonly + break; + + case JOptionPane.YES_OPTION: + getContext().getEmailService().takeEmail(currentEmail, currentUser); + // TODO kmorin 201410305 how to update on screen + break; + } } } } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/TransmitAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/TransmitAction.java 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/TransmitAction.java 2014-03-10 09:32:30 UTC (rev 17) @@ -16,8 +16,9 @@ @Override public void doAction() throws Exception { - SaveDemandeAction action = getContext().getActionFactory().createLogicAction(getContext().getMainUI().getHandler(), SaveDemandeAction.class); - action.setDemandeModel(getModel()); - getContext().getActionEngine().runAction(action); + //TODO kmorin 20140306 +// SaveDemandeAction action = getContext().getActionFactory().createLogicAction(getContext().getMainUI().getHandler(), SaveDemandeAction.class); +// action.setDemandeModel(getModel()); +// getContext().getActionEngine().runAction(action); } } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUI.css =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUI.css 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUI.css 2014-03-10 09:32:30 UTC (rev 17) @@ -37,14 +37,12 @@ text: "faxtomail.main.menu.file"; toolTipText: "faxtomail.main.menu.file.tip"; toolTipText: "faxtomail.main.menu.file.tip"; - i18nMnemonic: "faxtomail.main.menu.file.mnemonic"; } #menuFileDemandeList { actionIcon: list; text: "faxtomail.main.action.demandeList"; toolTipText: "faxtomail.main.action.demandeList.tip"; - i18nMnemonic: "faxtomail.main.action.demandeList.mnemonic"; enabled: true;//{model.getScreen() != TuttiScreen.LIST}; _applicationAction: {com.franciaflex.faxtomail.ui.swing.actions.ShowDemandeListAction.class}; } @@ -53,7 +51,6 @@ actionIcon: search; text: "faxtomail.main.action.recherche"; toolTipText: "faxtomail.main.action.recherche.tip"; - i18nMnemonic: "faxtomail.main.action.recherche.mnemonic"; enabled: true; _applicationAction: {com.franciaflex.faxtomail.ui.swing.actions.ShowRechercheAction.class}; } @@ -72,7 +69,6 @@ actionIcon: exit; text: "faxtomail.main.action.exit"; toolTipText: "faxtomail.main.action.exit.tip"; - i18nMnemonic: "faxtomail.main.action.exit.mnemonic"; _applicationAction: {com.franciaflex.faxtomail.ui.swing.actions.CloseApplicationAction.class}; _help: {"faxtomail.main.menu.action.exit.help"}; } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.css =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.css 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.css 2014-03-10 09:32:30 UTC (rev 17) @@ -19,12 +19,37 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ +.horizontal-separator { + text: " | "; +} + #navigationTree { font-size: "11"; rootVisible: false; showsRootHandles: true; } +#computeQuantitiesByRangeMenu { + actionIcon: compute; + text: "faxtomail.demandeList.action.computeQuantitiesByRange"; + toolTipText: "faxtomail.demandeList.action.computeQuantitiesByRange.tip"; +} + +#newDemandMenu { + actionIcon: new-demand; + text: "faxtomail.demandeList.action.newDemand"; + toolTipText: "faxtomail.demandeList.action.newDemand.tip"; +} + +#demandNbLabel { + text: "faxtomail.demandeList.demandNbLabel"; + font-style: "italic"; +} + +#demandNbField { + text: { String.valueOf(model.getEmailNb()) }; +} + #pfNbLabel { text: "faxtomail.demandeList.pfNbLabel"; font-style: "italic"; @@ -44,22 +69,21 @@ } #dataTable { - editable: false; + editable: true; autoCreateRowSorter: true; + sortable: false; } #printMenu { actionIcon: print; text: "faxtomail.demandeList.action.print"; toolTipText: "faxtomail.demandeList.action.print.tip"; - i18nMnemonic: "faxtomail.demandeList.action.print.mnemonic"; } #replyMenu { actionIcon: reply; text: "faxtomail.demandeList.action.reply"; toolTipText: "faxtomail.demandeList.action.reply.tip"; - i18nMnemonic: "faxtomail.demandeList.action.reply.mnemonic"; enabled: {model.isReplyEnabled()}; } @@ -67,6 +91,11 @@ actionIcon: attachment; text: "faxtomail.demandeList.action.attachment"; toolTipText: "faxtomail.demandeList.action.attachment.tip"; - i18nMnemonic: "faxtomail.demandeList.action.attachment.mnemonic"; enabled: {model.isAddAttachmentEnabled()}; +} + +#archiveMenu { + text: "faxtomail.demandeList.action.archive"; + toolTipText: "faxtomail.demandeList.action.archive.tip"; + enabled: {model.isArchiveEnabled()}; } \ No newline at end of file Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.jaxx =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.jaxx 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.jaxx 2014-03-10 09:32:30 UTC (rev 17) @@ -50,6 +50,13 @@ Liste des éléments globale (de tous les dossiers accessibles). --> + <JPopupMenu id='treePopup'> + <JMenuItem id='computeQuantitiesByRangeMenu' + onActionPerformed='handler.computeQuantitiesByRange()'/> + <JMenuItem id='newDemandMenu' + onActionPerformed='handler.newDemand()'/> + </JPopupMenu> + <JPopupMenu id='tablePopup'> <JMenuItem id='printMenu' onActionPerformed='handler.print()'/> @@ -57,17 +64,24 @@ onActionPerformed='handler.reply()'/> <JMenuItem id='addAttachmentMenu' onActionPerformed='handler.addAttachment()'/> + <JMenuItem id='archiveMenu' + onActionPerformed='handler.archive()'/> </JPopupMenu> <JSplitPane constraints='BorderLayout.CENTER'> <JScrollPane> - <JTree id="navigationTree"/> + <JTree id="navigationTree" + onMouseClicked='handler.autoSelectNodeInTree(event, treePopup)'/> </JScrollPane> <JPanel layout='{new BorderLayout()}'> <JPanel layout="{new FlowLayout(FlowLayout.LEADING)}" constraints='BorderLayout.NORTH'> + <JLabel id="demandNbLabel"/> + <JLabel id="demandNbField"/> + <JLabel styleClass="horizontal-separator"/> <JLabel id="pfNbLabel"/> <JLabel id="pfNbField"/> + <JLabel styleClass="horizontal-separator"/> <JLabel id="savNbLabel"/> <JLabel id="savNbField"/> </JPanel> Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-03-10 09:32:30 UTC (rev 17) @@ -24,8 +24,15 @@ import com.franciaflex.faxtomail.persistence.entities.Company; import com.franciaflex.faxtomail.persistence.entities.Email; +import com.franciaflex.faxtomail.persistence.entities.EmailImpl; +import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; +import com.franciaflex.faxtomail.persistence.entities.History; +import com.franciaflex.faxtomail.persistence.entities.HistoryImpl; +import com.franciaflex.faxtomail.persistence.entities.HistoryType; import com.franciaflex.faxtomail.persistence.entities.MailFolder; +import com.franciaflex.faxtomail.persistence.entities.Range; import com.franciaflex.faxtomail.persistence.entities.RangeRow; +import com.franciaflex.faxtomail.ui.swing.actions.ComputeQuantitiesByRangeAction; import com.franciaflex.faxtomail.ui.swing.actions.ShowDemandeAction; import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailDemandListHandler; import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; @@ -34,6 +41,7 @@ import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil; import com.franciaflex.faxtomail.ui.swing.util.FolderTreeNode; import jaxx.runtime.validator.swing.SwingValidator; +import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -61,9 +69,12 @@ import java.util.Collection; import java.util.Date; import java.util.Enumeration; +import java.util.HashMap; import java.util.List; import java.util.Map; +import static org.nuiton.i18n.I18n.t; + /** * Handler of UI {@link com.franciaflex.faxtomail.ui.swing.content.demande.DemandeListUIHandler}. * @@ -91,6 +102,7 @@ DemandeListUIModel model = (DemandeListUIModel) evt.getSource(); MailFolder folder = (MailFolder) evt.getNewValue(); List<Email> emails = getContext().getEmailService().getEmailForFolder(folder); + log.info(emails.size() + " emails in folder " + folder.getName()); model.setEmails(emails); } }); @@ -113,24 +125,10 @@ List<Email> emails = (List<Email>) evt.getNewValue(); tableModel.setRows(emails); - int pfNb = 0; - int savNb = 0; - for (Email email: emails) { - Collection<RangeRow> rangeRows = email.getRangeRow(); - for (RangeRow rangeRow : rangeRows) { - Integer productQuantity = rangeRow.getProductQuantity(); - if (productQuantity != null) { - pfNb += productQuantity; - } + int[] quantities = FaxToMailUIUtil.computeQuantities(emails); - Integer savQuantity = rangeRow.getSavQuantity(); - if (savQuantity != null) { - savNb += savQuantity; - } - } - } - getModel().setPfNb(pfNb); - getModel().setSavNb(savNb); + getModel().setPfNb(quantities[0]); + getModel().setSavNb(quantities[1]); } }); @@ -224,15 +222,82 @@ getModel().setReplyEnabled(selectedRowCount == 1); } + public void autoSelectNodeInTree(MouseEvent e, JPopupMenu popup) { + + boolean rightClick = SwingUtilities.isRightMouseButton(e); + + if (rightClick) { + + JTree source = (JTree) e.getSource(); + + // get the row index at this point + int rowIndex = source.getClosestRowForLocation(e.getX(), e.getY()); + + if (log.isDebugEnabled()) { + log.debug("At point [" + e.getPoint() + "] found Row " + rowIndex); + } + + // select row (could empty selection) + if (rowIndex == -1) { + source.clearSelection(); + } else { + // set selection + source.setSelectionRow(rowIndex); + } + + // on right click show popup + popup.show(source, e.getX(), e.getY()); + } + } + + public void computeQuantitiesByRange() { + QuantitiesByRangeUI dialogContent = new QuantitiesByRangeUI(ui); + getContext().getActionEngine().runAction(new ComputeQuantitiesByRangeAction(dialogContent.getHandler())); +// openDialog(dialogContent, t("faxtomail.chooseMailFolder.title"), new Dimension(350, 500)); + } + + public void newDemand() { + FaxToMailUser currentUser = getContext().getCurrentUser(); + Date now = new Date(); + + Email email = new EmailImpl(); + + History history = new HistoryImpl(); + history.setFaxToMailUser(currentUser); + history.setType(HistoryType.CREATION); + history.setModificationDate(now); + email.addHistory(history); + + history = new HistoryImpl(); + history.setFaxToMailUser(currentUser); + history.setType(HistoryType.OPENING); + history.setModificationDate(now); + email.addHistory(history); + + email.setMailFolder(getModel().getSelectedFolder()); + email.setReceptionDate(now); + email.setTakenBy(currentUser); + openDemand(email); + } + public void print() { + //TODO log.debug("print"); } public void reply() { + //TODO log.debug("reply"); } public void addAttachment() { + //TODO log.debug("addAttachment"); } + + public void archive() { + //TODO + log.debug("archive"); + } + } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIModel.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIModel.java 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIModel.java 2014-03-10 09:32:30 UTC (rev 17) @@ -26,6 +26,7 @@ import com.franciaflex.faxtomail.persistence.entities.MailFolder; import org.jdesktop.beans.AbstractSerializableBean; +import java.util.ArrayList; import java.util.List; /** @@ -36,6 +37,7 @@ public static final String PROPERTY_FOLDERS = "folders"; public static final String PROPERTY_EMAILS = "emails"; + public static final String PROPERTY_EMAIL_NB = "emailNb"; public static final String PROPERTY_SELECTED_FOLDER = "selectedFolder"; public static final String PROPERTY_PF_NB = "pfNb"; public static final String PROPERTY_SAV_NB = "savNb"; @@ -50,6 +52,8 @@ protected boolean addAttachmentEnabled; + protected boolean archiveEnabled; + protected int pfNb; protected int savNb; @@ -69,11 +73,28 @@ } public void setEmails(List<Email> emails) { - Object oldValue = getEmails(); + Object oldValue = getEmailNb(); this.emails = emails; - firePropertyChange(PROPERTY_EMAILS, oldValue, emails); + Object newValue = getEmailNb(); + firePropertyChange(PROPERTY_EMAILS, null, emails); + firePropertyChange(PROPERTY_EMAIL_NB, oldValue, newValue); } + public int getEmailNb() { + return emails == null ? 0 : emails.size(); + } + + public void addEmail(Email email) { + if (emails == null) { + emails = new ArrayList<Email>(); + } + Object oldValue = getEmailNb(); + emails.add(email); + Object newValue = getEmailNb(); + firePropertyChange(PROPERTY_EMAILS, null, emails); + firePropertyChange(PROPERTY_EMAIL_NB, oldValue, newValue); + } + public MailFolder getSelectedFolder() { return selectedFolder; } @@ -100,6 +121,14 @@ this.addAttachmentEnabled = addAttachmentEnabled; } + public boolean isArchiveEnabled() { + return archiveEnabled; + } + + public void setArchiveEnabled(boolean archiveEnabled) { + this.archiveEnabled = archiveEnabled; + } + public int getPfNb() { return pfNb; } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css 2014-03-10 09:32:30 UTC (rev 17) @@ -53,7 +53,7 @@ } #receivedDateField { - text: { SimpleDateFormat.getDateTimeInstance().format(model.getReceptionDate()) }; + text: { handler.decorate(model.getReceptionDate()) }; } #senderLabel { @@ -61,7 +61,7 @@ } #senderField { - text: { model.getSenderEmailAddress() }; + text: { model.getSender() }; } #clientLabel { @@ -89,7 +89,6 @@ #ediCodeNumberField { text: { model.getEdiCodeNumber() }; - editable: false; } #priorityLabel { @@ -99,6 +98,7 @@ #priorityComboBox { property: priority; selectedItem: { model.getPriority() }; + showReset: true; } #statusLabel { @@ -133,12 +133,17 @@ verticalAlignment: { SwingConstants.TOP }; } +#mailBodyLabel { + text: "faxtomail.demande.mailBody.label"; + verticalAlignment: { SwingConstants.TOP }; +} + #takenByLabel { text: "faxtomail.demande.takenBy.label"; } #takenByField { - text: { handler.decorateUser(model.getTakenBy()) }; + text: { handler.decorateUser(model.getTakenBy(), false) }; } #firstOpenedLabel { @@ -150,7 +155,7 @@ } #firstOpenedByField { - text: { handler.decorateUser(model.getFirstOpeningUser()) }; + text: { handler.decorateUser(model.getFirstOpeningUser(), false) }; } #firstOpeningDateLabel { @@ -158,7 +163,7 @@ } #firstOpeningDateField { - text: { SimpleDateFormat.getDateTimeInstance().format(model.getFirstOpeningDate()) }; + text: { handler.decorate(model.getFirstOpeningDate()) }; } #lastModifiedLabel { @@ -170,7 +175,7 @@ } #lastModifiedByField { - text: { handler.decorateUser(model.getLastModificationUser()) }; + text: { handler.decorateUser(model.getLastModificationUser(), true) }; } #lastModificationDateLabel { @@ -178,50 +183,67 @@ } #lastModificationDateField { - text: { SimpleDateFormat.getDateTimeInstance().format(model.getLastModificationDate()) }; + text: { handler.decorate(model.getLastModificationDate()) }; } +.horizontal-separator { + text: " | "; +} + +#pfNbLabel { + text: "faxtomail.demandeList.pfNbLabel"; + font-style: "italic"; +} + +#pfNbField { + text: { String.valueOf(model.getPfNb()) }; +} + +#savNbLabel { + text: "faxtomail.demandeList.savNbLabel"; + font-style: "italic"; +} + +#savNbField { + text: { String.valueOf(model.getSavNb()) }; +} + #rangeTable { selectionMode: { ListSelectionModel.SINGLE_SELECTION }; } #backButton { text: "faxtomail.demande.back.button.label"; - i18nMnemonic : "faxtomail.demande.back.button.mnemonic"; actionIcon: cancel; _applicationAction: { com.franciaflex.faxtomail.ui.swing.actions.ShowDemandeListAction.class }; } #saveButton { text: "faxtomail.demande.save.button.label"; - i18nMnemonic : "faxtomail.demande.save.button.mnemonic"; actionIcon: save; enabled: { model.isValid() }; + _applicationAction: { com.franciaflex.faxtomail.ui.swing.actions.SaveDemandeAndExitAction.class }; } #transmitButton { text: "faxtomail.demande.transmit.button.label"; - i18nMnemonic : "faxtomail.demande.transmit.button.mnemonic"; actionIcon: transmit; enabled: { model.isValid() }; } #printButton { text: "faxtomail.demande.print.button.label"; - i18nMnemonic : "faxtomail.demande.print.button.mnemonic"; actionIcon: print; enabled: { model.isValid() }; } #archiveButton { text: "faxtomail.demande.archive.button.label"; - i18nMnemonic : "faxtomail.demande.archive.button.mnemonic"; enabled: { model.isValid() }; } #replyButton { text: "faxtomail.demande.reply.button.label"; - i18nMnemonic : "faxtomail.demande.reply.button.mnemonic"; actionIcon: reply; enabled: { model.isValid() }; } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx 2014-03-10 09:32:30 UTC (rev 17) @@ -45,6 +45,8 @@ javax.swing.ListSelectionModel javax.swing.SwingConstants + java.awt.FlowLayout + java.text.SimpleDateFormat java.util.Date </import> @@ -74,9 +76,9 @@ </JToolBar> <JSplitPane constraints='BorderLayout.CENTER' - orientation="{JSplitPane.VERTICAL_SPLIT}"> + orientation="{JSplitPane.HORIZONTAL_SPLIT}"> - <JSplitPane orientation="{JSplitPane.HORIZONTAL_SPLIT}"> + <JSplitPane orientation="{JSplitPane.VERTICAL_SPLIT}"> <JScrollPane> @@ -127,11 +129,12 @@ </row> <row> <cell> - <JLabel id='ediCodeNumberLabel'/> + <JLabel id='priorityLabel'/> </cell> <cell weightx='1'> - <JTextField id='ediCodeNumberField' - onKeyReleased='handler.setText(event, "ediCodeNumber")'/> + <BeanFilterableComboBox id='priorityComboBox' + constructorParams='this' + genericType="Priority"/> </cell> </row> <row> @@ -145,12 +148,12 @@ </row> <row> <cell> - <JLabel id='priorityLabel'/> + <JLabel id='etatAttenteLabel'/> </cell> <cell weightx='1'> - <BeanFilterableComboBox id='priorityComboBox' + <BeanFilterableComboBox id='etatAttenteComboBox' constructorParams='this' - genericType="Priority"/> + genericType="EtatAttente"/> </cell> </row> <row> @@ -163,12 +166,11 @@ </row> <row> <cell> - <JLabel id='etatAttenteLabel'/> + <JLabel id='ediCodeNumberLabel'/> </cell> <cell weightx='1'> - <BeanFilterableComboBox id='etatAttenteComboBox' - constructorParams='this' - genericType="EtatAttente"/> + <JTextField id='ediCodeNumberField' + onKeyReleased='handler.setText(event, "ediCodeNumber")'/> </cell> </row> @@ -238,26 +240,45 @@ </JScrollPane> <JPanel layout="{new BorderLayout()}"> + <JPanel layout="{new FlowLayout(FlowLayout.LEADING)}" constraints='BorderLayout.NORTH'> + <JLabel id="pfNbLabel"/> + <JLabel id="pfNbField"/> + <JLabel styleClass="horizontal-separator"/> + <JLabel id="savNbLabel"/> + <JLabel id="savNbField"/> + </JPanel> + <JScrollPane constraints="BorderLayout.CENTER"> + <JXTable id='rangeTable'/> + </JScrollPane> + </JPanel> + + </JSplitPane> + + <JSplitPane orientation="{JSplitPane.VERTICAL_SPLIT}"> + <JPanel layout="{new BorderLayout()}"> + <JLabel id='mailBodyLabel' + constraints="BorderLayout.NORTH"/> + <JScrollPane id='mailBodyPane' + constraints="BorderLayout.CENTER"> + <JEditorPane id='mailBodyField'/> + </JScrollPane> + </JPanel> + <JPanel layout="{new BorderLayout()}"> <JLabel id='messageLabel' constraints="BorderLayout.NORTH"/> - <JScrollPane id='commentPane' + <JScrollPane id='messagePane' constraints="BorderLayout.CENTER"> <JEditorPane id='messageField'/> </JScrollPane> </JPanel> - </JSplitPane> - <JScrollPane> - <JXTable id='rangeTable'/> - </JScrollPane> - </JSplitPane> <JPanel layout='{new GridLayout(1,0)}' constraints='BorderLayout.SOUTH'> <JButton id="backButton"/> - <JButton id="saveButton" onActionPerformed="handler.saveDemande()"/> + <JButton id="saveButton"/> <JButton id="transmitButton" onActionPerformed="handler.transmitDemande()"/> <JButton id="printButton"/> <JButton id="archiveButton"/> Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java 2014-03-10 09:32:30 UTC (rev 17) @@ -23,52 +23,42 @@ */ -import com.franciaflex.faxtomail.persistence.entities.Client; -import com.franciaflex.faxtomail.persistence.entities.Company; -import com.franciaflex.faxtomail.persistence.entities.Email; -import com.franciaflex.faxtomail.persistence.entities.MailFolder; import com.franciaflex.faxtomail.persistence.entities.Range; import com.franciaflex.faxtomail.persistence.entities.RangeRow; import com.franciaflex.faxtomail.services.service.ReferentielService; import com.franciaflex.faxtomail.ui.swing.actions.SaveDemandeAction; -import com.franciaflex.faxtomail.ui.swing.actions.ShowDemandeAction; -import com.franciaflex.faxtomail.ui.swing.content.search.SearchUI; +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.AbstractFaxToMailUIHandler; import com.franciaflex.faxtomail.ui.swing.util.CloseableUI; -import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI; +import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil; +import com.google.common.collect.Maps; import jaxx.runtime.validator.swing.SwingValidator; -import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.JXTable; import org.jdesktop.swingx.table.DefaultTableColumnModelExt; import org.jdesktop.swingx.table.TableColumnModelExt; -import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel; import org.nuiton.jaxx.application.swing.table.MoveToNextEditableCellAction; import org.nuiton.jaxx.application.swing.table.MoveToNextEditableRowAction; import org.nuiton.jaxx.application.swing.table.MoveToPreviousEditableCellAction; import org.nuiton.jaxx.application.swing.table.MoveToPreviousEditableRowAction; +import org.nuiton.topia.persistence.TopiaEntities; import javax.swing.*; -import javax.swing.event.ChangeListener; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; import javax.swing.table.TableCellEditor; -import javax.swing.text.Document; -import javax.swing.text.html.HTMLEditorKit; -import javax.swing.text.html.StyleSheet; - -import java.awt.*; +import java.awt.Dimension; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.ArrayList; -import java.util.Collection; -import java.util.Date; import java.util.List; +import java.util.Map; import static org.nuiton.i18n.I18n.t; @@ -90,8 +80,6 @@ */ // private final PersistenceService persistenceService; - protected RangeTableModel rangeTableModel; - @Override public void beforeInit(DemandeUI ui) { @@ -99,7 +87,6 @@ DemandeUIModel model = new DemandeUIModel(); model.fromBean(getContext().getCurrentEmail()); - listModelIsModify(model); this.ui.setContextValue(model); @@ -153,8 +140,57 @@ null, table); - rangeTableModel = new RangeTableModel(columnModel); - rangeTableModel.setRows(new ArrayList<RangeRow>(model.getRangeRow())); + final RangeTableModel rangeTableModel = new RangeTableModel(columnModel); + List<RangeRowModel> rangeRowModels = new ArrayList<RangeRowModel>(); + for (RangeRow rangeRow : model.getRangeRow()) { + RangeRowModel rangeRowModel = new RangeRowModel(); + rangeRowModel.fromEntity(rangeRow); + rangeRowModels.add(rangeRowModel); + } + rangeTableModel.setRows(rangeRowModels); + + int[] quantities = FaxToMailUIUtil.computeQuantities(rangeRowModels); + model.setPfNb(quantities[0]); + model.setSavNb(quantities[1]); + + table.getSelectionModel().addListSelectionListener(new ListSelectionListener() { + + protected PropertyChangeListener listener = new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + String propertyName = evt.getPropertyName(); + log.info(propertyName); + if (RangeRow.PROPERTY_PRODUCT_QUANTITY.equals(propertyName) + || RangeRow.PROPERTY_SAV_QUANTITY.equals(propertyName)) { + + List<RangeRowModel> rangeRows = rangeTableModel.getRows(); + int[] quantities = FaxToMailUIUtil.computeQuantities(rangeRows); + DemandeUIModel model = getModel(); + model.setPfNb(quantities[0]); + model.setSavNb(quantities[1]); + } + } + }; + + protected RangeRowModel currentRow; + + @Override + public void valueChanged(ListSelectionEvent e) { + ListSelectionModel source = (ListSelectionModel) e.getSource(); + if (currentRow != null) { + currentRow.removePropertyChangeListener(listener); + } + + if (source.isSelectionEmpty()) { + currentRow = null; + } else { + int rowIndex = source.getLeadSelectionIndex(); + currentRow = rangeTableModel.getEntry(rowIndex); + currentRow.addPropertyChangeListener(listener); + } + } + }); + table.setModel(rangeTableModel); table.setColumnModel(columnModel); table.getTableHeader().setReorderingAllowed(false); @@ -213,45 +249,6 @@ table.addKeyListener(keyAdapter); -// Highlighter highlighter = new Highlighter() { -// @Override -// public Component highlight(Component renderer, ComponentAdapter adapter) { -// int viewRow = adapter.row; -// int modelRow = adapter.convertRowIndexToModel(viewRow); -// Email row = (Email) tableModel.getEntry(modelRow); -// boolean highlight = row.getTakenBy() == null; -// if (highlight) { -// Font font = renderer.getFont(); -// renderer.setFont(font.deriveFont(Font.BOLD)); -// } -// return renderer; -// } -// -// @Override -// public void addChangeListener(ChangeListener l) { -// } -// -// @Override -// public void removeChangeListener(ChangeListener l) { -// } -// -// @Override -// public ChangeListener[] getChangeListeners() { -// return new ChangeListener[0]; -// } -// }; -// table.addHighlighter(highlighter); - - rangeTableModel.addTableModelListener(new TableModelListener() { - @Override - public void tableChanged(TableModelEvent e) { - if (e.getType() == TableModelEvent.INSERT) { - RangeRow row = rangeTableModel.getEntry(e.getFirstRow()); - getModel().addRangeRow(row); - } - } - }); - SwingValidator validator = this.ui.getValidator(); listenValidatorValid(validator, model); @@ -273,20 +270,18 @@ log.debug("closing: " + ui); } clearValidators(); - } @Override public boolean quitUI() { -// boolean result = quitScreen( -// getModel().isValid(), -// getModel().isModify(), -// _("tutti.editCruise.askCancelEditBeforeLeaving.cancelSaveCruise"), -// _("tutti.editCruise.askSaveBeforeLeaving.saveCruise"), -// ui.getSaveButton().getAction() -// ); -// return result; - return true; + boolean result = quitScreen( + getModel().isValid(), + getModel().isModify(), + t("faxtomail.demande.askCancelEditBeforeLeaving.cancelSave"), + t("faxtomail.demande.askSaveBeforeLeaving.save"), + getContext().getActionFactory().createUIAction(this, SaveDemandeAction.class) + ); + return result; } @Override @@ -294,12 +289,6 @@ return ui.getValidator(); } - public void saveDemande() { - SaveDemandeAction action = getContext().getActionFactory().createLogicAction(this, SaveDemandeAction.class); - action.setDemandeModel(getModel()); - getContext().getActionEngine().runAction(action); - } - public void transmitDemande() { MailFolderChooserUI dialogContent = new MailFolderChooserUI(ui); dialogContent.setModel(getModel()); @@ -311,7 +300,7 @@ ReplyFormUIModel model = dialogContent.getModel(); String client = getModel().getClientCode(); model.setObject(client == null ? null : client); - model.setTo(getModel().getSenderEmailAddress()); + model.setTo(getModel().getSender()); openFrame(dialogContent, t("faxtomail.reply.title", getModel().getObject()), new Dimension(800, 600)); } } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-03-10 09:32:30 UTC (rev 17) @@ -36,6 +36,7 @@ import com.franciaflex.faxtomail.persistence.entities.Priority; import com.franciaflex.faxtomail.persistence.entities.RangeRow; import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailBeanUIModel; +import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil; import com.franciaflex.faxtomail.ui.swing.util.attachment.AttachmentModelAware; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -57,12 +58,19 @@ private static final Log log = LogFactory.getLog(DemandeUIModel.class); + public static final String PROPERTY_PF_NB = "pfNb"; + public static final String PROPERTY_SAV_NB = "savNb"; + protected final Email editObject = new EmailImpl(); protected History firstOpeningHistory; protected History lastModificationHistory; + protected int pfNb; + + protected int savNb; + protected static Binder<DemandeUIModel, Email> toBeanBinder = BinderFactory.newBinder(DemandeUIModel.class, Email.class); @@ -74,11 +82,6 @@ super(fromBeanBinder, toBeanBinder); } - public Email toEntity(Email email) { - toBeanBinder.copy((DemandeUIModel) this, email); - return email; - } - @Override public void fromEntity(Email entity) { super.fromEntity(entity); @@ -86,36 +89,30 @@ lastModificationHistory = null; } - public void setSenderEmailAddress(String senderEmailAddress) { - Object oldValue = getSenderEmailAddress(); - editObject.setSenderEmailAddress(senderEmailAddress); - firePropertyChanged(Email.PROPERTY_SENDER_EMAIL_ADDRESS, oldValue, senderEmailAddress); + public void setSender(String sender) { + Object oldValue = getSender(); + editObject.setSender(sender); + firePropertyChanged(Email.PROPERTY_SENDER, oldValue, sender); } - public String getSenderEmailAddress() { - return editObject.getSenderEmailAddress(); + public String getSender() { + String sender = editObject.getSender(); + if (sender == null) { + sender = t("faxtomail.demande.sender.manualCreation"); + } + return sender; } - public void setSenderFaxNumber(String senderFaxNumber) { - Object oldValue = getSenderFaxNumber(); - editObject.setSenderFaxNumber(senderFaxNumber); - firePropertyChanged(Email.PROPERTY_SENDER_FAX_NUMBER, oldValue, senderFaxNumber); + public void setRecipient(String recipient) { + Object oldValue = getRecipient(); + editObject.setRecipient(recipient); + firePropertyChanged(Email.PROPERTY_RECIPIENT, oldValue, recipient); } - public String getSenderFaxNumber() { - return editObject.getSenderFaxNumber(); + public String getRecipient() { + return editObject.getRecipient(); } - public void setReceptionEmailAddress(String receptionEmailAddress) { - Object oldValue = getReceptionEmailAddress(); - editObject.setReceptionEmailAddress(receptionEmailAddress); - firePropertyChanged(Email.PROPERTY_RECEPTION_EMAIL_ADDRESS, oldValue, receptionEmailAddress); - } - - public String getReceptionEmailAddress() { - return editObject.getReceptionEmailAddress(); - } - public void setObject(String object) { Object oldValue = getObject(); editObject.setObject(object); @@ -229,11 +226,14 @@ public void findFirstOpeningHistory() { History result = null; Date date = null; - for (History history : getHistory()) { - if (HistoryType.OPENING.equals(history.getType())) { - if (date == null || date.after(history.getModificationDate())) { - date = history.getModificationDate(); - result = history; + Collection<History> histories = getHistory(); + if (histories != null) { + for (History history : histories) { + if (HistoryType.OPENING.equals(history.getType())) { + if (date == null || date.after(history.getModificationDate())) { + date = history.getModificationDate(); + result = history; + } } } } @@ -243,11 +243,15 @@ public void findLastModificationHistory() { History result = null; Date date = null; - for (History history : getHistory()) { - if (HistoryType.MODIFICATION.equals(history.getType())) { - if (date == null || date.before(history.getModificationDate())) { - date = history.getModificationDate(); - result = history; + Collection<History> histories = getHistory(); + if (histories != null) { + for (History history : histories) { + if (HistoryType.MODIFICATION.equals(history.getType()) + || HistoryType.CREATION.equals(history.getType())) { + if (date == null || date.before(history.getModificationDate())) { + date = history.getModificationDate(); + result = history; + } } } } @@ -262,11 +266,13 @@ } public FaxToMailUser getFirstOpeningUser() { - return getFirstOpeningHistory().getFaxToMailUser(); + History history = getFirstOpeningHistory(); + return history != null ? history.getFaxToMailUser() : null; } public Date getFirstOpeningDate() { - return getFirstOpeningHistory().getModificationDate(); + History history = getFirstOpeningHistory(); + return history != null ? history.getModificationDate() : null; } public History getLastModificationHistory() { @@ -277,11 +283,13 @@ } public FaxToMailUser getLastModificationUser() { - return getLastModificationHistory().getFaxToMailUser(); + History history = getLastModificationHistory(); + return history != null ? history.getFaxToMailUser() : null; } public Date getLastModificationDate() { - return getLastModificationHistory().getModificationDate(); + History history = getLastModificationHistory(); + return history != null ? history.getModificationDate() : null; } @Override @@ -332,6 +340,9 @@ } public void setRangeRow(Collection<RangeRow> rangeRow) { + if (rangeRow == null) { + rangeRow = new ArrayList<RangeRow>(); + } editObject.setRangeRow(rangeRow); firePropertyChange(Email.PROPERTY_RANGE_ROW, null, getRangeRow()); } @@ -344,6 +355,26 @@ editObject.setMailFolder(mailFolder); } + public int getPfNb() { + return pfNb; + } + + public void setPfNb(int pfNb) { + Object oldValue = getPfNb(); + this.pfNb = pfNb; + firePropertyChange(PROPERTY_PF_NB, oldValue, pfNb); + } + + public int getSavNb() { + return savNb; + } + + public void setSavNb(int savNb) { + Object oldValue = getSavNb(); + this.savNb = savNb; + firePropertyChange(PROPERTY_SAV_NB, oldValue, savNb); + } + @Override protected Email newEntity() { return new EmailImpl(); Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.css =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.css 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.css 2014-03-10 09:32:30 UTC (rev 17) @@ -1,20 +0,0 @@ -#navigationTree { - font-size: "11"; - rootVisible: false; - showsRootHandles: true; -} - -#cancelButton { - actionIcon: cancel; - text: "faxtomail.chooseMailFolder.action.cancel"; - toolTipText: "faxtomail.chooseMailFolder.action.cancel.tip"; - i18nMnemonic: "faxtomail.chooseMailFolder.action.cancel.mnemonic"; -} - -#validateButton { - actionIcon: validate; - text: "faxtomail.chooseMailFolder.action.validate"; - toolTipText: "faxtomail.chooseMailFolder.action.validate.tip"; - i18nMnemonic: "faxtomail.chooseMailFolder.action.validate.mnemonic"; - _applicationAction: {com.franciaflex.faxtomail.ui.swing.actions.TransmitAction.class}; -} \ No newline at end of file Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.css =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.css (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.css 2014-03-10 09:32:30 UTC (rev 17) @@ -0,0 +1,18 @@ +#navigationTree { + font-size: "11"; + rootVisible: false; + showsRootHandles: true; +} + +#cancelButton { + actionIcon: cancel; + text: "faxtomail.chooseMailFolder.action.cancel"; + toolTipText: "faxtomail.chooseMailFolder.action.cancel.tip"; +} + +#validateButton { + actionIcon: validate; + text: "faxtomail.chooseMailFolder.action.validate"; + toolTipText: "faxtomail.chooseMailFolder.action.validate.tip"; + _applicationAction: {com.franciaflex.faxtomail.ui.swing.actions.TransmitAction.class}; +} \ No newline at end of file Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.jaxx =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.jaxx 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.jaxx 2014-03-10 09:32:30 UTC (rev 17) @@ -1,30 +0,0 @@ -<JPanel id='mailFolderChooser' layout='{new BorderLayout()}' - implements='com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI<DemandeUIModel, MailFolderChooserUIHandler>'> - - <import> - com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI - com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil - - javax.swing.tree.DefaultTreeModel - </import> - - <script><![CDATA[ - - public MailFolderChooserUI(FaxToMailUI parentUI) { - FaxToMailUIUtil.setParentUI(this, parentUI); - } - - ]]></script> - - <DemandeUIModel id='model' javaBean='null'/> - - <JScrollPane constraints='BorderLayout.CENTER'> - <JTree id="navigationTree"/> - </JScrollPane> - - <JPanel layout='{new GridLayout(1, 0)}' constraints='BorderLayout.SOUTH'> - <JButton id='cancelButton' onActionPerformed='handler.cancel()'/> - <JButton id='validateButton'/> - </JPanel> - -</JPanel> \ No newline at end of file Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.jaxx =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.jaxx (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.jaxx 2014-03-10 09:32:30 UTC (rev 17) @@ -0,0 +1,30 @@ +<JPanel id='mailFolderChooser' layout='{new BorderLayout()}' + implements='com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI<DemandeUIModel, MailFolderChooserUIHandler>'> + + <import> + com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI + com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil + + javax.swing.tree.DefaultTreeModel + </import> + + <script><![CDATA[ + + public MailFolderChooserUI(FaxToMailUI parentUI) { + FaxToMailUIUtil.setParentUI(this, parentUI); + } + + ]]></script> + + <DemandeUIModel id='model' javaBean='null'/> + + <JScrollPane constraints='BorderLayout.CENTER'> + <JTree id="navigationTree"/> + </JScrollPane> + + <JPanel layout='{new GridLayout(1, 0)}' constraints='BorderLayout.SOUTH'> + <JButton id='cancelButton' onActionPerformed='handler.cancel()'/> + <JButton id='validateButton'/> + </JPanel> + +</JPanel> \ No newline at end of file Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUIHandler.java 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUIHandler.java 2014-03-10 09:32:30 UTC (rev 17) @@ -1,86 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.content.demande; - -import com.franciaflex.faxtomail.persistence.entities.Company; -import com.franciaflex.faxtomail.persistence.entities.MailFolder; -import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; -import com.franciaflex.faxtomail.ui.swing.util.Cancelable; -import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil; -import com.franciaflex.faxtomail.ui.swing.util.FolderTreeNode; -import jaxx.runtime.validator.swing.SwingValidator; - -import javax.swing.*; -import javax.swing.event.TreeSelectionEvent; -import javax.swing.event.TreeSelectionListener; -import javax.swing.tree.DefaultMutableTreeNode; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; - -/** - * @author Kevin Morin (Code Lutin) - * @since x.x - */ -public class MailFolderChooserUIHandler extends AbstractFaxToMailUIHandler<DemandeUIModel, MailFolderChooserUI> implements Cancelable { - - @Override - public void afterInit(MailFolderChooserUI mailFolderChooserUI) { - initUI(mailFolderChooserUI); - - // init tree - Company franciaflex = getContext().getCurrentCompany(); - Collection<MailFolder> folders = franciaflex.getMailFolder(); - JTree navigationTree = ui.getNavigationTree(); - Map<MailFolder, DefaultMutableTreeNode> nodesByFolder = - FaxToMailUIUtil.initFolderTree(getContext(), navigationTree, folders); - - navigationTree.addTreeSelectionListener(new TreeSelectionListener() { - @Override - public void valueChanged(TreeSelectionEvent e) { - FolderTreeNode folderNode = (FolderTreeNode) e.getPath().getLastPathComponent(); - MailFolder folder = folderNode.getMailFolder(); - getModel().setMailFolder(folder); - } - }); - } - - @Override - public void onCloseUI() { - } - - @Override - public SwingValidator<DemandeUIModel> getValidator() { - return null; - } - - @Override - public void cancel() { - closeDialog(); - } - - @Override - protected JComponent getComponentToFocus() { - return ui.getNavigationTree(); - } - - /** - * Creates the tree nodes and returns a map of the nodes by folder - * @param parent the node parent - * @param folder the folder to add to the tree - * @return the map of the nodes by folder - */ - protected Map<MailFolder, DefaultMutableTreeNode> createFolderTree(DefaultMutableTreeNode parent, MailFolder folder) { - Map<MailFolder, DefaultMutableTreeNode> result = new HashMap<MailFolder, DefaultMutableTreeNode>(); - - DefaultMutableTreeNode node = new FolderTreeNode(folder); - result.put(folder, node); - - parent.add(node); - if (folder.isChildrenNotEmpty()) { - for (MailFolder child : folder.getChildren()) { - result.putAll(createFolderTree(node, child)); - } - } - return result; - } - -} Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUIHandler.java (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUIHandler.java 2014-03-10 09:32:30 UTC (rev 17) @@ -0,0 +1,88 @@ +package com.franciaflex.faxtomail.ui.swing.content.demande; + +import com.franciaflex.faxtomail.persistence.entities.Company; +import com.franciaflex.faxtomail.persistence.entities.MailFolder; +import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; +import com.franciaflex.faxtomail.ui.swing.content.demande.MailFolderChooserUI; +import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; +import com.franciaflex.faxtomail.ui.swing.util.Cancelable; +import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil; +import com.franciaflex.faxtomail.ui.swing.util.FolderTreeNode; +import jaxx.runtime.validator.swing.SwingValidator; + +import javax.swing.*; +import javax.swing.event.TreeSelectionEvent; +import javax.swing.event.TreeSelectionListener; +import javax.swing.tree.DefaultMutableTreeNode; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +/** + * @author Kevin Morin (Code Lutin) + * @since x.x + */ +public class MailFolderChooserUIHandler extends AbstractFaxToMailUIHandler<DemandeUIModel, MailFolderChooserUI> implements Cancelable { + + @Override + public void afterInit(MailFolderChooserUI mailFolderChooserUI) { + initUI(mailFolderChooserUI); + + // init tree + Company franciaflex = getContext().getCurrentCompany(); + Collection<MailFolder> folders = franciaflex.getMailFolder(); + JTree navigationTree = ui.getNavigationTree(); + Map<MailFolder, DefaultMutableTreeNode> nodesByFolder = + FaxToMailUIUtil.initFolderTree(getContext(), navigationTree, folders); + + navigationTree.addTreeSelectionListener(new TreeSelectionListener() { + @Override + public void valueChanged(TreeSelectionEvent e) { + FolderTreeNode folderNode = (FolderTreeNode) e.getPath().getLastPathComponent(); + MailFolder folder = folderNode.getMailFolder(); + getModel().setMailFolder(folder); + } + }); + } + + @Override + public void onCloseUI() { + } + + @Override + public SwingValidator<DemandeUIModel> getValidator() { + return null; + } + + @Override + public void cancel() { + closeDialog(); + } + + @Override + protected JComponent getComponentToFocus() { + return ui.getNavigationTree(); + } + + /** + * Creates the tree nodes and returns a map of the nodes by folder + * @param parent the node parent + * @param folder the folder to add to the tree + * @return the map of the nodes by folder + */ + protected Map<MailFolder, DefaultMutableTreeNode> createFolderTree(DefaultMutableTreeNode parent, MailFolder folder) { + Map<MailFolder, DefaultMutableTreeNode> result = new HashMap<MailFolder, DefaultMutableTreeNode>(); + + DefaultMutableTreeNode node = new FolderTreeNode(folder); + result.put(folder, node); + + parent.add(node); + if (folder.isChildrenNotEmpty()) { + for (MailFolder child : folder.getChildren()) { + result.putAll(createFolderTree(node, child)); + } + } + return result; + } + +} Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUI.css =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUI.css (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUI.css 2014-03-10 09:32:30 UTC (rev 17) @@ -0,0 +1,7 @@ +#rangeTable { + editable: false; +} + +#okButton { + text: "faxtomail.quantitiesByRange.button.text"; +} \ No newline at end of file Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUI.jaxx =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUI.jaxx (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUI.jaxx 2014-03-10 09:32:30 UTC (rev 17) @@ -0,0 +1,30 @@ +<JPanel id='quantitiesByRangeUI' layout='{new BorderLayout()}' + implements='com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI<QuantitiesByRangeUIModel, QuantitiesByRangeUIHandler>'> + + <import> + com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI + com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil + + org.jdesktop.swingx.JXTable + </import> + + <script><![CDATA[ + + public QuantitiesByRangeUI(FaxToMailUI parentUI) { + FaxToMailUIUtil.setParentUI(this, parentUI); + } + + ]]></script> + + <QuantitiesByRangeUIModel id='model' + initializer='getContextValue(QuantitiesByRangeUIModel.class)'/> + + <JScrollPane constraints='BorderLayout.CENTER'> + <JXTable id='rangeTable'/> + </JScrollPane> + + <JPanel layout='{new GridLayout(1, 0)}' constraints='BorderLayout.SOUTH'> + <JButton id='okButton' onActionPerformed='handler.cancel()'/> + </JPanel> + +</JPanel> \ No newline at end of file Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUIHandler.java (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUIHandler.java 2014-03-10 09:32:30 UTC (rev 17) @@ -0,0 +1,92 @@ +package com.franciaflex.faxtomail.ui.swing.content.demande; + +import com.franciaflex.faxtomail.persistence.entities.Range; +import com.franciaflex.faxtomail.persistence.entities.RangeRow; +import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; +import jaxx.runtime.validator.swing.SwingValidator; +import org.jdesktop.swingx.JXTable; +import org.jdesktop.swingx.table.DefaultTableColumnModelExt; +import org.jdesktop.swingx.table.TableColumnModelExt; +import org.nuiton.jaxx.application.swing.util.Cancelable; + +import javax.swing.*; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.util.List; + +/** + * @author Kevin Morin (Code Lutin) + * @since x.x + */ +public class QuantitiesByRangeUIHandler extends AbstractFaxToMailUIHandler<QuantitiesByRangeUIModel, QuantitiesByRangeUI> implements Cancelable { + + protected RangeTableModel rangeTableModel; + + @Override + public void beforeInit(QuantitiesByRangeUI ui) { + super.beforeInit(ui); + + QuantitiesByRangeUIModel dialogModel = new QuantitiesByRangeUIModel(); + dialogModel.setRootFolder(getContext().getCurrentMailFolder()); + this.ui.setContextValue(dialogModel); + } + + @Override + public void afterInit(QuantitiesByRangeUI quantitiesByRangeUI) { + initUI(quantitiesByRangeUI); + + final JXTable table = ui.getRangeTable(); + + TableColumnModelExt columnModel = new DefaultTableColumnModelExt(); + addColumnToModel(columnModel, + null, + newTableCellRender(Range.class), + RangeTableModel.RANGE_COLUMN); + addIntegerColumnToModel(columnModel, + RangeTableModel.PRODUCT_QUANTITY_COLUMN, + null, + table); + addIntegerColumnToModel(columnModel, + RangeTableModel.SAV_QUANTITY_COLUMN, + null, + table); + + rangeTableModel = new RangeTableModel(columnModel); + rangeTableModel.setRows(getModel().getRangeRows()); + table.setModel(rangeTableModel); + table.setColumnModel(columnModel); + table.getTableHeader().setReorderingAllowed(false); + + getModel().addPropertyChangeListener(QuantitiesByRangeUIModel.PROPERTY_RANGE_ROWS, + new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + setRangeRows((List<RangeRowModel>) evt.getNewValue()); + } + }); + } + + @Override + public SwingValidator<QuantitiesByRangeUIModel> getValidator() { + return null; + } + + @Override + protected JComponent getComponentToFocus() { + return null; + } + + @Override + public void onCloseUI() { + + } + + @Override + public void cancel() { + closeDialog(); + } + + public void setRangeRows(List<RangeRowModel> rows) { + rangeTableModel.setRows(rows); + } +} Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUIModel.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUIModel.java (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUIModel.java 2014-03-10 09:32:30 UTC (rev 17) @@ -0,0 +1,43 @@ +package com.franciaflex.faxtomail.ui.swing.content.demande; + +import com.franciaflex.faxtomail.persistence.entities.MailFolder; +import com.franciaflex.faxtomail.persistence.entities.RangeRow; +import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailBeanUIModel; +import org.jdesktop.beans.AbstractSerializableBean; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +/** + * @author Kevin Morin (Code Lutin) + * @since x.x + */ +public class QuantitiesByRangeUIModel extends AbstractSerializableBean { + + public static final String PROPERTY_ROOT_FOLDER = "rootFolder"; + public static final String PROPERTY_RANGE_ROWS = "rangeRows"; + + protected MailFolder rootFolder; + + protected List<RangeRowModel> rangeRows = new ArrayList<RangeRowModel>(); + + public MailFolder getRootFolder() { + return rootFolder; + } + + public void setRootFolder(MailFolder rootFolder) { + Object oldValue = getRootFolder(); + this.rootFolder = rootFolder; + firePropertyChange(PROPERTY_ROOT_FOLDER, oldValue, rootFolder); + } + + public List<RangeRowModel> getRangeRows() { + return rangeRows; + } + + public void setRangeRows(Collection<RangeRowModel> rangeRows) { + this.rangeRows = new ArrayList<RangeRowModel>(rangeRows); + firePropertyChange(PROPERTY_RANGE_ROWS, null, this.rangeRows); + } +} Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/RangeRowModel.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/RangeRowModel.java (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/RangeRowModel.java 2014-03-10 09:32:30 UTC (rev 17) @@ -0,0 +1,85 @@ +package com.franciaflex.faxtomail.ui.swing.content.demande; + +import com.franciaflex.faxtomail.persistence.entities.Email; +import com.franciaflex.faxtomail.persistence.entities.EmailImpl; +import com.franciaflex.faxtomail.persistence.entities.History; +import com.franciaflex.faxtomail.persistence.entities.Range; +import com.franciaflex.faxtomail.persistence.entities.RangeRow; +import com.franciaflex.faxtomail.persistence.entities.RangeRowImpl; +import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailBeanUIModel; +import org.nuiton.util.beans.Binder; +import org.nuiton.util.beans.BinderFactory; + +/** + * @author Kevin Morin (Code Lutin) + * @since x.x + */ +public class RangeRowModel extends AbstractFaxToMailBeanUIModel<RangeRow, RangeRowModel> { + + protected final RangeRow editObject = new RangeRowImpl(); + + protected static Binder<RangeRowModel, RangeRow> toBeanBinder = + BinderFactory.newBinder(RangeRowModel.class, + RangeRow.class); + + protected static Binder<RangeRow, RangeRowModel> fromBeanBinder = + BinderFactory.newBinder(RangeRow.class, RangeRowModel.class); + + + public RangeRowModel() { + super(fromBeanBinder, toBeanBinder); + } + + public void setCommandNumber(String commandNumber) { + Object oldValue = getCommandNumber(); + editObject.setCommandNumber(commandNumber); + firePropertyChange(RangeRow.PROPERTY_COMMAND_NUMBER, oldValue, commandNumber); + } + + public String getCommandNumber() { + return editObject.getCommandNumber(); + } + + public void setProductQuantity(Integer productQuantity) { + Object oldValue = getProductQuantity(); + editObject.setProductQuantity(productQuantity); + firePropertyChange(RangeRow.PROPERTY_PRODUCT_QUANTITY, oldValue, productQuantity); + } + + public Integer getProductQuantity() { + return editObject.getProductQuantity(); + } + + public void setSavQuantity(Integer savQuantity) { + Object oldValue = getSavQuantity(); + editObject.setSavQuantity(savQuantity); + firePropertyChange(RangeRow.PROPERTY_SAV_QUANTITY, oldValue, savQuantity); + } + + public Integer getSavQuantity() { + return editObject.getSavQuantity(); + } + + public void setRange(Range range) { + Object oldValue = getRange(); + editObject.setRange(range); + firePropertyChange(RangeRow.PROPERTY_RANGE, oldValue, range); + } + + public Range getRange() { + return editObject.getRange(); + } + + public String getTopiaId() { + return editObject.getTopiaId(); + } + + public void setTopiaId(String id) { + editObject.setTopiaId(id); + } + + @Override + protected RangeRow newEntity() { + return new RangeRowImpl(); + } +} Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/RangeTableModel.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/RangeTableModel.java 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/RangeTableModel.java 2014-03-10 09:32:30 UTC (rev 17) @@ -2,17 +2,21 @@ import com.franciaflex.faxtomail.persistence.entities.RangeRow; import com.franciaflex.faxtomail.persistence.entities.RangeRowImpl; +import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.table.TableColumnModelExt; import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel; import org.nuiton.jaxx.application.swing.table.ColumnIdentifier; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; + import static org.nuiton.i18n.I18n.n; /** * @author Kevin Morin (Code Lutin) * @since x.x */ -public class RangeTableModel extends AbstractApplicationTableModel<RangeRow> { +public class RangeTableModel extends AbstractApplicationTableModel<RangeRowModel> { public static final ColumnIdentifier<RangeRow> RANGE_COLUMN = ColumnIdentifier.newId( RangeRow.PROPERTY_RANGE, @@ -40,7 +44,7 @@ } @Override - public RangeRow createNewRow() { - return new RangeRowImpl(); + public RangeRowModel createNewRow() { + return new RangeRowModel(); } } Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUI.css =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUI.css 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUI.css 2014-03-10 09:32:30 UTC (rev 17) @@ -1,42 +0,0 @@ -#fromLabel { - text: "faxtomail.reply.from"; -} - -#toLabel { - text: "faxtomail.reply.to"; -} - -#toField { - text: {model.getTo()}; -} - -#objectLabel { - text: "faxtomail.reply.object"; -} - -#objectField { - text: {model.getObject()}; -} - -#attachmentCheckbox { - text: "faxtomail.reply.attachment"; -} - -#attachmentButton { - enabled: {attachmentCheckbox.isSelected()}; -} - -#cancelButton { - actionIcon: cancel; - text: "faxtomail.reply.action.cancel"; - toolTipText: "faxtomail.reply.action.cancel.tip"; - i18nMnemonic: "faxtomail.reply.action.cancel.mnemonic"; -} - -#validateButton { - actionIcon: validate; - text: "faxtomail.reply.action.validate"; - toolTipText: "faxtomail.reply.action.validate.tip"; - i18nMnemonic: "faxtomail.reply.action.validate.mnemonic"; - _applicationAction: {com.franciaflex.faxtomail.ui.swing.actions.ReplyAction.class}; -} \ No newline at end of file Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUI.jaxx =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUI.jaxx 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUI.jaxx 2014-03-10 09:32:30 UTC (rev 17) @@ -1,105 +0,0 @@ -<!-- - #%L - FaxToMail :: UI - %% - Copyright (C) 2014 Franciaflex - %% - 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% - --> -<JPanel id='replyPanel' layout='{new BorderLayout()}' - implements='com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI<ReplyFormUIModel, ReplyFormUIHandler>'> - - <import> - com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext - com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI - com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil - com.franciaflex.faxtomail.ui.swing.util.attachment.ButtonAttachment - - com.franciaflex.faxtomail.persistence.entities.Email - com.franciaflex.faxtomail.persistence.entities.DemandType - com.franciaflex.faxtomail.persistence.entities.DemandStatus - com.franciaflex.faxtomail.persistence.entities.Range - com.franciaflex.faxtomail.persistence.entities.Priority - - jaxx.runtime.swing.editor.bean.BeanFilterableComboBox - - org.jdesktop.swingx.JXDatePicker - org.jdesktop.swingx.JXTitledPanel - - java.text.SimpleDateFormat - java.util.Date - </import> - - <script><![CDATA[ - - public ReplyFormUI(FaxToMailUI parentUI) { - FaxToMailUIUtil.setParentUI(this, parentUI); - } - - ]]></script> - - <ReplyFormUIModel id='model' - initializer='getContextValue(ReplyFormUIModel.class)'/> - - <Table constraints='BorderLayout.CENTER' - fill='both'> - <row> - <cell> - <JLabel id="fromLabel"/> - </cell> - <cell weightx='1'> - <JTextField id="fromField"/> - </cell> - </row> - <row> - <cell> - <JLabel id="toLabel"/> - </cell> - <cell weightx='1'> - <JTextField id="toField"/> - </cell> - </row> - <row> - <cell> - <JLabel id="objectLabel"/> - </cell> - <cell weightx='1'> - <JTextField id="objectField"/> - </cell> - </row> - <row> - <cell columns='2'> - <JPanel layout='{new BorderLayout()}'> - <JCheckBox id="attachmentCheckbox" constraints="BorderLayout.CENTER"/> - <ButtonAttachment id="attachmentButton" - constructorParams="model" - constraints="BorderLayout.EAST"/> - </JPanel> - </cell> - </row> - <row weighty='1'> - <cell columns='2'> - <JEditorPane id="message" /> - </cell> - </row> - </Table> - - <JPanel layout='{new GridLayout(1, 0)}' constraints='BorderLayout.SOUTH'> - <JButton id='cancelButton' onActionPerformed='handler.cancel()'/> - <JButton id='validateButton'/> - </JPanel> - -</JPanel> \ No newline at end of file Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUIHandler.java 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUIHandler.java 2014-03-10 09:32:30 UTC (rev 17) @@ -1,54 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.content.demande; - -import com.franciaflex.faxtomail.ui.swing.actions.ReplyAction; -import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; -import com.franciaflex.faxtomail.ui.swing.util.Cancelable; -import jaxx.runtime.validator.swing.SwingValidator; - -import javax.swing.*; -import javax.swing.text.html.HTMLEditorKit; - -/** - * @author Kevin Morin (Code Lutin) - * @since x.x - */ -public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIModel, ReplyFormUI> implements Cancelable { - - @Override - public void beforeInit(ReplyFormUI ui) { - - super.beforeInit(ui); - - ReplyFormUIModel model = new ReplyFormUIModel(); - - this.ui.setContextValue(model); - } - - @Override - public void afterInit(ReplyFormUI replyFormUIModel) { - initUI(ui); - - JEditorPane editor = ui.getMessage(); - editor.setEditorKitForContentType("text/html", new HTMLEditorKit()); - editor.setContentType("text/html"); - } - - @Override - public void cancel() { - getParentContainer(JFrame.class).setVisible(false); - } - - @Override - public void onCloseUI() { - } - - @Override - public SwingValidator<ReplyFormUIModel> getValidator() { - return null; - } - - @Override - protected JComponent getComponentToFocus() { - return null; - } -} Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUIModel.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUIModel.java 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUIModel.java 2014-03-10 09:32:30 UTC (rev 17) @@ -1,90 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.content.demande; - -import com.franciaflex.faxtomail.persistence.entities.Attachment; -import com.franciaflex.faxtomail.ui.swing.util.attachment.AttachmentModelAware; -import org.jdesktop.beans.AbstractSerializableBean; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -/** - * @author Kevin Morin (Code Lutin) - * @since x.x - */ -public class ReplyFormUIModel extends AbstractSerializableBean implements AttachmentModelAware { - - public static final String PROPERTY_TO = "to"; - public static final String PROPERTY_FROM = "from"; - public static final String PROPERTY_OBJECT = "object"; - public static final String PROPERTY_MESSAGE = "message"; - - protected String to; - protected String from; - protected String object; - protected String message; - protected List<Attachment> attachments = new ArrayList<Attachment>(); - - public String getTo() { - return to; - } - - public void setTo(String to) { - Object oldValue = getTo(); - this.to = to; - firePropertyChange(PROPERTY_TO, oldValue, to); - } - - public String getFrom() { - return from; - } - - public void setFrom(String from) { - Object oldValue = getFrom(); - this.from = from; - firePropertyChange(PROPERTY_FROM, oldValue, from); - } - - public String getObject() { - return object; - } - - public void setObject(String object) { - Object oldValue = getObject(); - this.object = object; - firePropertyChange(PROPERTY_OBJECT, oldValue, object); - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - Object oldValue = getMessage(); - this.message = message; - firePropertyChange(PROPERTY_MESSAGE, oldValue, message); - } - - @Override - public Collection<Attachment> getAttachment() { - return attachments; - } - - @Override - public void addAllAttachment(Collection<Attachment> attachments) { - this.attachments.addAll(attachments); - firePropertyChange(AttachmentModelAware.PROPERTY_ATTACHMENT, null, getAttachment()); - } - - @Override - public void addAttachment(Attachment attachment) { - attachments.add(attachment); - firePropertyChange(AttachmentModelAware.PROPERTY_ATTACHMENT, null, getAttachment()); - } - - @Override - public void removeAttachment(Attachment attachment) { - attachments.remove(attachment); - firePropertyChange(AttachmentModelAware.PROPERTY_ATTACHMENT, null, getAttachment()); - } -} Copied: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.css (from rev 16, trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUI.css) =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.css (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.css 2014-03-10 09:32:30 UTC (rev 17) @@ -0,0 +1,40 @@ +#fromLabel { + text: "faxtomail.reply.from"; +} + +#toLabel { + text: "faxtomail.reply.to"; +} + +#toField { + text: {model.getTo()}; +} + +#objectLabel { + text: "faxtomail.reply.object"; +} + +#objectField { + text: {model.getObject()}; +} + +#attachmentCheckbox { + text: "faxtomail.reply.attachment"; +} + +#attachmentButton { + enabled: {attachmentCheckbox.isSelected()}; +} + +#cancelButton { + actionIcon: cancel; + text: "faxtomail.reply.action.cancel"; + toolTipText: "faxtomail.reply.action.cancel.tip"; +} + +#validateButton { + actionIcon: validate; + text: "faxtomail.reply.action.validate"; + toolTipText: "faxtomail.reply.action.validate.tip"; + _applicationAction: {com.franciaflex.faxtomail.ui.swing.actions.ReplyAction.class}; +} \ No newline at end of file Copied: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.jaxx (from rev 16, trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUI.jaxx) =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.jaxx (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.jaxx 2014-03-10 09:32:30 UTC (rev 17) @@ -0,0 +1,100 @@ +<!-- + #%L + FaxToMail :: UI + %% + Copyright (C) 2014 Franciaflex + %% + 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% + --> +<JPanel id='replyPanel' layout='{new BorderLayout()}' + implements='com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI<ReplyFormUIModel, ReplyFormUIHandler>'> + + <import> + com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext + com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI + com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil + com.franciaflex.faxtomail.ui.swing.util.attachment.ButtonAttachment + + com.franciaflex.faxtomail.persistence.entities.Email + com.franciaflex.faxtomail.persistence.entities.DemandType + com.franciaflex.faxtomail.persistence.entities.DemandStatus + com.franciaflex.faxtomail.persistence.entities.Range + com.franciaflex.faxtomail.persistence.entities.Priority + + java.text.SimpleDateFormat + java.util.Date + </import> + + <script><![CDATA[ + + public ReplyFormUI(FaxToMailUI parentUI) { + FaxToMailUIUtil.setParentUI(this, parentUI); + } + + ]]></script> + + <ReplyFormUIModel id='model' + initializer='getContextValue(ReplyFormUIModel.class)'/> + + <Table constraints='BorderLayout.CENTER' + fill='both'> + <row> + <cell> + <JLabel id="fromLabel"/> + </cell> + <cell weightx='1'> + <JTextField id="fromField"/> + </cell> + </row> + <row> + <cell> + <JLabel id="toLabel"/> + </cell> + <cell weightx='1'> + <JTextField id="toField"/> + </cell> + </row> + <row> + <cell> + <JLabel id="objectLabel"/> + </cell> + <cell weightx='1'> + <JTextField id="objectField"/> + </cell> + </row> + <row> + <cell columns='2'> + <JPanel layout='{new BorderLayout()}'> + <JCheckBox id="attachmentCheckbox" constraints="BorderLayout.CENTER"/> + <ButtonAttachment id="attachmentButton" + constructorParams="model" + constraints="BorderLayout.EAST"/> + </JPanel> + </cell> + </row> + <row weighty='1'> + <cell columns='2'> + <JEditorPane id="message" /> + </cell> + </row> + </Table> + + <JPanel layout='{new GridLayout(1, 0)}' constraints='BorderLayout.SOUTH'> + <JButton id='cancelButton' onActionPerformed='handler.cancel()'/> + <JButton id='validateButton'/> + </JPanel> + +</JPanel> \ No newline at end of file Copied: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java (from rev 12, trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUIHandler.java) =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java 2014-03-10 09:32:30 UTC (rev 17) @@ -0,0 +1,53 @@ +package com.franciaflex.faxtomail.ui.swing.content.reply; + +import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; +import com.franciaflex.faxtomail.ui.swing.util.Cancelable; +import jaxx.runtime.validator.swing.SwingValidator; + +import javax.swing.*; +import javax.swing.text.html.HTMLEditorKit; + +/** + * @author Kevin Morin (Code Lutin) + * @since x.x + */ +public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIModel, ReplyFormUI> implements Cancelable { + + @Override + public void beforeInit(ReplyFormUI ui) { + + super.beforeInit(ui); + + ReplyFormUIModel model = new ReplyFormUIModel(); + + this.ui.setContextValue(model); + } + + @Override + public void afterInit(ReplyFormUI replyFormUIModel) { + initUI(ui); + + JEditorPane editor = ui.getMessage(); + editor.setEditorKitForContentType("text/html", new HTMLEditorKit()); + editor.setContentType("text/html"); + } + + @Override + public void cancel() { + getParentContainer(JFrame.class).setVisible(false); + } + + @Override + public void onCloseUI() { + } + + @Override + public SwingValidator<ReplyFormUIModel> getValidator() { + return null; + } + + @Override + protected JComponent getComponentToFocus() { + return null; + } +} Copied: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel.java (from rev 12, trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUIModel.java) =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel.java (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel.java 2014-03-10 09:32:30 UTC (rev 17) @@ -0,0 +1,90 @@ +package com.franciaflex.faxtomail.ui.swing.content.reply; + +import com.franciaflex.faxtomail.persistence.entities.Attachment; +import com.franciaflex.faxtomail.ui.swing.util.attachment.AttachmentModelAware; +import org.jdesktop.beans.AbstractSerializableBean; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +/** + * @author Kevin Morin (Code Lutin) + * @since x.x + */ +public class ReplyFormUIModel extends AbstractSerializableBean implements AttachmentModelAware { + + public static final String PROPERTY_TO = "to"; + public static final String PROPERTY_FROM = "from"; + public static final String PROPERTY_OBJECT = "object"; + public static final String PROPERTY_MESSAGE = "message"; + + protected String to; + protected String from; + protected String object; + protected String message; + protected List<Attachment> attachments = new ArrayList<Attachment>(); + + public String getTo() { + return to; + } + + public void setTo(String to) { + Object oldValue = getTo(); + this.to = to; + firePropertyChange(PROPERTY_TO, oldValue, to); + } + + public String getFrom() { + return from; + } + + public void setFrom(String from) { + Object oldValue = getFrom(); + this.from = from; + firePropertyChange(PROPERTY_FROM, oldValue, from); + } + + public String getObject() { + return object; + } + + public void setObject(String object) { + Object oldValue = getObject(); + this.object = object; + firePropertyChange(PROPERTY_OBJECT, oldValue, object); + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + Object oldValue = getMessage(); + this.message = message; + firePropertyChange(PROPERTY_MESSAGE, oldValue, message); + } + + @Override + public Collection<Attachment> getAttachment() { + return attachments; + } + + @Override + public void addAllAttachment(Collection<Attachment> attachments) { + this.attachments.addAll(attachments); + firePropertyChange(AttachmentModelAware.PROPERTY_ATTACHMENT, null, getAttachment()); + } + + @Override + public void addAttachment(Attachment attachment) { + attachments.add(attachment); + firePropertyChange(AttachmentModelAware.PROPERTY_ATTACHMENT, null, getAttachment()); + } + + @Override + public void removeAttachment(Attachment attachment) { + attachments.remove(attachment); + firePropertyChange(AttachmentModelAware.PROPERTY_ATTACHMENT, null, getAttachment()); + } +} Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.css =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.css 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.css 2014-03-10 09:32:30 UTC (rev 17) @@ -41,7 +41,6 @@ actionIcon: list; text: "faxtomail.search.action.gotoFolder"; toolTipText: "faxtomail.search.action.gotoFolder.tip"; - i18nMnemonic: "faxtomail.search.action.gotoFolder.mnemonic"; } #modifiedByLabel { @@ -101,7 +100,7 @@ } #senderField { - text: {model.getSenderEmailAddress()}; + text: {model.getSender()}; } #clientLabel { Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIModel.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIModel.java 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIModel.java 2014-03-10 09:32:30 UTC (rev 17) @@ -87,24 +87,24 @@ super.fromEntity(entity); } - public void setSenderEmailAddress(String senderEmailAddress) { - Object oldValue = getSenderEmailAddress(); - editObject.setSenderEmailAddress(senderEmailAddress); - firePropertyChanged(Email.PROPERTY_SENDER_EMAIL_ADDRESS, oldValue, senderEmailAddress); + public void setSender(String sender) { + Object oldValue = getSender(); + editObject.setSender(sender); + firePropertyChanged(Email.PROPERTY_SENDER, oldValue, sender); } - public String getSenderEmailAddress() { - return editObject.getSenderEmailAddress(); + public String getSender() { + return editObject.getSender(); } - public void setReceptionEmailAddress(String receptionEmailAddress) { - Object oldValue = getReceptionEmailAddress(); - editObject.setReceptionEmailAddress(receptionEmailAddress); - firePropertyChanged(Email.PROPERTY_RECEPTION_EMAIL_ADDRESS, oldValue, receptionEmailAddress); + public void setRecipient(String recipient) { + Object oldValue = getRecipient(); + editObject.setRecipient(recipient); + firePropertyChanged(Email.PROPERTY_RECIPIENT, oldValue, recipient); } - public String getReceptionEmailAddress() { - return editObject.getReceptionEmailAddress(); + public String getRecipient() { + return editObject.getRecipient(); } public void setObject(String object) { Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailBeanUIModel.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailBeanUIModel.java 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailBeanUIModel.java 2014-03-10 09:32:30 UTC (rev 17) @@ -22,6 +22,7 @@ * #L% */ +import com.franciaflex.faxtomail.persistence.entities.Email; import org.jdesktop.beans.AbstractSerializableBean; import org.nuiton.jaxx.application.listener.PropagatePropertyChangeListener; import org.nuiton.util.CollectionUtil; @@ -70,6 +71,11 @@ return toBean(); } + public E toEntity(E entity) { + toBeanBinder.copy((B) this, entity); + return entity; + } + public final void fromBean(E bean) { fromBeanBinder.copy(bean, (B) this); } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java 2014-03-10 09:32:30 UTC (rev 17) @@ -1,17 +1,25 @@ package com.franciaflex.faxtomail.ui.swing.util; +import com.franciaflex.faxtomail.persistence.entities.Attachment; import com.franciaflex.faxtomail.persistence.entities.Company; import com.franciaflex.faxtomail.persistence.entities.Email; +import com.franciaflex.faxtomail.persistence.entities.HasLabel; +import com.franciaflex.faxtomail.persistence.entities.Priority; import com.franciaflex.faxtomail.ui.swing.actions.ShowDemandeAction; +import com.franciaflex.faxtomail.ui.swing.util.attachment.AttachmentCellEditor; +import com.franciaflex.faxtomail.ui.swing.util.attachment.AttachmentCellRenderer; import org.apache.commons.lang3.StringUtils; import org.jdesktop.swingx.JXTable; import org.jdesktop.swingx.decorator.ComponentAdapter; import org.jdesktop.swingx.decorator.Highlighter; import org.jdesktop.swingx.table.DefaultTableColumnModelExt; import org.jdesktop.swingx.table.TableColumnModelExt; +import org.nuiton.decorator.Decorator; import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel; import javax.swing.event.ChangeListener; +import javax.swing.table.TableCellEditor; +import javax.swing.table.TableCellRenderer; import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; @@ -30,16 +38,60 @@ String columns = franciaflex.getConfiguration().getTableColumns(); if (columns == null) { columns = StringUtils.join(new String[]{ - Email.PROPERTY_OBJECT, Email.PROPERTY_RECEPTION_DATE, Email.PROPERTY_SENDER_EMAIL_ADDRESS + Email.PROPERTY_PRIORITY, + Email.PROPERTY_DEMAND_TYPE, + Email.PROPERTY_OBJECT, + Email.PROPERTY_CLIENT_CODE, + Email.PROPERTY_SENDER, + Email.PROPERTY_PROJECT_REFERENCE, + Email.PROPERTY_RECEPTION_DATE, + Email.PROPERTY_RECIPIENT, + Email.PROPERTY_DEMAND_STATUS, + Email.PROPERTY_ETAT_ATTENTE, + Email.PROPERTY_ATTACHMENT }, ','); } String[] columnNames = columns.split(","); for (String columnName : columnNames) { - addColumnToModel(columnModel, - null, - Email.PROPERTY_RECEPTION_DATE.equals(columnName) ? newTableCellRender(Date.class): null, - DemandeTableModel.COLUMN_IDENTIFIERS.get(columnName)) - .setSortable(true); + + if (Email.PROPERTY_PRIORITY.equals(columnName)) { + addComboDataColumnToModel(columnModel, + DemandeTableModel.COLUMN_IDENTIFIERS.get(columnName), + getDecorator(Priority.class, null), + getContext().getReferentielService().getAllPriority()); + + } else if (Email.PROPERTY_ATTACHMENT.equals(columnName)) { + addColumnToModel(columnModel, + AttachmentCellEditor.newEditor(ui), + AttachmentCellRenderer.newRender(getDecorator(Attachment.class, null)), + DemandeTableModel.COLUMN_IDENTIFIERS.get(columnName)); + + } else { + TableCellRenderer tableCellRenderer; + switch (columnName) { + case Email.PROPERTY_RECEPTION_DATE: + tableCellRenderer = newTableCellRender(Date.class); + break; + + case Email.PROPERTY_DEMAND_STATUS: + case Email.PROPERTY_DEMAND_TYPE: + case Email.PROPERTY_ETAT_ATTENTE: + tableCellRenderer = newTableCellRender(HasLabel.class); + break; + + default: + tableCellRenderer = newTableCellRender(new Decorator<Object>(Object.class) { + @Override + public String toString(Object bean) { + return bean == null ? "" : bean.toString(); + } + }); + } + addColumnToModel(columnModel, + null, + tableCellRenderer, + DemandeTableModel.COLUMN_IDENTIFIERS.get(columnName)); + } } final AbstractApplicationTableModel<Email> tableModel = new DemandeTableModel(columnModel); @@ -85,13 +137,16 @@ Email selectedEmail = tableModel.getEntry(rowIndex); selectedEmail = getContext().getEmailService().addToOpeningHistory(selectedEmail, getContext().getCurrentUser(), new Date()); - - getContext().setCurrentEmail(selectedEmail); - getContext().getActionEngine().runAction(new ShowDemandeAction(getContext().getMainUI().getHandler())); + openDemand(selectedEmail); } } }); return tableModel; } + + protected void openDemand(Email selectedEmail) { + getContext().setCurrentEmail(selectedEmail); + getContext().getActionEngine().runAction(new ShowDemandeAction(getContext().getMainUI().getHandler())); + } } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java 2014-03-10 09:32:30 UTC (rev 17) @@ -128,8 +128,8 @@ return super.decorate(s); } - public String decorateUser(FaxToMailUser user) { - if (user == null) { + public String decorateUser(FaxToMailUser user, boolean systemIfNull) { + if (user == null && systemIfNull) { return t("faxtomail.systemUser"); } return decorate(user); Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/DemandeTableModel.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/DemandeTableModel.java 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/DemandeTableModel.java 2014-03-10 09:32:30 UTC (rev 17) @@ -30,7 +30,9 @@ import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel; import org.nuiton.jaxx.application.swing.table.ColumnIdentifier; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import static org.nuiton.i18n.I18n.n; @@ -45,89 +47,103 @@ LogFactory.getLog(DemandeTableModel.class); public static final Map<String, ColumnIdentifier<Email>> COLUMN_IDENTIFIERS = new HashMap<String, ColumnIdentifier<Email>>() {{ - put(Email.PROPERTY_SENDER_EMAIL_ADDRESS, + put(Email.PROPERTY_SENDER, ColumnIdentifier.<Email>newReadOnlyId( - Email.PROPERTY_SENDER_EMAIL_ADDRESS, - n("faxtomail.demandeList.table.header.senderEmail"), - n("faxtomail.demandeList.table.header.senderEmail"))); + Email.PROPERTY_SENDER, + n("faxtomail.demandeList.table.header.sender"), + n("faxtomail.demandeList.table.header.sender.tip"))); put(Email.PROPERTY_OBJECT, ColumnIdentifier.<Email>newReadOnlyId( Email.PROPERTY_OBJECT, n("faxtomail.demandeList.table.header.object"), - n("faxtomail.demandeList.table.header.object"))); + n("faxtomail.demandeList.table.header.object.tip"))); put(Email.PROPERTY_RECEPTION_DATE, ColumnIdentifier.<Email>newReadOnlyId( Email.PROPERTY_RECEPTION_DATE, n("faxtomail.demandeList.table.header.receptionDate"), - n("faxtomail.demandeList.table.header.receptionDate"))); + n("faxtomail.demandeList.table.header.receptionDate.tip"))); + put(Email.PROPERTY_RECIPIENT, + ColumnIdentifier.<Email>newReadOnlyId( + Email.PROPERTY_RECIPIENT, + n("faxtomail.demandeList.table.header.recipient"), + n("faxtomail.demandeList.table.header.recipient.tip"))); + put(Email.PROPERTY_CLIENT_CODE, ColumnIdentifier.<Email>newReadOnlyId( Email.PROPERTY_CLIENT_CODE, n("faxtomail.demandeList.table.header.client"), - n("faxtomail.demandeList.table.header.client"))); + n("faxtomail.demandeList.table.header.client.tip"))); put(Email.PROPERTY_DEMAND_STATUS, ColumnIdentifier.<Email>newReadOnlyId( Email.PROPERTY_DEMAND_STATUS, n("faxtomail.demandeList.table.header.status"), - n("faxtomail.demandeList.table.header.status"))); + n("faxtomail.demandeList.table.header.status.tip"))); put(Email.PROPERTY_DEMAND_TYPE, ColumnIdentifier.<Email>newReadOnlyId( Email.PROPERTY_DEMAND_TYPE, n("faxtomail.demandeList.table.header.type"), - n("faxtomail.demandeList.table.header.type"))); + n("faxtomail.demandeList.table.header.type.tip"))); put(Email.PROPERTY_EDI_CODE_NUMBER, ColumnIdentifier.<Email>newReadOnlyId( Email.PROPERTY_EDI_CODE_NUMBER, n("faxtomail.demandeList.table.header.ediCodeNumber"), - n("faxtomail.demandeList.table.header.ediCodeNumber"))); + n("faxtomail.demandeList.table.header.ediCodeNumber.tip"))); put(Email.PROPERTY_ETAT_ATTENTE, ColumnIdentifier.<Email>newReadOnlyId( Email.PROPERTY_ETAT_ATTENTE, n("faxtomail.demandeList.table.header.waitingState"), - n("faxtomail.demandeList.table.header.waitingState"))); + n("faxtomail.demandeList.table.header.waitingState.tip"))); put(Email.PROPERTY_TAKEN_BY, ColumnIdentifier.<Email>newReadOnlyId( Email.PROPERTY_TAKEN_BY, n("faxtomail.demandeList.table.header.user"), - n("faxtomail.demandeList.table.header.user"))); + n("faxtomail.demandeList.table.header.user.tip"))); put(Email.PROPERTY_MAIL_FOLDER, ColumnIdentifier.<Email>newReadOnlyId( Email.PROPERTY_MAIL_FOLDER, n("faxtomail.demandeList.table.header.folder"), - n("faxtomail.demandeList.table.header.folder"))); + n("faxtomail.demandeList.table.header.folder.tip"))); put(Email.PROPERTY_PRIORITY, ColumnIdentifier.<Email>newReadOnlyId( Email.PROPERTY_PRIORITY, n("faxtomail.demandeList.table.header.priority"), - n("faxtomail.demandeList.table.header.priority"))); + n("faxtomail.demandeList.table.header.priority.tip"))); put(Email.PROPERTY_PROJECT_REFERENCE, ColumnIdentifier.<Email>newReadOnlyId( Email.PROPERTY_PROJECT_REFERENCE, n("faxtomail.demandeList.table.header.projectReference"), - n("faxtomail.demandeList.table.header.projectReference"))); + n("faxtomail.demandeList.table.header.projectReference.tip"))); put(Email.PROPERTY_RANGE_ROW, ColumnIdentifier.<Email>newReadOnlyId( Email.PROPERTY_RANGE_ROW, n("faxtomail.demandeList.table.header.range"), - n("faxtomail.demandeList.table.header.range"))); + n("faxtomail.demandeList.table.header.range.tip"))); + put(Email.PROPERTY_ATTACHMENT, + ColumnIdentifier.<Email>newReadOnlyId( + Email.PROPERTY_ATTACHMENT, + n("faxtomail.demandeList.table.header.attachment"), + n("faxtomail.demandeList.table.header.attachment.tip"))); + }}; public DemandeTableModel(TableColumnModelExt columnModel) { super(columnModel, false, false); - setNoneEditableCols(); + List<ColumnIdentifier> nonEditableColumns = new ArrayList<ColumnIdentifier>(COLUMN_IDENTIFIERS.values()); + nonEditableColumns.remove(COLUMN_IDENTIFIERS.get(Email.PROPERTY_PRIORITY)); + setNoneEditableCols(nonEditableColumns.toArray(new ColumnIdentifier[nonEditableColumns.size()])); } @Override Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java 2014-03-10 09:32:30 UTC (rev 17) @@ -25,8 +25,10 @@ import com.franciaflex.faxtomail.persistence.entities.Company; import com.franciaflex.faxtomail.persistence.entities.Email; import com.franciaflex.faxtomail.persistence.entities.MailFolder; +import com.franciaflex.faxtomail.persistence.entities.RangeRow; import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; import com.franciaflex.faxtomail.ui.swing.actions.ShowDemandeAction; +import com.franciaflex.faxtomail.ui.swing.content.demande.RangeRowModel; import jaxx.runtime.JAXXObject; import jaxx.runtime.JAXXUtil; import org.apache.commons.lang3.StringUtils; @@ -50,6 +52,8 @@ import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.Collection; import java.util.Date; import java.util.HashMap; @@ -129,4 +133,43 @@ return result; } + public static int[] computeQuantities(List<Email> emails) { + int pfNb = 0; + int savNb = 0; + for (Email email : emails) { + Collection<RangeRow> rangeRows = email.getRangeRow(); + if (rangeRows != null) { + for (RangeRow rangeRow : rangeRows) { + Integer productQuantity = rangeRow.getProductQuantity(); + if (productQuantity != null) { + pfNb += productQuantity; + } + + Integer savQuantity = rangeRow.getSavQuantity(); + if (savQuantity != null) { + savNb += savQuantity; + } + } + } + } + return new int[] { pfNb, savNb }; + } + + //TODO kmorin 20140306 remove this + public static int[] computeQuantities(Collection<RangeRowModel> rangeRows) { + int pfNb = 0; + int savNb = 0; + for (RangeRowModel rangeRow : rangeRows) { + Integer productQuantity = rangeRow.getProductQuantity(); + if (productQuantity != null) { + pfNb += productQuantity; + } + + Integer savQuantity = rangeRow.getSavQuantity(); + if (savQuantity != null) { + savNb += savQuantity; + } + } + return new int[] { pfNb, savNb }; + } } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentCellRenderer.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentCellRenderer.java 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentCellRenderer.java 2014-03-10 09:32:30 UTC (rev 17) @@ -30,10 +30,10 @@ private final Decorator<Attachment> decorator; - private Font defaulfFont; +// private Font defaulfFont; +// +// private Font selectedFont; - private Font selectedFont; - public static AttachmentCellRenderer newRender(Decorator<Attachment> decorator) { return new AttachmentCellRenderer(decorator); } @@ -58,10 +58,7 @@ int row, int column) { - if (defaulfFont == null) { - defaulfFont = UIManager.getFont("Table.font"); - selectedFont = defaulfFont.deriveFont(Font.BOLD); - } + super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); List<Attachment> attachments = (List<Attachment>) value; @@ -82,20 +79,20 @@ // use html to display the tooltip on several lines toolTipTextValue = sb.substring(5); } - String textValue = ButtonAttachment.getButtonText(attachments); + String textValue = t("faxtomail.attachmentCellRenderer.text", attachments != null ? attachments.size() : 0); boolean editable = table.isCellEditable(row, column); toolTipTextValue = String.format(TEXT_PATTERN, toolTipTextValue); setEnabled(editable); setText(textValue); setToolTipText(toolTipTextValue); - setBackground(null); - setForeground(Color.BLACK); +// setBackground(null); +// setForeground(Color.BLACK); - if (isSelected) { - setFont(selectedFont); - } else { - setFont(defaulfFont); - } +// if (isSelected) { +// setFont(selectedFont); +// } else { +// setFont(defaulfFont); +// } return this; } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUI.css =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUI.css 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUI.css 2014-03-10 09:32:30 UTC (rev 17) @@ -20,6 +20,5 @@ #addButton { actionIcon: add; toolTipText: "faxtomail.attachmentEditor.action.add.tip"; - i18nMnemonic: "faxtomail.attachmentEditor.action.add.mnemonic"; } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentItem.css =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentItem.css 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentItem.css 2014-03-10 09:32:30 UTC (rev 17) @@ -10,17 +10,14 @@ #openAttachmentButton { actionIcon: "open-file"; toolTipText: "faxtomail.attachmentEditor.action.open.tip"; - i18nMnemonic: "faxtomail.attachmentEditor.action.open.mnemonic"; } #saveAttachmentButton { actionIcon: "import"; toolTipText: "faxtomail.attachmentEditor.action.save.tip"; - i18nMnemonic: "faxtomail.attachmentEditor.action.save.mnemonic"; } #removeAttachmentButton { actionIcon: "delete"; toolTipText: "faxtomail.attachmentEditor.action.remove.tip"; - i18nMnemonic: "faxtomail.attachmentEditor.action.remove.mnemonic"; } \ No newline at end of file Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.css =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.css 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.css 2014-03-10 09:32:30 UTC (rev 17) @@ -1,5 +1,5 @@ #type { - text : { model.getTypeAsString() }; + text : { JAXXUtil.getStringValue(model.getType()) }; font-weight: "bold"; } @@ -9,7 +9,7 @@ } #user { - text : { model.getFaxToMailUserAsString() }; + text : { handler.decorateUser(model.getFaxToMailUser(), true) }; } #dateLabel { @@ -18,5 +18,5 @@ } #date { - text : { model.getModificationDateAsString() }; + text : { handler.decorate(model.getModificationDate()) }; } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.jaxx =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.jaxx 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.jaxx 2014-03-10 09:32:30 UTC (rev 17) @@ -1,6 +1,8 @@ <JPanel id='historyItemPanel' layout="{new GridLayout(0,1)}"> <import> + com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil + com.franciaflex.faxtomail.persistence.entities.History java.awt.FlowLayout Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItemModel.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItemModel.java 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItemModel.java 2014-03-10 09:32:30 UTC (rev 17) @@ -32,14 +32,6 @@ fromEntity(history); } - public String getTypeAsString() { - HistoryType type = editObject.getType(); - if (type == null) { - return null; - } - return type.toString(); - } - public HistoryType getType() { return editObject.getType(); } @@ -47,17 +39,9 @@ public void setType(HistoryType type) { Object oldValue = editObject.getType(); editObject.setType(type); - firePropertyChanged(History.PROPERTY_TYPE + "AsString", oldValue, type); + firePropertyChanged(History.PROPERTY_TYPE, oldValue, type); } - public String getModificationDateAsString() { - Date date = editObject.getModificationDate(); - if (date == null) { - return null; - } - return DateFormat.getDateTimeInstance().format(date); - } - public Date getModificationDate() { return editObject.getModificationDate(); } @@ -65,17 +49,9 @@ public void setModificationDate(Date modificationDate) { Object oldValue = editObject.getModificationDate(); editObject.setModificationDate(modificationDate); - firePropertyChanged(History.PROPERTY_MODIFICATION_DATE + "AsString", oldValue, modificationDate); + firePropertyChanged(History.PROPERTY_MODIFICATION_DATE, oldValue, modificationDate); } - public String getFaxToMailUserAsString() { - FaxToMailUser user = editObject.getFaxToMailUser(); - if (user == null) { - return "faxtomail.systemUser"; - } - return user.toString(); - } - public FaxToMailUser getFaxToMailUser() { return editObject.getFaxToMailUser(); } @@ -83,7 +59,7 @@ public void setFaxToMailUser(FaxToMailUser faxToMailUser) { Object oldValue = editObject.getFaxToMailUser(); editObject.setFaxToMailUser(faxToMailUser); - firePropertyChanged(History.PROPERTY_FAX_TO_MAIL_USER + "AsString", oldValue, faxToMailUser); + firePropertyChanged(History.PROPERTY_FAX_TO_MAIL_USER, oldValue, faxToMailUser); } @Override Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUIHandler.java 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUIHandler.java 2014-03-10 09:32:30 UTC (rev 17) @@ -11,6 +11,7 @@ import javax.swing.*; import java.awt.*; +import java.util.Collection; /** * @author Kevin Morin (Code Lutin) @@ -35,9 +36,12 @@ public void afterInit(HistoryListUI ui) { super.afterInit(ui); - for (History history : getModel().getHistory()) { - HistoryItem item = new HistoryItem(history, this); - ui.getHistories().add(item); + Collection<History> histories = getModel().getHistory(); + if (histories != null) { + for (History history : histories) { + HistoryItem item = new HistoryItem(history, this); + ui.getHistories().add(item); + } } } Modified: trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_en_GB.properties =================================================================== --- trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_en_GB.properties 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_en_GB.properties 2014-03-10 09:32:30 UTC (rev 17) @@ -1,3 +1,4 @@ +\ |\ = 1\ -\ Volets\ roulants= Ajouter= Derni\\u00e8re\ modification\ par\ Utilisateur\ 1\ le\ 14/01/2014\ \\u00e0\ 08\:42= @@ -13,9 +14,11 @@ application.action.create.error= application.error.ui.business.warning= faxtomail.action.create.error= +faxtomail.alert.alreadyTakenBy.help= faxtomail.alert.alreadyTakenBy.message= faxtomail.alert.alreadyTakenBy.title= faxtomail.archive.button.label= +faxtomail.attachmentCellRenderer.text= faxtomail.attachmentEditor.action.add.mnemonic= faxtomail.attachmentEditor.action.add.tip= faxtomail.attachmentEditor.action.closeAttachment.tip= @@ -98,6 +101,8 @@ faxtomail.demande.alreadyTakenBy= faxtomail.demande.archive.button.label= faxtomail.demande.archive.button.mnemonic= +faxtomail.demande.askCancelEditBeforeLeaving.cancelSave= +faxtomail.demande.askSaveBeforeLeaving.save= faxtomail.demande.back.button.label= faxtomail.demande.back.button.mnemonic= faxtomail.demande.client.label= @@ -113,11 +118,13 @@ faxtomail.demande.lastModificationDate.label= faxtomail.demande.lastModified.label= faxtomail.demande.lastModifiedBy.label= +faxtomail.demande.mailBody.label= faxtomail.demande.message.label= faxtomail.demande.object.label= faxtomail.demande.print.button.label= faxtomail.demande.print.button.mnemonic= faxtomail.demande.priority.label= +faxtomail.demande.projectReference.default= faxtomail.demande.projectReference.label= faxtomail.demande.received.label= faxtomail.demande.receivedDate.label= @@ -128,41 +135,71 @@ faxtomail.demande.save.button.label= faxtomail.demande.save.button.mnemonic= faxtomail.demande.sender.label= +faxtomail.demande.sender.manualCreation= +faxtomail.demande.sender.manual_creation= faxtomail.demande.status.label= faxtomail.demande.takenBy.label= faxtomail.demande.tcc.label= faxtomail.demande.title= faxtomail.demande.transmit.button.label= faxtomail.demande.transmit.button.mnemonic= +faxtomail.demandeList.action.archive= +faxtomail.demandeList.action.archive.tip= faxtomail.demandeList.action.attachment= faxtomail.demandeList.action.attachment.mnemonic= faxtomail.demandeList.action.attachment.tip= +faxtomail.demandeList.action.computeQuantitiesByRange= +faxtomail.demandeList.action.computeQuantitiesByRange.tip= faxtomail.demandeList.action.gotoFolder= faxtomail.demandeList.action.gotoFolder.mnemonic= faxtomail.demandeList.action.gotoFolder.tip= +faxtomail.demandeList.action.newDemand= +faxtomail.demandeList.action.newDemand.tip= faxtomail.demandeList.action.print= faxtomail.demandeList.action.print.mnemonic= faxtomail.demandeList.action.print.tip= faxtomail.demandeList.action.reply= faxtomail.demandeList.action.reply.mnemonic= faxtomail.demandeList.action.reply.tip= +faxtomail.demandeList.demandNbLabel= faxtomail.demandeList.pfNbLabel= faxtomail.demandeList.savNbLabel= +faxtomail.demandeList.table.header.attachment= +faxtomail.demandeList.table.header.attachment.tip= faxtomail.demandeList.table.header.client= +faxtomail.demandeList.table.header.client.tip= faxtomail.demandeList.table.header.commandNb= faxtomail.demandeList.table.header.ediCodeNumber= +faxtomail.demandeList.table.header.ediCodeNumber.tip= faxtomail.demandeList.table.header.folder= +faxtomail.demandeList.table.header.folder.tip= faxtomail.demandeList.table.header.object= +faxtomail.demandeList.table.header.object.tip= faxtomail.demandeList.table.header.priority= +faxtomail.demandeList.table.header.priority.tip= faxtomail.demandeList.table.header.projectReference= +faxtomail.demandeList.table.header.projectReference.tip= faxtomail.demandeList.table.header.range= +faxtomail.demandeList.table.header.range.tip= faxtomail.demandeList.table.header.receptionDate= +faxtomail.demandeList.table.header.receptionDate.tip= +faxtomail.demandeList.table.header.receptionEmailAddress= +faxtomail.demandeList.table.header.receptionEmailAddress.tip= +faxtomail.demandeList.table.header.recipient= +faxtomail.demandeList.table.header.recipient.tip= faxtomail.demandeList.table.header.savNumber= +faxtomail.demandeList.table.header.sender= +faxtomail.demandeList.table.header.sender.tip= faxtomail.demandeList.table.header.senderEmail= +faxtomail.demandeList.table.header.senderEmail.tip= faxtomail.demandeList.table.header.status= +faxtomail.demandeList.table.header.status.tip= faxtomail.demandeList.table.header.type= +faxtomail.demandeList.table.header.type.tip= faxtomail.demandeList.table.header.user= +faxtomail.demandeList.table.header.user.tip= faxtomail.demandeList.table.header.waitingState= +faxtomail.demandeList.table.header.waitingState.tip= faxtomail.demandeList.title= faxtomail.error.delete.startActionFile= faxtomail.error.errorpane.htmlmessage= @@ -200,6 +237,8 @@ faxtomail.print.button.label= faxtomail.property.get.error= faxtomail.property.set.error= +faxtomail.quantitiesByRange.button.text= +faxtomail.quantitiesByRange.title= faxtomail.rangeRows.table.header.command_number= faxtomail.rangeRows.table.header.product_column= faxtomail.rangeRows.table.header.range= @@ -295,3 +334,4 @@ tutti.manageTemporaryReferential.title= tutti.report.title= tutti.selectCruise.title= +|\\u00a0= Modified: trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties =================================================================== --- trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-03-10 09:32:30 UTC (rev 17) @@ -1,34 +1,22 @@ -1\ -\ Volets\ roulants= -Ajouter= -Derni\\u00e8re\ modification\ par\ Utilisateur\ 1\ le\ 14/01/2014\ \\u00e0\ 08\:42= -Editer= -Fax\ -\ TIF\ (25ko)= -Nombre\ de\ pages\ \:\ 1,\ dur\\u00e9e\ \:\ 13\ secondes,\ vitesse\ \:\ 31200= -Num\\u00e9ro\ SDA\ \:\ 6374= -Origine\ \:\ 02\ 34\ 56\ 78\ 90= -Plans\ -\ DXF\ (254ko)= -Supprimer= -T\\u00e9l\\u00e9copie\ re\\u00e7ue\ le\ 10/01/2014\ \\u00e0\ 13\:37= -Voir= +\ |\ = application.action.create.error= application.error.ui.business.warning= -faxtomail.alert.alreadyTakenBy.message=Le document est déjà attribué à l'utilisateur %s. -faxtomail.alert.alreadyTakenBy.title=Document déjà attribué -faxtomail.attachmentEditor.action.add.mnemonic=A +faxtomail.alert.alreadyTakenBy.button.quit=Quitter +faxtomail.alert.alreadyTakenBy.button.take=Prendre +faxtomail.alert.alreadyTakenBy.button.view=Visualiser +faxtomail.alert.alreadyTakenBy.help=Voulez-vous le prendre ?<ul><li><strong>Annuler</strong> pour ne retourner à la liste</li><li><strong>Non</strong> pour visualiser l'élément en lecture seule</li><li><strong>Oui</strong> pour le prendre</li></ul> +faxtomail.alert.alreadyTakenBy.message=L'élément est déjà pris par %s. +faxtomail.alert.alreadyTakenBy.title=Document déjà pris +faxtomail.attachmentCellRenderer.text=(%s) faxtomail.attachmentEditor.action.add.tip=Ajouter une pièce jointe faxtomail.attachmentEditor.action.closeAttachment.tip=Fermer la fenêtre des pièces-jointes -faxtomail.attachmentEditor.action.open.mnemonic=O faxtomail.attachmentEditor.action.open.tip=Ouvrir la pièce jointe -faxtomail.attachmentEditor.action.remove.mnemonic=u faxtomail.attachmentEditor.action.remove.tip=Supprimer la pièce jointe -faxtomail.attachmentEditor.action.save.mnemonic=E faxtomail.attachmentEditor.action.save.tip=Enregistrer la pièce jointe en local faxtomail.attachmentEditor.action.tip=Pièces jointes faxtomail.attachmentEditor.deleteAttachment.message=Êtes-vous sûr de vouloir supprimer la pièce-jointe %s ? faxtomail.attachmentEditor.deleteAttachment.title=Suppression de pièce-jointe faxtomail.attachmentEditor.field.file=Fichier -faxtomail.attachmentEditor.field.fileComment=Commentaire -faxtomail.attachmentEditor.field.fileName=Nom faxtomail.attachmentEditor.fileNotFound=Le fichier %s de la pièce jointe n'a pas été trouvé faxtomail.attachmentEditor.none.tip=Pas de pièce-jointes faxtomail.attachmentEditor.saveAttachment.button=Enregistrer @@ -38,68 +26,83 @@ faxtomail.attachmentEditor.text=Pièces jointes (%s) faxtomail.attachmentEditor.title=Pièces jointes faxtomail.chooseMailFolder.action.cancel=Annuler -faxtomail.chooseMailFolder.action.cancel.mnemonic=A faxtomail.chooseMailFolder.action.cancel.tip=Annuler et fermer la popup faxtomail.chooseMailFolder.action.validate=Valider -faxtomail.chooseMailFolder.action.validate.mnemonic=V -faxtomail.chooseMailFolder.action.validate.tip=Valider et transférer le mail -faxtomail.chooseMailFolder.title=Choisissez le dossier où transférer le mail -faxtomail.common.by= +faxtomail.chooseMailFolder.action.validate.tip=Valider et transférer l'élément +faxtomail.chooseMailFolder.title=Choisissez le dossier où transférer l'élément faxtomail.common.by.label=par faxtomail.common.on.label=le faxtomail.config.application= faxtomail.config.title= faxtomail.demande.archive.button.label=Archiver -faxtomail.demande.archive.button.mnemonic=V -faxtomail.demande.back.button.label=Annuler -faxtomail.demande.back.button.mnemonic=A +faxtomail.demande.askCancelEditBeforeLeaving.cancelSave=L'élément n'est pas valide et ne peut être sauvé. +faxtomail.demande.askSaveBeforeLeaving.save=Vous avez modifié l'élément mais vous n'avez pas enregistré ces modifications. +faxtomail.demande.back.button.label=Quitter faxtomail.demande.client.label=Client faxtomail.demande.docType.label=Type faxtomail.demande.ediCodeNumber.label=Retour EDI faxtomail.demande.etatAttente.label=État attente faxtomail.demande.firstOpened.label=Première ouverture faxtomail.demande.lastModified.label=Dernière modification +faxtomail.demande.mailBody.label=Corps du mail faxtomail.demande.message.label=Message faxtomail.demande.object.label=Objet faxtomail.demande.print.button.label=Imprimer -faxtomail.demande.print.button.mnemonic=I faxtomail.demande.priority.label=Priorité faxtomail.demande.projectReference.label=Référence chantier faxtomail.demande.receivedDate.label=Reçu le faxtomail.demande.reply.button.label=Répondre -faxtomail.demande.reply.button.mnemonic=R -faxtomail.demande.savNumber.label=SAV faxtomail.demande.save.button.label=Enregistrer -faxtomail.demande.save.button.mnemonic=E faxtomail.demande.sender.label=Émetteur +faxtomail.demande.sender.manualCreation=Création manuelle faxtomail.demande.status.label=Statut faxtomail.demande.takenBy.label=Pris par faxtomail.demande.transmit.button.label=Transmettre -faxtomail.demande.transmit.button.mnemonic=T +faxtomail.demandeList.action.archive=Archiver +faxtomail.demandeList.action.archive.tip=Archiver l'élément faxtomail.demandeList.action.attachment=Ajouter une pièce-jointe -faxtomail.demandeList.action.attachment.mnemonic=A faxtomail.demandeList.action.attachment.tip=Ajouter une pièce-jointe +faxtomail.demandeList.action.computeQuantitiesByRange=Calculer les quantités par gamme +faxtomail.demandeList.action.computeQuantitiesByRange.tip=Calculer les quantités par gamme +faxtomail.demandeList.action.newDemand=Créer une nouvelle demande +faxtomail.demandeList.action.newDemand.tip=Créer une nouvelle demande faxtomail.demandeList.action.print=Imprimer -faxtomail.demandeList.action.print.mnemonic=I faxtomail.demandeList.action.print.tip=Imprimer faxtomail.demandeList.action.reply=Répondre -faxtomail.demandeList.action.reply.mnemonic=R faxtomail.demandeList.action.reply.tip=Répondre +faxtomail.demandeList.demandNbLabel=Nombre de demandes faxtomail.demandeList.pfNbLabel=Nombre de produits finis faxtomail.demandeList.savNbLabel=Nombre de SAV +faxtomail.demandeList.table.header.attachment=PJ +faxtomail.demandeList.table.header.attachment.tip=Pièces-jointes faxtomail.demandeList.table.header.client=Client +faxtomail.demandeList.table.header.client.tip=Client faxtomail.demandeList.table.header.ediCodeNumber=Code EDI +faxtomail.demandeList.table.header.ediCodeNumber.tip=Code EDI faxtomail.demandeList.table.header.folder=Dossier +faxtomail.demandeList.table.header.folder.tip=Dossier faxtomail.demandeList.table.header.object=Objet -faxtomail.demandeList.table.header.priority=Priorité -faxtomail.demandeList.table.header.projectReference=Référence chantier +faxtomail.demandeList.table.header.object.tip=Objet +faxtomail.demandeList.table.header.priority=P +faxtomail.demandeList.table.header.priority.tip=Priorité +faxtomail.demandeList.table.header.projectReference=Ref chantier +faxtomail.demandeList.table.header.projectReference.tip=Référence chantier faxtomail.demandeList.table.header.range=Gamme +faxtomail.demandeList.table.header.range.tip=Gamme faxtomail.demandeList.table.header.receptionDate=Date de réception -faxtomail.demandeList.table.header.senderEmail=Email de l'émetteur +faxtomail.demandeList.table.header.receptionDate.tip=Date de réception +faxtomail.demandeList.table.header.recipient=Destinataire +faxtomail.demandeList.table.header.recipient.tip=Addresse email ou numéro de fax du destinataire +faxtomail.demandeList.table.header.sender=Émetteur +faxtomail.demandeList.table.header.sender.tip=Addresse email ou numéro de fax de l'émetteur faxtomail.demandeList.table.header.status=Statut +faxtomail.demandeList.table.header.status.tip=Statut faxtomail.demandeList.table.header.type=Type -faxtomail.demandeList.table.header.user=Pris pas +faxtomail.demandeList.table.header.type.tip=Type +faxtomail.demandeList.table.header.user=Pris par +faxtomail.demandeList.table.header.user.tip=Pris par faxtomail.demandeList.table.header.waitingState=État attente +faxtomail.demandeList.table.header.waitingState.tip=État attente faxtomail.demandeList.title=Gestion des fax faxtomail.historyList.action.tip=Historique faxtomail.historyList.text=Historique (%s) @@ -110,31 +113,27 @@ faxtomail.main.action.configuration.mnemonic= faxtomail.main.action.configuration.tip=Menu configuration faxtomail.main.action.demandeList=Gestion des fax -faxtomail.main.action.demandeList.mnemonic= faxtomail.main.action.demandeList.tip=Gestion des fax faxtomail.main.action.exit=Quitter -faxtomail.main.action.exit.mnemonic= faxtomail.main.action.exit.tip=Quitter l'application faxtomail.main.action.goto.previousScreen.tip= faxtomail.main.action.recherche=Recherche -faxtomail.main.action.recherche.mnemonic= faxtomail.main.action.recherche.tip=Recherche de demandes archivées faxtomail.main.action.reloadFaxToMail= faxtomail.main.menu.file=Fichier -faxtomail.main.menu.file.mnemonic= faxtomail.main.menu.file.tip=Menu fichier faxtomail.main.title.application=FaxToMail faxtomail.main.title.applicationName=FaxToMail faxtomail.main.title.nodb= -faxtomail.rangeRows.table.header.command_number=Numéro de commande / devis -faxtomail.rangeRows.table.header.product_column=Quantité de produits +faxtomail.quantitiesByRange.button.text=OK +faxtomail.quantitiesByRange.title=Quantités par gamme +faxtomail.rangeRows.table.header.command_number=N° commande / devis +faxtomail.rangeRows.table.header.product_column=Qté produits faxtomail.rangeRows.table.header.range=Gamme -faxtomail.rangeRows.table.header.sav_quantity=Quantité de SAV +faxtomail.rangeRows.table.header.sav_quantity=Qté SAV faxtomail.reply.action.cancel=Annuler -faxtomail.reply.action.cancel.mnemonic=A faxtomail.reply.action.cancel.tip=Annuler et fermer la popup faxtomail.reply.action.validate=Valider -faxtomail.reply.action.validate.mnemonic=V faxtomail.reply.action.validate.tip=Valider et répondre au mail faxtomail.reply.attachment=Ajouter des pièces jointes faxtomail.reply.from=De \: @@ -142,7 +141,6 @@ faxtomail.reply.title=Réponse à \: %s faxtomail.reply.to=À \: faxtomail.search.action.gotoFolder=Aller au dossier -faxtomail.search.action.gotoFolder.mnemonic=A faxtomail.search.action.gotoFolder.tip=Aller au dossier faxtomail.search.between2ndPart.label=et le faxtomail.search.button.label=Rechercher Added: trunk/faxtomail-ui-swing/src/main/resources/icons/action-compute.png =================================================================== (Binary files differ) Property changes on: trunk/faxtomail-ui-swing/src/main/resources/icons/action-compute.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/faxtomail-ui-swing/src/main/resources/icons/action-delete.png =================================================================== (Binary files differ) Property changes on: trunk/faxtomail-ui-swing/src/main/resources/icons/action-delete.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/faxtomail-ui-swing/src/main/resources/icons/action-edit-attachment.png =================================================================== (Binary files differ) Property changes on: trunk/faxtomail-ui-swing/src/main/resources/icons/action-edit-attachment.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/faxtomail-ui-swing/src/main/resources/icons/action-import.png =================================================================== (Binary files differ) Property changes on: trunk/faxtomail-ui-swing/src/main/resources/icons/action-import.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/faxtomail-ui-swing/src/main/resources/icons/action-new-demand.png =================================================================== (Binary files differ) Property changes on: trunk/faxtomail-ui-swing/src/main/resources/icons/action-new-demand.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/faxtomail-ui-swing/src/main/resources/icons/action-open-file.png =================================================================== (Binary files differ) Property changes on: trunk/faxtomail-ui-swing/src/main/resources/icons/action-open-file.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ConfigurationAction.java =================================================================== --- trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ConfigurationAction.java 2014-02-25 18:56:55 UTC (rev 16) +++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ConfigurationAction.java 2014-03-10 09:32:30 UTC (rev 17) @@ -150,7 +150,7 @@ public Map<String, String> getEmailFields() { Map<String, String> result = new HashMap<>(); - result.put(Email.PROPERTY_SENDER_EMAIL_ADDRESS, "Adresse email"); + result.put(Email.PROPERTY_SENDER, "Adresse email"); result.put(Email.PROPERTY_RECEPTION_DATE, "Date de réception"); result.put(Email.PROPERTY_EDI_CODE_NUMBER, "Code EDI"); result.put(Email.PROPERTY_OBJECT, "Objet");