Author: kmorin Date: 2014-03-24 12:13:05 +0100 (Mon, 24 Mar 2014) New Revision: 21 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/21 Log: refs #4666 [ECRAN] Pi?\195?\168ces jointes Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupUI.css trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/PDFEditorUI.css trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/PDFEditorUI.jaxx trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/PDFEditorUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/PDFEditorUIModel.java trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_en_GB.properties trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-03-21 16:34:28 UTC (rev 20) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-03-24 11:13:05 UTC (rev 21) @@ -45,7 +45,7 @@ public class ShowDemandeAction extends AbstractChangeScreenAction { public ShowDemandeAction(MainUIHandler handler) { - super(handler, false, FaxToMailScreen.DEMANDE); + super(handler, true, FaxToMailScreen.DEMANDE); } @Override Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUIHandler.java 2014-03-21 16:34:28 UTC (rev 20) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUIHandler.java 2014-03-24 11:13:05 UTC (rev 21) @@ -366,9 +366,9 @@ this.currentBody = screenUI; getContext().getSwingSession().add(currentBody, true); ui.getBody().setTitle(screenTitle); - ui.getBody().add(currentBody); ui.getBody().setLeftDecoration(new JLabel(icon)); ui.getBody().setRightDecoration(rightDecoration); + ui.getBody().add(currentBody); } } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupUI.css =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupUI.css 2014-03-21 16:34:28 UTC (rev 20) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupUI.css 2014-03-24 11:13:05 UTC (rev 21) @@ -1,4 +1,4 @@ #dialog { undecorated: true; - alwaysOnTop: true; + //alwaysOnTop: true; } \ No newline at end of file Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/PDFEditorUI.css =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/PDFEditorUI.css 2014-03-21 16:34:28 UTC (rev 20) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/PDFEditorUI.css 2014-03-24 11:13:05 UTC (rev 21) @@ -1,36 +1,56 @@ #toolbar { floatable: false; - margin: {new java.awt.Insets(0, 0, 0, 5)}; + margin: {new java.awt.Insets(5, 0, 0, 5)}; borderPainted: false; } #noteButton { actionIcon: note; + toolTipText: "faxtomail.pdfEitor.button.addNote.tip"; } #crossButton { actionIcon: cross; + toolTipText: "faxtomail.pdfEitor.button.addCross.tip"; } #prevPageButton { - enabled: { getModel().getCurrentPageIndex() > 0 }; - actionIcon: cross; + actionIcon: left; + enabled: { getModel().getCurrentPageIndex() > 1 }; + toolTipText: "faxtomail.pdfEitor.button.previousPage"; } +#pageNumber { + bean: { model }; + property: "currentPageIndex"; + modelText: { String.valueOf(model.getCurrentPageIndex()) }; + useFloat: false; + useSign: false; + autoPopup: false; + showPopupButton: false; + showReset: false; + width: 50; +} + +#pageTotal { + text: { " / " + String.valueOf(model.getPages().length) }; +} + #nextPageButton { - enabled: { getModel().getCurrentPageIndex() < getModel().getPages().length - 1 }; - actionIcon: cross; + actionIcon: right; + enabled: { getModel().getCurrentPageIndex() < getModel().getPages().length }; + toolTipText: "faxtomail.pdfEitor.button.nextPage"; } #cancelButton { actionIcon: cancel; - text: "faxtomail.reply.action.cancel"; - toolTipText: "faxtomail.reply.action.cancel.tip"; + text: "faxtomail.pdfEitor.action.cancel"; + toolTipText: "faxtomail.pdfEitor.action.cancel.tip"; } #validateButton { actionIcon: validate; - text: "faxtomail.reply.action.validate"; - toolTipText: "faxtomail.reply.action.validate.tip"; + text: "faxtomail.pdfEitor.action.validate"; + toolTipText: "faxtomail.pdfEitor.action.validate.tip"; _applicationAction: {com.franciaflex.faxtomail.ui.swing.actions.GenerateAnnotatedAttachmentAction.class}; } \ No newline at end of file Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/PDFEditorUI.jaxx =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/PDFEditorUI.jaxx 2014-03-21 16:34:28 UTC (rev 20) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/PDFEditorUI.jaxx 2014-03-24 11:13:05 UTC (rev 21) @@ -1,4 +1,5 @@ -<JPanel layout='{new BorderLayout()}' +<JPanel id="pdfEditorUIPanel" + layout='{new BorderLayout()}' implements='com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI<PDFEditorUIModel, PDFEditorUIHandler>'> <import> @@ -7,6 +8,10 @@ com.franciaflex.faxtomail.ui.swing.util.JImagePanel + javax.swing.SwingConstants + + jaxx.runtime.swing.editor.NumberEditor + </import> <script><![CDATA[ @@ -25,8 +30,14 @@ onActionPerformed="handler.addNote()"/> <JButton id='crossButton' onActionPerformed="handler.addCross()"/> + + <JSeparator constructorParams="SwingConstants.VERTICAL"/> + <JButton id="prevPageButton" onActionPerformed="getModel().decPageIndex()"/> + <NumberEditor id='pageNumber' + constructorParams='this' /> + <JLabel id="pageTotal"/> <JButton id="nextPageButton" onActionPerformed="getModel().incPageIndex()"/> </JToolBar> Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/PDFEditorUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/PDFEditorUIHandler.java 2014-03-21 16:34:28 UTC (rev 20) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/PDFEditorUIHandler.java 2014-03-24 11:13:05 UTC (rev 21) @@ -16,9 +16,12 @@ import org.nuiton.util.FileUtil; import javax.swing.*; +import javax.swing.border.Border; import java.awt.*; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import java.awt.image.BufferedImage; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; @@ -52,27 +55,13 @@ cm.setDragInsets(cr.getDragInsets()); cm.setEdgeInsets(new Insets(0, 0, 0, 0)); - getModel().addPropertyChangeListener(PDFEditorUIModel.PROPERTY_CURRENT_PAGE_INDEX, new PropertyChangeListener() { + getModel().addPropertyChangeListener(PDFEditorUIModel.PROPERTY_CURRENT_PAGE_INDEX, + new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { - if (pdf != null) { - int pageNb = (int) evt.getNewValue(); - PDFPage page = pdf.getPage(pageNb +1); - // create the image - Rectangle rect = new Rectangle(0, 0, (int) page.getBBox().getWidth(), - (int) page.getBBox().getHeight()); - - Image image = page.getImage(rect.width, rect.height, // width & height - rect, // clip rect - null, // null for the ImageObserver - true, // fill background with white - true // block until drawing is done - ); - getUI().getContainer().setImg(image); - getUI().getContainer().updateUI(); - - //TODO kmorin 20140321 hide the panels of the previous pages + chanegs icons + display the number of pages - } + Integer pageNb = (Integer) evt.getNewValue(); + Integer prevPageNb = (Integer) evt.getOldValue(); + updatePageNumber(pageNb, prevPageNb); } }); @@ -95,7 +84,7 @@ pdf = new PDFFile(buf); model.setPageNumber(pdf.getNumPages()); - model.setCurrentPageIndex(0); + model.setCurrentPageIndex(1); } catch (FileNotFoundException e) { if (log.isErrorEnabled()) { @@ -110,10 +99,10 @@ } else { model.setPageNumber(1); - model.setCurrentPageIndex(0); + model.setCurrentPageIndex(1); getUI().getContainer().setImg(file.getAbsolutePath()); - } + model.firePropertyChanged(PDFEditorUIModel.PROPERTY_CURRENT_PAGE_INDEX, null, 1); } } } @@ -140,6 +129,18 @@ panel.setBackground(Color.YELLOW); panel.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); +// JLabel closeButton = new JLabel("X"); +// closeButton.addMouseListener(new MouseAdapter() { +// @Override +// public void mouseClicked(MouseEvent e) { +// super.mouseClicked(e); +// getModel().getCurrentPage().removeNote(panel); +// ui.getContainer().remove(panel); +// ui.getContainer().updateUI(); +// } +// }); +// panel.add(closeButton, BorderLayout.EAST); + JTextArea textArea = new JTextArea(); textArea.setBorder(null); textArea.setOpaque(false); @@ -191,4 +192,42 @@ cm.registerComponent(panel); } + protected void updatePageNumber(Integer pageNb, Integer prevPageNb) { + if (pdf != null) { + if (pageNb != null) { + if (prevPageNb != null) { + PDFEditorUIModel.Page p = getModel().getPage(prevPageNb); + for (JPanel panel : p.getNotes()) { + panel.setVisible(false); + } + for (JPanel panel : p.getCrosses()) { + panel.setVisible(false); + } + } + + PDFPage page = pdf.getPage(pageNb); + // create the image + Rectangle rect = new Rectangle(0, 0, (int) page.getBBox().getWidth(), + (int) page.getBBox().getHeight()); + + Image image = page.getImage(rect.width, rect.height, // width & height + rect, // clip rect + null, // null for the ImageObserver + true, // fill background with white + true // block until drawing is done + ); + getUI().getContainer().setImg(image); + + PDFEditorUIModel.Page p = getModel().getPage(pageNb); + for (JPanel panel : p.getNotes()) { + panel.setVisible(true); + } + for (JPanel panel : p.getCrosses()) { + panel.setVisible(true); + } + + getUI().getContainer().updateUI(); + } + } + } } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/PDFEditorUIModel.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/PDFEditorUIModel.java 2014-03-21 16:34:28 UTC (rev 20) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/PDFEditorUIModel.java 2014-03-24 11:13:05 UTC (rev 21) @@ -18,6 +18,7 @@ */ public class PDFEditorUIModel extends AbstractFaxToMailBeanUIModel<Attachment, PDFEditorUIModel> { + public static final String PROPERTY_PAGES = "pages"; public static final String PROPERTY_CURRENT_PAGE_INDEX = "currentPageIndex"; protected final Attachment editObject = new AttachmentImpl(); @@ -35,6 +36,10 @@ notes.add(note); } + public void removeNote(JPanel note) { + notes.remove(note); + } + public List<JImagePanel> getCrosses() { return crosses; } @@ -43,10 +48,14 @@ crosses.add(cross); } + public void removeCross(JPanel cross) { + crosses.remove(cross); + } } protected Page[] pages; + // first page is 1 not 0 protected int currentPageIndex = -1; protected static Binder<PDFEditorUIModel, Attachment> toBeanBinder = @@ -107,35 +116,43 @@ for (int i = 0 ; i < nb ; i++) { pages[i] = new Page(); } + firePropertyChanged(PROPERTY_PAGES, null, pages); } public Page getCurrentPage() { - if (pages == null || currentPageIndex < 0 | currentPageIndex >= pages.length) { + if (pages == null || currentPageIndex < 1 || currentPageIndex > pages.length) { return null; } - return pages[currentPageIndex]; + return pages[currentPageIndex - 1]; } + public Page getPage(int i) { + if (pages == null || i < 1 || i > pages.length) { + return null; + } + return pages[i - 1]; + } + public int getCurrentPageIndex() { return currentPageIndex; } public void setCurrentPageIndex(int currentPageIndex) { Object oldValue = getCurrentPageIndex(); + currentPageIndex = Math.max(1, currentPageIndex); + if (pages != null) { + currentPageIndex = Math.min(pages.length, currentPageIndex); + } this.currentPageIndex = currentPageIndex; firePropertyChange(PROPERTY_CURRENT_PAGE_INDEX, oldValue, currentPageIndex); } public void decPageIndex() { - if (currentPageIndex > 0) { - setCurrentPageIndex(currentPageIndex - 1); - } + setCurrentPageIndex(currentPageIndex - 1); } public void incPageIndex() { - if (currentPageIndex < pages.length - 1) { - setCurrentPageIndex(currentPageIndex + 1); - } + setCurrentPageIndex(currentPageIndex + 1); } @Override Modified: trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_en_GB.properties =================================================================== --- trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_en_GB.properties 2014-03-21 16:34:28 UTC (rev 20) +++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_en_GB.properties 2014-03-24 11:13:05 UTC (rev 21) @@ -251,6 +251,14 @@ faxtomail.main.title.applicationName= faxtomail.main.title.nodb= faxtomail.message.action.running= +faxtomail.pdfEitor.action.cancel= +faxtomail.pdfEitor.action.cancel.tip= +faxtomail.pdfEitor.action.validate= +faxtomail.pdfEitor.action.validate.tip= +faxtomail.pdfEitor.button.addCross.tip= +faxtomail.pdfEitor.button.addNote.tip= +faxtomail.pdfEitor.button.nextPage= +faxtomail.pdfEitor.button.previousPage= faxtomail.print.button.label= faxtomail.property.get.error= faxtomail.property.set.error= 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-03-21 16:34:28 UTC (rev 20) +++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-03-24 11:13:05 UTC (rev 21) @@ -135,6 +135,14 @@ faxtomail.main.title.application=FaxToMail faxtomail.main.title.applicationName=FaxToMail faxtomail.main.title.nodb= +faxtomail.pdfEitor.action.cancel=Annuler +faxtomail.pdfEitor.action.cancel.tip=Ne pas enregistrer les changements et fermer +faxtomail.pdfEitor.action.validate=Valider +faxtomail.pdfEitor.action.validate.tip=Enregistrer les changements et fermer +faxtomail.pdfEitor.button.addCross.tip=Ajouter une note +faxtomail.pdfEitor.button.addNote.tip=Ajouter une croix +faxtomail.pdfEitor.button.nextPage=Page suivante +faxtomail.pdfEitor.button.previousPage=Page précédente faxtomail.quantitiesByRange.button.text=OK faxtomail.quantitiesByRange.title=Quantités par gamme faxtomail.rangeRows.table.header.commandNumber=N° commande / devis @@ -177,3 +185,4 @@ faxtomail.validator.error.email.demandType.required=Type de demande requis faxtomail.validator.error.email.projectReference.required=Référence chantier requise swing.error.cannot.open.file= +test=