r416 - in trunk: coser-business/src/main/java/fr/ifremer/coser/services coser-ui/src/main/java/fr/ifremer/coser/ui/project coser-ui/src/main/java/fr/ifremer/coser/ui/selection coser-ui/src/main/java/fr/ifremer/coser/ui/util coser-ui/src/main/resources/i18n coser-ui/src/main/resources/icons
Author: chatellier Date: 2010-12-15 15:01:13 +0000 (Wed, 15 Dec 2010) New Revision: 416 Log: Ajout de la possibilit?\195?\169 de recharger les donn?\195?\169es dans une selection en cours Added: trunk/coser-ui/src/main/resources/icons/arrow_rotate_clockwise.png Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionDetailsView.jaxx trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/util/CoserListSelectionModel.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-business/src/main/java/fr/ifremer/coser/services/ProjectService.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java 2010-12-15 10:50:42 UTC (rev 415) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java 2010-12-15 15:01:13 UTC (rev 416) @@ -1456,6 +1456,23 @@ } /** + * Recharge les données de control et les copies dans la selection. + * + * Utilisé lors d'un rechargement utilisateur, ou lors de la mise à jour + * des années. + * + * @param project project + * @param selection selection to copy data to + * @return project + * @throws CoserBusinessException + */ + public Project loadControlDataToSelection(Project project, Selection selection) throws CoserBusinessException { + Project newProject = loadControlData(project); + copyControlDataToSelection(newProject, selection); + return newProject; + } + + /** * Get zones name in project with data in [{@code beginYear}-{@code endYear}]. * * This methods set {@link Selection#setSelectedYears(List)}, and use @@ -1476,8 +1493,7 @@ // la liste des nouvelles année est plus grande que la liste // actuelle des données de la selection // les données doivent être rechargée - project = loadControlData(project); - copyControlDataToSelection(project, selection); + project = loadControlDataToSelection(project, selection); } List<String> result = new ArrayList<String>(); Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java 2010-12-15 10:50:42 UTC (rev 415) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java 2010-12-15 15:01:13 UTC (rev 416) @@ -277,9 +277,12 @@ parent.getHandler().showControlView(false); } } catch (Exception ex) { - throw new CoserException("Can't create project", ex); + // conserve le meme mesage que la cause + throw new CoserException(ex.getMessage(), ex); } - setDefaultCursor(projectView); + finally { + setDefaultCursor(projectView); + } } }; task.execute(); Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionDetailsView.jaxx =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionDetailsView.jaxx 2010-12-15 10:50:42 UTC (rev 415) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionDetailsView.jaxx 2010-12-15 15:01:13 UTC (rev 416) @@ -60,6 +60,9 @@ icon="disk.png" onActionPerformed="getHandler().saveSelection(this)" /> <JButton icon="report.png" onActionPerformed="getHandler().displayLogReport(this)" text="coser.ui.selection.logreport" /> + <JToolBar.Separator /> + <JButton icon="arrow_rotate_clockwise.png" onActionPerformed="getHandler().reloadControlData(this)" + text="coser.ui.selection.reloadcontroldata" /> </JToolBar> </cell> </row> 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-12-15 10:50:42 UTC (rev 415) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java 2010-12-15 15:01:13 UTC (rev 416) @@ -182,7 +182,7 @@ detailView.getYearsListModel().setYears(selection.getAllYears()); // tout est selectionné par defaut ((CoserListSelectionModel)detailView.getYearsList().getSelectionModel()).setSelectedObjects(selection.getSelectedYears()); - + view.setCreationState(true); // disable tabs @@ -229,6 +229,50 @@ } /** + * Recharge les données de controle sur action utilsateur. + * + * Si confirmation: + * <ul> + * <li>recharge les données + * <li>reactive le bouton année + * <li>affiche l'accordeon année + * </ul> + * + * @param view view + */ + public void reloadControlData(SelectionDetailsView view) { + + int response = JOptionPane.showConfirmDialog(view, _("coser.ui.selection.detail.confirmcontrolreload"), + _("coser.ui.selection.selectionTitle"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); + + if (response == JOptionPane.YES_OPTION) { + Project project = view.getContextValue(Project.class); + Selection selection = view.getContextValue(Selection.class); + ProjectService projectService = view.getContextValue(ProjectService.class); + try { + projectService.loadControlDataToSelection(project, selection); + + JOptionPane.showMessageDialog(view, _("coser.ui.selection.detail.controldatareloaded"), + _("coser.ui.selection.selectionTitle"), JOptionPane.INFORMATION_MESSAGE); + + // affiche les années + view.getValidDatesButton().setEnabled(true); + view.getDetailAccordionPane().setSelected(1); + + // vide les autres listes + view.getStrataListModel().setStrata(new ArrayList<String>()); + view.getStrataList().clearSelection(); + view.getFilteredSpeciesListModel().setSpecies(new ArrayList<String>()); + view.getFilteredSpeciesList().clearSelection(); + view.getSelectedSpeciesListModel().setSpecies(new ArrayList<String>()); + view.getSelectedSpeciesList().clearSelection(); + } catch (CoserBusinessException ex) { + throw new CoserException("Can't reload control data", ex); + } + } + } + + /** * Rafraichit la liste des zones suite à la selection des années. * * @param view view @@ -573,8 +617,10 @@ } } catch (CoserBusinessException ex) { + if (log.isErrorEnabled()) { + log.error("Can't save selection", ex); + } JOptionPane.showMessageDialog(view, ex.getMessage(), _("coser.ui.selection.saveError"), JOptionPane.ERROR_MESSAGE); - throw new CoserException("Can't save selection", ex); } // enable tabs @@ -588,17 +634,22 @@ * @param view parent view */ public void saveSelection(SelectionListsView view) { - saveProjectSelection(view); - JOptionPane.showMessageDialog(view, _("coser.ui.selection.selectionSaved"), + boolean saved = saveProjectSelection(view); + if (saved) { + JOptionPane.showMessageDialog(view, _("coser.ui.selection.selectionSaved"), _("coser.ui.selection.selectionTitle"), JOptionPane.INFORMATION_MESSAGE); + } } /** * Sauvegarde la sélection (partie listes de selection). * * @param view parent view + * @return {@code true} is slection has been saved */ - protected void saveProjectSelection(SelectionListsView view) { + protected boolean saveProjectSelection(SelectionListsView view) { + boolean saved = false; + Project project = view.getContextValue(Project.class); Selection selection = view.getContextValue(Selection.class); ProjectService service = view.getContextValue(ProjectService.class); @@ -608,14 +659,18 @@ try { service.saveProjectSelection(project, selection); + saved = true; } catch (CoserBusinessException ex) { + if (log.isErrorEnabled()) { + log.error("Can't save selection", ex); + } JOptionPane.showMessageDialog(view, ex.getMessage(), _("coser.ui.selection.saveError"), JOptionPane.ERROR_MESSAGE); - throw new CoserException("Can't save selection", ex); } // enable tabs selectionView.setEnabledAt(2, selection.isValidated()); // selection lists + return saved; } /** @@ -665,10 +720,11 @@ boolean canBeValidated = checkSelectionListComments(view, selection); if (canBeValidated) { selection.setValidated(true); - saveProjectSelection(view); - - JOptionPane.showMessageDialog(view, _("coser.ui.selection.selectionValidated"), + boolean saved = saveProjectSelection(view); + if (saved) { + JOptionPane.showMessageDialog(view, _("coser.ui.selection.selectionValidated"), _("coser.ui.selection.selectionTitle"), JOptionPane.INFORMATION_MESSAGE); + } } } @@ -834,7 +890,7 @@ updateSelectionSpecies(parent); // supprime la selection apres fusion (demande utilisateur) - parent.getFilteredSpeciesList().clearSelection(); + parent.getFilteredSpeciesListSelectionModel().clearSelection(); view.dispose(); JOptionPane.showMessageDialog(view, _("coser.ui.selection.speciesMerged"), _("coser.ui.selection.selectionTitle"), JOptionPane.INFORMATION_MESSAGE); Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/util/CoserListSelectionModel.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/util/CoserListSelectionModel.java 2010-12-15 10:50:42 UTC (rev 415) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/util/CoserListSelectionModel.java 2010-12-15 15:01:13 UTC (rev 416) @@ -45,7 +45,7 @@ * des données reste la même au niveau des objets (sinon, les indices * ne correspondent pas au données précédent le changement. * - * ATTENTION : {@link #selectedObjects} ne refelte pas la selection + * ATTENTION : {@link #selectedObjects} ne reflete pas la selection * de la liste. Certains de ces élements peuvent être mémorisé selectionné, * mais non présente dans le modele de la liste, donc hors selection. * @@ -170,6 +170,8 @@ @Override public void clearSelection() { super.clearSelection(); - registerSelection(0, coserListModel.getSize() - 1); + //ne peut pas retirer des elements qui ne sont plus dans le model... + //registerSelection(0, coserListModel.getSize() - 1); + selectedObjects.clear(); } } 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-12-15 10:50:42 UTC (rev 415) +++ trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties 2010-12-15 15:01:13 UTC (rev 416) @@ -12,7 +12,6 @@ coser.config.support.email.description=Support email address coser.config.website.description=Coser website coser.ui.common.cancel=Cancel -coser.ui.common.comment=Comment coser.ui.common.selectAll=Select all coser.ui.common.selectAll.short=All coser.ui.common.selectFile=Select\u2026 @@ -150,6 +149,8 @@ coser.ui.selection.allSpecies=L1 \: All species (%d/%d) coser.ui.selection.comment=Comment \: coser.ui.selection.createError=Creation error +coser.ui.selection.detail.confirmcontrolreload=Are you sure you want to reload control data ?\nAll modifications done on current selection will be lost. +coser.ui.selection.detail.controldatareloaded=Control data reloaded. coser.ui.selection.detail.mainAccordion=Details coser.ui.selection.detail.speciesAccordion=Species coser.ui.selection.detail.strataAccordion=Strata @@ -191,6 +192,7 @@ coser.ui.selection.nonJustifiedTitle=Unjustified selection coser.ui.selection.occurrenceDensitySpecies=L2 \: Filtered species (%d/%d) coser.ui.selection.occurrencedensityrenderer=<html>%s<span style\='font-size\:85%%;color\:gray;'>(Occ\=%.2f, Dens\=%.2f)</span></html> +coser.ui.selection.reloadcontroldata=Reload control data coser.ui.selection.replayerror=Replay error coser.ui.selection.rsufidataextracted=RSufi data extracted. coser.ui.selection.saveError=Save error 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-12-15 10:50:42 UTC (rev 415) +++ trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties 2010-12-15 15:01:13 UTC (rev 416) @@ -12,7 +12,6 @@ coser.config.support.email.description=Adresse de support pour l'envoi des erreurs coser.config.website.description=Site internet de Coser coser.ui.common.cancel=Annuler -coser.ui.common.comment=Commentaire coser.ui.common.selectAll=S\u00E9lectionner tout coser.ui.common.selectAll.short=Tout coser.ui.common.selectFile=S\u00E9lectionner\u2026 @@ -150,6 +149,8 @@ coser.ui.selection.allSpecies=L1 \: Toutes les esp\u00E8ces (%d/%d) coser.ui.selection.comment=Commentaire \: coser.ui.selection.createError=Erreur de cr\u00E9action +coser.ui.selection.detail.confirmcontrolreload=\u00CAtes vous s\u00FBr de vouloir recharger les donn\u00E9es de contr\u00F4le ?\nToutes les modifications de la s\u00E9lection en cours seront perdues. +coser.ui.selection.detail.controldatareloaded=Donn\u00E9es de contr\u00F4le recharg\u00E9es. coser.ui.selection.detail.mainAccordion=D\u00E9tails coser.ui.selection.detail.speciesAccordion=Esp\u00E8ces coser.ui.selection.detail.strataAccordion=Strates @@ -191,6 +192,7 @@ coser.ui.selection.nonJustifiedTitle=S\u00E9lection non justifi\u00E9e coser.ui.selection.occurrenceDensitySpecies=L2 \: Esp\u00E8ces filtr\u00E9es (%d/%d) coser.ui.selection.occurrencedensityrenderer=<html>%s<span style\='font-size\:85%%;color\:gray;'>(Occ\=%.2f, Dens\=%.2f)</span></html> +coser.ui.selection.reloadcontroldata=Recharger les donn\u00E9es de contr\u00F4le coser.ui.selection.replayerror=Erreur de reapplication coser.ui.selection.rsufidataextracted=Donn\u00E9es RSufi extraites. coser.ui.selection.saveError=Erreur de sauvegarde Added: trunk/coser-ui/src/main/resources/icons/arrow_rotate_clockwise.png =================================================================== (Binary files differ) Property changes on: trunk/coser-ui/src/main/resources/icons/arrow_rotate_clockwise.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream
participants (1)
-
chatellier@users.labs.libre-entreprise.org