r609 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing/util/attachment resources/i18n resources/icons
Author: kmorin Date: 2013-03-13 16:44:23 +0100 (Wed, 13 Mar 2013) New Revision: 609 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/609 Log: fixes #2130 [ERGO] Pi?\195?\168ces-jointes - avoir 3 boutons pour supprimer, voir ou sauver la pi?\195?\168ce jointe Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentItem.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentItem.jaxx trunk/tutti-ui-swing/src/main/resources/icons/action-open-file.png Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentEditorUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentEditorUIHandler.java trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentEditorUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentEditorUI.jaxx 2013-03-13 15:09:25 UTC (rev 608) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentEditorUI.jaxx 2013-03-13 15:44:23 UTC (rev 609) @@ -70,7 +70,7 @@ <row fill='both'> <cell fill='both' weightx='1' columns='3'> - <VBox id='attachments'></VBox> + <JPanel id='attachments' layout='{new GridLayout(0, 1)}'></JPanel> </cell> </row> <row fill='both'> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentEditorUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentEditorUIHandler.java 2013-03-13 15:09:25 UTC (rev 608) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentEditorUIHandler.java 2013-03-13 15:44:23 UTC (rev 609) @@ -27,6 +27,9 @@ import fr.ifremer.tutti.persistence.entities.data.Attachment; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; +import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import java.awt.BorderLayout; import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.ComponentMover; import jaxx.runtime.swing.ComponentResizer; @@ -53,7 +56,13 @@ import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.File; +import java.io.IOException; import java.util.List; +import javax.swing.JFileChooser; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.UIManager; +import org.apache.commons.io.FileUtils; import static org.nuiton.i18n.I18n._; @@ -229,59 +238,101 @@ } protected void addAttachment(final Attachment attachment) { - final HBox hbox = new HBox(); - hbox.setVerticalAlignment(SwingConstants.CENTER); + AttachmentItem item = new AttachmentItem(); + item.setAttachment(attachment); + item.setHandler(this); + ui.getAttachments().add(item); + } - JButton deleteButton = new JButton(SwingUtil.createActionIcon("delete")); - deleteButton.addActionListener(new ActionListener() { + protected void resetFields() { + ui.getFile().setSelectedFile((File) null); + ui.getFile().setSelectedFile((String) null); + ui.getFileName().setText(""); + ui.getFileComment().setText(""); + } - @Override - public void actionPerformed(ActionEvent e) { - AttachmentModelAware bean = ui.getBean(); + public void openAttachment(Attachment attachment) { + File file = persistenceService.getAttachmentFile(attachment.getId()); + SwingUtil.openLink("file://" + file.getAbsolutePath()); + } - persistenceService.deleteAttachment(attachment.getId()); + public void saveAttachment(Attachment attachment) { + boolean hackDialog = ui.isAlwaysOnTop(); + if (hackDialog) { + ui.setAlwaysOnTop(false); + } + try { + File attachmentFile = persistenceService.getAttachmentFile(attachment.getId()); + File file = TuttiUIUtil.chooseFile(ui, + _("tutti.dialog.saveAttachment.title"), + _("tutti.dialog.saveAttachment.button")); + + if (file != null) { + if (file.exists()) { + String htmlMessage = String.format( + AbstractTuttiUIHandler.CONFIRMATION_FORMAT, + _("tutti.dialog.saveAttachment.warning.message"), + _("tutti.dialog.saveAttachment.warning.help")); - bean.removeAttachment(attachment); + int answer = JOptionPane.showConfirmDialog(ui, + htmlMessage, + _("tutti.dialog.saveAttachment.warning.title"), + JOptionPane.YES_NO_OPTION, + JOptionPane.WARNING_MESSAGE); - ui.getAttachments().remove(hbox); - - ui.pack(); + if (answer == JOptionPane.NO_OPTION) { + return; + } + } + FileUtils.copyFile(attachmentFile, file); + TuttiUIUtil.showSuccessMessage(ui, + _("tutti.dialog.saveAttachment.success.title"), + _("tutti.dialog.saveAttachment.success.message", file.getName())); } - }); - hbox.add(deleteButton); - - final JLabel label = new JLabel("<html><body><a href=''>" - + attachment.getName() + "</a></body></html>"); - label.setToolTipText(attachment.getComment()); - label.addMouseListener(new MouseAdapter() { - - @Override - public void mouseClicked(MouseEvent e) { - File file = persistenceService.getAttachmentFile(attachment.getId()); - SwingUtil.openLink("file://" + file.getAbsolutePath()); + if (hackDialog) { + ui.setAlwaysOnTop(true); } - - @Override - public void mouseEntered(MouseEvent e) { - label.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); + + } catch(IOException e) { + if (log.isErrorEnabled()) { + log.error("Error while saving attachment", e); } + JOptionPane.showMessageDialog( + ui, + _("tutti.dialog.saveAttachment.fail.message"), + _("tutti.dialog.saveAttachment.fail.title"), + JOptionPane.ERROR_MESSAGE + ); - @Override - public void mouseExited(MouseEvent e) { - label.setCursor(Cursor.getDefaultCursor()); + } finally { + if (hackDialog) { + ui.setAlwaysOnTop(true); } + } + } - }); - hbox.add(label); + public void removeAttachment(AttachmentItem attachmentItem) { + Attachment attachment = attachmentItem.getAttachment(); + boolean hackDialog = ui.isAlwaysOnTop(); + if (hackDialog) { + ui.setAlwaysOnTop(false); + } + int answer = JOptionPane.showConfirmDialog(ui, + _("tutti.dialog.deleteAttachment.message", attachment.getName()), + _("tutti.dialog.deleteAttachment.title"), + JOptionPane.YES_NO_OPTION); + if (hackDialog) { + ui.setAlwaysOnTop(true); + } + + if (answer == JOptionPane.YES_OPTION) { + AttachmentModelAware bean = ui.getBean(); - ui.getAttachments().add(hbox); - } + persistenceService.deleteAttachment(attachment.getId()); + bean.removeAttachment(attachment); + ui.getAttachments().remove(attachmentItem); - protected void resetFields() { - ui.getFile().setSelectedFile((File) null); - ui.getFile().setSelectedFile((String) null); - ui.getFileName().setText(""); - ui.getFileComment().setText(""); + ui.pack(); + } } - } Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentItem.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentItem.css (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentItem.css 2013-03-13 15:44:23 UTC (rev 609) @@ -0,0 +1,28 @@ +#attachmentPanel { + toolTipText: {attachment != null ? getAttachment().getComment() : null}; +} + +#attachmentNameLabel { + text: {attachment != null ? getAttachment().getName() : null}; + toolTipText: {attachment != null ? getAttachment().getComment() : null}; +} + +#toolbar { + borderPainted: false; + floatable: false; +} + +#openAttachmentButton { + actionIcon: "open-file"; + toolTipText: "tutti.tooltip.attachment.button.open"; +} + +#saveAttachmentButton { + actionIcon: "import"; + toolTipText: "tutti.tooltip.attachment.button.save"; +} + +#removeAttachmentButton { + actionIcon: "delete"; + toolTipText: "tutti.tooltip.attachment.button.remove"; +} \ No newline at end of file Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentItem.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentItem.jaxx (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentItem.jaxx 2013-03-13 15:44:23 UTC (rev 609) @@ -0,0 +1,32 @@ +<JPanel id='attachmentPanel' layout='{new BorderLayout()}'> + + <import> + fr.ifremer.tutti.persistence.entities.data.Attachment + static org.nuiton.i18n.I18n._ + static jaxx.runtime.JAXXUtil.getStringValue + </import> + + <Attachment id='attachment' javaBean='null'/> + + <AttachmentEditorUIHandler id='handler' javaBean='null'/> + + <script><![CDATA[ +public AttachmentItem(Attachment attachment, AttachmentEditorUIHandler handler) { + this.attachment = attachment; + this.handler = handler; +} + + ]]></script> + + <JLabel id='attachmentNameLabel' constraints='BorderLayout.CENTER'/> + + <JToolBar id='toolbar' constraints='BorderLayout.EAST'> + <JButton id='openAttachmentButton' + onActionPerformed='handler.openAttachment(attachment)'/> + <JButton id='saveAttachmentButton' + onActionPerformed='handler.saveAttachment(attachment)'/> + <JButton id='removeAttachmentButton' + onActionPerformed='handler.removeAttachment(this)'/> + </JToolBar> + +</JPanel> \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties =================================================================== --- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-03-13 15:09:25 UTC (rev 608) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-03-13 15:44:23 UTC (rev 609) @@ -145,6 +145,12 @@ tutti.dialog.createMelag.error.title= tutti.dialog.createMelag.message= tutti.dialog.createMelag.title= +tutti.dialog.saveAttachment.button= +tutti.dialog.saveAttachment.fail.message= +tutti.dialog.saveAttachment.fail.title= +tutti.dialog.saveAttachment.success.message= +tutti.dialog.saveAttachment.success.title= +tutti.dialog.saveAttachment.title= tutti.dialog.warnUser.title= tutti.duration.format= tutti.error.errorpane.htmlmessage= @@ -467,6 +473,9 @@ tutti.title.splitBatch= tutti.title.validate.operations= tutti.to.be.done= +tutti.tooltip.attachment.button.open= +tutti.tooltip.attachment.button.remove= +tutti.tooltip.attachment.button.save= tutti.tooltip.attachment.none= tutti.tooltip.comment.none= tutti.tooltip.distanceInMilles= Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties =================================================================== --- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-03-13 15:09:25 UTC (rev 608) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-03-13 15:44:23 UTC (rev 609) @@ -152,6 +152,17 @@ tutti.dialog.createMelag.error.title=Erreur tutti.dialog.createMelag.message=Combien pesait le MELAG (kg) ? tutti.dialog.createMelag.title=Poids du MELAG (kg) +tutti.dialog.deleteAttachment.message=Êtes-vous sûr de vouloir supprimer la pièce-jointe %s ? +tutti.dialog.deleteAttachment.title=Suppression de pièce-jointe +tutti.dialog.saveAttachment.button=Choisir +tutti.dialog.saveAttachment.fail.message=Une erreur est survenue lors de la sauvegarde du fichier. +tutti.dialog.saveAttachment.fail.title=Erreur de sauvegarde. +tutti.dialog.saveAttachment.success.message=Le fichier %s a été sauvegardé sur votre machine. +tutti.dialog.saveAttachment.success.title=Sauvegarde réussie. +tutti.dialog.saveAttachment.title=Choisir un fichier +tutti.dialog.saveAttachment.warning.help=Que voulez-vous faire ?<ul><li><strong>Non</strong> pour annuler la sauvegarde</li><li><strong>Oui</strong> pour écraser le fichier existant</li></ul> +tutti.dialog.saveAttachment.warning.message=Vous êtes sur le point d'écraser un fichier existant. +tutti.dialog.saveAttachment.warning.title=Fichier existant tutti.dialog.warnUser.title=Avertissement\! tutti.duration.format=dj Hh m'm' tutti.error.errorpane.htmlmessage=<html><body><b>Une erreur s'est produite</b>\:<br/>%s</body></html> @@ -487,6 +498,9 @@ tutti.title.splitBatch=Catégorisation du lot tutti.title.validate.operations=Validation des opérations de pêches (%s) tutti.to.be.done=< A FAIRE > +tutti.tooltip.attachment.button.open=Ouvrir la pièce jointe +tutti.tooltip.attachment.button.remove=Supprimer la pièce jointe +tutti.tooltip.attachment.button.save=Enregistrer la pièce jointe en local tutti.tooltip.attachment.none=Pas de pièce-jointes tutti.tooltip.comment.none=Pas de commentaire tutti.tooltip.distanceInMilles=%s milles marins Added: trunk/tutti-ui-swing/src/main/resources/icons/action-open-file.png =================================================================== (Binary files differ) Property changes on: trunk/tutti-ui-swing/src/main/resources/icons/action-open-file.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream
participants (1)
-
kmorin@users.forge.codelutin.com