branch feature/6115_ajout_RTP updated (ba442f6 -> 21a465e)
This is an automated email from the git hooks/post-receive script. New change to branch feature/6115_ajout_RTP in repository tutti. See http://git.codelutin.com/tutti.git from ba442f6 Ajout du model de RTP sur SpeciesProtocol (See #6115) new 21a465e Début de l'éditeur des relations RTP, mais tout ne fonctionne pas encore.. (See #6115) The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 21a465e728cc033f98d817753eab91853e038307 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Jan 14 22:57:42 2016 +0100 Début de l'éditeur des relations RTP, mais tout ne fonctionne pas encore.. (See #6115) Summary of changes: .../protocol/EditProtocolSpeciesRowModel.java | 74 ++++++++++- .../protocol/EditProtocolSpeciesTableModel.java | 5 + .../ui/swing/content/protocol/EditProtocolUI.jaxx | 3 + .../content/protocol/EditProtocolUIHandler.java | 11 ++ .../ui/swing/content/protocol/rtp/RtpButton.java | 74 +++++++++++ .../swing/content/protocol/rtp/RtpCellEditor.java | 101 ++++++++++++++ .../content/protocol/rtp/RtpCellRenderer.java | 91 +++++++++++++ .../ui/swing/content/protocol/rtp/RtpEditorUI.css | 111 ++++++++++++++++ .../ui/swing/content/protocol/rtp/RtpEditorUI.jaxx | 148 +++++++++++++++++++++ .../content/protocol/rtp/RtpEditorUIHandler.java | 85 ++++++++++++ .../content/protocol/rtp/RtpEditorUIModel.java | 126 ++++++++++++++++++ .../protocol/rtp/actions/CancelRtpAction.java | 23 ++++ .../protocol/rtp/actions/SaveRtpAction.java | 36 +++++ .../resources/i18n/tutti-ui-swing_en_GB.properties | 41 ++++++ .../resources/i18n/tutti-ui-swing_fr_FR.properties | 28 ++++ 15 files changed, 955 insertions(+), 2 deletions(-) create mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpButton.java create mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpCellEditor.java create mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpCellRenderer.java create mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUI.css create mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUI.jaxx create mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUIHandler.java create mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUIModel.java create mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/actions/CancelRtpAction.java create mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/actions/SaveRtpAction.java -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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 21a465e728cc033f98d817753eab91853e038307 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Jan 14 22:57:42 2016 +0100 Début de l'éditeur des relations RTP, mais tout ne fonctionne pas encore.. (See #6115) --- .../protocol/EditProtocolSpeciesRowModel.java | 74 ++++++++++- .../protocol/EditProtocolSpeciesTableModel.java | 5 + .../ui/swing/content/protocol/EditProtocolUI.jaxx | 3 + .../content/protocol/EditProtocolUIHandler.java | 11 ++ .../ui/swing/content/protocol/rtp/RtpButton.java | 74 +++++++++++ .../swing/content/protocol/rtp/RtpCellEditor.java | 101 ++++++++++++++ .../content/protocol/rtp/RtpCellRenderer.java | 91 +++++++++++++ .../ui/swing/content/protocol/rtp/RtpEditorUI.css | 111 ++++++++++++++++ .../ui/swing/content/protocol/rtp/RtpEditorUI.jaxx | 148 +++++++++++++++++++++ .../content/protocol/rtp/RtpEditorUIHandler.java | 85 ++++++++++++ .../content/protocol/rtp/RtpEditorUIModel.java | 126 ++++++++++++++++++ .../protocol/rtp/actions/CancelRtpAction.java | 23 ++++ .../protocol/rtp/actions/SaveRtpAction.java | 36 +++++ .../resources/i18n/tutti-ui-swing_en_GB.properties | 41 ++++++ .../resources/i18n/tutti-ui-swing_fr_FR.properties | 28 ++++ 15 files changed, 955 insertions(+), 2 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesRowModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesRowModel.java index 3585692..505d2a3 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesRowModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesRowModel.java @@ -22,6 +22,7 @@ package fr.ifremer.tutti.ui.swing.content.protocol; * #L% */ +import fr.ifremer.tutti.persistence.entities.protocol.Rtp; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocols; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; @@ -53,6 +54,8 @@ public class EditProtocolSpeciesRowModel extends AbstractTuttiBeanUIModel<Specie public static final String PROPERTY_CALCIFY_SAMPLE_ENABLED = "calcifySampleEnabled"; + public static final String PROPERTY_USE_RTP = "useRtp"; + protected Species species; protected String speciesSurveyCode; @@ -67,13 +70,19 @@ public class EditProtocolSpeciesRowModel extends AbstractTuttiBeanUIModel<Specie protected List<Integer> mandatorySampleCategoryId; + protected Rtp rtpMale; + + protected Rtp rtpFemale; + + protected Rtp rtpUndefined; + protected static final Binder<SpeciesProtocol, EditProtocolSpeciesRowModel> fromBeanBinder = BinderFactory.newBinder(SpeciesProtocol.class, - EditProtocolSpeciesRowModel.class); + EditProtocolSpeciesRowModel.class); protected static final Binder<EditProtocolSpeciesRowModel, SpeciesProtocol> toBeanBinder = BinderFactory.newBinder(EditProtocolSpeciesRowModel.class, - SpeciesProtocol.class); + SpeciesProtocol.class); public EditProtocolSpeciesRowModel() { super(fromBeanBinder, toBeanBinder); @@ -248,4 +257,65 @@ public class EditProtocolSpeciesRowModel extends AbstractTuttiBeanUIModel<Specie this.mandatorySampleCategoryId = mandatorySampleCategoryId; firePropertyChange(PROPERTY_MANDATORY_SAMPLE_CATEGORY_ID, null, mandatorySampleCategoryId); } + + public boolean isUseRtp() { + return withRtpFemale() && withRtpMale() && withRtpUndefined(); + } + + public void setUseRtp(boolean useRtp) { +// Object oldValue = isUseRtp(); +// this.useRtp = useRtp; + // Normalement pas utilisé + firePropertyChange(PROPERTY_USE_RTP, null, useRtp); + } + + @Override + public Rtp getRtpMale() { + return rtpMale; + } + + @Override + public void setRtpMale(Rtp rtpMale) { + Object oldValue = getRtpMale(); + this.rtpMale = rtpMale; + firePropertyChange(PROPERTY_RTP_MALE, oldValue, rtpMale); + } + + @Override + public Rtp getRtpFemale() { + return rtpFemale; + } + + @Override + public void setRtpFemale(Rtp rtpFemale) { + Object oldValue = getRtpFemale(); + this.rtpFemale = rtpFemale; + firePropertyChange(PROPERTY_RTP_FEMALE, oldValue, rtpFemale); + } + + @Override + public Rtp getRtpUndefined() { + return rtpUndefined; + } + + public void setRtpUndefined(Rtp rtpUndefined) { + Object oldValue = getRtpUndefined(); + this.rtpUndefined = rtpUndefined; + firePropertyChange(PROPERTY_RTP_UNDEFINED, oldValue, rtpUndefined); + } + + @Override + public boolean withRtpMale() { + return rtpMale != null; + } + + @Override + public boolean withRtpFemale() { + return rtpFemale != null; + } + + @Override + public boolean withRtpUndefined() { + return rtpUndefined != null; + } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesTableModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesTableModel.java index 56020d9..e1aae83 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesTableModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesTableModel.java @@ -69,6 +69,11 @@ public class EditProtocolSpeciesTableModel extends AbstractApplicationTableModel n("tutti.editProtocol.table.header.calcifySample"), n("tutti.editProtocol.table.header.calcifySample.tip")); + public static final ColumnIdentifier<EditProtocolSpeciesRowModel> USE_RTP = ColumnIdentifier.newId( + EditProtocolSpeciesRowModel.PROPERTY_USE_RTP, + n("tutti.editProtocol.table.header.useRtp"), + n("tutti.editProtocol.table.header.useRtp.tip")); + protected final SampleCategoryModel sampleCategoryModel; private static final long serialVersionUID = 1L; diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx index dcdd35b..3516602 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx @@ -27,6 +27,7 @@ fr.ifremer.tutti.persistence.entities.referential.Species fr.ifremer.tutti.ui.swing.TuttiHelpBroker + fr.ifremer.tutti.ui.swing.content.protocol.rtp.RtpEditorUI fr.ifremer.tutti.ui.swing.util.TuttiUI fr.ifremer.tutti.ui.swing.util.TuttiUIUtil @@ -57,6 +58,8 @@ <TuttiHelpBroker id='broker' constructorParams='"tutti.editProtocol.help"'/> + <RtpEditorUI id='rtpEditorUI' constructorParams='this'/> + <BeanValidator id='validator' bean='model' uiClass='jaxx.runtime.validator.swing.ui.ImageValidationUI'> <field name='name' component='nameField'/> diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java index 2cb8590..ad774a1 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java @@ -49,6 +49,8 @@ import fr.ifremer.tutti.ui.swing.content.home.actions.CloneProtocolAction; import fr.ifremer.tutti.ui.swing.content.home.actions.EditProtocolAction; import fr.ifremer.tutti.ui.swing.content.home.actions.ImportProtocolAction; import fr.ifremer.tutti.ui.swing.content.operation.catches.SpeciesAbleBatchRowHelper; +import fr.ifremer.tutti.ui.swing.content.protocol.rtp.RtpCellEditor; +import fr.ifremer.tutti.ui.swing.content.protocol.rtp.RtpCellRenderer; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.editor.bean.BeanDoubleList; @@ -383,6 +385,10 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI } addBooleanColumnToModel(columnModel, EditProtocolSpeciesTableModel.CALCIFY_SAMPLE_ENABLED, table); + addColumnToModel(columnModel, + RtpCellEditor.newEditor(ui), + new RtpCellRenderer(), + EditProtocolSpeciesTableModel.USE_RTP); initTable(table, columnModel, @@ -444,6 +450,11 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI addBooleanColumnToModel(columnModel, EditProtocolSpeciesTableModel.CALCIFY_SAMPLE_ENABLED, table); + addColumnToModel(columnModel, + RtpCellEditor.newEditor(ui), + new RtpCellRenderer(), + EditProtocolSpeciesTableModel.USE_RTP); + initTable(table, columnModel, speciesColumn, diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpButton.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpButton.java new file mode 100644 index 0000000..6a016dc --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpButton.java @@ -0,0 +1,74 @@ +package fr.ifremer.tutti.ui.swing.content.protocol.rtp; + +import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolSpeciesRowModel; +import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUI; +import jaxx.runtime.SwingUtil; + +import javax.swing.JToggleButton; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 14/01/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class RtpButton extends JToggleButton { + + private static final long serialVersionUID = 1L; + + protected final RtpEditorUI popup; + + public RtpButton(final EditProtocolUI ui) { + + setIcon(SwingUtil.createActionIcon("edit-attachment")); + setText(t("tutti.editRtp.button")); + setToolTipText(t("tutti.editRtp.button.tip")); + + popup = ui.getRtpEditorUI(); + + popup.addWindowListener(new WindowAdapter() { + + @Override + public void windowOpened(WindowEvent e) { + setSelected(true); + } + + @Override + public void windowClosing(WindowEvent e) { + setSelected(false); + } + + @Override + public void windowClosed(WindowEvent e) { + + setSelected(false); + } + }); + + addChangeListener(new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + if (isSelected()) { + if (!popup.isVisible()) { + SwingUtil.center(ui, popup); + popup.openEditor(); + } + } +// else { +// popup.closeEditor(); +// } + } + }); + + } + + public void init(EditProtocolSpeciesRowModel model) { + popup.setBean(model); + } + +} \ No newline at end of file diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpCellEditor.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpCellEditor.java new file mode 100644 index 0000000..0044160 --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpCellEditor.java @@ -0,0 +1,101 @@ +package fr.ifremer.tutti.ui.swing.content.protocol.rtp; + +import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolSpeciesRowModel; +import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolSpeciesTableModel; +import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUI; + +import javax.swing.AbstractCellEditor; +import javax.swing.JTable; +import javax.swing.border.LineBorder; +import javax.swing.event.CellEditorListener; +import javax.swing.event.ChangeEvent; +import javax.swing.table.TableCellEditor; +import java.awt.Color; +import java.awt.Component; +import java.util.EventObject; + +/** + * Created on 14/01/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class RtpCellEditor extends AbstractCellEditor implements TableCellEditor { + + private static final long serialVersionUID = 1L; + + public static TableCellEditor newEditor(EditProtocolUI ui) { + return new RtpCellEditor(ui); + } + + protected JTable table; + + protected EditProtocolSpeciesTableModel tableModel; + + protected Integer rowIndex; + + protected Integer columnIndex; + + protected final RtpButton editorButton; + + public RtpCellEditor(EditProtocolUI context) { + + this.editorButton = new RtpButton(context); + this.editorButton.setBorder(new LineBorder(Color.BLACK)); + addCellEditorListener(new CellEditorListener() { + @Override + public void editingStopped(ChangeEvent e) { + editorButton.setSelected(false); + } + + @Override + public void editingCanceled(ChangeEvent e) { + editorButton.setSelected(false); + } + }); + } + + @Override + public Component getTableCellEditorComponent(JTable table, + Object value, + boolean isSelected, + int row, + int column) { + this.table = table; + this.tableModel = (EditProtocolSpeciesTableModel) table.getModel(); + + rowIndex = row; + columnIndex = column; + + EditProtocolSpeciesRowModel model = tableModel.getEntry(row); + + editorButton.init(model); + + return editorButton; + } + + @Override + public boolean shouldSelectCell(EventObject anEvent) { + return false; + } + + @Override + public Object getCellEditorValue() { + + return true; + } + +// @Override +// public boolean stopCellEditing() { +// boolean b = super.stopCellEditing(); +// if (b) { +// editorButton.setBean(null); +// } +// return b; +// } +// +// @Override +// public void cancelCellEditing() { +// editorButton.setBean(null); +// super.cancelCellEditing(); +// } +} 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 new file mode 100644 index 0000000..a924aef --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpCellRenderer.java @@ -0,0 +1,91 @@ +package fr.ifremer.tutti.ui.swing.content.protocol.rtp; + +import jaxx.runtime.SwingUtil; + +import javax.swing.JComponent; +import javax.swing.JTable; +import javax.swing.UIManager; +import javax.swing.table.DefaultTableCellRenderer; +import java.awt.Color; +import java.awt.Font; + +import static org.nuiton.i18n.I18n.n; +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 14/01/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class RtpCellRenderer extends DefaultTableCellRenderer { + + public static final String TEXT_PATTERN = "<html><body>%s</body></html>"; + + private static final long serialVersionUID = 1L; + + private final String withoutRtp; + + private final String withRtp; + + private Font defaulfFont; + + private Font selectedFont; + + public RtpCellRenderer() { + setHorizontalAlignment(CENTER); + setIcon(SwingUtil.createActionIcon("edit-attachment")); + this.withoutRtp = n("tutti.editRtp.withoutRtp.tip"); + this.withRtp = n("tutti.editRtp.withRtp.tip"); + } + + @Override + protected void setValue(Object value) { + // do nothing + } + + @Override + public JComponent getTableCellRendererComponent(JTable table, + Object value, + boolean isSelected, + boolean hasFocus, + int row, + int column) { + + if (defaulfFont == null) { + defaulfFont = UIManager.getFont("Table.font"); + selectedFont = defaulfFont.deriveFont(Font.BOLD); + } + + boolean useRtp = (boolean) value; + + String toolTipTextValue; + String textValue; + if (!useRtp) { + + // use HTML to show the tooltip in italic + toolTipTextValue = "<i>" + t(withoutRtp) + "</i>"; + textValue = t(withoutRtp); + + + } else { + toolTipTextValue = t(withRtp); + textValue = t(withRtp); + + } + boolean editable = table.isCellEditable(row, column); + toolTipTextValue = String.format(TEXT_PATTERN, toolTipTextValue); + setEnabled(editable); + setText(textValue); + setToolTipText(toolTipTextValue); + setBackground(null); + setForeground(Color.BLACK); + + if (isSelected) { + setFont(selectedFont); + } else { + setFont(defaulfFont); + } + + return this; + } +} \ No newline at end of file diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUI.css b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUI.css new file mode 100644 index 0000000..f266278 --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUI.css @@ -0,0 +1,111 @@ + +NumberEditor { + autoPopup: {handler.getConfig().isAutoPopupNumberEditor()}; + showPopupButton: {handler.getConfig().isShowNumberEditorButton()}; + bean: {model}; + showReset: true; + numberType: {Float.class}; + _selectOnFocus: {true}; +} + +#rtpEditorDialog { + undecorated: true; + alwaysOnTop: true; +} + +#rtpMaleALabel { + text: "tutti.editRtp.field.rtpMaleA"; + toolTipText: "tutti.editRtp.field.rtpMaleA.tip"; + labelFor: {rtpMaleAField}; + _help: {"tutti.editRtp.field.rtpMaleA.help"}; +} + +#rtpMaleAField { + property:{RtpEditorUIModel.PROPERTY_RTP_MALE_A}; + numberValue: {model.getRtpMale().getA()};; + _help: {"tutti.editRtp.field.rtpMaleA.help"}; +} + +#rtpMaleBLabel { + text: "tutti.editRtp.field.rtpMaleB"; + toolTipText: "tutti.editRtp.field.rtpMaleB.tip"; + labelFor: {rtpMaleBField}; + _help: {"tutti.editRtp.field.rtpMaleB.help"}; +} + +#rtpMaleBField { + property:{RtpEditorUIModel.PROPERTY_RTP_MALE_B}; + numberValue: {model.getRtpMale().getB()};; + _help: {"tutti.editRtp.field.rtpMaleB.help"}; +} + +#rtpFemaleALabel { + text: "tutti.editRtp.field.rtpFemaleA"; + toolTipText: "tutti.editRtp.field.rtpFemaleA.tip"; + labelFor: {rtpFemaleAField}; + _help: {"tutti.editRtp.field.rtpFemaleA.help"}; +} + +#rtpFemaleAField { + property:{RtpEditorUIModel.PROPERTY_RTP_FEMALE_A}; + numberValue: {model.getRtpFemale().getA()};; + _help: {"tutti.editRtp.field.rtpFemaleA.help"}; +} + +#rtpFemaleBLabel { + text: "tutti.editRtp.field.rtpFemaleB"; + toolTipText: "tutti.editRtp.field.rtpFemaleB.tip"; + labelFor: {rtpFemaleBField}; + _help: {"tutti.editRtp.field.rtpFemaleB.help"}; +} + +#rtpFemaleBField { + property:{RtpEditorUIModel.PROPERTY_RTP_FEMALE_B}; + numberValue: {model.getRtpFemale().getB()};; + _help: {"tutti.editRtp.field.rtpFemaleB.help"}; +} + +#rtpUndefinedALabel { + text: "tutti.editRtp.field.rtpUndefinedA"; + toolTipText: "tutti.editRtp.field.rtpUndefinedA.tip"; + labelFor: {rtpUndefinedAField}; + _help: {"tutti.editRtp.field.rtpUndefinedA.help"}; +} + +#rtpUndefinedAField { + property:{RtpEditorUIModel.PROPERTY_RTP_UNDEFINED_A}; + numberValue: {model.getRtpUndefined().getA()};; + _help: {"tutti.editRtp.field.rtpUndefinedA.help"}; +} + +#rtpUndefinedBLabel { + text: "tutti.editRtp.field.rtpUndefinedB"; + toolTipText: "tutti.editRtp.field.rtpUndefinedB.tip"; + labelFor: {rtpUndefinedBField}; + _help: {"tutti.editRtp.field.rtpUndefinedB.help"}; +} + +#rtpUndefinedBField { + property:{RtpEditorUIModel.PROPERTY_RTP_UNDEFINED_B}; + numberValue: {model.getRtpUndefined().getB()};; + _help: {"tutti.editRtp.field.rtpUndefinedB.help"}; +} + +#saveButton { + actionIcon: save; + text: "tutti.editRtp.action.save"; + toolTipText: "tutti.editRtp.action.save.tip"; + i18nMnemonic: "tutti.editRtp.action.save.mnemonic"; + enabled: {model.isModify() && model.isValid()}; + _simpleAction: {fr.ifremer.tutti.ui.swing.content.protocol.rtp.actions.SaveRtpAction.class}; + _help: {"tutti.editRtp.action.save.help"}; +} + +#cancelButton { + actionIcon: cancel; + text: "tutti.editRtp.action.cancel"; + toolTipText: "tutti.editRtp.action.cancel.tip"; + i18nMnemonic: "tutti.editRtp.action.cancel.mnemonic"; + _simpleAction: {fr.ifremer.tutti.ui.swing.content.protocol.rtp.actions.CancelRtpAction.class}; + _help: {"tutti.editRtp.action.cancel.help"}; +} \ No newline at end of file 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 new file mode 100644 index 0000000..9324c25 --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUI.jaxx @@ -0,0 +1,148 @@ +<!-- + #%L + Tutti :: UI + %% + Copyright (C) 2012 - 2014 Ifremer + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this program. If not, see + <http://www.gnu.org/licenses/gpl-3.0.html>. + #L% + --> +<JDialog id='rtpEditorDialog' layout='{new BorderLayout()}' modal="true" + implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<RtpEditorUIModel, RtpEditorUIHandler>'> + + <import> + + fr.ifremer.tutti.ui.swing.TuttiHelpBroker + fr.ifremer.tutti.ui.swing.TuttiUIContext + fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolSpeciesRowModel + fr.ifremer.tutti.ui.swing.util.TuttiUI + fr.ifremer.tutti.ui.swing.util.TuttiUIUtil + + org.jdesktop.swingx.JXTitledPanel + org.nuiton.jaxx.widgets.number.NumberEditor + + javax.swing.JComponent + </import> + + <script><![CDATA[ + +public RtpEditorUI(TuttiUI<?,?> parentUI) { + super(parentUI.getHandler().getContext().getMainUI()); + TuttiUIUtil.setParentUI(this, parentUI); +} + +public void setBean(EditProtocolSpeciesRowModel bean) { handler.setBean(bean); } + +public void openEditor() { handler.openEditor(); } + +public void closeEditor() { handler.closeEditor(); } + + ]]></script> + + <RtpEditorUIModel id="model" initializer='getContextValue(RtpEditorUIModel.class)'/> + + <TuttiHelpBroker id='broker' constructorParams='"tutti.editRtp.help"'/> + + <BeanValidator id='validator' bean='model' uiClass='jaxx.runtime.validator.swing.ui.ImageValidationUI'> + <field name='rtpMaleA' component='rtpMaleAField'/> + <field name='rtpMaleB' component='rtpMaleBField'/> + <field name='rtpFemaleA' component='rtpFemaleAField'/> + <field name='rtpFemaleB' component='rtpFemaleBField'/> + <field name='rtpUndefinedA' component='rtpUndefinedAField'/> + <field name='rtpUndefinedB' component='rtpUndefinedBField'/> + </BeanValidator> + + <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"))}'> + <Table id='maleAPanel' fill='both'> + <row> + <cell> + <JLabel id='rtpMaleALabel'/> + </cell> + <cell weightx='1'> + <NumberEditor id='rtpMaleAField'/> + </cell> + </row> + </Table> + <Table id='maleBPanel' fill='both'> + <row> + <cell> + <JLabel id='rtpMaleBLabel'/> + </cell> + <cell weightx='1'> + <NumberEditor id='rtpMaleBField'/> + </cell> + </row> + </Table> + </JPanel> + + <JPanel id="femalePanel" layout="{new GridLayout(1, 2)}" + border='{new TitledBorder(t("tutti.editRtp.femalePanel"))}'> + <Table id='femaleAPanel' fill='both'> + <row> + <cell> + <JLabel id='rtpFemaleALabel'/> + </cell> + <cell weightx='1'> + <NumberEditor id='rtpFemaleAField'/> + </cell> + </row> + </Table> + <Table id='femaleBPanel' fill='both'> + <row> + <cell> + <JLabel id='rtpFemaleBLabel'/> + </cell> + <cell weightx='1'> + <NumberEditor id='rtpFemaleBField'/> + </cell> + </row> + </Table> + </JPanel> + + <JPanel id="undefinedPanel" layout="{new GridLayout(1, 2)}" + border='{new TitledBorder(t("tutti.editRtp.undefinedPanel"))}'> + <Table id='undefinedAPanel' fill='both'> + <row> + <cell> + <JLabel id='rtpUndefinedALabel'/> + </cell> + <cell weightx='1'> + <NumberEditor id='rtpUndefinedAField'/> + </cell> + </row> + </Table> + <Table id='undefinedBPanel' fill='both'> + <row> + <cell> + <JLabel id='rtpUndefinedBLabel'/> + </cell> + <cell weightx='1'> + <NumberEditor id='rtpUndefinedBField'/> + </cell> + </row> + </Table> + </JPanel> + </JPanel> + + </JXTitledPanel> + + <JPanel id="actions" constraints='BorderLayout.SOUTH' layout="{new GridLayout(1, 2)}"> + <JButton id='cancelButton'/> + <JButton id='saveButton'/> + </JPanel> + +</JDialog> 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 new file mode 100644 index 0000000..ebd800e --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUIHandler.java @@ -0,0 +1,85 @@ +package fr.ifremer.tutti.ui.swing.content.protocol.rtp; + +import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolSpeciesRowModel; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; +import jaxx.runtime.validator.swing.SwingValidator; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import javax.swing.JComponent; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 14/01/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class RtpEditorUIHandler extends AbstractTuttiUIHandler<RtpEditorUIModel, RtpEditorUI> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(RtpEditorUIHandler.class); + + @Override + public void beforeInit(RtpEditorUI ui) { + super.beforeInit(ui); + + RtpEditorUIModel model = new RtpEditorUIModel(); + + listModelIsModify(model); + + this.ui.setContextValue(model); + + } + + @Override + public void afterInit(RtpEditorUI ui) { + + super.initUI(ui); + + ui.pack(); + ui.setResizable(true); + + } + + @Override + protected JComponent getComponentToFocus() { + return getUI().getRtpMaleAField(); + } + + @Override + public void onCloseUI() { + ui.dispose(); + } + + @Override + public SwingValidator<RtpEditorUIModel> getValidator() { + return ui.getValidator(); + } + + public void setBean(EditProtocolSpeciesRowModel rowModel) { + + 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)); + + getModel().setRowModel(rowModel); + + } + + public void openEditor() { + ui.setVisible(true); + } + + public void closeEditor() { + ui.dispose(); + } + +} \ No newline at end of file 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 new file mode 100644 index 0000000..25a95b9 --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUIModel.java @@ -0,0 +1,126 @@ +package fr.ifremer.tutti.ui.swing.content.protocol.rtp; + +import fr.ifremer.tutti.persistence.entities.protocol.Rtp; +import fr.ifremer.tutti.persistence.entities.protocol.RtpBean; +import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolSpeciesRowModel; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; + +/** + * Created on 14/01/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class RtpEditorUIModel extends AbstractTuttiBeanUIModel<EditProtocolSpeciesRowModel, RtpEditorUIModel> { + + public static final String PROPERTY_RTP_MALE_A = "rtpMaleA"; + public static final String PROPERTY_RTP_MALE_B = "rtpMaleB"; + public static final String PROPERTY_RTP_FEMALE_A = "rtpFemaleA"; + public static final String PROPERTY_RTP_FEMALE_B = "rtpFemaleB"; + public static final String PROPERTY_RTP_UNDEFINED_A = "rtpUndefinedA"; + public static final String PROPERTY_RTP_UNDEFINED_B = "rtpUndefinedB"; + + protected final Rtp rtpMale = new RtpBean(); + + protected final Rtp rtpFemale = new RtpBean(); + + protected final Rtp rtpUndefined = new RtpBean(); + + protected EditProtocolSpeciesRowModel rowModel; + + public RtpEditorUIModel() { + super(null, null); + } + + @Override + protected EditProtocolSpeciesRowModel newEntity() { + return null; + } + + public Rtp getRtpMale() { + return rtpMale; + } + + public Rtp getRtpUndefined() { + return rtpUndefined; + } + + public Rtp getRtpFemale() { + return rtpFemale; + } + + public Float getRtpMaleA() { + return rtpMale.getA(); + } + + public void setRtpMaleA(Float a) { + rtpMale.setA(a); + firePropertyChanged(PROPERTY_RTP_MALE_A, null, a); + } + + public Float getRtpMaleB() { + return rtpMale.getB(); + } + + public void setRtpMaleB(Float b) { + rtpMale.setB(b); + firePropertyChanged(PROPERTY_RTP_MALE_B, null, b); + } + + public Float getRtpFemaleA() { + return rtpFemale.getA(); + } + + public void setRtpFemaleA(Float a) { + rtpFemale.setA(a); + firePropertyChanged(PROPERTY_RTP_FEMALE_A, null, a); + } + + public Float getRtpFemaleB() { + return rtpFemale.getB(); + } + + public void setRtpFemaleB(Float b) { + rtpFemale.setB(b); + firePropertyChanged(PROPERTY_RTP_FEMALE_B, null, b); + } + + public Float getRtpUndefinedA() { + return rtpUndefined.getA(); + } + + public void setRtpUndefinedA(Float a) { + rtpUndefined.setA(a); + firePropertyChanged(PROPERTY_RTP_UNDEFINED_A, null, a); + } + + public Float getRtpUndefinedB() { + return rtpUndefined.getB(); + } + + public void setRtpUndefinedB(Float b) { + rtpUndefined.setB(b); + firePropertyChanged(PROPERTY_RTP_UNDEFINED_B, null, b); + } + + public void setRowModel(EditProtocolSpeciesRowModel rowModel) { + + this.rowModel = rowModel; + + Rtp rtpMale = rowModel.getRtpMale(); + setRtpMaleA(rtpMale == null ? null : rtpMale.getA()); + setRtpMaleB(rtpMale == null ? null : rtpMale.getB()); + + Rtp rtpFemale = rowModel.getRtpFemale(); + setRtpFemaleA(rtpFemale == null ? null : rtpFemale.getA()); + setRtpFemaleB(rtpFemale == null ? null : rtpFemale.getB()); + + Rtp rtpUndefined = rowModel.getRtpUndefined(); + setRtpUndefinedA(rtpUndefined == null ? null : rtpUndefined.getA()); + setRtpUndefinedB(rtpUndefined == null ? null : rtpUndefined.getB()); + + } + + public EditProtocolSpeciesRowModel getRowModel() { + return rowModel; + } +} \ No newline at end of file diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/actions/CancelRtpAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/actions/CancelRtpAction.java new file mode 100644 index 0000000..ef4b50c --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/actions/CancelRtpAction.java @@ -0,0 +1,23 @@ +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.util.actions.SimpleActionSupport; + +/** + * Created on 14/01/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class CancelRtpAction extends SimpleActionSupport<RtpEditorUI> { + + private static final long serialVersionUID = 1L; + + public CancelRtpAction(RtpEditorUI ui) { + super(ui); + } + + @Override + protected void onActionPerformed(RtpEditorUI ui) { + ui.dispose(); + } +} \ No newline at end of file diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/actions/SaveRtpAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/actions/SaveRtpAction.java new file mode 100644 index 0000000..a2082b4 --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/actions/SaveRtpAction.java @@ -0,0 +1,36 @@ +package fr.ifremer.tutti.ui.swing.content.protocol.rtp.actions; + +import fr.ifremer.tutti.persistence.entities.protocol.Rtps; +import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolSpeciesRowModel; +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; + +/** + * Created on 14/01/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class SaveRtpAction extends SimpleActionSupport<RtpEditorUI> { + + private static final long serialVersionUID = 1L; + + public SaveRtpAction(RtpEditorUI ui) { + super(ui); + } + + @Override + protected void onActionPerformed(RtpEditorUI ui) { + + RtpEditorUIModel model = ui.getModel(); + + EditProtocolSpeciesRowModel rowModel = model.getRowModel(); + + rowModel.setRtpMale(Rtps.newRtp(model.getRtpMale())); + rowModel.setRtpFemale(Rtps.newRtp(model.getRtpFemale())); + rowModel.setRtpUndefined(Rtps.newRtp(model.getRtpUndefined())); + + ui.dispose(); + + } +} \ No newline at end of file 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 5fbb92f..996ff6c 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,9 @@ application.action.create.error= application.error.ui.business.warning= jaxx.application.action.create.error= +rtpEditor.femalePanel= +rtpEditor.malePanel= +rtpEditor.undefinedPanel= swing.error.cannot.open.file= tutti.about.bottomText= tutti.about.message= @@ -1095,10 +1098,20 @@ tutti.editProtocol.table.header.operationFields.field= tutti.editProtocol.table.header.operationFields.field.tip= tutti.editProtocol.table.header.operationFields.importFileColumn= tutti.editProtocol.table.header.operationFields.importFileColumn.tip= +tutti.editProtocol.table.header.rtpFemaleA= +tutti.editProtocol.table.header.rtpFemaleA.tip= +tutti.editProtocol.table.header.rtpFemaleB= +tutti.editProtocol.table.header.rtpFemaleB.tip= +tutti.editProtocol.table.header.rtpMaleA= +tutti.editProtocol.table.header.rtpMaleA.tip= +tutti.editProtocol.table.header.rtpMaleB= +tutti.editProtocol.table.header.rtpMaleB.tip= tutti.editProtocol.table.header.speciesReferenceTaxonId= tutti.editProtocol.table.header.speciesReferenceTaxonId.tip= tutti.editProtocol.table.header.speciesSurveyCode= tutti.editProtocol.table.header.speciesSurveyCode.tip= +tutti.editProtocol.table.header.useRtp= +tutti.editProtocol.table.header.useRtp.tip= tutti.editProtocol.table.header.weight= tutti.editProtocol.table.header.weight.tip= tutti.editProtocol.title.choose.benthosExportFile= @@ -1112,6 +1125,33 @@ tutti.editProtocol.title.edit.protocol= tutti.editProtocol.warn.clean= tutti.editProtocol.warn.clone= tutti.editProtocol.warn.import= +tutti.editRtp.action.cancel= +tutti.editRtp.action.cancel.mnemonic= +tutti.editRtp.action.cancel.tip= +tutti.editRtp.action.save= +tutti.editRtp.action.save.mnemonic= +tutti.editRtp.action.save.tip= +tutti.editRtp.action.tip= +tutti.editRtp.button= +tutti.editRtp.button.tip= +tutti.editRtp.femalePanel= +tutti.editRtp.field.rtpFemaleA= +tutti.editRtp.field.rtpFemaleA.tip= +tutti.editRtp.field.rtpFemaleB= +tutti.editRtp.field.rtpFemaleB.tip= +tutti.editRtp.field.rtpMaleA= +tutti.editRtp.field.rtpMaleA.tip= +tutti.editRtp.field.rtpMaleB= +tutti.editRtp.field.rtpMaleB.tip= +tutti.editRtp.field.rtpUndefinedA= +tutti.editRtp.field.rtpUndefinedA.tip= +tutti.editRtp.field.rtpUndefinedB= +tutti.editRtp.field.rtpUndefinedB.tip= +tutti.editRtp.malePanel= +tutti.editRtp.simpleText= +tutti.editRtp.undefinedPanel= +tutti.editRtp.withRtp.tip= +tutti.editRtp.withoutRtp.tip= tutti.editSampleCategoryModel.action.close= tutti.editSampleCategoryModel.action.close.mnemonic= tutti.editSampleCategoryModel.action.close.tip= @@ -2020,6 +2060,7 @@ tutti.report.title= tutti.report.title.choose.saveReportFile= tutti.resetCruise.action.cruiseReloaded= tutti.resetProgram.action.programReloaded= +tutti.rtpEdit.title= tutti.selectBenthos.title= tutti.selectCruise.action.chooseCruiseExportFile= tutti.selectCruise.action.chooseProgramExportFile= 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 c167ced..6139b0f 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 @@ -1058,6 +1058,8 @@ tutti.editProtocol.table.header.speciesReferenceTaxonId=Espèce tutti.editProtocol.table.header.speciesReferenceTaxonId.tip=Code Rubin – Nom scientifique tutti.editProtocol.table.header.speciesSurveyCode=Code campagne tutti.editProtocol.table.header.speciesSurveyCode.tip=Code campagne (non synchronisable dans Harmonie) +tutti.editProtocol.table.header.useRtp=RTP +tutti.editProtocol.table.header.useRtp.tip=Relation taille-poids tutti.editProtocol.table.header.weight=Pesée tutti.editProtocol.table.header.weight.tip=L'espèce doit elle être pesée ? tutti.editProtocol.title.choose.benthosExportFile=Exporter les benthos @@ -1071,6 +1073,31 @@ tutti.editProtocol.title.edit.protocol=Éditer un protocole de saisie existant tutti.editProtocol.warn.clean=Des catégories non reconnues ont été supprimées du protocole, ces modifications ne seront sauvegardées que lorsque vous cliquerez sur le bouton "Enregistrer". tutti.editProtocol.warn.clone=Le protocole que vous venez de cloner ne sera sauvegardé que lorsque vous cliquerez sur le bouton "Enregistrer". tutti.editProtocol.warn.import=Le protocole que vous venez d'importer ne sera sauvegardé que lorsque vous cliquerez sur le bouton "Enregistrer". +tutti.editRtp.action.cancel=Annuler +tutti.editRtp.action.cancel.mnemonic=A +tutti.editRtp.action.cancel.tip=Annuler l'édition des RTP +tutti.editRtp.action.save=Enregistrer +tutti.editRtp.action.save.mnemonic=E +tutti.editRtp.action.save.tip=Enregister les RTP +tutti.editRtp.button=RTP +tutti.editRtp.button.tip=Éditer les RTP de l'espèce +tutti.editRtp.femalePanel=Femelle +tutti.editRtp.field.rtpFemaleA=A +tutti.editRtp.field.rtpFemaleA.tip=Paramètre A +tutti.editRtp.field.rtpFemaleB=B +tutti.editRtp.field.rtpFemaleB.tip=Paramètre B +tutti.editRtp.field.rtpMaleA=A +tutti.editRtp.field.rtpMaleA.tip=Paramètre A +tutti.editRtp.field.rtpMaleB=B +tutti.editRtp.field.rtpMaleB.tip=Paramètre B +tutti.editRtp.field.rtpUndefinedA=A +tutti.editRtp.field.rtpUndefinedA.tip=Paramètre A +tutti.editRtp.field.rtpUndefinedB=B +tutti.editRtp.field.rtpUndefinedB.tip=Paramètre B +tutti.editRtp.malePanel=Male +tutti.editRtp.undefinedPanel=Sexe inconnu +tutti.editRtp.withRtp.tip=RTP renseignés +tutti.editRtp.withoutRtp.tip=RTP non renseignés tutti.editSampleCategoryModel.action.close=Fermer tutti.editSampleCategoryModel.action.close.mnemonic=F tutti.editSampleCategoryModel.action.close.tip=Fermer l'édition des catégories @@ -1886,6 +1913,7 @@ tutti.report.title=Rapports tutti.report.title.choose.saveReportFile=Enregistrer le rapport généré tutti.resetCruise.action.cruiseReloaded=<html><body>La campagne <strong>%s</strong> est rechargée</body></html>. tutti.resetProgram.action.programReloaded=<html><body>Le programme <strong>%s</strong> est rechargé</body></html>. +tutti.rtpEdit.title=Édition des relations taille-poids de l'espèce %s tutti.selectBenthos.title=Choisissez une espèce du benthos tutti.selectCruise.action.chooseCruiseExportFile=Exporter tutti.selectCruise.action.chooseProgramExportFile=Exporter -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm