Author: tchemit Date: 2013-09-20 15:54:16 +0200 (Fri, 20 Sep 2013) New Revision: 1195 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1195 Log: refs #3297: [OBSERVATIONS INDIVIDUELLES] g?\195?\169rer les colonnes du tableau dans le protocole (configuration dans le protocole) Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFile.java trunk/tutti-persistence/src/main/xmi/tutti-persistence.properties trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx 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/resources/i18n/tutti-ui-swing_en_GB.properties trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFile.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFile.java 2013-09-19 21:16:52 UTC (rev 1194) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFile.java 2013-09-20 13:54:16 UTC (rev 1195) @@ -326,10 +326,10 @@ PMFM_ID_TRAWL_DISTANCE, PMFM_ID_SURVEY_PART, PMFM_ID_SORTED_UNSORTED, - PMFM_ID_SIZE_CATEGORY, - PMFM_ID_MATURITY, - PMFM_ID_SEX, - PMFM_ID_AGE, +// PMFM_ID_SIZE_CATEGORY, +// PMFM_ID_MATURITY, +// PMFM_ID_SEX, +// PMFM_ID_AGE, PMFM_ID_ID_PSFM ); } Modified: trunk/tutti-persistence/src/main/xmi/tutti-persistence.properties =================================================================== --- trunk/tutti-persistence/src/main/xmi/tutti-persistence.properties 2013-09-19 21:16:52 UTC (rev 1194) +++ trunk/tutti-persistence/src/main/xmi/tutti-persistence.properties 2013-09-20 13:54:16 UTC (rev 1195) @@ -45,6 +45,7 @@ fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol.attribute.gearUseFeaturePmfmId.stereotype=ordered fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol.attribute.vesselUseFeaturePmfmId.stereotype=ordered +fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol.attribute.individualObservationPmfmId.stereotype=ordered fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol.attribute.lengthClassesPmfmId.stereotype=ordered fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol.attribute.species.stereotype=ordered fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol.attribute.benthos.stereotype=ordered Modified: trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo =================================================================== (Binary files differ) Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties =================================================================== --- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-09-19 21:16:52 UTC (rev 1194) +++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-09-20 13:54:16 UTC (rev 1195) @@ -1,5 +1,5 @@ #Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo -#Thu Sep 19 23:07:37 CEST 2013 +#Fri Sep 20 11:03:34 CEST 2013 tutti.config.help=config.html tutti.createAccidentalBatch.action.cancel.help=editFishingOperation.html\#captureCapturesAccidentellesActions tutti.createAccidentalBatch.action.saveAndClose.help=editFishingOperation.html\#captureCapturesAccidentellesActions @@ -213,6 +213,7 @@ tutti.editProtocol.field.benthos.help=editProtocol.html\#fieldsBenthos tutti.editProtocol.field.comment.help=editProtocol.html\#fields tutti.editProtocol.field.gearUseFeature.help=editProtocol.html\#fieldsCaracteristics +tutti.editProtocol.field.individualObservation.help= tutti.editProtocol.field.lengthClasses.help=editProtocol.html\#fieldsCaracteristics tutti.editProtocol.field.name.help=editProtocol.html\#fields tutti.editProtocol.field.species.help=editProtocol.html\#fieldsSpecies Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties =================================================================== --- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-09-19 21:16:52 UTC (rev 1194) +++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-09-20 13:54:16 UTC (rev 1195) @@ -1,5 +1,5 @@ #Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo -#Thu Sep 19 22:01:50 CEST 2013 +#Fri Sep 20 11:03:34 CEST 2013 tutti.config.help=config.html tutti.createAccidentalBatch.action.cancel.help=editFishingOperation.html\#captureCapturesAccidentellesActions tutti.createAccidentalBatch.action.saveAndClose.help=editFishingOperation.html\#captureCapturesAccidentellesActions @@ -89,8 +89,8 @@ tutti.editBenthosBatch.help=editFishingOperation.html\#captureBenthos tutti.editBenthosFrequencies.action.cancel.help=editFishingOperation.html\#captureBenthosActions tutti.editBenthosFrequencies.action.generate.help=editFishingOperation.html\#captureBenthosActions +tutti.editBenthosFrequencies.action.saveAndClose.help=editFishingOperation.html\#captureBenthosActions tutti.editBenthosFrequencies.action.saveAndContinue.help=editFishingOperation.html\#captureBenthosActions -tutti.editBenthosFrequencies.action.saveAndClose.help=editFishingOperation.html\#captureBenthosActions tutti.editBenthosFrequencies.field.lengthStepCaracteristic.help=editFishingOperation.html\#captureBenthosFields tutti.editBenthosFrequencies.field.maxStep.help=editFishingOperation.html\#captureBenthosFields tutti.editBenthosFrequencies.field.minStep.help=editFishingOperation.html\#captureBenthosFields @@ -212,6 +212,7 @@ tutti.editProtocol.field.benthos.help=editProtocol.html\#fieldsBenthos tutti.editProtocol.field.comment.help=editProtocol.html\#fields tutti.editProtocol.field.gearUseFeature.help=editProtocol.html\#fieldsCaracteristics +tutti.editProtocol.field.individualObservation.help= tutti.editProtocol.field.lengthClasses.help=editProtocol.html\#fieldsCaracteristics tutti.editProtocol.field.name.help=editProtocol.html\#fields tutti.editProtocol.field.species.help=editProtocol.html\#fieldsSpecies Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css 2013-09-19 21:16:52 UTC (rev 1194) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css 2013-09-20 13:54:16 UTC (rev 1195) @@ -129,6 +129,11 @@ _help: {"tutti.editProtocol.field.vesselUseFeature.help"}; } +#individualObservationList { + property: individualObservationPmfm; + _help: {"tutti.editProtocol.field.individualObservation.help"}; +} + #lengthClassesList { property: lengthClassesPmfm; _help: {"tutti.editProtocol.field.lengthClasses.help"}; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx 2013-09-19 21:16:52 UTC (rev 1194) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx 2013-09-20 13:54:16 UTC (rev 1195) @@ -128,6 +128,10 @@ <BeanDoubleList id='gearUseFeatureList' genericType='Caracteristic'/> </tab> + <tab title='tutti.editProtocol.tab.caracteristic.individualObservation'> + <BeanDoubleList id='individualObservationList' + genericType='Caracteristic'/> + </tab> <tab title='tutti.editProtocol.tab.caracteristic.vesselUseFeature'> <BeanDoubleList id='vesselUseFeatureList' genericType='Caracteristic'/> 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-09-19 21:16:52 UTC (rev 1194) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-09-20 13:54:16 UTC (rev 1195) @@ -117,6 +117,8 @@ protected final SampleCategoryModel sampleCategoryModel; + protected List<BeanDoubleList<Caracteristic>> allDoubleLists; + public EditProtocolUIHandler(TuttiUI parentUi, EditProtocolUI ui) { super(parentUi.getHandler().getContext(), ui); this.persistenceService = context.getPersistenceService(); @@ -275,8 +277,8 @@ model.setSpeciesRow(speciesRows); model.setBenthosRow(benthosRows); - ui.getSpeciesComboBox().getHandler().reset(); - ui.getBenthosComboBox().getHandler().reset(); + ui.getSpeciesComboBox().reset(); + ui.getBenthosComboBox().reset(); { // create species table model @@ -399,44 +401,32 @@ tableModel.setRows(benthosRows); } + allDoubleLists = Lists.newArrayList( + ui.getLengthClassesList(), + ui.getGearUseFeatureList(), + ui.getIndividualObservationList(), + ui.getVesselUseFeatureList() + ); + initDoubleList(EditProtocolUIModel.PROPERTY_LENGTH_CLASSES_PMFM_ID, ui.getLengthClassesList(), Lists.newArrayList(model.getCaracteristics()), - model.getLengthClassesPmfmId(), - new Predicate<Caracteristic>() { + model.getLengthClassesPmfmId()); - public boolean apply(Caracteristic input) { - boolean result = !ui.getGearUseFeatureList().getModel().getSelected().contains(input); - result &= !ui.getVesselUseFeatureList().getModel().getSelected().contains(input); - return result; - } - }); - initDoubleList(EditProtocolUIModel.PROPERTY_GEAR_USE_FEATURE_PMFM_ID, ui.getGearUseFeatureList(), Lists.newArrayList(model.getCaracteristics()), - model.getGearUseFeaturePmfmId(), - new Predicate<Caracteristic>() { + model.getGearUseFeaturePmfmId()); - public boolean apply(Caracteristic input) { - boolean result = !ui.getLengthClassesList().getModel().getSelected().contains(input); - result &= !ui.getVesselUseFeatureList().getModel().getSelected().contains(input); - return result; - } - }); - initDoubleList(EditProtocolUIModel.PROPERTY_VESSEL_USE_FEATURE_PMFM_ID, ui.getVesselUseFeatureList(), Lists.newArrayList(model.getCaracteristics()), - model.getVesselUseFeaturePmfmId(), - new Predicate<Caracteristic>() { + model.getVesselUseFeaturePmfmId()); - public boolean apply(Caracteristic input) { - boolean result = !ui.getGearUseFeatureList().getModel().getSelected().contains(input); - result &= !ui.getLengthClassesList().getModel().getSelected().contains(input); - return result; - } - }); + initDoubleList(EditProtocolUIModel.PROPERTY_INDIVIDUAL_OBSERVATION_PMFM_ID, + ui.getIndividualObservationList(), + Lists.newArrayList(model.getCaracteristics()), + model.getIndividualObservationPmfmId()); // if new protocol can already cancel his creation model.setModify(model.isCreate() || model.isCleaned()); @@ -458,6 +448,10 @@ break; case 2: + selectedDoubleList = ui.getIndividualObservationList(); + break; + + case 3: selectedDoubleList = ui.getVesselUseFeatureList(); break; @@ -545,40 +539,23 @@ //------------------------------------------------------------------------// public void addDoubleListListeners() { - String id; - UpdateSelectedList updateListener; EditProtocolUIModel model = getModel(); - id = (String) ui.getLengthClassesList().getClientProperty("_updateListenerId"); - updateListener = (UpdateSelectedList) ui.getLengthClassesList().getClientProperty("_updateListener"); - model.addPropertyChangeListener(id, updateListener); - - id = (String) ui.getVesselUseFeatureList().getClientProperty("_updateListenerId"); - updateListener = (UpdateSelectedList) ui.getVesselUseFeatureList().getClientProperty("_updateListener"); - model.addPropertyChangeListener(id, updateListener); - - id = (String) ui.getGearUseFeatureList().getClientProperty("_updateListenerId"); - updateListener = (UpdateSelectedList) ui.getGearUseFeatureList().getClientProperty("_updateListener"); - model.addPropertyChangeListener(id, updateListener); + for (BeanDoubleList<Caracteristic> list : allDoubleLists) { + String id = (String) list.getClientProperty("_updateListenerId"); + UpdateSelectedList updateListener = (UpdateSelectedList) list.getClientProperty("_updateListener"); + model.addPropertyChangeListener(id, updateListener); + } } public void removeDoubleListListeners() { - String id; - UpdateSelectedList updateListener; EditProtocolUIModel model = getModel(); - id = (String) ui.getLengthClassesList().getClientProperty("_updateListenerId"); - updateListener = (UpdateSelectedList) ui.getLengthClassesList().getClientProperty("_updateListener"); - - model.removePropertyChangeListener(id, updateListener); - - id = (String) ui.getVesselUseFeatureList().getClientProperty("_updateListenerId"); - updateListener = (UpdateSelectedList) ui.getVesselUseFeatureList().getClientProperty("_updateListener"); - model.removePropertyChangeListener(id, updateListener); - - id = (String) ui.getGearUseFeatureList().getClientProperty("_updateListenerId"); - updateListener = (UpdateSelectedList) ui.getGearUseFeatureList().getClientProperty("_updateListener"); - model.removePropertyChangeListener(id, updateListener); + for (BeanDoubleList<Caracteristic> list : allDoubleLists) { + String id = (String) list.getClientProperty("_updateListenerId"); + UpdateSelectedList updateListener = (UpdateSelectedList) list.getClientProperty("_updateListener"); + model.removePropertyChangeListener(id, updateListener); + } } public Species openSelectOtherSpeciesDialog(String title, List<Species> species) { @@ -598,8 +575,7 @@ protected void initDoubleList(String propertyId, BeanDoubleList<Caracteristic> widget, List<Caracteristic> availableCaracteristics, - List<String> selectedCaracteristics, - Predicate<Caracteristic> filter) { + List<String> selectedCaracteristics) { initBeanList(widget, availableCaracteristics, Lists.<Caracteristic>newArrayList()); @@ -611,7 +587,10 @@ widget.putClientProperty("_updateListenerId", propertyId); listener.select(selectedCaracteristics); - widget.getHandler().addFilter(filter); + // add a filter to keep only in universe everything except what is selected by other double lists + List<BeanDoubleList<Caracteristic>> list = Lists.newArrayList(allDoubleLists); + list.remove(widget); + widget.getHandler().addFilter(new SelectValuePredicate(list)); } protected void selectLengthClasses(List<String> ids, JComboBox comboBox) { @@ -750,4 +729,26 @@ model.setSelected(selection); } } + + protected static class SelectValuePredicate implements Predicate<Caracteristic> { + + protected final List<BeanDoubleList<Caracteristic>> lists; + + public SelectValuePredicate(List<BeanDoubleList<Caracteristic>> lists) { + this.lists = lists; + } + + @Override + public boolean apply(Caracteristic input) { + + boolean result = true; + for (BeanDoubleList<Caracteristic> list : lists) { + if (list.getModel().getSelected().contains(input)) { + result = false; + break; + } + } + return result; + } + } } 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-09-19 21:16:52 UTC (rev 1194) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java 2013-09-20 13:54:16 UTC (rev 1195) @@ -151,6 +151,11 @@ setVesselUseFeaturePmfmId(ids); } + public void setIndividualObservationPmfm(List<Caracteristic> individualObservationPmfm) { + List<String> ids = TuttiEntities.collecIds(individualObservationPmfm); + setIndividualObservationPmfmId(ids); + } + public List<EditProtocolSpeciesRowModel> getSpeciesRow() { return speciesRow; } @@ -324,7 +329,6 @@ @Override public void setGearUseFeaturePmfmId(List<String> gearUseFeaturePmfmId) { - Object oldValue = getGearUseFeaturePmfmId(); editObject.setGearUseFeaturePmfmId(gearUseFeaturePmfmId); firePropertyChange(PROPERTY_GEAR_USE_FEATURE_PMFM_ID, null, gearUseFeaturePmfmId); } @@ -336,12 +340,22 @@ @Override public void setVesselUseFeaturePmfmId(List<String> vesselUseFeaturePmfmId) { - Object oldValue = getVesselUseFeaturePmfmId(); editObject.setVesselUseFeaturePmfmId(vesselUseFeaturePmfmId); firePropertyChange(PROPERTY_VESSEL_USE_FEATURE_PMFM_ID, null, vesselUseFeaturePmfmId); } @Override + public List<String> getIndividualObservationPmfmId() { + return editObject.getIndividualObservationPmfmId(); + } + + @Override + public void setIndividualObservationPmfmId(List<String> individualObservationPmfmId) { + editObject.setIndividualObservationPmfmId(individualObservationPmfmId); + firePropertyChange(PROPERTY_INDIVIDUAL_OBSERVATION_PMFM_ID, null, individualObservationPmfmId); + } + + @Override public String getGearUseFeaturePmfmId(int index) { return null; } @@ -428,6 +442,49 @@ } @Override + public String getIndividualObservationPmfmId(int index) { + return null; + } + + @Override + public boolean isIndividualObservationPmfmIdEmpty() { + return false; + } + + @Override + public int sizeIndividualObservationPmfmId() { + return 0; + } + + @Override + public void addIndividualObservationPmfmId(String individualObservationPmfmId) { + } + + @Override + public void addAllIndividualObservationPmfmId(Collection<String> individualObservationPmfmId) { + } + + @Override + public boolean removeIndividualObservationPmfmId(String individualObservationPmfmId) { + return false; + } + + @Override + public boolean removeAllIndividualObservationPmfmId(Collection<String> individualObservationPmfmId) { + return false; + } + + @Override + public boolean containsIndividualObservationPmfmId(String individualObservationPmfmId) { + return false; + } + + @Override + public boolean containsAllIndividualObservationPmfmId(Collection<String> individualObservationPmfmId) { + return false; + } + + @Override public String getLengthClassesPmfmId(int index) { return null; } @@ -472,7 +529,7 @@ @Override public SpeciesProtocol getSpecies(int index) { - return null; + return editObject.getSpecies(index); } @Override Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties =================================================================== --- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-09-19 21:16:52 UTC (rev 1194) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-09-20 13:54:16 UTC (rev 1195) @@ -845,6 +845,7 @@ tutti.editProtocol.tab.benthos= tutti.editProtocol.tab.caracteristic= tutti.editProtocol.tab.caracteristic.gearUseFeature= +tutti.editProtocol.tab.caracteristic.individualObservation= tutti.editProtocol.tab.caracteristic.lengthClasses= tutti.editProtocol.tab.caracteristic.vesselUseFeature= tutti.editProtocol.tab.info= Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties =================================================================== --- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-09-19 21:16:52 UTC (rev 1194) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-09-20 13:54:16 UTC (rev 1195) @@ -818,6 +818,7 @@ 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.vesselUseFeature=Autres caractéristiques tutti.editProtocol.tab.info=Informations générales