Author: kmorin Date: 2013-02-26 18:54:09 +0100 (Tue, 26 Feb 2013) New Revision: 486 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/486 Log: refs #1971 [ERGO] - Gestion des listes d?\195?\169roulantes - Fonctionnalit?\195?\169 de filtrage / recherche Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css 2013-02-26 17:53:40 UTC (rev 485) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css 2013-02-26 17:54:09 UTC (rev 486) @@ -34,7 +34,7 @@ BeanDoubleList { showReset: true; - /*i18nPrefix: "tutti.property.";*/ + i18nPrefix: "tutti.property."; bean: {model}; } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-02-26 17:53:40 UTC (rev 485) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-02-26 17:54:09 UTC (rev 486) @@ -24,6 +24,7 @@ * #L% */ +import com.google.common.base.Predicate; import com.google.common.collect.Lists; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Program; @@ -128,43 +129,7 @@ JAXXContextEntryDef<List<Gear>> SCIENTIFIC_GEARS_CONTEXT_ENTRY = JAXXUtil.newListContextEntryDef("scientificGear"); JAXXContextEntryDef<List<Gear>> FISHING_GEARS_CONTEXT_ENTRY = JAXXUtil.newListContextEntryDef("fishingGear"); - - protected List<Vessel> getVesselList(VesselTypeEnum vesselType) { - List<Vessel> result = Lists.newArrayList(); - switch (vesselType) { - - case ALL: - result.addAll(FISHING_VESSELS_CONTEXT_ENTRY.getContextValue(ui)); - result.addAll(SCIENTIFIC_VESSELS_CONTEXT_ENTRY.getContextValue(ui)); - break; - case SCIENTIFIC: - result.addAll(SCIENTIFIC_VESSELS_CONTEXT_ENTRY.getContextValue(ui)); - break; - case FISHING: - result.addAll(FISHING_VESSELS_CONTEXT_ENTRY.getContextValue(ui)); - break; - } - return result; - } - - protected List<Gear> getGearList(VesselTypeEnum vesselType) { - List<Gear> result = Lists.newArrayList(); - switch (vesselType) { - - case ALL: - result.addAll(SCIENTIFIC_GEARS_CONTEXT_ENTRY.getContextValue(ui)); - result.addAll(FISHING_GEARS_CONTEXT_ENTRY.getContextValue(ui)); - break; - case SCIENTIFIC: - result.addAll(SCIENTIFIC_GEARS_CONTEXT_ENTRY.getContextValue(ui)); - break; - case FISHING: - result.addAll(FISHING_GEARS_CONTEXT_ENTRY.getContextValue(ui)); - break; - } - return result; - } - + @Override public void afterInitUI() { @@ -173,46 +138,71 @@ List<Person> users = persistenceService.getAllPerson(); EditCruiseUIModel model = getModel(); - - model.setVesselType(model.isCreate() ? VesselTypeEnum.SCIENTIFIC : VesselTypeEnum.ALL); - + + final List<Vessel> scientificVesselList = SCIENTIFIC_VESSELS_CONTEXT_ENTRY.getContextValue(ui); + final List<Vessel> fishingVesselList = FISHING_VESSELS_CONTEXT_ENTRY.getContextValue(ui); + final List<Vessel> allVesselList = Lists.newArrayList(); + allVesselList.addAll(scientificVesselList); + allVesselList.addAll(fishingVesselList); + + final List<Gear> scientificGearList = SCIENTIFIC_GEARS_CONTEXT_ENTRY.getContextValue(ui); + final List<Gear> fishingGearList = FISHING_GEARS_CONTEXT_ENTRY.getContextValue(ui); + final List<Gear> allGearList = Lists.newArrayList(); + allGearList.addAll(scientificGearList); + allGearList.addAll(fishingGearList); + // Change vessel list and gear list when vessel type changes model.addPropertyChangeListener(EditCruiseUIModel.PROPERTY_VESSEL_TYPE, new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { - EditCruiseUIModel source = (EditCruiseUIModel) evt.getSource(); + VesselTypeEnum vesselType = (VesselTypeEnum) evt.getNewValue(); - List<Vessel> selectedVessel = source.getVessel(); - List<Gear> selectedGear = source.getGear(); + Predicate<Vessel> vesselPredicate = null; + Predicate<Gear> gearPredicate = null; + + switch (vesselType) { + case FISHING: + vesselPredicate = new Predicate<Vessel>() { - VesselTypeEnum vesselType = (VesselTypeEnum) evt.getNewValue(); + public boolean apply(Vessel input) { + return !input.isScientificVessel(); + } + }; + gearPredicate = new Predicate<Gear>() { - List<Vessel> newVesselList = getVesselList(vesselType); - List<Gear> newGearList = getGearList(vesselType); + public boolean apply(Gear input) { + return !input.isScientificGear(); + } + }; + break; + + case SCIENTIFIC: + vesselPredicate = new Predicate<Vessel>() { - // compute new selected vessel list - List<Vessel> newSelectedVessel = Lists.newArrayList(); - if (selectedVessel != null) { - newSelectedVessel.addAll(selectedVessel); - } - newSelectedVessel.retainAll(newVesselList); + public boolean apply(Vessel input) { + return input.isScientificVessel(); + } + }; + gearPredicate = new Predicate<Gear>() { - // compute new selected gear list - List<Gear> newSelectedGear = Lists.newArrayList(); - if (selectedGear != null) { - newSelectedGear.addAll(selectedGear); + public boolean apply(Gear input) { + return input.isScientificGear(); + } + }; + break; + } - newSelectedGear.retainAll(newGearList); + ui.getVesselList().getHandler().clearFilters(); + ui.getGearList().getHandler().clearFilters(); + + if (vesselPredicate != null) { + ui.getVesselList().getHandler().addFilter(vesselPredicate); + } + if (gearPredicate != null) { + ui.getGearList().getHandler().addFilter(gearPredicate); + } - // reinit vessel list - ui.getVesselList().getModel().setUniverse(newVesselList); - ui.getVesselList().getModel().setSelected(newSelectedVessel); - - // reinit gear list - ui.getGearList().getModel().setUniverse(newGearList); - ui.getGearList().getModel().setSelected(newSelectedGear); - } }); @@ -224,27 +214,15 @@ persistenceService.getAllCountry(), model.getCountry()); + initBeanList(ui.getVesselList(), - getVesselList(model.getVesselType()), + allVesselList, model.getVessel()); initBeanList(ui.getGearList(), - getGearList(model.getVesselType()), + allGearList, model.getGear()); - //TODO kmorin 20130218 remove this sort when the double lists will be sortable - Collections.sort(users, new Comparator<Person>() { - - public int compare(Person o1, Person o2) { - if (o1 == null) { - return -1; - } - if (o2 == null) { - return 1; - } - return o1.getFirstName().compareTo(o2.getFirstName()); - } - }); initBeanList(ui.getHeadOfMissionList(), users, model.getHeadOfMission()); @@ -258,6 +236,8 @@ // if new fishingOperation can already cancel his creation model.setModify(model.isCreate()); + + model.setVesselType(VesselTypeEnum.SCIENTIFIC); registerValidators(validator); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java 2013-02-26 17:53:40 UTC (rev 485) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java 2013-02-26 17:54:09 UTC (rev 486) @@ -443,8 +443,8 @@ // update saisissuer selection List<Person> saisisseur = editFishingOperationUIModel.getSaisisseur(); - ui.getSaisisseurList().getModel().setSelected(saisisseur); - + ui.getSaisisseurList().getHandler().setSelected(saisisseur); + // update model empty property editFishingOperationUIModel.setEmpty(false); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-02-26 17:53:40 UTC (rev 485) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-02-26 17:54:09 UTC (rev 486) @@ -34,7 +34,7 @@ BeanDoubleList { showReset: true; - /*i18nPrefix: "tutti.property.";*/ + i18nPrefix: "tutti.property."; bean: {model}; } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-02-26 17:53:40 UTC (rev 485) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-02-26 17:54:09 UTC (rev 486) @@ -243,19 +243,6 @@ initUI(ui); List<Person> people = persistenceService.getAllPerson(); - //TODO kmorin 20130218 remove this sort when the double lists will be sortable - Collections.sort(people, new Comparator<Person>() { - - public int compare(Person o1, Person o2) { - if (o1 == null) { - return -1; - } - if (o2 == null) { - return 1; - } - return o1.getFirstName().compareTo(o2.getFirstName()); - } - }); initBeanList(ui.getSaisisseurList(), people, model.getSaisisseur()); 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-02-26 17:53:40 UTC (rev 485) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css 2013-02-26 17:54:09 UTC (rev 486) @@ -28,7 +28,7 @@ BeanDoubleList { showReset: true; - /*i18nPrefix: "tutti.property.";*/ + i18nPrefix: "tutti.property."; bean: {model}; }