branch feature/8034 created (now 7ced401)
This is an automated email from the git hooks/post-receive script. New change to branch feature/8034 in repository tutti. See http://git.codelutin.com/tutti.git at 7ced401 Suppression de plusieurs espèces (See #8034) This branch includes the following new commits: new 7ced401 Suppression de plusieurs espèces (See #8034) 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 7ced4017bea9423cbae2a9e7c84f8896d486a87e Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Mar 1 20:03:30 2016 +0100 Suppression de plusieurs espèces (See #8034) -- 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/8034 in repository tutti. See http://git.codelutin.com/tutti.git commit 7ced4017bea9423cbae2a9e7c84f8896d486a87e Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Mar 1 20:03:30 2016 +0100 Suppression de plusieurs espèces (See #8034) --- .../CalcifiedPiecesSamplingEditorUI.jcss | 2 +- .../CalcifiedPiecesSamplingEditorUIHandler.java | 49 ++++++++++++---- .../actions/DeleteSpeciesAction.java | 65 +++++++++++++++++----- .../resources/i18n/tutti-ui-swing_en_GB.properties | 8 +++ .../resources/i18n/tutti-ui-swing_fr_FR.properties | 12 ++-- 5 files changed, 106 insertions(+), 30 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/CalcifiedPiecesSamplingEditorUI.jcss b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/CalcifiedPiecesSamplingEditorUI.jcss index cf1bf8d..4ff73b5 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/CalcifiedPiecesSamplingEditorUI.jcss +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/CalcifiedPiecesSamplingEditorUI.jcss @@ -60,5 +60,5 @@ BeanFilterableComboBox { } #cpsTable { - selectionMode: {javax.swing.ListSelectionModel.SINGLE_SELECTION}; + selectionMode: {javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION}; } \ No newline at end of file diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/CalcifiedPiecesSamplingEditorUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/CalcifiedPiecesSamplingEditorUIHandler.java index 879c675..38bb1e6 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/CalcifiedPiecesSamplingEditorUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/CalcifiedPiecesSamplingEditorUIHandler.java @@ -41,6 +41,7 @@ import org.jdesktop.swingx.table.TableColumnExt; import javax.swing.JComponent; import javax.swing.JLabel; +import javax.swing.JMenuItem; import javax.swing.SwingConstants; import javax.swing.border.LineBorder; import javax.swing.event.CellEditorListener; @@ -57,6 +58,8 @@ import java.util.Optional; import java.util.TreeSet; import java.util.stream.Collectors; +import static org.nuiton.i18n.I18n.t; + /** * @author Kevin Morin (Code Lutin) * @since 4.5 @@ -270,26 +273,52 @@ public class CalcifiedPiecesSamplingEditorUIHandler extends AbstractTuttiUIHandl protected void beforeOpenPopup(int modelRowIndex, int modelColumnIndex) { super.beforeOpenPopup(modelRowIndex, modelColumnIndex); - boolean rowSelected = modelRowIndex >= 0 && modelRowIndex < getModel().getCpsRows().size(); - boolean splitEnabled = rowSelected; - boolean rowDeletable = rowSelected; + boolean speciesDeletable; + boolean splitEnabled; + boolean rowDeletable; + + JMenuItem deleteSpeciesMenu = getUI().getDeleteSpeciesMenu(); + + int selectedRowCount = getUI().getCpsTable().getSelectedRowCount(); + + if (selectedRowCount > 1) { + + // multi sélection + speciesDeletable = true; + splitEnabled = false; + rowDeletable = false; + + deleteSpeciesMenu.setText(t("tutti.editCps.deleteMoreThanOneSpecies")); + deleteSpeciesMenu.setToolTipText(t("tutti.editCps.deleteMoreThanOneSpecies.tip")); - if (rowSelected) { + } else { - CalcifiedPiecesSamplingEditorRowModel selectedRow = getModel().getCpsRows().get(modelRowIndex); + speciesDeletable = modelRowIndex >= 0 && modelRowIndex < getModel().getCpsRows().size(); + splitEnabled = speciesDeletable; + rowDeletable = speciesDeletable; + + if (speciesDeletable) { + + CalcifiedPiecesSamplingEditorRowModel selectedRow = getModel().getCpsRows().get(modelRowIndex); + + Integer minSize = selectedRow.getMinSize(); + + splitEnabled = selectedRow.getMaxSize() == null + || selectedRow.getMaxSize() - minSize > 1; + rowDeletable = minSize > 0; + + } - Integer minSize = selectedRow.getMinSize(); + deleteSpeciesMenu.setText(t("tutti.editCps.deleteOneSpecies")); + deleteSpeciesMenu.setToolTipText(t("tutti.editCps.deleteOneSpecies.tip")); - splitEnabled = selectedRow.getMaxSize() == null - || selectedRow.getMaxSize() - minSize > 1; - rowDeletable = minSize > 0; } getUI().getSplitCpsRowMenu().setEnabled(splitEnabled); getUI().getDeleteCpsRowMenu().setEnabled(rowDeletable); - getUI().getDeleteSpeciesMenu().setEnabled(rowSelected); + deleteSpeciesMenu.setEnabled(speciesDeletable); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/actions/DeleteSpeciesAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/actions/DeleteSpeciesAction.java index 535822f..78c4dcb 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/actions/DeleteSpeciesAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/actions/DeleteSpeciesAction.java @@ -32,9 +32,12 @@ import fr.ifremer.tutti.ui.swing.content.protocol.calcifiedpiecessampling.Calcif import fr.ifremer.tutti.ui.swing.content.protocol.calcifiedpiecessampling.CalcifiedPiecesSamplingEditorUI; import fr.ifremer.tutti.ui.swing.util.actions.SimpleActionSupport; import org.jdesktop.swingx.JXTable; +import org.nuiton.decorator.Decorator; import javax.swing.JOptionPane; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import java.util.TreeSet; import java.util.stream.Collectors; @@ -56,35 +59,67 @@ public class DeleteSpeciesAction extends SimpleActionSupport<CalcifiedPiecesSamp JXTable cpsTable = ui.getCpsTable(); CalcifiedPiecesSamplingEditorTableModel tableModel = (CalcifiedPiecesSamplingEditorTableModel) cpsTable.getModel(); - int selectedRow = cpsTable.getSelectedRow(); + int[] selectedRows = cpsTable.getSelectedRows(); List<CalcifiedPiecesSamplingEditorRowModel> cpsRows = ui.getModel().getCpsRows(); - CalcifiedPiecesSamplingEditorRowModel row = cpsRows.get(selectedRow); + Set<Species> speciesToDelete = new LinkedHashSet<>(); + for (int selectedRow : selectedRows) { - EditProtocolSpeciesRowModel speciesToDelete = row.getProtocolSpecies(); - String decoratedSpecies = ui.getHandler().getDecorator(Species.class, DecoratorService.WITH_SURVEY_CODE) - .toString(speciesToDelete.getSpecies()); - int confirmDeletion = JOptionPane.showConfirmDialog(ui, - t("tutti.editCps.deleteSpecies.message", decoratedSpecies), - t("tutti.editCps.deleteSpecies.title"), + CalcifiedPiecesSamplingEditorRowModel row = cpsRows.get(selectedRow); + EditProtocolSpeciesRowModel speciesRowToDelete = row.getProtocolSpecies(); + speciesToDelete.add(speciesRowToDelete.getSpecies()); + + } + + int confirmDeletion; + + Decorator<Species> speciesDecorator = ui.getHandler().getDecorator(Species.class, DecoratorService.WITH_SURVEY_CODE); + + if (speciesToDelete.size() == 1) { + + confirmDeletion = JOptionPane.showConfirmDialog(ui, + t("tutti.editCps.deleteOneSpecies.message", speciesDecorator.toString(speciesToDelete.iterator().next())), + t("tutti.editCps.deleteOneSpecies.title"), + JOptionPane.YES_NO_OPTION, + JOptionPane.QUESTION_MESSAGE); + } else { + + StringBuilder builder = new StringBuilder(); + for (Species species : speciesToDelete) { + builder.append("<li>").append(speciesDecorator.toString(species)).append("</li>"); + } + confirmDeletion = JOptionPane.showConfirmDialog(ui, + t("tutti.editCps.deleteMoreThanOneSpecies.message", builder.toString()), + t("tutti.editCps.deleteMoreThanOneSpecies.title"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); + } + if (confirmDeletion == JOptionPane.YES_OPTION) { - List<CalcifiedPiecesSamplingEditorRowModel> rowsToDelete = - cpsRows.stream().filter(r -> r.getProtocolSpecies().equals(speciesToDelete)).collect(Collectors.toList()); + for (Species species : speciesToDelete) { + + List<CalcifiedPiecesSamplingEditorRowModel> rowsToDelete + = cpsRows + .stream() + .filter(r -> r.getProtocolSpecies().getSpecies().equals(species)) + .collect(Collectors.toList()); - TreeSet<Integer> indexesToDelete = - new TreeSet<>(rowsToDelete.stream().map(cpsRows::indexOf).collect(Collectors.toSet())); + TreeSet<Integer> indexesToDelete = + new TreeSet<>(rowsToDelete.stream().map(cpsRows::indexOf).collect(Collectors.toSet())); - cpsRows.removeAll(rowsToDelete); + cpsRows.removeAll(rowsToDelete); - tableModel.fireTableRowsDeleted(indexesToDelete.first(), indexesToDelete.last()); + tableModel.fireTableRowsDeleted(indexesToDelete.first(), indexesToDelete.last()); + + ui.getSpeciesComboBox().addItem(species); + + } - ui.getSpeciesComboBox().addItem(speciesToDelete.getSpecies()); } + } } 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 f717239..5b42237 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 @@ -730,6 +730,14 @@ tutti.editCps.changeSex.noSex= tutti.editCps.changeSex.noSex.tip= tutti.editCps.changeSex.sex= tutti.editCps.changeSex.sex.tip= +tutti.editCps.deleteMoreThanOneSpecies= +tutti.editCps.deleteMoreThanOneSpecies.message= +tutti.editCps.deleteMoreThanOneSpecies.tip= +tutti.editCps.deleteMoreThanOneSpecies.title= +tutti.editCps.deleteOneSpecies= +tutti.editCps.deleteOneSpecies.message= +tutti.editCps.deleteOneSpecies.tip= +tutti.editCps.deleteOneSpecies.title= tutti.editCps.deleteRow= tutti.editCps.deleteRow.message= tutti.editCps.deleteRow.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 af0844e..0f62712 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 @@ -688,14 +688,18 @@ tutti.editCatchBatch.legend.marineLitter=Macro déchets tutti.editCatchBatch.legend.species=Espèces tutti.editCatchBatch.legend.total=Capture tutti.editCatchBatch.svgLoading.error=Erreur lors du chargement du diagramme du résumé +tutti.editCps.deleteMoreThanOneSpecies=Supprimer les espèces +tutti.editCps.deleteMoreThanOneSpecies.message=<html><body>Êtes-vous sûr de vouloir supprimer toutes les lignes pour les espèces suivantes ? <ul>%s</ul></body></html> +tutti.editCps.deleteMoreThanOneSpecies.tip=Supprimer toutes les lignes des espèces sélectionnées +tutti.editCps.deleteMoreThanOneSpecies.title=Suppression des lignes des espèces +tutti.editCps.deleteOneSpecies=Supprimer l'espèce +tutti.editCps.deleteOneSpecies.message=Êtes-vous sûr de vouloir supprimer toutes les lignes pour l'espèce %s ? +tutti.editCps.deleteOneSpecies.tip=Supprimer toutes les lignes de l'espèce sélectionnée +tutti.editCps.deleteOneSpecies.title=Suppression des lignes d'une espèce tutti.editCps.deleteRow=Supprimer la ligne tutti.editCps.deleteRow.message=Êtes-vous sûr de vouloir supprimer la ligne %s ? tutti.editCps.deleteRow.tip=Supprimer la ligne sélectionnée et la fusionner avec la ligne précédente tutti.editCps.deleteRow.title=Suppression de ligne -tutti.editCps.deleteSpecies=Supprimer l'espèce -tutti.editCps.deleteSpecies.message=Êtes-vous sûr de vouloir supprimer toutes les lignes pour l'espèce %s ? -tutti.editCps.deleteSpecies.tip=Supprimer toutes les lignes de l'espèce -tutti.editCps.deleteSpecies.title=Suppression des lignes d'une espèce tutti.editCps.field.maturity=Maturité tutti.editCps.field.maturity.tip=Prendre en compte la maturité pour l'espèce sélectionnée tutti.editCps.field.species.tip=Espèce -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm