Author: tchemit Date: 2013-02-10 16:00:32 +0100 (Sun, 10 Feb 2013) New Revision: 383 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/383 Log: imporve protocol action Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/AddSpeciesProtocolAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportAllCaracteristicAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolCaracteristicAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolSpeciesAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolCaracteristicAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolSpeciesAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/RemoveSpeciesProtocolAction.java Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/AddSpeciesProtocolAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/AddSpeciesProtocolAction.java 2013-02-10 14:59:07 UTC (rev 382) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/AddSpeciesProtocolAction.java 2013-02-10 15:00:32 UTC (rev 383) @@ -26,9 +26,11 @@ import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import java.awt.event.ActionEvent; +import java.util.Collection; import static org.nuiton.i18n.I18n._; @@ -58,27 +60,39 @@ EditProtocolUI ui = getUI(); - EditProtocolSpeciesTableModel tableModel = getHandler().getTableModel(); + EditProtocolUIHandler handler = getHandler(); + + EditProtocolSpeciesTableModel tableModel = handler.getTableModel(); Species species = (Species) ui.getSpeciesComboBox().getSelectedItem(); - Preconditions.checkNotNull(species); - EditProtocolSpeciesRowModel protocol = tableModel.createNewRow(); + Preconditions.checkNotNull( + species, "Cant add a speciesProtocol with a null species"); + Integer taxonId = species.getReferenceTaxonId(); // get referent species String taxonIdStr = String.valueOf(taxonId); - Species referentSpecies = getHandler().getAllReferentSpeciesByTaxonId().get(taxonIdStr); - protocol.setSpecies(referentSpecies); - tableModel.addNewRow(protocol); + Species referentSpecies = + getModel().getAllReferentSpeciesByTaxonId().get(taxonIdStr); + // remove all synonyms of this taxon - getHandler().removeSpeciesSynonyms(ui.getSpeciesComboBox().getData(), taxonIdStr); + Collection<Species> allSynonyms = getModel().getAllSynonyms(taxonIdStr); + ui.getSpeciesComboBox().getData().removeAll(allSynonyms); ui.getSpeciesComboBox().getHandler().sortData(); + handler.selectFirstInCombo(ui.getSpeciesComboBox()); - getHandler().selectFirstInCombo(ui.getSpeciesComboBox()); + // add new row to model (do it after combo stuff for ui best display) + EditProtocolSpeciesRowModel protocol = tableModel.createNewRow(); + protocol.setSpecies(referentSpecies); + tableModel.addNewRow(protocol); getModel().setModify(true); + String speciesStr = getDecorator(Species.class, DecoratorService.SPECIES_BY_CRUISE_CODE).toString(referentSpecies); + sendMessage(_("tutti.flash.information.species.add.to.protocol", + speciesStr)); + } } \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-02-10 14:59:07 UTC (rev 382) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-02-10 15:00:32 UTC (rev 383) @@ -24,6 +24,7 @@ * #L% */ +import com.ezware.oxbow.swingbits.util.Preconditions; import com.google.common.collect.Lists; import com.google.common.collect.Multimap; import com.google.common.collect.Multimaps; @@ -58,6 +59,7 @@ import java.awt.event.ActionEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.util.Collection; import java.util.List; import java.util.Map; @@ -72,16 +74,6 @@ private static final Log log = LogFactory.getLog(EditProtocolUIHandler.class); - protected List<Species> allSpecies; - - protected Multimap<String, Species> allSpeciesByTaxonId; - - protected Map<String, Species> allReferentSpeciesByTaxonId; - - protected List<Caracteristic> caracteristics; - - protected Map<String, Caracteristic> allCaracteristic; - public EditProtocolUIHandler(TuttiUI parentUi, EditProtocolUI ui) { super(parentUi.getHandler().getContext(), ui); } @@ -153,45 +145,36 @@ EditProtocolUIModel model = new EditProtocolUIModel(); - // can't load directly model from database here, since we want to - // fill only the model with rows (transformed from speciesProtocol) - // As we still don't have the table model at this point, wait the - // afterUI method to fill model + // load cache data - listModelIsModify(model); - ui.setContextValue(model); + List<Species> allSpecies = Lists.newArrayList(persistenceService.getAllSpecies()); + model.setAllSpecies(allSpecies); + Multimap<String, Species> allSpeciesByTaxonId = Multimaps.index(allSpecies, + TuttiEntities.GET_TAXON_ID); - allSpecies = Lists.newArrayList(persistenceService.getAllSpecies()); - - allSpeciesByTaxonId = Multimaps.index(allSpecies, - TuttiEntities.GET_TAXON_ID); - - allReferentSpeciesByTaxonId = TuttiEntities.splitByTaxonId( + model.setAllSpeciesByTaxonId(allSpeciesByTaxonId); + Map<String, Species> allReferentSpeciesByTaxonId = TuttiEntities.splitByTaxonId( persistenceService.getAllReferentSpecies()); + model.setAllReferentSpeciesByTaxonId(allReferentSpeciesByTaxonId); List<TuttiProtocol> protocols = persistenceService.getAllProtocol(); model.setExistingProtocols(protocols); - caracteristics = persistenceService.getAllCaracteristic(); - allCaracteristic = TuttiEntities.splitById(caracteristics); - } + List<Caracteristic> caracteristics = persistenceService.getAllCaracteristic(); + model.setCaracteristics(caracteristics); - public Map<String, Caracteristic> getAllCaracteristic() { - return allCaracteristic; - } + Map<String, Caracteristic> allCaracteristic = TuttiEntities.splitById(caracteristics); + model.setAllCaracteristic(allCaracteristic); - public List<Species> getAllSpecies() { - return allSpecies; - } + // can't load directly model from database here, since we want to + // fill only the model with rows (transformed from speciesProtocol) + // As we still don't have the table model at this point, wait the + // afterUI method to fill model - public Map<String, Species> getAllReferentSpeciesByTaxonId() { - return allReferentSpeciesByTaxonId; + listModelIsModify(model); + ui.setContextValue(model); } - public Multimap<String, Species> getAllSpeciesByTaxonId() { - return allSpeciesByTaxonId; - } - @Override public void afterInitUI() { @@ -280,7 +263,7 @@ initTable(table); - List<Species> speciesList = Lists.newArrayList(allSpecies); + List<Species> speciesList = Lists.newArrayList(model.getAllSpecies()); List<EditProtocolSpeciesRowModel> rows; @@ -305,22 +288,22 @@ initDoubleList(EditProtocolUIModel.PROPERTY_LENGTH_CLASSES_PMFM_ID, ui.getLengthClassesList(), - Lists.newArrayList(caracteristics), + Lists.newArrayList(model.getCaracteristics()), model.getLengthClassesPmfmId()); initDoubleList(EditProtocolUIModel.PROPERTY_GEAR_PMFM_ID, ui.getGearList(), - Lists.newArrayList(caracteristics), + Lists.newArrayList(model.getCaracteristics()), model.getGearPmfmId()); initDoubleList(EditProtocolUIModel.PROPERTY_ENVIRONMENT_PMFM_ID, ui.getEnvironmentList(), - Lists.newArrayList(caracteristics), + Lists.newArrayList(model.getCaracteristics()), model.getEnvironmentPmfmId()); initDoubleList(EditProtocolUIModel.PROPERTY_HYDROLOGY_PMFM_ID, ui.getHydrologyList(), - Lists.newArrayList(caracteristics), + Lists.newArrayList(model.getCaracteristics()), model.getHydrologyPmfmId()); // if new protocol can already cancel his creation @@ -330,18 +313,22 @@ public List<EditProtocolSpeciesRowModel> toRows(List<Species> speciesList, List<SpeciesProtocol> speciesProtocols) { - boolean useComboData = speciesList == null; + Preconditions.checkNotNull(speciesList); - if (useComboData) { - speciesList = ui.getSpeciesComboBox().getData(); - } + EditProtocolUIModel model = getModel(); + + Map<String, Species> allReferentSpeciesByTaxonId = model.getAllReferentSpeciesByTaxonId(); + Map<String, Caracteristic> allCaracteristic = model.getAllCaracteristic(); + List<EditProtocolSpeciesRowModel> result = Lists.newArrayList(); if (CollectionUtils.isNotEmpty(speciesProtocols)) { for (SpeciesProtocol speciesProtocol : speciesProtocols) { Integer taxonId = speciesProtocol.getSpeciesReferenceTaxonId(); String taxonIdStr = String.valueOf(taxonId); + // remove all synonyms from available species list - removeSpeciesSynonyms(speciesList, taxonIdStr); + Collection<Species> allSynonyms = model.getAllSynonyms(taxonIdStr); + speciesList.removeAll(allSynonyms); EditProtocolSpeciesRowModel row = getTableModel().createNewRow(); @@ -354,9 +341,6 @@ } } - if (useComboData) { - selectFirstInCombo(ui.getSpeciesComboBox()); - } return result; } @@ -453,7 +437,9 @@ initBeanList(widget, availableCaracteristics, Lists.<Caracteristic>newArrayList()); - UpdateSelectedList listener = new UpdateSelectedList(widget, allCaracteristic); + UpdateSelectedList listener = new UpdateSelectedList( + widget, + getModel().getAllCaracteristic()); widget.putClientProperty("_updateListener", listener); widget.putClientProperty("_updateListenerId", propertyId); listener.select(selectedCaracteristics); @@ -461,6 +447,7 @@ protected void selectLengthClasses(List<String> ids, JComboBox comboBox) { + Map<String, Caracteristic> allCaracteristic = getModel().getAllCaracteristic(); List<Caracteristic> selection = Lists.newArrayList(); if (CollectionUtils.isNotEmpty(ids)) { for (String id : ids) { @@ -505,10 +492,6 @@ EditProtocolSpeciesTableModel.LENGTH_STEP_PMFM_ID); } - protected void removeSpeciesSynonyms(List<Species> speciesList, String taxonId) { - speciesList.removeAll(allSpeciesByTaxonId.get(taxonId)); - } - protected static class UpdateSelectedList implements PropertyChangeListener { private final BeanDoubleListModel<Caracteristic> model; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java 2013-02-10 14:59:07 UTC (rev 382) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java 2013-02-10 15:00:32 UTC (rev 383) @@ -24,14 +24,18 @@ * #L% */ +import com.google.common.collect.Multimap; import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIModel; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; +import java.util.Collection; import java.util.List; +import java.util.Map; /** * @author tchemit <chemit@codelutin.com> @@ -78,6 +82,16 @@ */ protected boolean removeSpeciesEnabled; + protected List<Species> allSpecies; + + protected Multimap<String, Species> allSpeciesByTaxonId; + + protected Map<String, Species> allReferentSpeciesByTaxonId; + + protected List<Caracteristic> caracteristics; + + protected Map<String, Caracteristic> allCaracteristic; + protected static Binder<EditProtocolUIModel, TuttiProtocol> toBeanBinder = BinderFactory.newBinder(EditProtocolUIModel.class, TuttiProtocol.class); @@ -199,4 +213,47 @@ this.existingProtocols = existingProtocols; } + public List<Species> getAllSpecies() { + return allSpecies; + } + + public void setAllSpecies(List<Species> allSpecies) { + this.allSpecies = allSpecies; + } + + public Multimap<String, Species> getAllSpeciesByTaxonId() { + return allSpeciesByTaxonId; + } + + public Collection<Species> getAllSynonyms(String taxonId) { + return allSpeciesByTaxonId.get(taxonId); + } + + public void setAllSpeciesByTaxonId(Multimap<String, Species> allSpeciesByTaxonId) { + this.allSpeciesByTaxonId = allSpeciesByTaxonId; + } + + public Map<String, Species> getAllReferentSpeciesByTaxonId() { + return allReferentSpeciesByTaxonId; + } + + public void setAllReferentSpeciesByTaxonId(Map<String, Species> allReferentSpeciesByTaxonId) { + this.allReferentSpeciesByTaxonId = allReferentSpeciesByTaxonId; + } + + public List<Caracteristic> getCaracteristics() { + return caracteristics; + } + + public void setCaracteristics(List<Caracteristic> caracteristics) { + this.caracteristics = caracteristics; + } + + public Map<String, Caracteristic> getAllCaracteristic() { + return allCaracteristic; + } + + public void setAllCaracteristic(Map<String, Caracteristic> allCaracteristic) { + this.allCaracteristic = allCaracteristic; + } } \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportAllCaracteristicAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportAllCaracteristicAction.java 2013-02-10 14:59:07 UTC (rev 382) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportAllCaracteristicAction.java 2013-02-10 15:00:32 UTC (rev 383) @@ -94,12 +94,10 @@ // export protocol caracteristics TuttiProtocolImportExportService service = - getContext().getService(TuttiProtocolImportExportService.class); + getService(TuttiProtocolImportExportService.class); - service.exportAllCaracteristic(file, - getHandler().getAllCaracteristic()); + service.exportAllCaracteristic(file, getModel().getAllCaracteristic()); - sendMessage("Toutes les caractéristiques exportées dans le fichier " - + file + "."); + sendMessage(_("tutti.flash.information.all.caractristic.exported", file)); } } \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolCaracteristicAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolCaracteristicAction.java 2013-02-10 14:59:07 UTC (rev 382) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolCaracteristicAction.java 2013-02-10 15:00:32 UTC (rev 383) @@ -98,13 +98,13 @@ // export protocol caracteristics TuttiProtocolImportExportService service = - getContext().getService(TuttiProtocolImportExportService.class); + getService(TuttiProtocolImportExportService.class); service.exportProtocolCaracteristic(file, protocol, - getHandler().getAllCaracteristic()); + getModel().getAllCaracteristic()); - sendMessage("Caractéristiques du Protocole exportées dans le fichier " - + file + "."); + sendMessage(_("tutti.flash.information.caractristic.exported.from.protocol", + file)); } } \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolSpeciesAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolSpeciesAction.java 2013-02-10 14:59:07 UTC (rev 382) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolSpeciesAction.java 2013-02-10 15:00:32 UTC (rev 383) @@ -26,7 +26,6 @@ import com.google.common.collect.Lists; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; -import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.service.protocol.TuttiProtocolImportExportService; import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; @@ -96,12 +95,12 @@ log.info("Will export protocol species to file: " + file); } - // bind to a protocol - TuttiProtocol protocol = getModel().toBean(); + EditProtocolUIModel model = getModel(); + // build species protocol to export + List<SpeciesProtocol> protocols = Lists.newArrayList(); - - for (EditProtocolSpeciesRowModel row : getModel().getRows()) { + for (EditProtocolSpeciesRowModel row : model.getRows()) { if (row.isValid()) { protocols.add(row.toBean()); } @@ -109,13 +108,14 @@ // import TuttiProtocolImportExportService service = - getContext().getService(TuttiProtocolImportExportService.class); + getService(TuttiProtocolImportExportService.class); service.exportProtocolSpecies(file, protocols, - getHandler().getAllCaracteristic(), - getHandler().getAllReferentSpeciesByTaxonId()); + model.getAllCaracteristic(), + model.getAllReferentSpeciesByTaxonId()); - sendMessage("Espèces du Protocole exportés dans le fichier " + file + "."); + sendMessage(_("tutti.flash.information.species.exported.from.protocol", + file)); } } \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolCaracteristicAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolCaracteristicAction.java 2013-02-10 14:59:07 UTC (rev 382) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolCaracteristicAction.java 2013-02-10 15:00:32 UTC (rev 383) @@ -25,8 +25,10 @@ */ import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; +import fr.ifremer.tutti.service.TuttiService; import fr.ifremer.tutti.service.protocol.TuttiProtocolImportExportService; import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; +import fr.ifremer.tutti.ui.swing.config.TuttiApplicationConfig; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -93,27 +95,31 @@ log.info("Will import protocol caracteristic file: " + file); } + EditProtocolUIHandler handler = getHandler(); EditProtocolUIModel model = getModel(); // bind to a protocol TuttiProtocol protocol = model.toBean(); TuttiProtocolImportExportService service = - getContext().getService(TuttiProtocolImportExportService.class); + getService(TuttiProtocolImportExportService.class); service.importProtocolCaracteristic(file, protocol, - getHandler().getAllCaracteristic()); + model.getAllCaracteristic()); - getHandler().addDoubleListListeners(); + handler.addDoubleListListeners(); try { // rebind to model model.fromBean(protocol); } finally { - getHandler().removeDoubleListListeners(); + handler.removeDoubleListListeners(); } - sendMessage("Caractéristiques importées depuis le fichier " + file); + sendMessage( + _("tutti.flash.information.caracteristic.imported.in.protocol", + file)); + } } \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolSpeciesAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolSpeciesAction.java 2013-02-10 14:59:07 UTC (rev 382) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolSpeciesAction.java 2013-02-10 15:00:32 UTC (rev 383) @@ -25,9 +25,11 @@ */ import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; +import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.protocol.TuttiProtocolImportExportService; import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import jaxx.runtime.swing.editor.bean.BeanComboBox; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -94,6 +96,7 @@ log.info("Will import protocol species file: " + file); } + EditProtocolUIHandler handler = getHandler(); EditProtocolUIModel model = getModel(); // bind to a protocol @@ -101,19 +104,29 @@ // import TuttiProtocolImportExportService service = - getContext().getService(TuttiProtocolImportExportService.class); + getService(TuttiProtocolImportExportService.class); service.importProtocolSpecies(file, protocol, - getHandler().getAllCaracteristic(), - getHandler().getAllReferentSpeciesByTaxonId()); + model.getAllCaracteristic(), + model.getAllReferentSpeciesByTaxonId()); + BeanComboBox<Species> speciesComboBox = getUI().getSpeciesComboBox(); + + // build rows from imported+merged protocol + // (will also remove all synonyms of species referent used) List<EditProtocolSpeciesRowModel> rows = - getHandler().toRows(null, protocol.getSpecies()); + handler.toRows(speciesComboBox.getData(), + protocol.getSpecies()); + + // update species comboBox + speciesComboBox.getHandler().sortData(); + handler.selectFirstInCombo(speciesComboBox); + + // update rows in model model.setRows(rows); - // update - - sendMessage("Espèces importées depuis le fichier " + file + "."); + sendMessage(_("tutti.flash.information.species.imported.in.protocol", + file)); } } \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/RemoveSpeciesProtocolAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/RemoveSpeciesProtocolAction.java 2013-02-10 14:59:07 UTC (rev 382) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/RemoveSpeciesProtocolAction.java 2013-02-10 15:00:32 UTC (rev 383) @@ -25,9 +25,12 @@ */ import com.google.common.base.Preconditions; +import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import java.awt.event.ActionEvent; +import java.util.Collection; import static org.nuiton.i18n.I18n._; @@ -45,7 +48,7 @@ super(handler, "removeSpeciesProtocol", "batch-delete", - null, + _("tutti.action.removeSpeciesProtocol"), _("tutti.action.removeSpeciesProtocol.tip"), false ); @@ -60,16 +63,23 @@ Preconditions.checkState(rowIndex != -1, "Cant remove species if no species selected"); - // remove the row from the model - EditProtocolSpeciesRowModel removedRow = getModel().getRows().remove(rowIndex); + EditProtocolSpeciesTableModel tableModel = getHandler().getTableModel(); - // readd all synonym of this taxon to the species comobox - Integer taxonId = removedRow.getSpecies().getReferenceTaxonId(); - getUI().getSpeciesComboBox().getData().addAll(handler.getAllSpeciesByTaxonId().get(String.valueOf(taxonId))); + EditProtocolSpeciesRowModel selectedRow = tableModel.getEntry(rowIndex); + + // re-add all synonym of this taxon to the species comobox + Integer taxonId = selectedRow.getSpecies().getReferenceTaxonId(); + Collection<Species> allSynonyms = getModel().getAllSynonyms(String.valueOf(taxonId)); + getUI().getSpeciesComboBox().getData().addAll(allSynonyms); getUI().getSpeciesComboBox().getHandler().sortData(); - // refresh all the table - handler.getTableModel().fireTableRowsDeleted(rowIndex, rowIndex); + + // remove the row from the model(do it after treating the comboBox which can be long) + tableModel.removeRow(rowIndex); + + String speciesStr = getDecorator(Species.class, DecoratorService.SPECIES_BY_CRUISE_CODE).toString(selectedRow.getSpecies()); + sendMessage(_("tutti.flash.information.species.remove.from.protocol", + speciesStr)); } } \ No newline at end of file