r331 - in trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing: actions content/demande/replies content/reply util
Author: kmorin Date: 2014-07-03 08:59:26 +0200 (Thu, 03 Jul 2014) New Revision: 331 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/331 Log: correction des pj sur les r?\195?\169ponses Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyAttachmentModel.java 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/content/demande/replies/DemandRepliesUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/AttachmentItem.css trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/AttachmentItem.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/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java 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-07-02 23:38:38 UTC (rev 330) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ReplyAction.java 2014-07-03 06:59:26 UTC (rev 331) @@ -24,15 +24,21 @@ * #L% */ +import com.franciaflex.faxtomail.persistence.entities.AttachmentFile; import com.franciaflex.faxtomail.persistence.entities.Email; import com.franciaflex.faxtomail.services.service.EmailService; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; +import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyAttachmentModel; import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUI; import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUIHandler; import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUIModel; +import com.google.common.base.Function; +import com.google.common.collect.Collections2; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import java.util.Collection; + import static org.nuiton.i18n.I18n.t; /** @@ -57,11 +63,17 @@ emailService = getContext().getEmailService(); DemandeUIModel originalDemand = getModel().getOriginalDemand(); + Collection<AttachmentFile> attachmentFiles = Collections2.transform(model.getAttachments(), new Function<ReplyAttachmentModel, AttachmentFile>() { + @Override + public AttachmentFile apply(ReplyAttachmentModel replyAttachmentModel) { + return replyAttachmentModel.getAttachmentFile(); + } + }); Email email = emailService.reply(model.getFrom(), model.getTo(), model.getSubject(), model.getMessage(), - model.getAttachments(), + attachmentFiles, originalDemand.getTopiaId(), getContext().getCurrentUser()); Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUIHandler.java 2014-07-02 23:38:38 UTC (rev 330) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUIHandler.java 2014-07-03 06:59:26 UTC (rev 331) @@ -53,6 +53,9 @@ import javax.swing.table.TableColumnModel; import javax.swing.table.TableModel; +import com.franciaflex.faxtomail.persistence.entities.Attachment; +import com.franciaflex.faxtomail.persistence.entities.AttachmentImpl; +import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyAttachmentModel; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.io.IOUtils; @@ -257,9 +260,16 @@ dh.writeTo(fos); // copy content into an empty attachment - AttachmentFile attachment = new AttachmentFileImpl(); - attachment.setContent(fos.toByteArray()); - reply.addAttachment(attachment); + AttachmentFile attachmentFile = new AttachmentFileImpl(); + attachmentFile.setContent(fos.toByteArray()); + attachmentFile.setFilename(fileName); + + Attachment attachment = new AttachmentImpl(); + attachment.setOriginalFile(attachmentFile); + + ReplyAttachmentModel replyAttachmentModel = new ReplyAttachmentModel(attachment, true, fileName); + + reply.addAttachment(replyAttachmentModel); } } } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/AttachmentItem.css =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/AttachmentItem.css 2014-07-02 23:38:38 UTC (rev 330) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/AttachmentItem.css 2014-07-03 06:59:26 UTC (rev 331) @@ -27,7 +27,7 @@ #attachmentNameLabel { actionIcon: "attachment"; - text: { t("faxtomail.reply.attachment.label", getAttachmentFile().getFilename(), getAttachmentFile().getLength() / 1024) }; + text: { t("faxtomail.reply.attachment.label", getReplyAttachmentModel().getLabel(), getReplyAttachmentModel().getLength() / 1024) }; border: { BorderFactory.createEmptyBorder(3, 3, 3, 3) }; } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/AttachmentItem.jaxx =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/AttachmentItem.jaxx 2014-07-02 23:38:38 UTC (rev 330) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/AttachmentItem.jaxx 2014-07-03 06:59:26 UTC (rev 331) @@ -24,7 +24,6 @@ <JPanel id='attachmentPanel' layout='{new BorderLayout()}'> <import> - com.franciaflex.faxtomail.persistence.entities.AttachmentFile java.awt.Color java.io.File @@ -32,9 +31,10 @@ static org.nuiton.i18n.I18n.t static jaxx.runtime.JAXXUtil.getStringValue + </import> - <AttachmentFile id='attachmentFile' javaBean='null'/> + <ReplyAttachmentModel id='replyAttachmentModel' javaBean='null'/> <ReplyFormUIHandler id='handler' javaBean='null'/> @@ -42,9 +42,9 @@ <JToolBar id='toolbar' constraints='BorderLayout.EAST'> <JButton id='openAttachmentButton' - onActionPerformed='handler.openAttachment(attachmentFile)'/> + onActionPerformed='handler.openAttachment(replyAttachmentModel)'/> <JButton id='removeAttachmentButton' - onActionPerformed='handler.removeAttachment(attachmentFile)'/> + onActionPerformed='handler.removeAttachment(replyAttachmentModel)'/> </JToolBar> </JPanel> \ No newline at end of file Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyAttachmentModel.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyAttachmentModel.java (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyAttachmentModel.java 2014-07-03 06:59:26 UTC (rev 331) @@ -0,0 +1,58 @@ +package com.franciaflex.faxtomail.ui.swing.content.reply; + +import com.franciaflex.faxtomail.persistence.entities.Attachment; +import com.franciaflex.faxtomail.persistence.entities.AttachmentFile; + +/** +* @author Kevin Morin (Code Lutin) +* @since x.x +*/ +public class ReplyAttachmentModel { + + protected Attachment attachment; + protected boolean original; + protected String label; + + public ReplyAttachmentModel(Attachment attachment, boolean original, String label) { + this.attachment = attachment; + this.original = original; + this.label = label; + } + + public Attachment getAttachment() { + return attachment; + } + + public void setAttachment(Attachment attachment) { + this.attachment = attachment; + } + + public boolean isOriginal() { + return original; + } + + public void setOriginal(boolean original) { + this.original = original; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public AttachmentFile getAttachmentFile() { + return original ? attachment.getOriginalFile() : attachment.getEditedFile(); + } + + public long getLength() { + return getAttachmentFile() != null ? getAttachmentFile().getLength() : 0; + } + + @Override + public String toString() { + return label; + } +} Modified: 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/ReplyFormUIHandler.java 2014-07-02 23:38:38 UTC (rev 330) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java 2014-07-03 06:59:26 UTC (rev 331) @@ -28,8 +28,11 @@ import com.franciaflex.faxtomail.persistence.entities.AttachmentFileImpl; +import com.franciaflex.faxtomail.persistence.entities.AttachmentImpl; +import com.franciaflex.faxtomail.services.service.EmailService; +import com.google.common.base.Strings; import org.apache.commons.io.FileUtils; -import org.nuiton.util.DesktopUtil; +import org.apache.commons.lang3.StringUtils; import org.nuiton.validator.bean.simple.SimpleBeanValidator; import java.awt.Component; @@ -106,12 +109,20 @@ models.addAll(demand.getGroupedDemandes()); for (DemandeUIModel demandeUIModel : models) { + String prefix = demandeUIModel.getObject() + " - "; + if (StringUtils.isNotBlank(demandeUIModel.getCompanyReference())) { + prefix = demandeUIModel.getCompanyReference() + " - " + prefix; + } for (Attachment attachment : demandeUIModel.getAttachment()) { - AttachmentFile originalFile = attachment.getOriginalFile(); - model.addAvailableAttachment(originalFile); - AttachmentFile file = attachment.getEditedFile(); - if (file != null) { - model.addAvailableAttachment(file); + + ReplyAttachmentModel replyOriginalAttachmentModel = + new ReplyAttachmentModel(attachment, true, prefix + attachment.getOriginalFileName()); + model.addAvailableAttachment(replyOriginalAttachmentModel); + + if (!Strings.isNullOrEmpty(attachment.getEditedFileName())) { + ReplyAttachmentModel replyEditedAttachmentModel = + new ReplyAttachmentModel(attachment, false, prefix + attachment.getEditedFileName()); + model.addAvailableAttachment(replyEditedAttachmentModel); } } } @@ -153,7 +164,7 @@ model.addPropertyChangeListener(ReplyFormUIModel.PROPERTY_ATTACHMENT, new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { - updateAttachmentPanel((Collection<AttachmentFile>) evt.getNewValue()); + updateAttachmentPanel((Collection<ReplyAttachmentModel>) evt.getNewValue()); } }); @@ -165,7 +176,6 @@ }); JComboBox addAttachmentFile = ui.getAddAttachmentFile(); - addAttachmentFile.setRenderer(new DecoratorListCellRenderer(getDecorator(AttachmentFile.class, null))); addAttachmentFile.setEditor(new FileComboBoxEditor()); getValidator().addPropertyChangeListener(SimpleBeanValidator.VALID_PROPERTY, new PropertyChangeListener() { @@ -202,7 +212,7 @@ return getUI().getMessage(); } - public void removeAttachment(AttachmentFile attachment) { + public void removeAttachment(ReplyAttachmentModel attachment) { ReplyFormUIModel model = getModel(); model.removeAttachment(attachment); @@ -212,43 +222,67 @@ } public void addAttachment() { + ReplyFormUIModel model = getModel(); + JComboBox addAttachmentFile = ui.getAddAttachmentFile(); - AttachmentFile attachmentFile = null; + ReplyAttachmentModel replyAttachmentModel = null; Object selectedItem = addAttachmentFile.getSelectedItem(); - if (AttachmentFile.class.isAssignableFrom(selectedItem.getClass())) { - attachmentFile = (AttachmentFile) selectedItem; + if (ReplyAttachmentModel.class.isAssignableFrom(selectedItem.getClass())) { + replyAttachmentModel = (ReplyAttachmentModel) selectedItem; + + Attachment attachment = replyAttachmentModel.getAttachment(); + if (replyAttachmentModel.getAttachmentFile() == null && attachment.isPersisted()) { + // TODO action ? + EmailService service = getContext().getEmailService(); + boolean original = replyAttachmentModel.isOriginal(); + AttachmentFile file = service.getAttachmentFile(attachment.getTopiaId(), + original); + if (original) { + attachment.setOriginalFile(file); + } else { + attachment.setEditedFile(file); + } + } + } else if (File.class.isAssignableFrom(selectedItem.getClass())) { File file = (File) selectedItem; - attachmentFile = new AttachmentFileImpl(); - attachmentFile.setFilename(file.getName()); + + AttachmentFile attachmentFile = new AttachmentFileImpl(); + String fileName = file.getName(); + attachmentFile.setFilename(fileName); + try { attachmentFile.setContent(FileUtils.readFileToByteArray(file)); } catch (IOException e) { if (log.isErrorEnabled()) { - log.error("Error while converting the file " + file.getName() + " into a byte[]", e); + log.error("Error while converting the file " + fileName + " into a byte[]", e); } } + + Attachment attachment = new AttachmentImpl(); + attachment.setOriginalFile(attachmentFile); + replyAttachmentModel = new ReplyAttachmentModel(attachment, true, fileName); + } - if (attachmentFile != null) { - ReplyFormUIModel model = getModel(); - model.addAttachment(attachmentFile); + if (replyAttachmentModel != null) { + model.addAttachment(replyAttachmentModel); - model.removeAvailableAttachment(attachmentFile); - ui.getAddAttachmentFile().removeItem(attachmentFile); + model.removeAvailableAttachment(replyAttachmentModel); + ui.getAddAttachmentFile().removeItem(replyAttachmentModel); addAttachmentFile.setSelectedItem(null); } } - protected void updateAttachmentPanel(Collection<AttachmentFile> attachments) { + protected void updateAttachmentPanel(Collection<ReplyAttachmentModel> attachments) { JPanel attachmentsPanel = ui.getAttachmentsPanel(); attachmentsPanel.removeAll(); - for (AttachmentFile attachment : attachments) { + for (ReplyAttachmentModel attachment : attachments) { AttachmentItem item = new AttachmentItem(); item.setHandler(this); - item.setAttachmentFile(attachment); + item.setReplyAttachmentModel(attachment); attachmentsPanel.add(item); } attachmentsPanel.updateUI(); @@ -278,15 +312,15 @@ } } - public void openAttachment(AttachmentFile attachment) { + public void openAttachment(ReplyAttachmentModel attachment) { - FaxToMailUIUtil.openFile(getContext(), attachment); + FaxToMailUIUtil.openFile(getContext(), attachment.getAttachmentFile()); } protected class FileComboBoxEditor implements ComboBoxEditor { - protected AttachmentFile oldValue; + protected ReplyAttachmentModel oldValue; protected JTextField editorComponent = new JTextField(); @@ -298,21 +332,25 @@ @Override public void setItem(Object anObject) { String text; - AttachmentFile attachmentFile = null; + ReplyAttachmentModel replyAttachmentModel = null; if (anObject != null) { - if (AttachmentFile.class.isAssignableFrom(anObject.getClass())) { - attachmentFile = (AttachmentFile) anObject; + if (ReplyAttachmentModel.class.isAssignableFrom(anObject.getClass())) { + replyAttachmentModel = (ReplyAttachmentModel) anObject; } else if (File.class.isAssignableFrom(anObject.getClass())) { File file = (File) anObject; - attachmentFile = new AttachmentFileImpl(); - attachmentFile.setFilename(file.getName()); + + AttachmentFile attachmentFile = new AttachmentFileImpl(); + String fileName = file.getName(); + attachmentFile.setFilename(fileName); + + replyAttachmentModel = new ReplyAttachmentModel(new AttachmentImpl(), true, fileName); } } - if (attachmentFile != null) { - text = decorate(attachmentFile); - oldValue = attachmentFile; + if (replyAttachmentModel != null) { + text = replyAttachmentModel.getLabel(); + oldValue = replyAttachmentModel; } else { text = ""; @@ -329,7 +367,7 @@ if (oldValue != null) { // The original value is not a string. Should return the value in it's // original type. - if (newValue.equals(decorate(oldValue))) { + if (newValue.equals(oldValue.getLabel())) { return oldValue; } else { Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel.java 2014-07-02 23:38:38 UTC (rev 330) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel.java 2014-07-03 06:59:26 UTC (rev 331) @@ -24,7 +24,6 @@ * #L% */ -import com.franciaflex.faxtomail.persistence.entities.AttachmentFile; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; import com.google.common.base.Preconditions; @@ -69,8 +68,8 @@ protected boolean readonly = false; protected List<String> senderAllowedDomains; - protected Set<AttachmentFile> attachments = new HashSet<AttachmentFile>(); - protected Set<AttachmentFile> availableAttachments = new HashSet<AttachmentFile>(); + protected Set<ReplyAttachmentModel> attachments = new HashSet<ReplyAttachmentModel>(); + protected Set<ReplyAttachmentModel> availableAttachments = new HashSet<ReplyAttachmentModel>(); protected File lastVisitedDirectory = FileUtils.getUserDirectory(); @@ -124,33 +123,33 @@ firePropertyChange(PROPERTY_ORIGINAL_DEMAND, oldValue, originalDemand); } - public Set<AttachmentFile> getAttachments() { + public Set<ReplyAttachmentModel> getAttachments() { return attachments; } - public void addAttachment(AttachmentFile attachment) { + public void addAttachment(ReplyAttachmentModel attachment) { attachments.add(attachment); firePropertyChange(PROPERTY_ATTACHMENT, null, getAttachments()); setTotalAttachmentLength(totalAttachmentLength + attachment.getLength()); } - public void removeAttachment(AttachmentFile attachment) { + public void removeAttachment(ReplyAttachmentModel attachment) { attachments.remove(attachment); firePropertyChange(PROPERTY_ATTACHMENT, null, getAttachments()); setTotalAttachmentLength(totalAttachmentLength - attachment.getLength()); } - public Set<AttachmentFile> getAvailableAttachments() { + public Set<ReplyAttachmentModel> getAvailableAttachments() { return availableAttachments; } - public void addAvailableAttachment(AttachmentFile attachment) { + public void addAvailableAttachment(ReplyAttachmentModel attachment) { availableAttachments.add(attachment); } - public void removeAvailableAttachment(AttachmentFile attachment) { + public void removeAvailableAttachment(ReplyAttachmentModel attachment) { availableAttachments.remove(attachment); } @@ -205,13 +204,7 @@ // Do not remove the unused parameter, it is just for the validation // to bind the totalAttachmentLength property public boolean isAttachmentSizeValid(long totalAttachmentLength) { - if (log.isDebugEnabled()) { - log.debug(this.totalAttachmentLength + ", " + maxAttachmentLength + ", " + (this.totalAttachmentLength < maxAttachmentLength)); - } boolean valid = maxAttachmentLength == 0 || this.totalAttachmentLength < maxAttachmentLength; - if (log.isDebugEnabled()) { - log.debug(valid); - } return valid; } @@ -228,11 +221,11 @@ public boolean isDomainAllowed(String from) { Preconditions.checkNotNull(from); for (String domain : getSenderAllowedDomains()) { - log.info(domain + " " + from); if (from.endsWith(domain)) { return true; } } return getSenderAllowedDomains().isEmpty(); } + } 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-07-02 23:38:38 UTC (rev 330) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java 2014-07-03 06:59:26 UTC (rev 331) @@ -64,6 +64,7 @@ import javax.swing.tree.TreeModel; import javax.swing.tree.TreePath; +import com.google.common.base.Strings; import jaxx.runtime.JAXXObject; import jaxx.runtime.JAXXUtil; @@ -532,4 +533,5 @@ t("jaxx.application.error.cannot.mail"), e); } } + }
participants (1)
-
kmorin@users.forge.codelutin.com