This is an automated email from the git hooks/post-receive script. New commit to branch feature/8013 in repository tutti. See http://git.codelutin.com/tutti.git commit 33c8b3ea3ea5ab0c0b926a905f5f5130aebd47e0 Author: Kevin Morin <morin@codelutin.com> Date: Mon Feb 22 18:07:53 2016 +0100 3. ajouter colonne « observations individuelles ». Cette case ne peut être cochée que si « méthode de mensuration » est renseignée refs #8013 --- .../src/main/xmi/tutti-persistence.zargo | Bin 62059 -> 62109 bytes .../protocol/EditProtocolSpeciesRowModel.java | 14 ++++++ .../protocol/EditProtocolSpeciesTableModel.java | 7 ++- .../content/protocol/EditProtocolUIHandler.java | 56 +++++++++++++++++++-- .../resources/i18n/tutti-ui-swing_en_GB.properties | 2 + .../resources/i18n/tutti-ui-swing_fr_FR.properties | 2 + 6 files changed, 77 insertions(+), 4 deletions(-) diff --git a/tutti-persistence/src/main/xmi/tutti-persistence.zargo b/tutti-persistence/src/main/xmi/tutti-persistence.zargo index 71c1af7..350d894 100644 Binary files a/tutti-persistence/src/main/xmi/tutti-persistence.zargo and b/tutti-persistence/src/main/xmi/tutti-persistence.zargo differ 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 d087790..f53149f 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 @@ -73,6 +73,8 @@ public class EditProtocolSpeciesRowModel extends AbstractTuttiBeanUIModel<Specie protected List<Integer> mandatorySampleCategoryId; + protected boolean individualObservationEnabled; + protected Rtp rtpMale; protected Rtp rtpFemale; @@ -263,6 +265,18 @@ public class EditProtocolSpeciesRowModel extends AbstractTuttiBeanUIModel<Specie firePropertyChange(PROPERTY_MANDATORY_SAMPLE_CATEGORY_ID, null, mandatorySampleCategoryId); } + @Override + public boolean isIndividualObservationEnabled() { + return individualObservationEnabled; + } + + @Override + public void setIndividualObservationEnabled(boolean individualObservationEnabled) { + Object oldValue = isIndividualObservationEnabled(); + this.individualObservationEnabled = individualObservationEnabled; + firePropertyChange(PROPERTY_INDIVIDUAL_OBSERVATION_ENABLED, oldValue, individualObservationEnabled); + } + public boolean isUseRtp() { return withRtpFemale() && withRtpMale() && withRtpUndefined(); } 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 f7d85e3..daefffa 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 @@ -71,6 +71,11 @@ public class EditProtocolSpeciesTableModel extends AbstractApplicationTableModel n("tutti.editProtocol.table.header.calcifySample"), n("tutti.editProtocol.table.header.calcifySample.tip")); + public static final ColumnIdentifier<EditProtocolSpeciesRowModel> INDIVIDUAL_OBSERVATION_ENABLED = ColumnIdentifier.newId( + EditProtocolSpeciesRowModel.PROPERTY_INDIVIDUAL_OBSERVATION_ENABLED, + n("tutti.editProtocol.table.header.individualObservation"), + n("tutti.editProtocol.table.header.individualObservation.tip")); + public static final ColumnIdentifier<EditProtocolSpeciesRowModel> USE_RTP = ColumnIdentifier.newId( EditProtocolSpeciesRowModel.PROPERTY_USE_RTP, n("tutti.editProtocol.table.header.useRtp"), @@ -148,7 +153,7 @@ public class EditProtocolSpeciesTableModel extends AbstractApplicationTableModel propertyName); if (result) { - if (USE_RTP.equals(propertyName)) { + if (USE_RTP.equals(propertyName) || INDIVIDUAL_OBSERVATION_ENABLED.equals(propertyName)) { // must have filled a species to edit this column EditProtocolSpeciesRowModel entry = getEntry(rowIndex); 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 1783f92..2e41a1e 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 @@ -87,10 +87,13 @@ import javax.swing.JComponent; import javax.swing.JTabbedPane; import javax.swing.JTable; import javax.swing.ListSelectionModel; +import javax.swing.event.CellEditorListener; +import javax.swing.event.ChangeEvent; import javax.swing.event.ListSelectionListener; import javax.swing.event.TableModelEvent; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.JTableHeader; +import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumnModel; import java.awt.Color; import java.awt.Component; @@ -377,7 +380,7 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI EditProtocolSpeciesTableModel.SURVEY_CODE_ID); speciesSurveyCodeColumn.setSortable(true); - addLengthClassesColumnToModel(columnModel, model.getLengthClassesPmfmId()); + addLengthClassesColumnToModel(columnModel, model.getLengthClassesPmfmId(), table); addBooleanColumnToModel(columnModel, EditProtocolSpeciesTableModel.WEIGHT_ENABLED, table); addBooleanColumnToModel(columnModel, EditProtocolSpeciesTableModel.COUNT_IF_NO_FREQUENCY_ENABLED, table); @@ -400,6 +403,9 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI } addBooleanColumnToModel(columnModel, EditProtocolSpeciesTableModel.CALCIFY_SAMPLE_ENABLED, table); + + addIndividualObservationColumnToModel(table, columnModel); + addColumnToModel(columnModel, RtpCellEditor.newEditor(ui), new RtpCellRenderer(), @@ -438,7 +444,7 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI EditProtocolSpeciesTableModel.SURVEY_CODE_ID); speciesSurveyCodeColumn.setSortable(true); - addLengthClassesColumnToModel(columnModel, model.getLengthClassesPmfmId()); + addLengthClassesColumnToModel(columnModel, model.getLengthClassesPmfmId(), table); addBooleanColumnToModel(columnModel, EditProtocolSpeciesTableModel.WEIGHT_ENABLED, table); addBooleanColumnToModel(columnModel, EditProtocolSpeciesTableModel.COUNT_IF_NO_FREQUENCY_ENABLED, table); @@ -462,6 +468,8 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI addBooleanColumnToModel(columnModel, EditProtocolSpeciesTableModel.CALCIFY_SAMPLE_ENABLED, table); + addIndividualObservationColumnToModel(table, columnModel); + addColumnToModel(columnModel, RtpCellEditor.newEditor(ui), new RtpCellRenderer(), @@ -679,6 +687,28 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI } + protected void addIndividualObservationColumnToModel(JXTable table, DefaultTableColumnModelExt columnModel) { + TableCellRenderer renderer = new TableCellRenderer() { + + TableCellRenderer delegate = table.getDefaultRenderer(Boolean.class); + + @Override + public Component getTableCellRendererComponent(JTable table, + Object value, + boolean isSelected, + boolean hasFocus, + int row, int column) { + Component result = delegate.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); + result.setEnabled(table.isCellEditable(row, column)); + return result; + } + }; + addColumnToModel(columnModel, + table.getDefaultEditor(Boolean.class), + renderer, + EditProtocolSpeciesTableModel.INDIVIDUAL_OBSERVATION_ENABLED); + } + protected void initAvailableZonesModel() { PersistenceService persistenceService = getPersistenceService(); @@ -1040,7 +1070,8 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI } protected void addLengthClassesColumnToModel(TableColumnModel model, - List<String> selectedIds) { + List<String> selectedIds, + JTable table) { Decorator<Caracteristic> decorator = getDecorator(Caracteristic.class, null); @@ -1057,6 +1088,25 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI ObjectToStringConverter converter = BeanUIUtil.newDecoratedObjectToStringConverter(decorator); BeanUIUtil.decorate(comboBox, converter); ComboBoxCellEditor editor = new ComboBoxCellEditor(comboBox); + editor.addCellEditorListener(new CellEditorListener() { + + @Override + public void editingStopped(ChangeEvent e) { + EditProtocolSpeciesTableModel tableModel = (EditProtocolSpeciesTableModel) table.getModel(); + EditProtocolSpeciesRowModel selectedRow = tableModel.getRows().get(table.convertRowIndexToModel(table.getSelectedRow())); + Caracteristic lengthStepPmfm = selectedRow.getLengthStepPmfm(); + boolean withLengthStepPmfm = lengthStepPmfm != null; + selectedRow.setCountIfNoFrequencyEnabled(withLengthStepPmfm); + if (!withLengthStepPmfm) { + selectedRow.setIndividualObservationEnabled(false); + } + } + + @Override + public void editingCanceled(ChangeEvent e) { + + } + }); addColumnToModel(model, editor, 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 9facbd3..95fe468 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 @@ -1166,6 +1166,8 @@ tutti.editProtocol.table.header.caracteristics.type= tutti.editProtocol.table.header.caracteristics.type.tip= tutti.editProtocol.table.header.countIfNoFrequency= tutti.editProtocol.table.header.countIfNoFrequency.tip= +tutti.editProtocol.table.header.individualObservation= +tutti.editProtocol.table.header.individualObservation.tip= tutti.editProtocol.table.header.lengthStep= tutti.editProtocol.table.header.lengthStep.tip= tutti.editProtocol.table.header.operationFields.field= 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 d20fb7d..0d2c2ec 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 @@ -1113,6 +1113,8 @@ tutti.editProtocol.table.header.caracteristics.type=Onglet tutti.editProtocol.table.header.caracteristics.type.tip=Onglet tutti.editProtocol.table.header.countIfNoFrequency=Dénombrement tutti.editProtocol.table.header.countIfNoFrequency.tip=L'espèce doit elle être dénombrée ? +tutti.editProtocol.table.header.individualObservation=Obs. indiv. +tutti.editProtocol.table.header.individualObservation.tip=L'espèce accepte-t-elle des observations individuelles ? tutti.editProtocol.table.header.lengthStep=Mode de mensuration tutti.editProtocol.table.header.lengthStep.tip=Comment mesurer les classes de taille ? (si vide alors pas de mesure) tutti.editProtocol.table.header.operationFields.field=Champ -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.