r821 - in trunk/tutti-ui-swing/src/main: filtered-resources java/fr/ifremer/tutti/ui/swing/content/home resources/i18n
Author: kmorin Date: 2013-04-18 17:00:28 +0200 (Thu, 18 Apr 2013) New Revision: 821 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/821 Log: - fixes #2009 [RAPPORT] composition du trait Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCruiseReportAction.java Removed: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCatchesReportAction.java Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.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/filtered-resources/tutti-help-en.properties =================================================================== --- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-04-18 14:20:46 UTC (rev 820) +++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-04-18 15:00:28 UTC (rev 821) @@ -1,5 +1,5 @@ #Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo -#Tue Apr 16 17:33:03 CEST 2013 +#Thu Apr 18 16:32:55 CEST 2013 tutti.createAccidentalBatch.action.cancel.help= tutti.createAccidentalBatch.action.save.help= tutti.createAccidentalBatch.field.accidentalDeadOrAlive.help= @@ -248,6 +248,7 @@ tutti.selectCruise.action.newCruise.help=selectCruise.html\#actions tutti.selectCruise.action.newProgram.help=selectCruise.html\#actions tutti.selectCruise.action.newProtocol.help=selectCruise.html\#actions +tutti.selectCruise.action.sendCruiseReport.help= tutti.selectCruise.action.validateCatches.help=selectCruise.html\#actions tutti.selectCruise.action.validateCruise.help= tutti.selectCruise.field.cruise.help=selectCruise.html\#fields Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties =================================================================== --- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-04-18 14:20:46 UTC (rev 820) +++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-04-18 15:00:28 UTC (rev 821) @@ -1,5 +1,5 @@ #Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo -#Tue Apr 16 17:33:03 CEST 2013 +#Thu Apr 18 16:32:55 CEST 2013 tutti.createAccidentalBatch.action.cancel.help= tutti.createAccidentalBatch.action.save.help= tutti.createAccidentalBatch.field.accidentalDeadOrAlive.help= @@ -257,6 +257,7 @@ tutti.selectCruise.action.newCruise.help=selectCruise.html\#actions tutti.selectCruise.action.newProgram.help=selectCruise.html\#actions tutti.selectCruise.action.newProtocol.help=selectCruise.html\#actions +tutti.selectCruise.action.sendCruiseReport.help= tutti.selectCruise.action.validateCatches.help=selectCruise.html\#actions tutti.selectCruise.action.validateCruise.help= tutti.selectCruise.field.cruise.help=selectCruise.html\#fields Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-04-18 14:20:46 UTC (rev 820) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-04-18 15:00:28 UTC (rev 821) @@ -92,16 +92,30 @@ _validatorLabel: {_("tutti.selectCruise.field.cruise")}; } +#editCruiseComboBox { + model: {handler.newComboModel(editCruiseButton, sendCruiseReportButton)}; + enabled: {model.isProgramFound() && model.isCruiseFound()}; + renderer: {new ActionListCellRenderer()}; +} + #editCruiseButton { actionIcon: edit; text: "tutti.selectCruise.action.editCruise"; i18nMnemonic: "tutti.selectCruise.action.editCruise.mnemonic"; - enabled: {model.isProgramFound() && model.isCruiseFound()}; _tuttiAction: {EditCruiseAction.class}; toolTipText: "tutti.selectCruise.action.editCruise.tip"; _help: {"tutti.selectCruise.action.editCruise.help"}; } +#sendCruiseReportButton { + actionIcon: email; + text: "tutti.selectCruise.action.sendCruiseReport"; + toolTipText: "tutti.selectCruise.action.sendCruiseReport.tip"; + i18nMnemonic: "tutti.selectCruise.action.sendCruiseReport.mnemonic"; + _tuttiAction: {SendCruiseReportAction.class}; + _help: {"tutti.selectCruise.action.sendCruiseReport.help"}; +} + #newCruiseButton { actionIcon: add; text: "tutti.selectCruise.action.newCruise"; @@ -210,15 +224,4 @@ _tuttiAction: {ValidateCatchesAction.class}; enabled: {model.isValid() && uiContext.isCruiseFilled()}; _help: {"tutti.selectCruise.action.validateCatches.help"}; -} - - -#exportCatchesButton { - actionIcon: validate; - text: "tutti.selectCruise.action.validateCatches"; - toolTipText: "tutti.selectCruise.action.validateCatches.tip"; - i18nMnemonic: "tutti.selectCruise.action.validateCatches.mnemonic"; - _tuttiAction: {ExportCatchesAction.class}; - enabled: {model.isValid() && uiContext.isCruiseFilled()}; - _help: {"tutti.selectCruise.action.validateCatches.help"}; } \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx 2013-04-18 14:20:46 UTC (rev 820) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx 2013-04-18 15:00:28 UTC (rev 821) @@ -73,6 +73,8 @@ <TuttiHelpBroker id='broker' constructorParams='"tutti.selectCruise.help"'/> + <JButton id='editCruiseButton'/> + <JButton id='sendCruiseReportButton'/> <JButton id='newProtocolButton'/> <JButton id='importProtocolButton'/> <JButton id='editProtocolButton'/> @@ -113,7 +115,10 @@ </cell> <cell> <JPanel layout='{new GridLayout(1,0)}'> - <JButton id='editCruiseButton'/> + <JComboBox id='editCruiseComboBox' + onMouseEntered='if (editCruiseComboBox.isEnabled()) { editCruiseComboBox.showPopup(); }' + onMouseClicked='if (editCruiseComboBox.isEnabled()) { handler.startEditCruiseAction(event); }' + onActionPerformed='handler.startEditCruiseAction(event)'/> <JButton id='newCruiseButton'/> </JPanel> </cell> @@ -144,7 +149,6 @@ <JPanel layout='{new GridLayout(1,0)}'> <JButton id='editCatchesButton'/> <JButton id='validateCatchesButton'/> - <JButton id='exportCatchesButton'/> </JPanel> </cell> </row> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-04-18 14:20:46 UTC (rev 820) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-04-18 15:00:28 UTC (rev 821) @@ -152,6 +152,7 @@ model.getProtocols(), model.getProtocol()); + ui.getEditCruiseComboBox().putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE); ui.getEditProtocolComboBox().putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE); ui.getNewProtocolComboBox().putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE); @@ -225,7 +226,6 @@ ui.applyDataBinding(SelectCruiseUI.BINDING_EDIT_PROGRAM_BUTTON_ENABLED); ui.applyDataBinding(SelectCruiseUI.BINDING_NEW_CRUISE_BUTTON_ENABLED); - ui.applyDataBinding(SelectCruiseUI.BINDING_EDIT_CRUISE_BUTTON_ENABLED); ui.applyDataBinding(SelectCruiseUI.BINDING_EDIT_CATCHES_BUTTON_ENABLED); ui.applyDataBinding(SelectCruiseUI.BINDING_VALIDATE_CATCHES_BUTTON_ENABLED); } @@ -258,6 +258,23 @@ clearValidators(); } + public void startEditCruiseAction(MouseEvent event) { + JComboBox existingCruiseCombo = (JComboBox) event.getSource(); + TuttiActionHelper.runAction((AbstractButton) existingCruiseCombo.getItemAt(0)); + } + + public void startEditCruiseAction(ActionEvent event) { + JComboBox existingCruiseCombo = (JComboBox) event.getSource(); + JButton selectedAction = (JButton) existingCruiseCombo.getSelectedItem(); + // hide popup before performing the action, otherwise, if the action + // opens a popup, the user must click a first time to hide the combobox + // popup to then interact with the popup opened by the action + // (see http://forge.codelutin.com/issues/2032) + existingCruiseCombo.setSelectedIndex(0); + existingCruiseCombo.hidePopup(); + TuttiActionHelper.runAction(selectedAction); + } + public void startExistingProtocolAction(MouseEvent event) { JComboBox existingProtocolCombo = (JComboBox) event.getSource(); TuttiActionHelper.runAction((AbstractButton) existingProtocolCombo.getItemAt(0)); Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCatchesReportAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCatchesReportAction.java 2013-04-18 14:20:46 UTC (rev 820) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCatchesReportAction.java 2013-04-18 15:00:28 UTC (rev 821) @@ -1,91 +0,0 @@ -package fr.ifremer.tutti.ui.swing.content.home; - -import com.google.common.base.Preconditions; -import fr.ifremer.tutti.TuttiIOUtil; -import fr.ifremer.tutti.persistence.entities.data.Cruise; -import fr.ifremer.tutti.service.catches.ExportCatchesReportService; -import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; -import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import java.io.File; - -import static org.nuiton.i18n.I18n._; - -/** - * Opens a file chooser and exports the protocol into the selected file. - * - * @author tchemit <chemit@codelutin.com> - * @since 1.0 - */ -public class SendCatchesReportAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUI, SelectCruiseUIHandler> { - - /** Logger. */ - private static final Log log = - LogFactory.getLog(SendCatchesReportAction.class); - - protected File file; - - public SendCatchesReportAction(SelectCruiseUIHandler handler) { - super(handler, true); - } - - @Override - protected boolean prepareAction() throws Exception { - - boolean doAction = super.prepareAction(); - - if (doAction) { - - // choose file to export - file = TuttiUIUtil.chooseFile( - getContext().getMainUI(), - _("tutti.sendCatchesReport.title.choose.exportFile"), - _("tutti.sendCatchesReport.action.chooseFile"), - "^.+\\.pdf$", _("tutti.common.file.pdf") - ); - doAction = file != null; - if (doAction) { - file = TuttiIOUtil.addExtensionIfMissing(file, ".pdf"); - - // ask user to confirm overwrite. - doAction = getHandler().askOverwriteFile(file); - } - } - return doAction; - } - - @Override - protected void releaseAction() { - file = null; - super.releaseAction(); - } - - @Override - protected void doAction() throws Exception { - Cruise cruise = getModel().getCruise(); - Preconditions.checkNotNull(cruise); - Preconditions.checkNotNull(file); - - if (log.isInfoEnabled()) { - log.info("Will export cruise " + cruise.getId() + - " to file: " + file); - } - - // export catches - ExportCatchesReportService service = - getContext().getGeneratePDFService(); - service.generatePDFFile(file, cruise.getId(), getConfig().getI18nLocale()); - - TuttiUIUtil.mail(_("tutti.sendCatchesReport.mail.subject", cruise.getName()), - _("tutti.sendCatchesReport.mail.body", cruise.getName(), file.getAbsolutePath())); - - } - - @Override - public void postSuccessAction() { - super.postSuccessAction(); - sendMessage(_("tutti.sendCatchesReport.action.success", file.getName())); - } -} Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCruiseReportAction.java (from rev 820, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCatchesReportAction.java) =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCruiseReportAction.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCruiseReportAction.java 2013-04-18 15:00:28 UTC (rev 821) @@ -0,0 +1,91 @@ +package fr.ifremer.tutti.ui.swing.content.home; + +import com.google.common.base.Preconditions; +import fr.ifremer.tutti.TuttiIOUtil; +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.service.catches.ExportCatchesReportService; +import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.io.File; + +import static org.nuiton.i18n.I18n._; + +/** + * Opens a file chooser, exports the cruise catches into the selected file and open the default email editor. + * + * @author kmorin <morin@codelutin.com> + * @since 1.0 + */ +public class SendCruiseReportAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUI, SelectCruiseUIHandler> { + + /** Logger. */ + private static final Log log = + LogFactory.getLog(SendCruiseReportAction.class); + + protected File file; + + public SendCruiseReportAction(SelectCruiseUIHandler handler) { + super(handler, true); + } + + @Override + protected boolean prepareAction() throws Exception { + + boolean doAction = super.prepareAction(); + + if (doAction) { + + // choose file to export + file = TuttiUIUtil.chooseFile( + getContext().getMainUI(), + _("tutti.sendCruiseReport.title.choose.exportFile"), + _("tutti.sendCruiseReport.action.chooseFile"), + "^.+\\.pdf$", _("tutti.common.file.pdf") + ); + doAction = file != null; + if (doAction) { + file = TuttiIOUtil.addExtensionIfMissing(file, ".pdf"); + + // ask user to confirm overwrite. + doAction = getHandler().askOverwriteFile(file); + } + } + return doAction; + } + + @Override + protected void releaseAction() { + file = null; + super.releaseAction(); + } + + @Override + protected void doAction() throws Exception { + Cruise cruise = getModel().getCruise(); + Preconditions.checkNotNull(cruise); + Preconditions.checkNotNull(file); + + if (log.isInfoEnabled()) { + log.info("Will export cruise " + cruise.getId() + + " to file: " + file); + } + + // export catches + ExportCatchesReportService service = + getContext().getGeneratePDFService(); + service.generatePDFFile(file, cruise.getId(), getConfig().getI18nLocale()); + + TuttiUIUtil.mail(_("tutti.sendCruiseReport.mail.subject", cruise.getName()), + _("tutti.sendCruiseReport.mail.body", cruise.getName(), file.getAbsolutePath())); + + } + + @Override + public void postSuccessAction() { + super.postSuccessAction(); + sendMessage(_("tutti.sendCruiseReport.action.success", file.getName())); + } +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCruiseReportAction.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native 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-04-18 14:20:46 UTC (rev 820) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-04-18 15:00:28 UTC (rev 821) @@ -1063,6 +1063,9 @@ tutti.selectCruise.action.newProtocol= tutti.selectCruise.action.newProtocol.mnemonic= tutti.selectCruise.action.newProtocol.tip= +tutti.selectCruise.action.sendCruiseReport= +tutti.selectCruise.action.sendCruiseReport.mnemonic= +tutti.selectCruise.action.sendCruiseReport.tip= tutti.selectCruise.action.validateCatches= tutti.selectCruise.action.validateCatches.mnemonic= tutti.selectCruise.action.validateCatches.tip= @@ -1092,6 +1095,11 @@ tutti.sendCatchesReport.mail.body= tutti.sendCatchesReport.mail.subject= tutti.sendCatchesReport.title.choose.exportFile= +tutti.sendCruiseReport.action.chooseFile= +tutti.sendCruiseReport.action.success= +tutti.sendCruiseReport.mail.body= +tutti.sendCruiseReport.mail.subject= +tutti.sendCruiseReport.title.choose.exportFile= tutti.splitBenthosBatch.action.cancel= tutti.splitBenthosBatch.action.cancel.mnemonic= tutti.splitBenthosBatch.action.cancel.tip= 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-04-18 14:20:46 UTC (rev 820) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-04-18 15:00:28 UTC (rev 821) @@ -1061,6 +1061,9 @@ tutti.selectCruise.action.newProtocol=Nouveau tutti.selectCruise.action.newProtocol.mnemonic=t tutti.selectCruise.action.newProtocol.tip=Créer un nouveau protocole +tutti.selectCruise.action.sendCruiseReport=Envoyer +tutti.selectCruise.action.sendCruiseReport.mnemonic=E +tutti.selectCruise.action.sendCruiseReport.tip=Envoyer le rapport de la campagne tutti.selectCruise.action.validateCatches=Valider les captures tutti.selectCruise.action.validateCatches.mnemonic=V tutti.selectCruise.action.validateCatches.tip=Valider les captures @@ -1084,11 +1087,11 @@ tutti.selectSpecies.action.validate.mnemonic=V tutti.selectSpecies.action.validate.tip=Valider la sélection de l'espèce tutti.selectSpecies.title=Choisissez une espèce -tutti.sendCatchesReport.action.chooseFile=Choisir le fichier de rapport -tutti.sendCatchesReport.action.success=Les captures ont correctement été exporté dans le fichier %s -tutti.sendCatchesReport.mail.body=Bonjour,\n\nveuillez trouver ci-joint le rapport des captures de la campagne %1s.\n*Pensez à joindre le fichier %2s*\n\nCordialement,\n\n*Votre nom* -tutti.sendCatchesReport.mail.subject=Captures de la campagne %s -tutti.sendCatchesReport.title.choose.exportFile=Exporter les captures de la campagne +tutti.sendCruiseReport.action.chooseFile=Choisir le fichier de rapport +tutti.sendCruiseReport.action.success=Les captures ont correctement été exporté dans le fichier %s +tutti.sendCruiseReport.mail.body=Bonjour,\n\nveuillez trouver ci-joint le rapport des captures de la campagne %1s.\n*Pensez à joindre le fichier %2s*\n\nCordialement,\n\n*Votre nom* +tutti.sendCruiseReport.mail.subject=Captures de la campagne %s +tutti.sendCruiseReport.title.choose.exportFile=Exporter les captures de la campagne tutti.splitBenthosBatch.action.cancel=Annuler tutti.splitBenthosBatch.action.cancel.mnemonic=A tutti.splitBenthosBatch.action.cancel.tip=Annuler le sous-échantillonnage
participants (1)
-
kmorin@users.forge.codelutin.com