This is an automated email from the git hooks/post-receive script. New commit to branch feature/5954 in repository tutti. See http://git.codelutin.com/tutti.git commit db18c9b281a10f88b0c8a39fd1fdeccbe44e550c Author: Kevin Morin <morin@codelutin.com> Date: Tue Dec 9 10:28:40 2014 +0100 - ne pas proposer les caractéristiques déjà ajoutées dans d'autres onglets - possibilité de supprimer des caractéristiques dans le tableau (clic droit) --- .../filtered-resources/tutti-help-fr.properties | 3 +- .../action/AddCaracteristicMappingAction.java | 10 +-- .../action/RemoveCaracteristicMappingAction.java | 93 ++++++++++++++++++++++ .../tutti/ui/swing/action/SaveProtocolAction.java | 3 +- .../ui/swing/content/protocol/EditProtocolUI.css | 14 ++++ .../ui/swing/content/protocol/EditProtocolUI.jaxx | 8 +- .../content/protocol/EditProtocolUIHandler.java | 28 ++++++- .../content/protocol/EditProtocolUIModel.java | 60 +++++++++++--- .../resources/i18n/tutti-ui-swing_en_GB.properties | 4 + .../resources/i18n/tutti-ui-swing_fr_FR.properties | 16 ++-- 10 files changed, 209 insertions(+), 30 deletions(-) diff --git a/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties b/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties index 2597777..4c4bff0 100644 --- a/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties +++ b/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties @@ -1,5 +1,5 @@ #Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo -#Mon Dec 08 17:29:36 CET 2014 +#Mon Dec 08 18:37:45 CET 2014 \ "tutti.editProtocol.action.addCaracteristicMapping.help"\ = tutti.config.help=config.html tutti.createAccidentalBatch.action.cancel.help=editFishingOperation.html\#captureCapturesAccidentellesActions @@ -239,6 +239,7 @@ tutti.editProtocol.action.importProtocolCaracteristic.help=editProtocol.html\#ac tutti.editProtocol.action.importProtocolColumns.help= tutti.editProtocol.action.importProtocolSpecies.help=editProtocol.html\#actionsSpecies tutti.editProtocol.action.removeBenthosProtocol.help=editProtocol.html\#actionsBenthos +tutti.editProtocol.action.removeCaracteristicMapping.help= tutti.editProtocol.action.removeSpeciesProtocol.help=editProtocol.html\#actionsSpecies tutti.editProtocol.action.saveProtocol.help=editProtocol.html\#actions tutti.editProtocol.action.selectOtherBenthos.help=editProtocol.html\#actionsBenthos diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/AddCaracteristicMappingAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/AddCaracteristicMappingAction.java index 6b72393..b05d872 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/AddCaracteristicMappingAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/AddCaracteristicMappingAction.java @@ -63,14 +63,13 @@ public class AddCaracteristicMappingAction extends AbstractTuttiAction<EditProto BeanFilterableComboBox<Caracteristic> caracteristicMappingCombBox = ui.getCaracteristicMappingComboBox(); caracteristic = (Caracteristic) caracteristicMappingCombBox.getSelectedItem(); - Preconditions.checkNotNull( - caracteristic, "Can't add a speciesProtocol with a null species"); + Preconditions.checkNotNull(caracteristic, "Can't add a speciesProtocol with a null species"); // add new row to model (do it after combo stuff for ui best display) newRow = handler.createEditProtocolCaracteristicsRowModel(); newRow.setPsfm(caracteristic); - getModel().getCaracteristicMappingRows().add(newRow); + getModel().addCaracteristicMappingRow(newRow); } @Override @@ -82,7 +81,7 @@ public class AddCaracteristicMappingAction extends AbstractTuttiAction<EditProto // fire row was inserted in table model EditProtocolCaracteristicsTableModel tableModel = getHandler().getCaracteristicMappingTableModel(); - tableModel.fireTableRowsInserted(newRow); + tableModel.addNewRow(newRow); // select this new row int rowIndex = tableModel.getRowIndex(newRow); @@ -90,7 +89,6 @@ public class AddCaracteristicMappingAction extends AbstractTuttiAction<EditProto // add notification String caracteristicStr = decorate(caracteristic); - sendMessage(t("tutti.flash.info.caracteristic.add.to.protocol", - caracteristicStr)); + sendMessage(t("tutti.flash.info.caracteristic.add.to.protocol", caracteristicStr)); } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/RemoveCaracteristicMappingAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/RemoveCaracteristicMappingAction.java new file mode 100644 index 0000000..ce0732d --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/RemoveCaracteristicMappingAction.java @@ -0,0 +1,93 @@ +package fr.ifremer.tutti.ui.swing.action; + +import com.google.common.base.Preconditions; +import com.google.common.collect.Sets; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolCaracteristicsRowModel; +import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolCaracteristicsTableModel; +import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUI; +import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUIHandler; +import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUIModel; +import jaxx.runtime.SwingUtil; + +import javax.swing.*; +import java.util.Set; + +import static org.nuiton.i18n.I18n.t; + +/** + * @author Kevin Morin (Code Lutin) + * @since 3.10 + */ +public class RemoveCaracteristicMappingAction extends AbstractTuttiAction<EditProtocolUIModel, EditProtocolUI, EditProtocolUIHandler> { + + + /** + * Set of removed caracteristics. + */ + protected Set<Caracteristic> removedCarateristics; + + /** + * Set of removed rows. + */ + protected Set<EditProtocolCaracteristicsRowModel> removedRows; + + + public RemoveCaracteristicMappingAction(EditProtocolUIHandler handler) { + super(handler, false); + } + + @Override + public void doAction() throws Exception { + + JTable table = handler.getCaracteristicsMappingTable(); + + // need to have a selection + Preconditions.checkState(!table.getSelectionModel().isSelectionEmpty()); + + EditProtocolCaracteristicsTableModel tableModel = + (EditProtocolCaracteristicsTableModel) table.getModel(); + + removedCarateristics = Sets.newHashSet(); + removedRows = Sets.newHashSet(); + + for (Integer rowIndex : SwingUtil.getSelectedModelRows(table)) { + + // get row to remove + EditProtocolCaracteristicsRowModel selectedRow = + tableModel.getEntry(rowIndex); + + // re-add all synonym of this taxon to the species / benthos combobox + Caracteristic caracteristic = selectedRow.getPsfm(); + removedCarateristics.add(caracteristic); + + // mark row to be removed at the very last moment + removedRows.add(selectedRow); + } + } + + @Override + public void postSuccessAction() { + super.postSuccessAction(); + + // update comboboxes + getUI().getCaracteristicMappingComboBox().addItems(removedCarateristics); + + // remove all rows from model + getModel().removeCaracteristicMappingRows(removedRows); + + // fire table data changed + JTable table = handler.getCaracteristicsMappingTable(); + EditProtocolCaracteristicsTableModel tableModel = + (EditProtocolCaracteristicsTableModel) table.getModel(); + for (Integer rowIndex : SwingUtil.getSelectedModelRows(table)) { + tableModel.removeRow(rowIndex); + } + + // clear table selection + table.clearSelection(); + + // notify user + sendMessage(t("tutti.flash.info.caracteristicMapping.remove.from.protocol")); + } +} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SaveProtocolAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SaveProtocolAction.java index b1702f9..be1ba1a 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SaveProtocolAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SaveProtocolAction.java @@ -45,6 +45,7 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.util.StringUtil; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import static org.nuiton.i18n.I18n.t; @@ -77,7 +78,7 @@ public class SaveProtocolAction extends AbstractTuttiAction<EditProtocolUIModel, TuttiProtocol bean = model.toBean(); - List<EditProtocolCaracteristicsRowModel> protocolCaracteristicMappingRows = getUI().getModel().getCaracteristicMappingRows(); + Collection<EditProtocolCaracteristicsRowModel> protocolCaracteristicMappingRows = getUI().getModel().getCaracteristicMappingRows(); List<CaracteristicMappingRow> caracteristicMappingRows = new ArrayList<CaracteristicMappingRow>(); for (EditProtocolCaracteristicsRowModel row : protocolCaracteristicMappingRows) { if (row.getPsfm() != null && row.getType() != null) { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css index d12659f..5bd6f32 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css @@ -91,6 +91,11 @@ JTextField { _help: { "tutti.editProtocol.action.addCaracteristicMapping.help" }; } + +#caracteristicMappingTablePopup { + label: "tutti.editProtocol.title.batchActions"; +} + #caracteristicsMappingTable { selectionMode: {ListSelectionModel.SINGLE_SELECTION}; selectionBackground: {null}; @@ -308,3 +313,12 @@ JTextField { _help: {"tutti.editProtocol.action.importProtocolColumns.help"}; } +#removeCaracteristicMappingButton { + actionIcon: delete; + text: "tutti.editProtocol.action.removeCaracteristicMapping"; + toolTipText: "tutti.editProtocol.action.removeCaracteristicMapping.tip"; + i18nMnemonic: "tutti.editProtocol.action.removeCaracteristicMapping.mnemonic"; + _applicationAction: {fr.ifremer.tutti.ui.swing.action.RemoveCaracteristicMappingAction.class}; + enabled: {model.isRemoveCaracteristicMappingEnabled()}; + _help: {"tutti.editProtocol.action.removeCaracteristicMapping.help"}; +} \ No newline at end of file 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 a976187..7be67a1 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 @@ -71,6 +71,10 @@ <JMenuItem id='removeBenthosProtocolButton'/> </JPopupMenu> + <JPopupMenu id='caracteristicMappingTablePopup'> + <JMenuItem id='removeCaracteristicMappingButton'/> + </JPopupMenu> + <JTabbedPane id='tabPanel' constraints='BorderLayout.CENTER'> <tab title='tutti.editProtocol.tab.info'> @@ -136,7 +140,9 @@ <row fill='both' weighty='1'> <cell fill='both' columns='2'> <JScrollPane> - <JXTable id='caracteristicsMappingTable'/> + <JXTable id='caracteristicsMappingTable' + onMouseClicked='handler.autoSelectRowInTable(event, caracteristicMappingTablePopup)' + onKeyPressed='handler.openRowMenu(event, caracteristicMappingTablePopup)'/> </JScrollPane> </cell> </row> 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 410d831..c64847b 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 @@ -25,6 +25,7 @@ package fr.ifremer.tutti.ui.swing.content.protocol; import com.google.common.base.Function; import com.google.common.base.Preconditions; import com.google.common.base.Predicate; +import com.google.common.collect.Collections2; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Multimap; @@ -495,6 +496,14 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI addHighlighters(caracteristicsMappingTable); + caracteristicsMappingTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() { + @Override + public void valueChanged(ListSelectionEvent e) { + ListSelectionModel source = (ListSelectionModel) e.getSource(); + getModel().setRemoveCaracteristicMappingEnabled(!source.isSelectionEmpty()); + } + }); + // always scroll to selected row SwingUtil.scrollToTableSelection(caracteristicsMappingTable); @@ -562,6 +571,15 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI } if (selectedDoubleList != null) { selectedDoubleList.getHandler().refreshFilteredElements(); + + } else { + // if the selected tab is the operation caracteristic mapping tab, then update the combobox + List<Caracteristic> selectedCaracteristics = new ArrayList<Caracteristic>(getModel().getCaracteristics()); + for (BeanDoubleList<Caracteristic> doubleList : allDoubleLists) { + selectedCaracteristics.removeAll(doubleList.getModel().getSelected()); + } + selectedCaracteristics.removeAll(getModel().getUsedCaracteristics()); + getUI().getCaracteristicMappingComboBox().setData(selectedCaracteristics); } } }); @@ -817,9 +835,7 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI initBeanList(widget, availableCaracteristics, Lists.<Caracteristic>newArrayList()); - UpdateSelectedList listener = new UpdateSelectedList( - widget, - getModel().getAllCaracteristic()); + UpdateSelectedList listener = new UpdateSelectedList(widget, getModel().getAllCaracteristic()); widget.putClientProperty("_updateListener", listener); widget.putClientProperty("_updateListenerId", propertyId); listener.select(selectedCaracteristics); @@ -828,6 +844,12 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI List<BeanDoubleList<Caracteristic>> list = Lists.newArrayList(allDoubleLists); list.remove(widget); widget.getHandler().addFilter(new SelectValuePredicate(list)); + widget.getHandler().addFilter(new Predicate<Caracteristic>() { + @Override + public boolean apply(Caracteristic caracteristic) { + return !getModel().isCaracteristicUsedInMapping(caracteristic); + } + }); } protected void selectLengthClasses(List<String> ids, JComboBox comboBox) { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java index ec9f584..ef50154 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java @@ -22,7 +22,9 @@ package fr.ifremer.tutti.ui.swing.content.protocol; * #L% */ +import com.google.common.base.Function; import com.google.common.collect.Lists; +import com.google.common.collect.Maps; import com.google.common.collect.Multimap; import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicMappingRow; @@ -37,6 +39,7 @@ import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; import java.util.Collection; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -60,6 +63,8 @@ public class EditProtocolUIModel extends AbstractTuttiBeanUIModel<TuttiProtocol, public static final String PROPERTY_REMOVE_BENTHOS_ENABLED = "removeBenthosEnabled"; + public static final String PROPERTY_REMOVE_CARACTERISTIC_MAPPING_ENABLED = "removeCaracteristicMappingEnabled"; + public static final String PROPERTY_IMPORTED = "imported"; public static final String PROPERTY_CLONED = "cloned"; @@ -108,6 +113,8 @@ public class EditProtocolUIModel extends AbstractTuttiBeanUIModel<TuttiProtocol, */ protected boolean removeBenthosEnabled; + protected boolean removeCaracteristicMappingEnabled; + protected List<Species> allSpecies; protected List<Species> allSynonyms; @@ -120,7 +127,7 @@ public class EditProtocolUIModel extends AbstractTuttiBeanUIModel<TuttiProtocol, protected Map<String, Caracteristic> allCaracteristic; - protected List<EditProtocolCaracteristicsRowModel> caracteristicMappingRows; + protected Map<Caracteristic, EditProtocolCaracteristicsRowModel> caracteristicMappingRows; protected List<EditProtocolOperationFieldsRowModel> operationFieldMappingRows; @@ -149,24 +156,46 @@ public class EditProtocolUIModel extends AbstractTuttiBeanUIModel<TuttiProtocol, setLengthClassesPmfmId(ids); } -// public void setGearUseFeaturePmfm(List<Caracteristic> gearUseFeaturePmfm) { -// List<String> ids = TuttiEntities.collecIds(gearUseFeaturePmfm); -// setGearUseFeaturePmfmId(ids); -// } - public void setIndividualObservationPmfm(List<Caracteristic> individualObservationPmfm) { List<String> ids = TuttiEntities.collecIds(individualObservationPmfm); setIndividualObservationPmfmId(ids); } - public List<EditProtocolCaracteristicsRowModel> getCaracteristicMappingRows() { - return caracteristicMappingRows; + public Collection<EditProtocolCaracteristicsRowModel> getCaracteristicMappingRows() { + return caracteristicMappingRows.values(); + } + + public void addCaracteristicMappingRow(EditProtocolCaracteristicsRowModel newRow) { + caracteristicMappingRows.put(newRow.getPsfm(), newRow); + firePropertyChange(PROPERTY_CARACTERISTIC_MAPPING_ROWS, null, getCaracteristicMappingRows()); + } + + public void removeCaracteristicMappingRows(Collection<EditProtocolCaracteristicsRowModel> rowsToRemove) { + for (EditProtocolCaracteristicsRowModel row : rowsToRemove) { + caracteristicMappingRows.remove(row.getPsfm()); + } + firePropertyChange(PROPERTY_CARACTERISTIC_MAPPING_ROWS, null, getCaracteristicMappingRows()); } public void setCaracteristicMappingRows(List<EditProtocolCaracteristicsRowModel> caracteristicMappingRows) { - Object oldValue = getCaracteristicMappingRows(); - this.caracteristicMappingRows = caracteristicMappingRows; - firePropertyChange(PROPERTY_CARACTERISTIC_MAPPING_ROWS, oldValue, caracteristicMappingRows); + this.caracteristicMappingRows = new HashMap<Caracteristic, EditProtocolCaracteristicsRowModel>( + Maps.uniqueIndex(caracteristicMappingRows, + new Function<EditProtocolCaracteristicsRowModel, Caracteristic>() { + @Override + public Caracteristic apply(EditProtocolCaracteristicsRowModel editProtocolCaracteristicsRowModel) { + return editProtocolCaracteristicsRowModel.getPsfm(); + } + }) + ); + firePropertyChange(PROPERTY_CARACTERISTIC_MAPPING_ROWS, null, caracteristicMappingRows); + } + + public boolean isCaracteristicUsedInMapping(Caracteristic caracteristic) { + return caracteristicMappingRows.containsKey(caracteristic); + } + + public Collection<Caracteristic> getUsedCaracteristics() { + return caracteristicMappingRows.keySet(); } public List<EditProtocolOperationFieldsRowModel> getOperationFieldMappingRows() { @@ -217,6 +246,15 @@ public class EditProtocolUIModel extends AbstractTuttiBeanUIModel<TuttiProtocol, firePropertyChange(PROPERTY_REMOVE_BENTHOS_ENABLED, null, removeBenthosEnabled); } + public boolean isRemoveCaracteristicMappingEnabled() { + return removeCaracteristicMappingEnabled; + } + + public void setRemoveCaracteristicMappingEnabled(boolean removeCaracteristicMappingEnabled) { + this.removeCaracteristicMappingEnabled = removeCaracteristicMappingEnabled; + firePropertyChange(PROPERTY_REMOVE_CARACTERISTIC_MAPPING_ENABLED, null, removeCaracteristicMappingEnabled); + } + public boolean isImported() { return imported; } 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 6188409..5dc2c6d 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 @@ -937,6 +937,9 @@ tutti.editProtocol.action.loadImportColumns.success= tutti.editProtocol.action.removeBenthosProtocol= tutti.editProtocol.action.removeBenthosProtocol.mnemonic= tutti.editProtocol.action.removeBenthosProtocol.tip= +tutti.editProtocol.action.removeCaracteristicMapping= +tutti.editProtocol.action.removeCaracteristicMapping.mnemonic= +tutti.editProtocol.action.removeCaracteristicMapping.tip= tutti.editProtocol.action.removeSpeciesProtocol= tutti.editProtocol.action.removeSpeciesProtocol.mnemonic= tutti.editProtocol.action.removeSpeciesProtocol.tip= @@ -1293,6 +1296,7 @@ tutti.flash.info.benthos.remove.from.protocol= tutti.flash.info.benthos.replaced= tutti.flash.info.caracteristic.add.to.protocol= tutti.flash.info.caracteristic.imported.in.protocol= +tutti.flash.info.caracteristicMapping.remove.from.protocol= tutti.flash.info.caractristic.exported.from.protocol= tutti.flash.info.cruiseCreated= tutti.flash.info.cruiseSaved= 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 a4321a5..974710f 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 @@ -871,8 +871,8 @@ tutti.editProgram.title.create.program=Créer une nouvelle série de campagne tutti.editProgram.title.edit.program=Éditer une série de campagne existante tutti.editProtocol.action.addBenthosProtocol.mnemonic=j tutti.editProtocol.action.addBenthosProtocol.tip=Ajouter une espèce du benthos au protocole -tutti.editProtocol.action.addCaracteristicMapping.mnemonic= -tutti.editProtocol.action.addCaracteristicMapping.tip= +tutti.editProtocol.action.addCaracteristicMapping.mnemonic=j +tutti.editProtocol.action.addCaracteristicMapping.tip=Ajouter aux caractéristiques du trait tutti.editProtocol.action.addSpeciesProtocol.mnemonic=j tutti.editProtocol.action.addSpeciesProtocol.tip=Ajouter une espèce au protocole tutti.editProtocol.action.chooseColumnsFile.import=Choisir le fichier contenant les colonnes @@ -917,6 +917,9 @@ tutti.editProtocol.action.loadImportColumns.success=%s colonnes importées avec tutti.editProtocol.action.removeBenthosProtocol=Supprimer les benthos tutti.editProtocol.action.removeBenthosProtocol.mnemonic=S tutti.editProtocol.action.removeBenthosProtocol.tip=Supprimer les benthos sélectionnés +tutti.editProtocol.action.removeCaracteristicMapping=Supprimer les caractéristiques +tutti.editProtocol.action.removeCaracteristicMapping.mnemonic=S +tutti.editProtocol.action.removeCaracteristicMapping.tip=Supprimer les caractéristiques sélectionnés tutti.editProtocol.action.removeSpeciesProtocol=Supprimer les espèces tutti.editProtocol.action.removeSpeciesProtocol.mnemonic=S tutti.editProtocol.action.removeSpeciesProtocol.tip=Supprimer les espèces sélectionnées @@ -935,7 +938,7 @@ tutti.editProtocol.askCancelEditBeforeLeaving.cancelSaveSampleCategoryModel=La c tutti.editProtocol.askSaveBeforeLeaving.saveProtocol=Des modifications sur le protocole n'ont pas été enregistrées tutti.editProtocol.askSaveBeforeLeaving.saveSampleCategoryModel=Des modifications sur la catégorisation n'ont pas été enregistrées tutti.editProtocol.field.benthos.tip=Benthos -tutti.editProtocol.field.caracteristicMapping.tip= +tutti.editProtocol.field.caracteristicMapping.tip=Caractéristiques tutti.editProtocol.field.comment=Commentaire tutti.editProtocol.field.comment.tip=Commentaire tutti.editProtocol.field.protocol.name=Nom @@ -943,11 +946,9 @@ tutti.editProtocol.field.protocol.name.tip=Nom du protocole tutti.editProtocol.field.species.tip=Espèces tutti.editProtocol.tab.benthos=Benthos tutti.editProtocol.tab.caracteristic=Caractéristiques -tutti.editProtocol.tab.caracteristic.gearUseFeature=Mise en œuvre de l'engin tutti.editProtocol.tab.caracteristic.individualObservation=Observations individuelles tutti.editProtocol.tab.caracteristic.lengthClasses=Classes de taille tutti.editProtocol.tab.caracteristic.mapping=Caractéristiques du trait -tutti.editProtocol.tab.caracteristic.vesselUseFeature=Autres caractéristiques tutti.editProtocol.tab.info=Informations générales tutti.editProtocol.tab.species=Espèces tutti.editProtocol.table.header.calcifySample=Prélèvement de pièces calcifiées @@ -1240,14 +1241,15 @@ tutti.fishingOperations.warn.catchBatch.notFound=Pas d'arbre d’échantillonnag tutti.fishingOperations.warn.invalid.batch=<html><body>Les erreurs suivantes ont été détectées, impossible d'afficher les captures \:<br/><ul>%s</ul></body></html>. tutti.fishingOperations.warn.invalid.batch.model=L'arbre d’échantillonnage n'est pas compatible. Les captures ne seront pas visibles. tutti.flash.info.all.caractristic.exported=Toutes les caractéristiques exportées dans le fichier <strong>%s</strong>. -tutti.flash.info.benthos.add.to.protocol=Le benthos <strong>%s</strong> a été ajoutée au protocole. +tutti.flash.info.benthos.add.to.protocol=Le benthos <strong>%s</strong> a été ajouté au protocole. tutti.flash.info.benthos.imported.in.protocol=Benthos importés dans le protocole depuis le fichier <strong>%s</strong>. tutti.flash.info.benthos.imported.in.protocol.oneReplaced=Benthos importés dans le protocole depuis le fichier <strong>%s</strong>. 1 remplacée par son référent. tutti.flash.info.benthos.imported.in.protocol.severalReplaced=Benthos importés dans le protocole depuis le fichier <strong>%s</strong>. %s remplacées par leur référent. tutti.flash.info.benthos.remove.from.protocol=Les benthos ont été retirés du protocole. tutti.flash.info.benthos.replaced=Le benthos <strong>%s</strong> a été remplacé par son référent <strong>%s</strong>. -tutti.flash.info.caracteristic.add.to.protocol= +tutti.flash.info.caracteristic.add.to.protocol=La caractéristique <strong>%s</strong> a été ajoutée au protocole. tutti.flash.info.caracteristic.imported.in.protocol=Caractéristiques importées dans le protocole depuis le fichier <strong>%s</strong>. +tutti.flash.info.caracteristicMapping.remove.from.protocol=Les caractéristiques ont été retirées du protocole. tutti.flash.info.caractristic.exported.from.protocol=Caractéristiques du protocole exportées dans le fichier <strong>%s</strong>. tutti.flash.info.cruiseCreated=La campagne <strong>%s</strong> a été créée. tutti.flash.info.cruiseSaved=La campagne <strong>%s</strong> a été enregistrée. -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.