Author: kmorin Date: 2014-06-09 19:14:06 +0200 (Mon, 09 Jun 2014) New Revision: 162 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/162 Log: champs obligatoires en fonction du type de document Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/print/AttachmentToPrintChooserUIModel.java 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/InitFaxToMailService.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/DemandeListUIHandler.java 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/pdfeditor/PDFEditorUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/print/AttachmentToPrintChooserUI.css trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/print/AttachmentToPrintChooserUI.jaxx trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/print/AttachmentToPrintChooserUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java trunk/faxtomail-ui-swing/src/main/resources/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel-error-validation.xml trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 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-06-09 17:07:41 UTC (rev 161) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-06-09 17:14:06 UTC (rev 162) @@ -46,6 +46,7 @@ import javax.activation.FileDataSource; import javax.mail.MessagingException; +import com.franciaflex.faxtomail.persistence.entities.MailField; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.Predicate; import org.apache.commons.io.IOUtils; @@ -217,7 +218,7 @@ && email.getClient() != null && email.getDemandType() != null && StringUtils.isNotBlank(email.getProjectReference()) - && (!email.getDemandType().isRangeNeeded() || CollectionUtils.isNotEmpty(email.getRangeRow()))) { + && (!email.getDemandType().containsFields(MailField.RANGE_ROW) || CollectionUtils.isNotEmpty(email.getRangeRow()))) { email.setDemandStatus(DemandStatus.TRANSMITTED_TO_EDI); transmissionToEdi = historyDao.create(History.PROPERTY_TYPE, HistoryType.TRANSMISSION_TO_EDI, 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-06-09 17:07:41 UTC (rev 161) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailService.java 2014-06-09 17:14:06 UTC (rev 162) @@ -38,6 +38,7 @@ import java.util.Map; import java.util.Random; +import com.franciaflex.faxtomail.persistence.entities.MailField; import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -407,7 +408,7 @@ getEmailService().addToHistory(email.getTopiaId(), HistoryType.OPENING, user, now); DemandType demandType = types.get(random.nextInt(types.size())); - if (demandType.getRangeNeeded()) { + if (demandType.containsFields(MailField.RANGE_ROW)) { for (int j = 0; j < random.nextInt(4) + 1; j++) { RangeRow rangeRow = rangeRowDao.create(RangeRow.PROPERTY_RANGE, ranges.get(random.nextInt(ranges.size())), RangeRow.PROPERTY_COMMAND_NUMBER, RandomStringUtils.randomNumeric(6), @@ -453,7 +454,7 @@ if (opened) { getEmailService().addToHistory(email.getTopiaId(), HistoryType.OPENING, user, now); DemandType demandType = types.get(random.nextInt(types.size())); - if (demandType.getRangeNeeded()) { + if (demandType.containsFields(MailField.RANGE_ROW)) { for (int j = 0; j < random.nextInt(4) + 1; j++) { RangeRow rangeRow = rangeRowDao.create(RangeRow.PROPERTY_RANGE, ranges.get(random.nextInt(ranges.size())), RangeRow.PROPERTY_COMMAND_NUMBER, RandomStringUtils.randomNumeric(6), 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-06-09 17:07:41 UTC (rev 161) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUI.css 2014-06-09 17:14:06 UTC (rev 162) @@ -116,6 +116,10 @@ focusPainted: false; } +#status { + showClock: false; + showMemoryStatus: false; +} /* #showHelp { actionIcon:"show-help"; 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-06-09 17:07:41 UTC (rev 161) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-06-09 17:14:06 UTC (rev 162) @@ -26,6 +26,8 @@ import com.ezware.oxbow.swingbits.table.filter.ITableFilter; import com.ezware.oxbow.swingbits.table.filter.JTableFilter; import com.ezware.oxbow.swingbits.table.filter.TableRowFilterSupport; +import com.franciaflex.faxtomail.persistence.entities.Attachment; +import com.franciaflex.faxtomail.persistence.entities.AttachmentFile; import com.franciaflex.faxtomail.persistence.entities.DemandStatus; import com.franciaflex.faxtomail.persistence.entities.Email; import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; @@ -418,8 +420,17 @@ } public void print() { - //TODO - log.debug("print"); + //TODO kmorin 20140606 print a result page and maybe a page to separate the demands + List<DemandeUIModel> currentEmails = getModel().getCurrentEmails(); + for (DemandeUIModel demandeUIModel : currentEmails) { + for (Attachment attachment : demandeUIModel.getAttachment()) { + AttachmentFile attachmentFile = attachment.getEditedFile(); + if (attachmentFile == null) { + attachmentFile = attachment.getOriginalFile(); + } + FaxToMailUIUtil.print(attachmentFile, true); + } + } } public void reply() { 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-06-09 17:07:41 UTC (rev 161) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx 2014-06-09 17:14:06 UTC (rev 162) @@ -72,6 +72,10 @@ <field name='demandType' component='docTypeComboBox'/> <field name='projectReference' component='projectReferenceField'/> <field name='validRangeRowModels' component='rangePanel'/> + <field name="priority" component="priorityComboBox"/> + <field name="etatAttente" component="etatAttenteComboBox"/> + <field name="companyReference" component="companyReferenceField"/> + <field name="comment" component="commentPane"/> </BeanValidator> <JToolBar id='topToolBar'> 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-06-09 17:07:41 UTC (rev 161) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java 2014-06-09 17:14:06 UTC (rev 162) @@ -28,6 +28,7 @@ import com.franciaflex.faxtomail.persistence.entities.Email; import com.franciaflex.faxtomail.persistence.entities.EtatAttente; 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; @@ -115,10 +116,11 @@ DemandType oldType = (DemandType) evt.getOldValue(); if (newType != null && (oldType == null - || !Objects.equals(oldType.getRangeNeeded(), newType.getRangeNeeded()))) { + || !Objects.equals(oldType.containsFields(MailField.RANGE_ROW), + newType.containsFields(MailField.RANGE_ROW)))) { JSplitPane leftVerticalSplitPanel = getUI().getLeftVerticalSplitPanel(); - if (Boolean.TRUE.equals(newType.getRangeNeeded())) { + if (Boolean.TRUE.equals(newType.containsFields(MailField.RANGE_ROW))) { if (dividerLocation < 0) { dividerLocation = leftVerticalSplitPanel.getLeftComponent().getPreferredSize().height + 10; } 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-06-09 17:07:41 UTC (rev 161) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-06-09 17:14:06 UTC (rev 162) @@ -34,6 +34,7 @@ import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; import com.franciaflex.faxtomail.persistence.entities.History; 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.Priority; import com.franciaflex.faxtomail.persistence.entities.RangeRow; @@ -44,6 +45,7 @@ import com.google.common.base.Predicate; import com.google.common.collect.Collections2; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.io.Charsets; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; @@ -410,7 +412,7 @@ public boolean isRangePanelVisible() { DemandType demandType = getDemandType(); - return demandType != null && demandType.isRangeNeeded(); + return demandType != null && demandType.containsFields(MailField.RANGE_ROW); } public DemandStatus getDemandStatus() { @@ -860,6 +862,45 @@ firePropertyChanged(PROPERTY_VALID_RANGE_ROW_MODELS, oldValue, validRangeRowModels); } + public boolean isValid(String field) { + boolean result = getDemandType() == null; + if (!result) { + if (PROPERTY_CLIENT_CODE.equals(field)) { + result = !getDemandType().containsFields(MailField.CLIENT) + || StringUtils.isNotBlank(getClientCode()); + + } else if (PROPERTY_VALID_RANGE_ROW_MODELS.equals(field)) { + result = !getDemandType().containsFields(MailField.RANGE_ROW) + || CollectionUtils.isNotEmpty(getValidRangeRowModels()); + + } else if (Email.PROPERTY_PROJECT_REFERENCE.equals(field)) { + result = !getDemandType().containsFields(MailField.PROJECT_REFERENCE) + || StringUtils.isNotBlank(getProjectReference()); + + } else if (Email.PROPERTY_OBJECT.equals(field)) { + result = !getDemandType().containsFields(MailField.OBJECT) + || StringUtils.isNotBlank(getObject()); + + } else if (Email.PROPERTY_COMMENT.equals(field)) { + result = !getDemandType().containsFields(MailField.COMMENT) + || StringUtils.isNotBlank(getComment()); + + } else if (Email.PROPERTY_COMPANY_REFERENCE.equals(field)) { + result = !getDemandType().containsFields(MailField.COMPANY_REFERENCE) + || StringUtils.isNotBlank(getCompanyReference()); + + } else if (Email.PROPERTY_PRIORITY.equals(field)) { + result = !getDemandType().containsFields(MailField.PRIORITY) + || getPriority() != null; + + } else if (Email.PROPERTY_ETAT_ATTENTE.equals(field)) { + result = !getDemandType().containsFields(MailField.ETAT_ATTENTE) + || getEtatAttente() != null; + } + } + return result; + } + @Override protected Email newEntity() { return new EmailImpl(); 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-06-09 17:07:41 UTC (rev 161) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIHandler.java 2014-06-09 17:14:06 UTC (rev 162) @@ -543,6 +543,6 @@ } public void print() { - FaxToMailUIUtil.print(getModel().getEditedFile()); + FaxToMailUIUtil.print(getModel().getEditedFile(), false); } } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/print/AttachmentToPrintChooserUI.css =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/print/AttachmentToPrintChooserUI.css 2014-06-09 17:07:41 UTC (rev 161) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/print/AttachmentToPrintChooserUI.css 2014-06-09 17:14:06 UTC (rev 162) @@ -36,6 +36,5 @@ actionIcon: validate; text: "faxtomail.chooseAttachmentToPrint.action.validate"; toolTipText: "faxtomail.chooseAttachmentToPrint.action.validate.tip"; - //_applicationAction: {com.franciaflex.faxtomail.ui.swing.actions.TransmitAction.class}; - enabled: { model.getMailFolder() != null }; + enabled: { !model.getAttachmentsToPrint().isEmpty() }; } \ No newline at end of file Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/print/AttachmentToPrintChooserUI.jaxx =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/print/AttachmentToPrintChooserUI.jaxx 2014-06-09 17:07:41 UTC (rev 161) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/print/AttachmentToPrintChooserUI.jaxx 2014-06-09 17:14:06 UTC (rev 162) @@ -22,7 +22,7 @@ #L% --> <JPanel id='attachmentToPrintChooser' layout='{new BorderLayout()}' - implements='com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI<com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel, AttachmentToPrintChooserUIHandler>'> + implements='com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI<AttachmentToPrintChooserUIModel, AttachmentToPrintChooserUIHandler>'> <import> com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel @@ -36,14 +36,16 @@ <script><![CDATA[ - public AttachmentToPrintChooserUI(FaxToMailUI parentUI, DemandeUIModel model) { + public AttachmentToPrintChooserUI(FaxToMailUI parentUI, DemandeUIModel demande) { FaxToMailUIUtil.setParentUI(this, parentUI); + AttachmentToPrintChooserUIModel model = new AttachmentToPrintChooserUIModel(); + model.setDemand(demande); setContextValue(model); } ]]></script> - <DemandeUIModel id='model' javaBean='getContextValue(DemandeUIModel.class)'/> + <AttachmentToPrintChooserUIModel id='model' javaBean='getContextValue(AttachmentToPrintChooserUIModel.class)'/> <JLabel id="message" constraints='BorderLayout.NORTH'/> @@ -54,7 +56,7 @@ <JPanel layout='{ new GridLayout(1, 0) }' constraints='BorderLayout.SOUTH'> <JButton id='cancelButton' onActionPerformed='handler.cancel()'/> - <JButton id='validateButton'/> + <JButton id='validateButton' onActionPerformed="handler.print()"/> </JPanel> </JPanel> \ No newline at end of file Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/print/AttachmentToPrintChooserUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/print/AttachmentToPrintChooserUIHandler.java 2014-06-09 17:07:41 UTC (rev 161) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/print/AttachmentToPrintChooserUIHandler.java 2014-06-09 17:14:06 UTC (rev 162) @@ -24,30 +24,31 @@ * #L% */ -import static org.nuiton.i18n.I18n.t; - -import java.sql.Blob; - -import javax.swing.JCheckBox; -import javax.swing.JComponent; -import javax.swing.JPanel; - -import jaxx.runtime.validator.swing.SwingValidator; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - import com.franciaflex.faxtomail.persistence.entities.Attachment; import com.franciaflex.faxtomail.persistence.entities.AttachmentFile; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; 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 jaxx.runtime.validator.swing.SwingValidator; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import javax.swing.*; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.util.ArrayList; +import java.util.List; + +import static org.nuiton.i18n.I18n.t; + /** * @author Kevin Morin (Code Lutin) * @since x.x */ -public class AttachmentToPrintChooserUIHandler extends AbstractFaxToMailUIHandler<DemandeUIModel, AttachmentToPrintChooserUI> +public class AttachmentToPrintChooserUIHandler extends AbstractFaxToMailUIHandler<AttachmentToPrintChooserUIModel, AttachmentToPrintChooserUI> implements Cancelable { private static final Log log = LogFactory.getLog(AttachmentToPrintChooserUIHandler.class); @@ -56,30 +57,47 @@ public void afterInit(AttachmentToPrintChooserUI attachmentToPrintChooserUI) { initUI(attachmentToPrintChooserUI); - DemandeUIModel model = getModel(); + AttachmentToPrintChooserUIModel model = getModel(); + DemandeUIModel demand = model.getDemand(); JPanel attachmentPanel = ui.getAttachmentPanel(); JCheckBox checkBox = new JCheckBox(t("faxtomail.chooseMailFolder.element"), false); attachmentPanel.add(checkBox); - for (Attachment attachment : model.getAttachment()) { - checkBox = new JCheckBox(attachment.getOriginalFile().getFilename(), true); - attachmentPanel.add(checkBox); + for (Attachment attachment : demand.getAttachment()) { + createCheckBox(attachment.getOriginalFile()); - AttachmentFile file = attachment.getEditedFile(); + final AttachmentFile file = attachment.getEditedFile(); if (file != null) { - checkBox = new JCheckBox(file.getFilename(), true); - attachmentPanel.add(checkBox); + createCheckBox(file); } } } + protected void createCheckBox(final AttachmentFile attachmentFile) { + JCheckBox checkBox = new JCheckBox(attachmentFile.getFilename(), true); + ui.getAttachmentPanel().add(checkBox); + getModel().addAttachmentToPrint(attachmentFile); + + checkBox.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + log.info("state changed " + e.getStateChange()); + if (e.getStateChange() == ItemEvent.SELECTED) { + getModel().addAttachmentToPrint(attachmentFile); + } else { + getModel().removeAttachmentToPrint(attachmentFile); + } + } + }); + } + @Override public void onCloseUI() { } @Override - public SwingValidator<DemandeUIModel> getValidator() { + public SwingValidator<AttachmentToPrintChooserUIModel> getValidator() { return null; } @@ -93,4 +111,9 @@ return ui.getAttachmentPanel(); } + public void print() { + for (AttachmentFile attachmentFile : getModel().getAttachmentsToPrint()) { + FaxToMailUIUtil.print(attachmentFile, true); + } + } } Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/print/AttachmentToPrintChooserUIModel.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/print/AttachmentToPrintChooserUIModel.java (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/print/AttachmentToPrintChooserUIModel.java 2014-06-09 17:14:06 UTC (rev 162) @@ -0,0 +1,59 @@ +package com.franciaflex.faxtomail.ui.swing.content.print; + +import com.franciaflex.faxtomail.persistence.entities.AttachmentFile; +import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.jdesktop.beans.AbstractBean; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +/** + * @author Kevin Morin (Code Lutin) + * @since x.x + */ +public class AttachmentToPrintChooserUIModel extends AbstractBean { + + private static final Log log = LogFactory.getLog(AttachmentToPrintChooserUIModel.class); + + public static final String PROPERTY_ATTACHEMENTS_TO_PRINT = "attachmentsToPrint"; + + protected DemandeUIModel demand; + + protected Collection<AttachmentFile> attachmentsToPrint = new HashSet<AttachmentFile>(); + + public DemandeUIModel getDemand() { + return demand; + } + + public void setDemand(DemandeUIModel demand) { + this.demand = demand; + } + + public Collection<AttachmentFile> getAttachmentsToPrint() { + return attachmentsToPrint; + } + + public void setAttachmentsToPrint(Collection<AttachmentFile> attachmentsToPrint) { + Object oldValue = new HashSet<AttachmentFile>(this.attachmentsToPrint); + this.attachmentsToPrint.clear(); + this.attachmentsToPrint.addAll(attachmentsToPrint); + firePropertyChange(PROPERTY_ATTACHEMENTS_TO_PRINT, oldValue, this.attachmentsToPrint); + } + + public void addAttachmentToPrint(AttachmentFile attachmentFile) { + Object oldValue = new HashSet<AttachmentFile>(this.attachmentsToPrint); + this.attachmentsToPrint.add(attachmentFile); + firePropertyChange(PROPERTY_ATTACHEMENTS_TO_PRINT, oldValue, this.attachmentsToPrint); + } + + public void removeAttachmentToPrint(AttachmentFile attachmentFile) { + Object oldValue = new HashSet<AttachmentFile>(this.attachmentsToPrint); + this.attachmentsToPrint.remove(attachmentFile); + firePropertyChange(PROPERTY_ATTACHEMENTS_TO_PRINT, oldValue, this.attachmentsToPrint); + } +} 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-06-09 17:07:41 UTC (rev 161) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java 2014-06-09 17:14:06 UTC (rev 162) @@ -32,20 +32,23 @@ import jaxx.runtime.JAXXObject; import jaxx.runtime.JAXXUtil; -import org.apache.commons.collections4.ComparatorUtils; -import org.apache.commons.io.FileUtils; -import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.jaxx.application.ApplicationBusinessException; import org.nuiton.jaxx.application.ApplicationTechnicalException; import org.nuiton.jaxx.application.swing.util.ApplicationUIUtil; import org.nuiton.util.FileUtil; -import javax.activation.DataHandler; -import javax.activation.DataSource; -import javax.mail.BodyPart; -import javax.mail.Part; -import javax.mail.internet.MimeMultipart; +import javax.print.Doc; +import javax.print.DocFlavor; +import javax.print.DocPrintJob; +import javax.print.PrintException; +import javax.print.PrintService; +import javax.print.PrintServiceLookup; +import javax.print.ServiceUI; +import javax.print.SimpleDoc; +import javax.print.attribute.HashPrintRequestAttributeSet; +import javax.print.attribute.PrintRequestAttributeSet; import javax.swing.*; import javax.swing.event.HyperlinkEvent; import javax.swing.event.HyperlinkListener; @@ -57,9 +60,8 @@ import javax.swing.tree.TreePath; import java.awt.*; -import java.io.File; -import java.io.FileOutputStream; -import java.net.URI; +import java.io.FileInputStream; +import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -255,19 +257,62 @@ return desktop; } - public static void print(AttachmentFile attachmentFile) { + public static void print(AttachmentFile attachmentFile, boolean defaultPrinter) { - Desktop desktop = getDesktopForPrint(); - File file = attachmentFile.getFile(); - try { - desktop.print(file); + FileInputStream textStream = new FileInputStream(attachmentFile.getFile()); - } catch (Exception e) { + DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE; + Doc mydoc = new SimpleDoc(textStream, flavor, null); + PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet(); + + PrintService[] services = PrintServiceLookup.lookupPrintServices(flavor, aset); + PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService(); + + if (defaultPrinter) { + DocPrintJob job; + + if (defaultService == null) { + if (services.length == 0) { + throw new ApplicationBusinessException(t("jaxx.application.error.noPrinter")); + } + job = services[0].createPrintJob(); + + } else { + job = defaultService.createPrintJob(); + } + job.print(mydoc, aset); + + } else { + + if (services.length == 0) { + if(defaultService == null) { + throw new ApplicationBusinessException(t("jaxx.application.error.noPrinter")); + + } else { + services = new PrintService[] { + defaultService + }; + } + } + + //built in UI for printing you may not use this + PrintService service = ServiceUI.printDialog(null, 200, 200, services, defaultService, flavor, aset); + + System.out.print("service " + service); + if (service != null) { + DocPrintJob job = service.createPrintJob(); + job.print(mydoc, aset); + } + } + + } catch (PrintException | IOException e) { + throw new ApplicationTechnicalException( t("jaxx.application.error.cannot.print"), e); } + } public static String getEditedFileName(AttachmentFile originalFile) { Modified: trunk/faxtomail-ui-swing/src/main/resources/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel-error-validation.xml =================================================================== --- trunk/faxtomail-ui-swing/src/main/resources/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel-error-validation.xml 2014-06-09 17:07:41 UTC (rev 161) +++ trunk/faxtomail-ui-swing/src/main/resources/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel-error-validation.xml 2014-06-09 17:14:06 UTC (rev 162) @@ -30,35 +30,82 @@ <validators> - <!--<field name="object">--> - <!--<field-validator type="requiredstring" short-circuit="true">--> - <!--<message>faxtomail.validator.error.email.object.required</message>--> - <!--</field-validator>--> - <!--</field>--> + <field name="demandType"> + <field-validator type="required" short-circuit="true"> + <message>faxtomail.validator.error.email.demandType.required</message> + </field-validator> + </field> <field name="clientCode"> - <field-validator type="requiredstring" short-circuit="true"> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ isValid("clientCode") ]]> + </param> <message>faxtomail.validator.error.email.clientCode.required</message> </field-validator> </field> - <field name="demandType"> - <field-validator type="required" short-circuit="true"> - <message>faxtomail.validator.error.email.demandType.required</message> + <field name="projectReference"> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ isValid("projectReference") ]]> + </param> + <message>faxtomail.validator.error.email.projectReference.required</message> </field-validator> </field> - <field name="projectReference"> - <field-validator type="requiredstring" short-circuit="true"> - <message>faxtomail.validator.error.email.projectReference.required</message> + <field name="object"> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ isValid("object") ]]> + </param> + <message>faxtomail.validator.error.email.object.required</message> </field-validator> </field> <field name="validRangeRowModels"> <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"><![CDATA[ !isRangePanelVisible() || validRangeRowModels != null && !validRangeRowModels.isEmpty() ]]></param> + <param name="expression"> + <![CDATA[ isValid("validRangeRowModels") ]]> + </param> <message>faxtomail.validator.error.email.rangeRow.required</message> </field-validator> </field> + <field name="priority"> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ isValid("priority") ]]> + </param> + <message>faxtomail.validator.error.email.priority.required</message> + </field-validator> + </field> + + <field name="etatAttente"> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ isValid("etatAttente") ]]> + </param> + <message>faxtomail.validator.error.email.etatAttente.required</message> + </field-validator> + </field> + + <field name="comment"> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ isValid("comment") ]]> + </param> + <message>faxtomail.validator.error.email.comment.required</message> + </field-validator> + </field> + + <field name="companyReference"> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ isValid("companyReference") ]]> + </param> + <message>faxtomail.validator.error.email.companyReference.required</message> + </field-validator> + </field> + </validators> 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-06-09 17:07:41 UTC (rev 161) +++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-06-09 17:14:06 UTC (rev 162) @@ -276,8 +276,12 @@ faxtomail.searchToGroup.title=Recherche de l'élément avec lequel grouper l'élément %s faxtomail.systemUser=Système faxtomail.validator.error.email.clientCode.required=Code client requis +faxtomail.validator.error.email.comment.required= +faxtomail.validator.error.email.companyReference.required= faxtomail.validator.error.email.demandType.required=Type de demande requis +faxtomail.validator.error.email.etatAttente.required= faxtomail.validator.error.email.object.required=Objet requis +faxtomail.validator.error.email.priority.required= faxtomail.validator.error.email.projectReference.required=Référence chantier requise faxtomail.validator.error.email.rangeRow.required=Tableau des gammes requis faxtomail.validator.error.reply.from.required= @@ -285,6 +289,7 @@ jaxx.application.error.cannot.print= jaxx.application.error.desktop.not.supported= jaxx.application.error.desktop.print.not.supported= +jaxx.application.error.noPrinter= swing.error.cannot.copy.file= swing.error.cannot.open.file= test=