This is an automated email from the git hooks/post-receive script. New commit to branch feature/6115_ajout_RTP in repository tutti. See http://git.codelutin.com/tutti.git commit 96b1fb73f157d289c45a9653282c4e001c61f470 Author: Kevin Morin <morin@codelutin.com> Date: Tue Jan 19 12:32:42 2016 +0100 ajout des actions pour naviguer dans le tableau (refs #6115) --- .../content/protocol/rtp/RtpCellRenderer.java | 3 -- .../ui/swing/content/protocol/rtp/RtpEditorUI.jaxx | 5 ++ .../ui/swing/content/protocol/rtp/RtpEditorUI.jcss | 20 +++++++ .../content/protocol/rtp/RtpEditorUIHandler.java | 47 +++++++++-------- .../content/protocol/rtp/RtpEditorUIModel.java | 58 +++++++++++++++++++-- .../protocol/rtp/actions/EditNextRowAction.java | 24 +++++++++ .../rtp/actions/EditPreviousRowAction.java | 24 +++++++++ .../resources/i18n/tutti-ui-swing_en_GB.properties | 3 ++ .../resources/i18n/tutti-ui-swing_fr_FR.properties | 3 ++ .../src/main/resources/icons/action-next.png | Bin 0 -> 349 bytes .../src/main/resources/icons/action-previous.png | Bin 0 -> 345 bytes 11 files changed, 156 insertions(+), 31 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpCellRenderer.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpCellRenderer.java index 09c4961..960d9e3 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpCellRenderer.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpCellRenderer.java @@ -66,9 +66,6 @@ public class RtpCellRenderer extends DefaultTableCellRenderer { EditProtocolSpeciesRowModel rowModel = ((EditProtocolSpeciesTableModel) table.getModel()).getEntry(row); boolean useRtp = rowModel.isUseRtp(); - if (log.isInfoEnabled()) { - log.info("useRtp " + useRtp); - } String toolTipTextValue; String textValue; diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUI.jaxx b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUI.jaxx index 9c0bf66..1112f41 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUI.jaxx +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUI.jaxx @@ -64,6 +64,11 @@ public void closeEditor() { handler.closeEditor(); } <field name='rtpUndefinedB' component='rtpUndefinedBField'/> </BeanValidator> + <JToolBar id='headerToolBar'> + <JButton id="previousRowButton"/> + <JButton id="nextRowButton"/> + </JToolBar> + <JXTitledPanel id="bodyPanel" constraints='BorderLayout.NORTH'> <JPanel layout="{new GridLayout(3, 1)}"> <JPanel id="malePanel" layout="{new GridLayout(1, 2)}" border='{new TitledBorder(t("tutti.editRtp.malePanel"))}'> diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUI.jcss b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUI.jcss index d47e59d..9ecfc72 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUI.jcss +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUI.jcss @@ -13,6 +13,26 @@ NumberEditor { alwaysOnTop: true; } +#headerToolBar { + floatable: false; + opaque: true; + borderPainted: false; +} + +#previousRowButton { + actionIcon: previous; + toolTipText: "tutti.editRtp.action.previous.tip"; + enabled: {!model.isFirstRow()}; + _simpleAction: {fr.ifremer.tutti.ui.swing.content.protocol.rtp.actions.EditPreviousRowAction.class}; +} + +#nextRowButton { + actionIcon: next; + toolTipText: "tutti.editRtp.action.next.tip"; + enabled: {!model.isLastRow()}; + _simpleAction: {fr.ifremer.tutti.ui.swing.content.protocol.rtp.actions.EditNextRowAction.class}; +} + #rtpMaleALabel { text: "tutti.editRtp.field.rtpMaleA"; toolTipText: "tutti.editRtp.field.rtpMaleA.tip"; diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUIHandler.java index 62bd254..cf8700e 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUIHandler.java @@ -13,6 +13,9 @@ import org.apache.commons.logging.LogFactory; import javax.swing.JComponent; import javax.swing.JOptionPane; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; + import static org.nuiton.i18n.I18n.t; /** @@ -49,9 +52,29 @@ public class RtpEditorUIHandler extends AbstractTuttiUIHandler<RtpEditorUIModel, cm.setDragInsets(cr.getDragInsets()); cm.registerComponent(ui); + ui.getBodyPanel().setRightDecoration(ui.getHeaderToolBar()); + RtpEditorUIModel model = getModel(); listModelIsModify(model); listenValidatorValid(ui.getValidator(), model); + + model.addPropertyChangeListener(RtpEditorUIModel.PROPERTY_ROW, new PropertyChangeListener() { + + @Override + public void propertyChange(PropertyChangeEvent evt) { + EditProtocolSpeciesRowModel rowModel = getModel().getRowModel(); + + Species species = rowModel.getSpecies(); + + String decorate = decorate(species); + + if (log.isInfoEnabled()) { + log.info("Edit RTP for species: " + decorate); + } + + getUI().getBodyPanel().setTitle(t("tutti.rtpEdit.title", decorate)); + } + }); } @Override @@ -117,29 +140,7 @@ public class RtpEditorUIHandler extends AbstractTuttiUIHandler<RtpEditorUIModel, } public void setBean(EditProtocolSpeciesTableModel tableModel, int row) { - - RtpEditorUIModel model = getModel(); - - model.setRowModel(tableModel, row); - - model.setModify(false); - - EditProtocolSpeciesRowModel rowModel = model.getRowModel(); - - Species species = rowModel.getSpecies(); - - String decorate = decorate(species); - - if (log.isInfoEnabled()) { - log.info("Edit RTP for species: " + decorate); - } - - ui.getBodyPanel().setTitle(t("tutti.rtpEdit.title", decorate)); - - if (log.isInfoEnabled()) { - log.info("model valid " + model.isValid()); - log.info("model modified " + model.isModify()); - } + getModel().setRowModel(tableModel, row); } public void openEditor() { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUIModel.java index c078631..7f4fcb8 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUIModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUIModel.java @@ -25,15 +25,23 @@ public class RtpEditorUIModel extends AbstractTuttiBeanUIModel<EditProtocolSpeci public static final String PROPERTY_RTP_UNDEFINED_A = "rtpUndefinedA"; public static final String PROPERTY_RTP_UNDEFINED_B = "rtpUndefinedB"; + public static final String PROPERTY_FIRST_ROW = "firstRow"; + public static final String PROPERTY_LAST_ROW = "lastRow"; + public static final String PROPERTY_ROW = "row"; + protected final Rtp rtpMale = new RtpBean(); protected final Rtp rtpFemale = new RtpBean(); protected final Rtp rtpUndefined = new RtpBean(); + protected boolean firstRow; + + protected boolean lastRow; + protected EditProtocolSpeciesTableModel tableModel; - protected int row; + protected int row = -1; public RtpEditorUIModel() { super(null, null); @@ -110,13 +118,53 @@ public class RtpEditorUIModel extends AbstractTuttiBeanUIModel<EditProtocolSpeci firePropertyChanged(PROPERTY_RTP_UNDEFINED_B, null, b); } + public boolean isFirstRow() { + return firstRow; + } + + public void setFirstRow(boolean firstRow) { + Object oldValue = isFirstRow(); + this.firstRow = firstRow; + firePropertyChange(PROPERTY_FIRST_ROW, oldValue, firstRow); + } + + public boolean isLastRow() { + return lastRow; + } + + public void setLastRow(boolean lastRow) { + Object oldValue = isLastRow(); + this.lastRow = lastRow; + firePropertyChange(PROPERTY_LAST_ROW, oldValue, lastRow); + } + + public int getRow() { + return row; + } + + public void setRow(int row) { + Object oldValue = getRow(); + this.row = row; + firePropertyChange(PROPERTY_ROW, oldValue, row); + } + public void setRowModel(EditProtocolSpeciesTableModel tableModel, int row) { + this.tableModel = tableModel; + + setRowModel(row); + } + + public void setRowModel(int row) { + if (log.isInfoEnabled()) { log.info("setRowModel " + row); } - this.row = row; - this.tableModel = tableModel; + + setRow(row); + + setFirstRow(row == 0); + setLastRow(row == tableModel.getRowCount() - 1); EditProtocolSpeciesRowModel rowModel = tableModel.getEntry(row); @@ -132,6 +180,7 @@ public class RtpEditorUIModel extends AbstractTuttiBeanUIModel<EditProtocolSpeci setRtpUndefinedA(rtpUndefined == null ? null : rtpUndefined.getA()); setRtpUndefinedB(rtpUndefined == null ? null : rtpUndefined.getB()); + setModify(false); } public EditProtocolSpeciesRowModel getRowModel() { @@ -139,7 +188,6 @@ public class RtpEditorUIModel extends AbstractTuttiBeanUIModel<EditProtocolSpeci } public void reset() { - setRowModel(tableModel, row); - setModify(false); + setRowModel(row); } } \ No newline at end of file diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/actions/EditNextRowAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/actions/EditNextRowAction.java new file mode 100644 index 0000000..d0ef36c --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/actions/EditNextRowAction.java @@ -0,0 +1,24 @@ +package fr.ifremer.tutti.ui.swing.content.protocol.rtp.actions; + +import fr.ifremer.tutti.ui.swing.content.protocol.rtp.RtpEditorUI; +import fr.ifremer.tutti.ui.swing.content.protocol.rtp.RtpEditorUIModel; +import fr.ifremer.tutti.ui.swing.util.actions.SimpleActionSupport; + +/** + * @author Kevin Morin (Code Lutin) + * @since 4.4 + */ +public class EditNextRowAction extends SimpleActionSupport<RtpEditorUI> { + + public EditNextRowAction(RtpEditorUI rtpEditorUI) { + super(rtpEditorUI); + } + + @Override + protected void onActionPerformed(RtpEditorUI rtpEditorUI) { + RtpEditorUIModel model = rtpEditorUI.getModel(); + if (!model.isLastRow()) { + model.setRowModel(model.getRow() + 1); + } + } +} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/actions/EditPreviousRowAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/actions/EditPreviousRowAction.java new file mode 100644 index 0000000..d948aaa --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/actions/EditPreviousRowAction.java @@ -0,0 +1,24 @@ +package fr.ifremer.tutti.ui.swing.content.protocol.rtp.actions; + +import fr.ifremer.tutti.ui.swing.content.protocol.rtp.RtpEditorUI; +import fr.ifremer.tutti.ui.swing.content.protocol.rtp.RtpEditorUIModel; +import fr.ifremer.tutti.ui.swing.util.actions.SimpleActionSupport; + +/** + * @author Kevin Morin (Code Lutin) + * @since 4.4 + */ +public class EditPreviousRowAction extends SimpleActionSupport<RtpEditorUI> { + + public EditPreviousRowAction(RtpEditorUI rtpEditorUI) { + super(rtpEditorUI); + } + + @Override + protected void onActionPerformed(RtpEditorUI rtpEditorUI) { + RtpEditorUIModel model = rtpEditorUI.getModel(); + if (!model.isFirstRow()) { + model.setRowModel(model.getRow() - 1); + } + } +} diff --git a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties index 1a92b95..6eb1384 100644 --- a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties +++ b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties @@ -1,6 +1,7 @@ application.action.create.error= application.error.ui.business.warning= jaxx.application.action.create.error= +next= rtpEditor.femalePanel= rtpEditor.malePanel= rtpEditor.undefinedPanel= @@ -1131,6 +1132,8 @@ tutti.editRtp.action.cancel.tip= tutti.editRtp.action.close= tutti.editRtp.action.close.mnemonic= tutti.editRtp.action.close.tip= +tutti.editRtp.action.next.tip= +tutti.editRtp.action.previous.tip= tutti.editRtp.action.save= tutti.editRtp.action.save.mnemonic= tutti.editRtp.action.save.tip= diff --git a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties index 9359cc6..ef8fe9b 100644 --- a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties +++ b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties @@ -1,6 +1,7 @@ application.action.create.error= application.error.ui.business.warning= jaxx.application.action.create.error= +next= swing.error.cannot.open.file=Aucun programme n'est défini pour ouvrir ce type de fichier. Enregistrez le fichier et ouvrez le en dehors de l'application tutti.about.bottomText=Copyright %s - %s - version %s tutti.about.message=<h3>Allegro Campagne</h3><p><strong>Outil de saisie de données d'opérations et de captures au cours des campagnes halieutiques.</strong></p><br/><p>Ce logiciel permettra la saisie en mer des données d'opération de pêche (positions, environnement, engin, etc) et des captures associées (composition de la capture en espèces scientifiques avec poids, nombres, tailles etc) pour l'ensemble des campagnes halieutiques réalisées par l'Ifremer.</p><p>Ce projet a été initiée en [...] @@ -1076,6 +1077,8 @@ tutti.editProtocol.warn.import=Le protocole que vous venez d'importer ne sera sa tutti.editRtp.action.close=Fermer tutti.editRtp.action.close.mnemonic=F tutti.editRtp.action.close.tip=Fermer l'éditeur des RTP +tutti.editRtp.action.next.tip=Editer les RTP de la ligne suivante +tutti.editRtp.action.previous.tip=Editer les RTP de la ligne précédente tutti.editRtp.action.save=Enregistrer tutti.editRtp.action.save.mnemonic=E tutti.editRtp.action.save.tip=Enregister les RTP diff --git a/tutti-ui-swing/src/main/resources/icons/action-next.png b/tutti-ui-swing/src/main/resources/icons/action-next.png new file mode 100644 index 0000000..b1a1819 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/icons/action-next.png differ diff --git a/tutti-ui-swing/src/main/resources/icons/action-previous.png b/tutti-ui-swing/src/main/resources/icons/action-previous.png new file mode 100644 index 0000000..5dc6967 Binary files /dev/null and b/tutti-ui-swing/src/main/resources/icons/action-previous.png differ -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.