This is an automated email from the git hooks/post-receive script. New commit to branch feature/7089 in repository tutti. See http://git.codelutin.com/tutti.git commit 1f190cf81384a425742b5f31aa2a575e7c188a8a Author: Kevin Morin <morin@codelutin.com> Date: Wed Jan 6 17:20:08 2016 +0100 affichage des synonymes ou non dans la popup de sélection d'une espèce pour les lots espèces (refs #7089) --- .../species/actions/RenameSpeciesBatchAction.java | 18 ++++++++++++-- .../ui/swing/util/actions/LongActionSupport.java | 6 +++++ .../ui/swing/util/species/SelectSpeciesUI.css | 12 +++++++++- .../ui/swing/util/species/SelectSpeciesUI.jaxx | 15 ++++++++++-- .../swing/util/species/SelectSpeciesUIHandler.java | 14 ----------- .../swing/util/species/SelectSpeciesUIModel.java | 28 ++++++++++++++++++++++ .../resources/i18n/tutti-ui-swing_en_GB.properties | 6 +++++ .../resources/i18n/tutti-ui-swing_fr_FR.properties | 3 +++ 8 files changed, 83 insertions(+), 19 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/RenameSpeciesBatchAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/RenameSpeciesBatchAction.java index 1b3080d..a9dab4b 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/RenameSpeciesBatchAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/RenameSpeciesBatchAction.java @@ -26,6 +26,8 @@ import com.google.common.collect.Lists; import fr.ifremer.tutti.persistence.entities.data.SampleCategory; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.persistence.entities.referential.Speciess; +import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchRowModel; @@ -37,8 +39,10 @@ import jaxx.runtime.SwingUtil; import org.jdesktop.swingx.JXTable; import java.io.Serializable; +import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Map; import static org.nuiton.i18n.I18n.t; @@ -54,7 +58,6 @@ public class RenameSpeciesBatchAction extends LongActionSupport<SpeciesBatchUIMo public RenameSpeciesBatchAction(SpeciesBatchUIHandler handler) { super(handler, false); - } @Override @@ -67,6 +70,7 @@ public class RenameSpeciesBatchAction extends LongActionSupport<SpeciesBatchUIMo SpeciesBatchRowModel row = tableModel.getEntry(selectedRowIndex); SpeciesBatchUIModel model = handler.getModel(); + List<Species> allSpeciesList = new ArrayList<>(getDataContext().getSpecies()); List<Species> speciesList = Lists.newArrayList( getDataContext().getReferentSpeciesWithSurveyCode()); SampleCategory<?> firstSampleCategory = row.getFirstSampleCategory(); @@ -74,7 +78,17 @@ public class RenameSpeciesBatchAction extends LongActionSupport<SpeciesBatchUIMo speciesList.removeAll( model.getSpeciesUsed().get((CaracteristicQualitativeValue) categoryValue)); - selectedSpecies = openAddSpeciesDialog(t("tutti.selectSpecies.title"), speciesList); + selectedSpecies = openAddSpeciesDialog(t("tutti.selectSpecies.title"), allSpeciesList, speciesList); + + if (!selectedSpecies.isReferenceTaxon()) { + String decoratedSynonym = decorate(selectedSpecies, DecoratorService.FROM_PROTOCOL); + List<Species> referents = getDataContext().getReferentSpecies(); + Map<String, Species> referentsById = Speciess.splitReferenceSpeciesByReferenceTaxonId(referents); + String taxonId = String.valueOf(selectedSpecies.getReferenceTaxonId()); + selectedSpecies = referentsById.get(taxonId); + String decoratedReferent = decorate(selectedSpecies, DecoratorService.FROM_PROTOCOL); + sendMessage(t("tutti.flash.info.species.replaced", decoratedSynonym, decoratedReferent)); + } result &= selectedSpecies != null; return result; diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/actions/LongActionSupport.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/actions/LongActionSupport.java index 52d6ebf..b107da1 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/actions/LongActionSupport.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/actions/LongActionSupport.java @@ -100,10 +100,16 @@ public abstract class LongActionSupport<M extends AbstractBean, UI extends Tutti } protected Species openAddSpeciesDialog(String title, List<Species> species) { + return openAddSpeciesDialog(title, species, null); + } + + protected Species openAddSpeciesDialog(String title, List<Species> species, List<Species> synonymFilteredSpecies) { SelectSpeciesUI dialogContent = new SelectSpeciesUI(true, getUI()); SelectSpeciesUIModel model = dialogContent.getModel(); model.setSelectedSpecies(null); model.setSpecies(species); + model.setSynonymFilteredSpecies(synonymFilteredSpecies); + model.setShowSynonyms(synonymFilteredSpecies == null); getHandler().openDialog(dialogContent, title, new Dimension(400, 130)); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/species/SelectSpeciesUI.css b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/species/SelectSpeciesUI.css index bbf5fe6..d22a05a 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/species/SelectSpeciesUI.css +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/species/SelectSpeciesUI.css @@ -25,7 +25,17 @@ bean: {model}; property: selectedSpecies; selectedItem: {model.getSelectedSpecies()}; - data: {model.getSpecies()}; + data: { model.isShowSynonyms() ? model.getSpecies() : model.getSynonymFilteredSpecies() }; +} + +#showSynonyms { + text: "tutti.selectSpecies.action.showSynonyms"; + toolTipText: "tutti.selectSpecies.action.showSynonyms.tip"; + i18nMnemonic: "tutti.selectSpecies.action.showSynonyms.mnemonic"; + focusable: false; + selected: { model.isShowSynonyms() }; + enabled: { model.getSynonymFilteredSpecies() != null }; + foreground: { java.awt.Color.BLACK }; } #cancelButton { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/species/SelectSpeciesUI.jaxx b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/species/SelectSpeciesUI.jaxx index ac10ee3..38f3255 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/species/SelectSpeciesUI.jaxx +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/species/SelectSpeciesUI.jaxx @@ -42,8 +42,19 @@ public SelectSpeciesUI(boolean useSurveyCode, TuttiUI parentUI) { <SelectSpeciesUIModel id='model' initializer='getContextValue(SelectSpeciesUIModel.class)'/> - <BeanFilterableComboBox id='speciesCombo' constraints='BorderLayout.CENTER' - constructorParams='this' genericType='Species'/> + <Table constraints='BorderLayout.CENTER'> + <row> + <cell weightx="1"> + <BeanFilterableComboBox id='speciesCombo' constructorParams='this' genericType='Species' /> + </cell> + </row> + <row> + <cell> + <JCheckBox id='showSynonyms' + onItemStateChanged="model.setShowSynonyms(event.getStateChange() == java.awt.event.ItemEvent.SELECTED)"/> + </cell> + </row> + </Table> <JPanel layout='{new GridLayout(1, 0)}' constraints='BorderLayout.SOUTH'> <JButton id='cancelButton'/> diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/species/SelectSpeciesUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/species/SelectSpeciesUIHandler.java index 127ff21..90b7e46 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/species/SelectSpeciesUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/species/SelectSpeciesUIHandler.java @@ -75,12 +75,6 @@ public class SelectSpeciesUIHandler extends AbstractTuttiUIHandler<SelectSpecies } }); - getModel().addPropertyChangeListener(SelectSpeciesUIModel.PROPERTY_SPECIES, new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - - } - }); } @Override @@ -100,12 +94,4 @@ public class SelectSpeciesUIHandler extends AbstractTuttiUIHandler<SelectSpecies return null; } - public void validate() { - closeDialog(); - } - - public void cancel() { - getModel().setSelectedSpecies(null); - closeDialog(); - } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/species/SelectSpeciesUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/species/SelectSpeciesUIModel.java index d5daa5c..9e79f14 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/species/SelectSpeciesUIModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/species/SelectSpeciesUIModel.java @@ -36,12 +36,20 @@ public class SelectSpeciesUIModel extends AbstractTuttiBeanUIModel<SelectSpecies public static final String PROPERTY_SPECIES = "species"; + public static final String PROPERTY_SYNONYM_FILTERED_SPECIES = "synonymFilteredSpecies"; + public static final String PROPERTY_SELECTED_SPECIES = "selectedSpecies"; + public static final String PROPERTY_SHOW_SYNONYMS = "showSynonyms"; + protected List<Species> species = Lists.newArrayList(); + protected List<Species> synonymFilteredSpecies = null; + protected Species selectedSpecies; + protected boolean showSynonyms; + public SelectSpeciesUIModel() { super(null, null); } @@ -66,6 +74,26 @@ public class SelectSpeciesUIModel extends AbstractTuttiBeanUIModel<SelectSpecies firePropertyChange(PROPERTY_SELECTED_SPECIES, oldValue, selectedSpecies); } + public boolean isShowSynonyms() { + return showSynonyms; + } + + public void setShowSynonyms(boolean showSynonyms) { + Object oldValue = isShowSynonyms(); + this.showSynonyms = showSynonyms; + firePropertyChange(PROPERTY_SHOW_SYNONYMS, oldValue, showSynonyms); + } + + public List<Species> getSynonymFilteredSpecies() { + return synonymFilteredSpecies; + } + + public void setSynonymFilteredSpecies(List<Species> synonymFilteredSpecies) { + Object oldValue = getSynonymFilteredSpecies(); + this.synonymFilteredSpecies = synonymFilteredSpecies; + firePropertyChange(PROPERTY_SYNONYM_FILTERED_SPECIES, oldValue, synonymFilteredSpecies); + } + @Override protected SelectSpeciesUIModel newEntity() { return new SelectSpeciesUIModel(); 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 4ab1654..55612f1 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 @@ -2075,9 +2075,15 @@ tutti.selectNode.cruisePartialSelected= tutti.selectNode.cruiseSelected= tutti.selectNode.operation= tutti.selectNode.operationSelected= +tutti.selectSpecies.action.addSpecies= +tutti.selectSpecies.action.addSpecies.mnemonic= +tutti.selectSpecies.action.addSpecies.tip= tutti.selectSpecies.action.cancel= tutti.selectSpecies.action.cancel.mnemonic= tutti.selectSpecies.action.cancel.tip= +tutti.selectSpecies.action.showSynonyms= +tutti.selectSpecies.action.showSynonyms.mnemonic= +tutti.selectSpecies.action.showSynonyms.tip= tutti.selectSpecies.action.validate= tutti.selectSpecies.action.validate.mnemonic= tutti.selectSpecies.action.validate.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 8f2b1da..c475819 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 @@ -1943,6 +1943,9 @@ tutti.selectNode.operationSelected=Le trait est sélectionné pour l'export tutti.selectSpecies.action.cancel=Annuler tutti.selectSpecies.action.cancel.mnemonic=A tutti.selectSpecies.action.cancel.tip=Annuler la sélection de l'espèce +tutti.selectSpecies.action.showSynonyms=Afficher les synonymes +tutti.selectSpecies.action.showSynonyms.mnemonic=s +tutti.selectSpecies.action.showSynonyms.tip=Afficher ou non les synonymes dans la liste déroulante tutti.selectSpecies.action.validate=Valider tutti.selectSpecies.action.validate.mnemonic=V tutti.selectSpecies.action.validate.tip=Valider la sélection de l'espèce -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.