Author: chatellier Date: 2010-10-22 16:50:07 +0000 (Fri, 22 Oct 2010) New Revision: 93 Log: Fix merge ui and ui refresh after merge Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java trunk/coser-ui/src/main/resources/i18n/coser-ui-en_GB.properties trunk/coser-ui/src/main/resources/i18n/coser-ui-fr_FR.properties Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java 2010-10-22 16:49:47 UTC (rev 92) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java 2010-10-22 16:50:07 UTC (rev 93) @@ -32,12 +32,19 @@ import javax.swing.JList; import javax.swing.JMenuItem; +import javax.swing.JOptionPane; import javax.swing.JPopupMenu; import javax.swing.event.ListSelectionEvent; +import jaxx.runtime.JAXXUtil; +import jaxx.runtime.context.DefaultJAXXContext; +import jaxx.runtime.context.JAXXInitialContext; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import fr.ifremer.coser.CoserBusinessException; +import fr.ifremer.coser.CoserException; import fr.ifremer.coser.bean.Project; import fr.ifremer.coser.bean.Specy; import fr.ifremer.coser.services.ProjectService; @@ -62,6 +69,16 @@ * @param event event de la selection (combo) */ public void updateSelectionDateData(SelectionDetailsView view, ActionEvent event) { + updateSelectionZone(view); + updateSelectionSpecies(view); + } + + /** + * Rafraichit la liste des zones avec les dates selectionnees. + * + * @param view view + */ + public void updateSelectionZone(SelectionDetailsView view) { Project project = view.getContextValue(Project.class); ProjectService projectService = view.getContextValue(ProjectService.class); @@ -72,12 +89,29 @@ if (beginYear != null && endYear != null) { List<String> zone = projectService.getProjectZone(project, beginYear, endYear); view.getSelectionZoneModel().setZones(zone); - + } + } + + /** + * Rafraichit la liste des especes avec les dates selectionnees. + * + * @param view view + */ + public void updateSelectionSpecies(SelectionDetailsView view) { + Project project = view.getContextValue(Project.class); + ProjectService projectService = view.getContextValue(ProjectService.class); + + Integer beginYear = (Integer)view.getSelectionDetailsBeginYearField().getSelectedItem(); + Integer endYear = (Integer)view.getSelectionDetailsEndYearField().getSelectedItem(); + + // il est possible que l'evenement fasse suite a une seule des selections + if (beginYear != null && endYear != null) { List<Specy> species = projectService.getProjectSpecies(project, beginYear, endYear); view.getSpecyListModel().setSpecy(species); } } + /** * Mise à jour des autre liste qui dépendent de cette premiere liste. * @@ -143,12 +177,35 @@ public void performMergeSpecies(SpeciesFusionDialog view) { // TODO echatellier 20101021 attention a ce que la selection - // ne change pas (la fenetre est modales pourr l'instant) + // ne change pas (la fenetre est modales pour l'instant) String newSpecyName = view.getNewSpeciesNameField().getText(); Project project = view.getContextValue(Project.class); ProjectService projectService = view.getContextValue(ProjectService.class); boolean newSpecyExist = projectService.isSpecyNameExist(project, newSpecyName); + if (!newSpecyExist) { + JOptionPane.showMessageDialog(view, _("coser.ui.selection.invalidFusionName"), + _("coser.ui.selection.fusionError"), JOptionPane.ERROR_MESSAGE); + view.getNewSpeciesNameField().requestFocus(); + } + else { + SelectionDetailsView parent = view.getContextValue(SelectionDetailsView.class, JAXXUtil.PARENT); + Object[] selectedSpecies = parent.getSpecyList().getSelectedValues(); + String[] specyNames = new String[selectedSpecies.length]; + for (int i = 0 ; i < selectedSpecies.length ; ++i) { + Specy selectedSpecy = (Specy)selectedSpecies[i]; + specyNames[i] = selectedSpecy.getName(); + } + + try { + projectService.mergeSpecies(project, newSpecyName, specyNames); + } + catch (CoserBusinessException ex) { + throw new CoserException("Can't merge species", ex); + } + updateSelectionSpecies(parent); + view.dispose(); + } } } Modified: trunk/coser-ui/src/main/resources/i18n/coser-ui-en_GB.properties =================================================================== --- trunk/coser-ui/src/main/resources/i18n/coser-ui-en_GB.properties 2010-10-22 16:49:47 UTC (rev 92) +++ trunk/coser-ui/src/main/resources/i18n/coser-ui-en_GB.properties 2010-10-22 16:50:07 UTC (rev 93) @@ -81,6 +81,8 @@ coser.ui.selection.fusion.description= coser.ui.selection.fusion.name= coser.ui.selection.fusion.title= +coser.ui.selection.fusionError= +coser.ui.selection.invalidFusionName= coser.ui.selection.maturitySpecies=Species with maturity coser.ui.selection.occurenceDensitySpecies=Filtered species coser.ui.selection.sizeAllYearSpecies=Species with size all year Modified: trunk/coser-ui/src/main/resources/i18n/coser-ui-fr_FR.properties =================================================================== --- trunk/coser-ui/src/main/resources/i18n/coser-ui-fr_FR.properties 2010-10-22 16:49:47 UTC (rev 92) +++ trunk/coser-ui/src/main/resources/i18n/coser-ui-fr_FR.properties 2010-10-22 16:50:07 UTC (rev 93) @@ -75,6 +75,8 @@ coser.ui.selection.fusion.description=Fusion de deux esp\u00E8ces. Veuillez renseigner un nouveau nom pr\u00E9sent dans le r\u00E9f\u00E9rentiel. coser.ui.selection.fusion.name=Nouveau nom\u2009\: coser.ui.selection.fusion.title=Fusion +coser.ui.selection.fusionError=Erreur de fusion +coser.ui.selection.invalidFusionName=Le nom de fusion choisit n'est pas pr\u00E9sent de le r\u00E9f\u00E9rentiel \! coser.ui.selection.maturitySpecies=Esp\u00E8ces avec maturit\u00E9 coser.ui.selection.occurenceDensitySpecies=Esp\u00E8ces filtr\u00E9es coser.ui.selection.sizeAllYearSpecies=Esp\u00E8ces avec taille pour toutes les ann\u00E9es