Author: kmorin Date: 2015-01-06 16:50:05 +0000 (Tue, 06 Jan 2015) New Revision: 737 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/737 Log: refs #6315 fuites m?\195?\169moires fixes #6391 Probl?\195?\168me d'encoding dans la visualisation des r?\195?\169ponses corrige l'ouverture de certains pdf Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentListener.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandsListener.java Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentCellEditor.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUIModel.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/ButtonAttachment.java 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/DemandesUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIModel.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/ButtonEmailGroup.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/ButtonHistory.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/ButtonDemandReplies.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/pdfeditor/PDFEditorUIHandler.java 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 Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentCellEditor.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentCellEditor.java 2014-12-24 14:36:54 UTC (rev 736) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentCellEditor.java 2015-01-06 16:50:05 UTC (rev 737) @@ -30,7 +30,6 @@ import com.franciaflex.faxtomail.services.FaxToMailServiceContext; import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; -import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailBeanUIModel; import com.franciaflex.faxtomail.ui.swing.util.DemandeTableModel; import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI; import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil; @@ -69,7 +68,7 @@ protected FaxToMailUIContext context; - protected AttachmentEditorUIModel.AttachmentListener listener; + protected AttachmentListener listener; public AttachmentCellEditor(FaxToMailUIContext context) { this.context = context; @@ -103,7 +102,7 @@ editorButton.init(model); - listener = new AttachmentEditorUIModel.AttachmentListener() { + listener = new AttachmentListener() { @Override public void onAttachmentOpened(Attachment attachment, boolean original) { String topiaId = model.getTopiaId(); Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUIHandler.java 2014-12-24 14:36:54 UTC (rev 736) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUIHandler.java 2015-01-06 16:50:05 UTC (rev 737) @@ -30,26 +30,13 @@ import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupHandler; import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil; import com.google.common.collect.Iterables; - import jaxx.runtime.SwingUtil; import jaxx.runtime.validator.swing.SwingValidator; - import org.apache.commons.collections4.CollectionUtils; import org.jdesktop.swingx.JXTable; import org.jdesktop.swingx.decorator.HighlighterFactory; -import java.awt.Component; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; - -import javax.swing.AbstractCellEditor; -import javax.swing.Icon; -import javax.swing.JComponent; -import javax.swing.JLabel; -import javax.swing.JOptionPane; -import javax.swing.JTable; +import javax.swing.*; import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; import javax.swing.table.AbstractTableModel; @@ -59,6 +46,11 @@ import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; import javax.swing.table.TableModel; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import static org.nuiton.i18n.I18n.t; @@ -67,8 +59,6 @@ */ public class AttachmentEditorUIHandler extends AbstractToolbarPopupHandler<AttachmentEditorUIModel, AttachmentEditorUI> { - protected OpenAttachmentAction openAttachmentAction = new OpenAttachmentAction(this); - @Override public void afterInit(AttachmentEditorUI ui) { @@ -143,6 +133,7 @@ } public void openAttachment(Attachment attachment) { + OpenAttachmentAction openAttachmentAction = new OpenAttachmentAction(this); openAttachmentAction.setAttachment(attachment, true); // run Internal to prevent multiple successive execution (#5668) @@ -150,6 +141,7 @@ } public void editAttachment(Attachment attachment) { + OpenAttachmentAction openAttachmentAction = new OpenAttachmentAction(this); AttachmentEditorUIModel model = getModel(); if (model.isEditable() && FaxToMailUIUtil.isFileTypeEditable(attachment.getOriginalFileName())) { Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUIModel.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUIModel.java 2014-12-24 14:36:54 UTC (rev 736) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUIModel.java 2015-01-06 16:50:05 UTC (rev 737) @@ -125,11 +125,4 @@ } } - public static interface AttachmentListener { - - public void onAttachmentOpened(Attachment attachment, boolean original); - - public void onAttachmentEdited(Attachment attachment); - - } } Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentListener.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentListener.java (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentListener.java 2015-01-06 16:50:05 UTC (rev 737) @@ -0,0 +1,39 @@ +package com.franciaflex.faxtomail.ui.swing.content.attachment; + +/* + * #%L + * FaxToMail :: UI + * $Id:$ + * $HeadURL:$ + * %% + * Copyright (C) 2014 - 2015 Mac-Groupe, Code Lutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import com.franciaflex.faxtomail.persistence.entities.Attachment; + +/** +* @author Kevin Morin (Code Lutin) +* @since x.x +*/ +public interface AttachmentListener { + + public void onAttachmentOpened(Attachment attachment, boolean original); + + public void onAttachmentEdited(Attachment attachment); + +} Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/ButtonAttachment.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/ButtonAttachment.java 2014-12-24 14:36:54 UTC (rev 736) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/ButtonAttachment.java 2015-01-06 16:50:05 UTC (rev 737) @@ -27,16 +27,16 @@ import com.franciaflex.faxtomail.persistence.entities.Attachment; import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupButton; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.ListUtils; -import org.apache.commons.collections4.CollectionUtils; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.Collection; import java.util.List; +import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; -import static org.nuiton.i18n.I18n.n; /** * Button to edit attachments. @@ -49,7 +49,7 @@ protected String textKey; - private PropertyChangeListener listener = new PropertyChangeListener() { + private final PropertyChangeListener listener = new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { List<Attachment> attachments = (List<Attachment>) evt.getNewValue(); @@ -109,4 +109,9 @@ popup.getModel().setEditable(editable); } + @Override + public void onCloseUI() { + super.onCloseUI(); + popup.getModel().removePropertyChangeListener(AttachmentModelAware.PROPERTY_ATTACHMENT, listener); + } } 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-12-24 14:36:54 UTC (rev 736) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java 2015-01-06 16:50:05 UTC (rev 737) @@ -22,38 +22,24 @@ * #L% */ -import static org.nuiton.i18n.I18n.t; - -import java.awt.Color; -import java.awt.Component; -import java.awt.event.KeyAdapter; -import java.awt.event.KeyEvent; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; - -import javax.swing.JComponent; -import javax.swing.JSplitPane; -import javax.swing.JTextPane; -import javax.swing.ListSelectionModel; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; -import javax.swing.table.TableCellEditor; - +import com.franciaflex.faxtomail.persistence.entities.Attachment; +import com.franciaflex.faxtomail.persistence.entities.DemandStatus; +import com.franciaflex.faxtomail.persistence.entities.DemandType; +import com.franciaflex.faxtomail.persistence.entities.Email; 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.persistence.entities.WaitingState; +import com.franciaflex.faxtomail.services.FaxToMailServiceContext; +import com.franciaflex.faxtomail.ui.swing.actions.SaveDemandeAction; +import com.franciaflex.faxtomail.ui.swing.content.attachment.AttachmentListener; +import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; +import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil; import com.google.common.collect.Sets; import jaxx.runtime.validator.swing.SwingValidator; - import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.logging.Log; @@ -73,23 +59,27 @@ import org.nuiton.jaxx.application.swing.util.CloseableUI; import org.nuiton.util.beans.BeanMonitor; -import com.franciaflex.faxtomail.persistence.entities.Attachment; -import com.franciaflex.faxtomail.persistence.entities.DemandStatus; -import com.franciaflex.faxtomail.persistence.entities.DemandType; -import com.franciaflex.faxtomail.persistence.entities.Email; -import com.franciaflex.faxtomail.persistence.entities.HistoryType; -import com.franciaflex.faxtomail.persistence.entities.MailField; -import com.franciaflex.faxtomail.persistence.entities.MailFolder; -import com.franciaflex.faxtomail.persistence.entities.Range; -import com.franciaflex.faxtomail.persistence.entities.RangeRow; -import com.franciaflex.faxtomail.persistence.entities.WaitingState; -import com.franciaflex.faxtomail.services.FaxToMailServiceContext; -import com.franciaflex.faxtomail.services.FaxToMailServiceUtils; -import com.franciaflex.faxtomail.ui.swing.actions.SaveDemandeAction; -import com.franciaflex.faxtomail.ui.swing.content.attachment.AttachmentEditorUIModel; -import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; -import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil; +import javax.swing.*; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; +import javax.swing.table.TableCellEditor; +import java.awt.*; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Set; +import static org.nuiton.i18n.I18n.t; + /** * Handler of UI {@link DemandeUIHandler}. * @@ -384,7 +374,7 @@ registerValidators(validator); ui.getAttachmentsButton().getBean().addAttachmentListener( - new AttachmentEditorUIModel.AttachmentListener() { + new AttachmentListener() { @Override public void onAttachmentOpened(Attachment attachment, boolean original) { @@ -475,6 +465,10 @@ row.removePropertyChangeListener(rangeRowListener); } + ui.getAttachmentsButton().onCloseUI(); + ui.getHistoryButton().onCloseUI(); + ui.getDemandRepliesButton().onCloseUI(); + clearValidators(); } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java 2014-12-24 14:36:54 UTC (rev 736) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java 2015-01-06 16:50:05 UTC (rev 737) @@ -24,39 +24,30 @@ * #L% */ -import java.awt.*; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; - -import javax.swing.*; - -import com.franciaflex.faxtomail.ui.swing.actions.GoToPreviousScreenAction; +import com.franciaflex.faxtomail.persistence.entities.Configuration; +import com.franciaflex.faxtomail.persistence.entities.Email; +import com.franciaflex.faxtomail.persistence.entities.MailAction; +import com.franciaflex.faxtomail.ui.swing.actions.ArchiveAction; import com.franciaflex.faxtomail.ui.swing.actions.SaveAndOpenChooseAttachmentToPrintAction; import com.franciaflex.faxtomail.ui.swing.actions.SaveAndOpenMailFolderChooserAction; import com.franciaflex.faxtomail.ui.swing.actions.SaveAndOpenReplyFormAction; import com.franciaflex.faxtomail.ui.swing.actions.SaveAndOpenSearchToGroupAction; -import com.franciaflex.faxtomail.ui.swing.actions.SaveDemandeAction; -import com.franciaflex.faxtomail.ui.swing.content.pdfeditor.PDFEditorUI; +import com.franciaflex.faxtomail.ui.swing.actions.SaveDemandeAndExitAction; +import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; import jaxx.runtime.validator.swing.SwingValidator; - -import org.apache.commons.logging.LogFactory; import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler; import org.nuiton.jaxx.application.swing.ApplicationUI; import org.nuiton.jaxx.application.swing.action.AbstractApplicationAction; import org.nuiton.jaxx.application.swing.tab.CustomTab; -import org.nuiton.jaxx.application.swing.tab.DelegateTabContainerHandler; import org.nuiton.jaxx.application.swing.tab.TabContainerHandler; import org.nuiton.jaxx.application.swing.tab.TabContentModel; import org.nuiton.jaxx.application.swing.tab.TabHandler; -import org.nuiton.jaxx.application.swing.util.Cancelable; import org.nuiton.jaxx.application.swing.util.CloseableUI; -import com.franciaflex.faxtomail.persistence.entities.Configuration; -import com.franciaflex.faxtomail.persistence.entities.Email; -import com.franciaflex.faxtomail.persistence.entities.MailAction; -import com.franciaflex.faxtomail.ui.swing.actions.ArchiveAction; -import com.franciaflex.faxtomail.ui.swing.actions.SaveDemandeAndExitAction; -import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; +import javax.swing.*; +import java.awt.*; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; /** * @author Kevin Morin (Code Lutin) @@ -139,7 +130,7 @@ } }; - model.addDemandsListener(new DemandesUIModel.DemandsListener() { + model.addDemandsListener(new DemandsListener() { @Override public void onDemandAdded(DemandeUIModel demand, int index, boolean added) { @@ -214,6 +205,9 @@ tabHandler.getModel().removePropertyChangeListener(demandEnabledAndValidListener); tabHandler.onCloseUI(); } + + ui.getDemandGroupButton().onCloseUI(); + } @Override Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIModel.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIModel.java 2014-12-24 14:36:54 UTC (rev 736) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIModel.java 2015-01-06 16:50:05 UTC (rev 737) @@ -50,7 +50,7 @@ protected List<DemandeUIModel> demands = new ArrayList<DemandeUIModel>(); - protected List<DemandsListener> listeners = new ArrayList<DemandsListener>(); + protected List<com.franciaflex.faxtomail.ui.swing.content.demande.DemandsListener> listeners = new ArrayList<com.franciaflex.faxtomail.ui.swing.content.demande.DemandsListener>(); protected int currentIndex = -1; @@ -127,11 +127,11 @@ return demands.contains(demand); } - public void addDemandsListener(DemandsListener listener) { + public void addDemandsListener(com.franciaflex.faxtomail.ui.swing.content.demande.DemandsListener listener) { listeners.add(listener); } - public void removeDemandsListener(DemandsListener listener) { + public void removeDemandsListener(com.franciaflex.faxtomail.ui.swing.content.demande.DemandsListener listener) { listeners.remove(listener); } @@ -147,14 +147,6 @@ } } - public static interface DemandsListener { - - void onDemandAdded(DemandeUIModel demand, int index, boolean added); - - void onDemandRemoved(DemandeUIModel demand, int index); - - } - public DemandeUIModel getCurrentDemand() { int currentIndex = getCurrentIndex(); if (currentIndex < 0 || currentIndex >= demands.size()) { Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandsListener.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandsListener.java (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandsListener.java 2015-01-06 16:50:05 UTC (rev 737) @@ -0,0 +1,37 @@ +package com.franciaflex.faxtomail.ui.swing.content.demande; + +/* + * #%L + * FaxToMail :: UI + * $Id:$ + * $HeadURL:$ + * %% + * Copyright (C) 2014 - 2015 Mac-Groupe, Code Lutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +/** + * @author Kevin Morin (Code Lutin) + * @since x.x + */ +public interface DemandsListener { + + void onDemandAdded(DemandeUIModel demand, int index, boolean added); + + void onDemandRemoved(DemandeUIModel demand, int index); + +} Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/ButtonEmailGroup.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/ButtonEmailGroup.java 2014-12-24 14:36:54 UTC (rev 736) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/ButtonEmailGroup.java 2015-01-06 16:50:05 UTC (rev 737) @@ -41,21 +41,22 @@ */ public class ButtonEmailGroup extends AbstractToolbarPopupButton<DemandGroupUI> { + private final PropertyChangeListener listener = new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + Collection<DemandeUIModel> demands = (Collection<DemandeUIModel>) evt.getNewValue(); + if (demands != null) { + int size = demands.size(); + setText(t("faxtomail.demandGroup.text", size)); + } + } + }; + public ButtonEmailGroup() { setToolTipText(t("faxtomail.demandGroup.action.tip")); int demandNb = popup.getModel().sizeGroupedDemandes(); setText(t("faxtomail.demandGroup.text", demandNb)); - - popup.getModel().addPropertyChangeListener(DemandeUIModel.PROPERTY_GROUPED_DEMANDES, new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - Collection<DemandeUIModel> demands = (Collection<DemandeUIModel>) evt.getNewValue(); - if (demands != null) { - int size = demands.size(); - setText(t("faxtomail.demandGroup.text", size)); - } - } - }); + popup.getModel().addPropertyChangeListener(DemandeUIModel.PROPERTY_GROUPED_DEMANDES, listener); } @Override @@ -68,4 +69,10 @@ return new DemandGroupUI(FaxToMailUIContext.getApplicationContext()); } + @Override + public void onCloseUI() { + super.onCloseUI(); + popup.getModel().removePropertyChangeListener(DemandeUIModel.PROPERTY_GROUPED_DEMANDES, listener); + } + } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/ButtonHistory.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/ButtonHistory.java 2014-12-24 14:36:54 UTC (rev 736) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/ButtonHistory.java 2015-01-06 16:50:05 UTC (rev 737) @@ -83,4 +83,11 @@ return new HistoryListUI(FaxToMailUIContext.getApplicationContext()); } + @Override + public void onCloseUI() { + super.onCloseUI(); + if (popup.getModel() != null) { + popup.getModel().removePropertyChangeListener(Email.PROPERTY_HISTORY, listener); + } + } } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/ButtonDemandReplies.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/ButtonDemandReplies.java 2014-12-24 14:36:54 UTC (rev 736) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/ButtonDemandReplies.java 2015-01-06 16:50:05 UTC (rev 737) @@ -35,8 +35,8 @@ import java.beans.PropertyChangeListener; import java.util.Collection; +import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; -import static org.nuiton.i18n.I18n.n; /** * Button to edit replies. @@ -99,4 +99,12 @@ public void setEditable(boolean editable) { popup.setEditable(editable); } + + @Override + public void onCloseUI() { + super.onCloseUI(); + if (popup.getModel() != null) { + popup.getModel().removePropertyChangeListener(Email.PROPERTY_REPLIES, listener); + } + } } 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-12-24 14:36:54 UTC (rev 736) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUIHandler.java 2015-01-06 16:50:05 UTC (rev 737) @@ -24,27 +24,41 @@ * #L% */ -import static org.nuiton.i18n.I18n.t; +import com.franciaflex.faxtomail.persistence.entities.Attachment; +import com.franciaflex.faxtomail.persistence.entities.AttachmentFile; +import com.franciaflex.faxtomail.persistence.entities.AttachmentFileImpl; +import com.franciaflex.faxtomail.persistence.entities.AttachmentImpl; +import com.franciaflex.faxtomail.persistence.entities.Email; +import com.franciaflex.faxtomail.persistence.entities.Reply; +import com.franciaflex.faxtomail.persistence.entities.ReplyContent; +import com.franciaflex.faxtomail.services.FaxToMailServiceUtils; +import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; +import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyAttachmentModel; +import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUI; +import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUIModel; +import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupHandler; +import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil; +import com.google.common.collect.Iterables; +import jaxx.runtime.JAXXUtil; +import jaxx.runtime.validator.swing.SwingValidator; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.commons.mail.util.MimeMessageUtils; +import org.jdesktop.swingx.JXTable; +import org.jdesktop.swingx.decorator.HighlighterFactory; -import java.awt.Component; -import java.awt.Dimension; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; - import javax.activation.DataHandler; import javax.activation.DataSource; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.Part; -import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMessage.RecipientType; import javax.mail.internet.MimeMultipart; import javax.mail.internet.MimeUtility; -import javax.swing.AbstractCellEditor; -import javax.swing.JComponent; -import javax.swing.JTable; +import javax.swing.*; import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; import javax.swing.table.AbstractTableModel; @@ -54,34 +68,14 @@ import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; import javax.swing.table.TableModel; +import java.awt.*; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.io.ByteArrayOutputStream; +import java.nio.charset.Charset; -import com.franciaflex.faxtomail.persistence.entities.Attachment; -import com.franciaflex.faxtomail.persistence.entities.AttachmentImpl; -import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyAttachmentModel; +import static org.nuiton.i18n.I18n.t; -import jaxx.runtime.JAXXUtil; -import jaxx.runtime.validator.swing.SwingValidator; - -import org.apache.commons.io.IOUtils; -import org.apache.commons.lang3.ArrayUtils; -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.decorator.HighlighterFactory; - -import com.franciaflex.faxtomail.persistence.entities.AttachmentFile; -import com.franciaflex.faxtomail.persistence.entities.AttachmentFileImpl; -import com.franciaflex.faxtomail.persistence.entities.Email; -import com.franciaflex.faxtomail.persistence.entities.Reply; -import com.franciaflex.faxtomail.persistence.entities.ReplyContent; -import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; -import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUI; -import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUIModel; -import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupHandler; -import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil; -import com.google.common.collect.Iterables; - /** * @author Kevin Morin (Code Lutin) * @@ -198,11 +192,10 @@ ReplyFormUI dialogContent = new ReplyFormUI(ui); // TODO echatellier 20140804 : c'est très technique et très bas niveau, ca devrait se trouver dans les services ReplyContent replyContent = reply.getReplyContent(); - Message message = new MimeMessage(null, new ByteArrayInputStream(replyContent.getSource())); + Message message = MimeMessageUtils.createMimeMessage(null, replyContent.getSource()); ReplyFormUIModel replyModel = dialogContent.getModel(); replyModel.setEditable(editable); replyModel.setReadonly(true); - replyModel.setOriginalDemand(ui.getModel()); replyModel.setReadSentDate(reply.getSentDate()); replyModel.setSubject(message.getSubject()); replyModel.setTo(StringUtils.join(message.getRecipients(RecipientType.TO), " ; ")); @@ -218,11 +211,13 @@ decomposeMultipartEmail(message, replyModel, reply.getTopiaId()); } else { - String content = IOUtils.toString(message.getInputStream()); + Charset charset = FaxToMailServiceUtils.getCharset(message); + String content = IOUtils.toString(message.getInputStream(), charset); replyModel.setMessage(content); } + log.info(replyModel.getMessage()); - openFrame(dialogContent, t("faxtomail.reply.title", getModel().getSubject()), new Dimension(800, 600)); + openFrame(dialogContent, replyModel.getSubject(), new Dimension(800, 600)); } catch (Exception e) { getContext().getErrorHelper().showErrorDialog(t("faxtomail.demandReplies.error"), e); @@ -241,7 +236,7 @@ ReplyFormUI dialogContent = new ReplyFormUI(ui); // TODO echatellier 20140804 : c'est très technique et très bas niveau, ca devrait se trouver dans les services ReplyContent replyContent = reply.getReplyContent(); - Message message = new MimeMessage(null, new ByteArrayInputStream(replyContent.getSource())); + Message message = MimeMessageUtils.createMimeMessage(null, replyContent.getSource()); ReplyFormUIModel replyModel = dialogContent.getModel(); replyModel.setEditable(editable); replyModel.setOriginalDemand(ui.getModel()); @@ -252,7 +247,8 @@ decomposeMultipartEmail(message, replyModel, reply.getTopiaId()); } else { - String content = IOUtils.toString(message.getInputStream()); + Charset charset = FaxToMailServiceUtils.getCharset(message); + String content = IOUtils.toString(message.getInputStream(), charset); replyModel.setMessage(content); } @@ -290,7 +286,8 @@ // if it is a text part, the,n this is the email content String disposition = bp.getDisposition(); if (bp.isMimeType("text/*") && !Part.ATTACHMENT.equals(disposition)) { - String content = IOUtils.toString(bp.getInputStream()); + Charset charset = FaxToMailServiceUtils.getCharset(bp); + String content = IOUtils.toString(bp.getInputStream(), charset); reply.setMessage(content); // if it is multipart part, decompose it Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIHandler.java 2014-12-24 14:36:54 UTC (rev 736) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIHandler.java 2015-01-06 16:50:05 UTC (rev 737) @@ -24,8 +24,30 @@ * #L% */ -import static org.nuiton.i18n.I18n.t; +import com.franciaflex.faxtomail.persistence.entities.Attachment; +import com.franciaflex.faxtomail.persistence.entities.AttachmentFile; +import com.franciaflex.faxtomail.persistence.entities.Email; +import com.franciaflex.faxtomail.persistence.entities.HistoryType; +import com.franciaflex.faxtomail.services.FaxToMailServiceContext; +import com.franciaflex.faxtomail.ui.swing.actions.GenerateAnnotatedAttachmentAction; +import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; +import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; +import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil; +import com.franciaflex.faxtomail.ui.swing.util.JImagePanel; +import com.itextpdf.text.DocumentException; +import jaxx.runtime.swing.ComponentMover; +import jaxx.runtime.swing.ComponentResizer; +import jaxx.runtime.swing.JAXXButtonGroup; +import jaxx.runtime.validator.swing.SwingValidator; +import org.apache.commons.io.IOUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.rendering.PDFRenderer; +import org.nuiton.jaxx.application.swing.util.Cancelable; +import org.nuiton.jaxx.application.swing.util.CloseableUI; +import javax.swing.*; import java.awt.*; import java.awt.event.ContainerEvent; import java.awt.event.ContainerListener; @@ -35,43 +57,12 @@ import java.beans.PropertyChangeListener; import java.io.File; import java.io.FileInputStream; -import java.io.FileOutputStream; import java.io.IOException; import java.util.Date; import java.util.List; -import javax.swing.JComponent; -import javax.swing.JPanel; +import static org.nuiton.i18n.I18n.t; -import com.itextpdf.text.pdf.PdfReader; -import com.itextpdf.text.pdf.PdfStamper; -import com.itextpdf.text.pdf.PdfWriter; -import jaxx.runtime.swing.ComponentMover; -import jaxx.runtime.swing.ComponentResizer; -import jaxx.runtime.swing.JAXXButtonGroup; -import jaxx.runtime.validator.swing.SwingValidator; - -import org.apache.commons.io.IOUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.pdfbox.pdmodel.PDDocument; -import org.apache.pdfbox.rendering.ImageType; -import org.apache.pdfbox.rendering.PDFRenderer; -import org.nuiton.jaxx.application.swing.util.Cancelable; -import org.nuiton.jaxx.application.swing.util.CloseableUI; - -import com.franciaflex.faxtomail.persistence.entities.Attachment; -import com.franciaflex.faxtomail.persistence.entities.AttachmentFile; -import com.franciaflex.faxtomail.persistence.entities.Email; -import com.franciaflex.faxtomail.persistence.entities.HistoryType; -import com.franciaflex.faxtomail.services.FaxToMailServiceContext; -import com.franciaflex.faxtomail.ui.swing.actions.GenerateAnnotatedAttachmentAction; -import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; -import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; -import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil; -import com.franciaflex.faxtomail.ui.swing.util.JImagePanel; -import com.itextpdf.text.DocumentException; - /** * @author Kevin Morin (Code Lutin) * @@ -83,8 +74,6 @@ protected ComponentMover cm = new ComponentMover(); protected ComponentResizer cr = new ComponentResizer(); -// protected PdfDecoder pdfDecoder; -// protected PDFFile pdf; protected PDDocument pdDocument; @Override @@ -188,7 +177,7 @@ if (FaxToMailUIUtil.isFileAPDF(attachmentFile)) { try { - pdDocument = PDDocument.load(file); + pdDocument = PDDocument.loadLegacy(file); model.setPageNumber(pdDocument.getNumberOfPages()); model.setCurrentPageIndex(1); Modified: 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/ReplyFormUI.jaxx 2014-12-24 14:36:54 UTC (rev 736) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.jaxx 2015-01-06 16:50:05 UTC (rev 737) @@ -147,7 +147,7 @@ orientation="{JSplitPane.VERTICAL_SPLIT}" constraints='BorderLayout.CENTER'> <JScrollPane> - <JEditorPane id="message" + <JTextPane id="message" onKeyReleased='handler.setText(event, "message")'/> </JScrollPane> 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-12-24 14:36:54 UTC (rev 736) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java 2015-01-06 16:50:05 UTC (rev 737) @@ -24,10 +24,30 @@ * #L% */ -import static org.nuiton.i18n.I18n.t; +import com.franciaflex.faxtomail.persistence.entities.Attachment; +import com.franciaflex.faxtomail.persistence.entities.AttachmentFile; +import com.franciaflex.faxtomail.persistence.entities.AttachmentFileImpl; +import com.franciaflex.faxtomail.persistence.entities.AttachmentImpl; +import com.franciaflex.faxtomail.persistence.entities.MailFolder; +import com.franciaflex.faxtomail.services.service.ldap.Contact; +import com.franciaflex.faxtomail.ui.swing.actions.AddAttachmentToReplyAction; +import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; +import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; +import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil; +import com.google.common.base.Strings; +import com.google.common.collect.Lists; +import jaxx.runtime.JAXXUtil; +import jaxx.runtime.SwingUtil; +import jaxx.runtime.validator.swing.SwingValidator; +import org.apache.commons.io.FileUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.jaxx.application.swing.util.Cancelable; +import org.nuiton.validator.bean.simple.SimpleBeanValidator; -import java.awt.Component; -import java.awt.Dimension; +import javax.swing.*; +import java.awt.*; import java.awt.event.ActionListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; @@ -39,32 +59,8 @@ import java.util.Collections; import java.util.List; -import javax.swing.*; +import static org.nuiton.i18n.I18n.t; -import com.franciaflex.faxtomail.services.service.ldap.Contact; -import jaxx.runtime.JAXXUtil; -import jaxx.runtime.SwingUtil; -import jaxx.runtime.validator.swing.SwingValidator; - -import org.apache.commons.io.FileUtils; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.jaxx.application.swing.util.Cancelable; -import org.nuiton.validator.bean.simple.SimpleBeanValidator; - -import com.franciaflex.faxtomail.persistence.entities.Attachment; -import com.franciaflex.faxtomail.persistence.entities.AttachmentFile; -import com.franciaflex.faxtomail.persistence.entities.AttachmentFileImpl; -import com.franciaflex.faxtomail.persistence.entities.AttachmentImpl; -import com.franciaflex.faxtomail.persistence.entities.MailFolder; -import com.franciaflex.faxtomail.ui.swing.actions.AddAttachmentToReplyAction; -import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; -import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; -import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil; -import com.google.common.base.Strings; -import com.google.common.collect.Lists; - /** * @author Kevin Morin (Code Lutin) * @@ -94,7 +90,7 @@ public void afterInit(ReplyFormUI replyFormUI) { initUI(ui); - JEditorPane editor = ui.getMessage(); + JTextPane editor = ui.getMessage(); editor.setCaretPosition(0); ReplyFormUIModel model = getModel();