Author: chatellier Date: 2010-12-08 16:55:58 +0000 (Wed, 08 Dec 2010) New Revision: 378 Log: Add modification report in selection ui Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlHandler.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/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/control/ControlHandler.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlHandler.java 2010-12-08 16:55:37 UTC (rev 377) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlHandler.java 2010-12-08 16:55:58 UTC (rev 378) @@ -46,6 +46,7 @@ import java.util.Set; import java.util.UUID; +import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenuItem; import javax.swing.JOptionPane; @@ -61,7 +62,6 @@ import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.event.TreeSelectionEvent; -import javax.swing.table.TableColumn; import javax.swing.tree.TreePath; import jaxx.runtime.JAXXUtil; @@ -74,6 +74,10 @@ import org.apache.commons.logging.LogFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; +import org.nuiton.math.matrix.MatrixND; +import org.nuiton.math.matrix.viewer.MatrixViewerPanel; +import org.nuiton.math.matrix.viewer.renderer.MatrixChartRenderer; +import org.nuiton.math.matrix.viewer.renderer.MatrixInfoTableRenderer; import fr.ifremer.coser.CoserBusinessException; import fr.ifremer.coser.CoserConstants.Category; @@ -670,15 +674,15 @@ /** * Ouvre un fichier html dans le navigateur systeme. * - * @param controlView view + * @param component component * @param report report to open */ - protected void displayReport(ControlView controlView, File report) { + protected void displayReport(Component component, File report) { try { Desktop.getDesktop().browse(report.toURI()); } catch (IOException ex) { - JOptionPane.showMessageDialog(controlView, _("coser.ui.control.htmlReportCantBeOpened", report.getAbsolutePath()), - _("coser.ui.control.htmlReportError"), JOptionPane.WARNING_MESSAGE); + JOptionPane.showMessageDialog(component, _("coser.ui.error.htmlReportCantBeOpened", report.getAbsolutePath()), + _("coser.ui.error.htmlReportError"), JOptionPane.WARNING_MESSAGE); } } @@ -894,8 +898,34 @@ * * @param view view */ - public void displayLengthStructureGraph(ControlView view) { - + public void displayLengthStructureGraph(final ControlView view) { + final Project project = view.getContextValue(Project.class); + final ProjectService projectService = view.getContextValue(ProjectService.class); + + SwingUtilities.invokeLater(new Runnable() { + public void run() { + try { + setWaitCursor(view); + + // get matrix + MatrixND matrix = projectService.getLengthStructure(project, project.getControl()); + + // display matrix viewer component + JFrame matrixViewerFrame = new JFrame(_("coser.ui.control.graph.lengthstructure")); + MatrixViewerPanel panel = new MatrixViewerPanel(); + panel.addMatrixRenderer(new MatrixInfoTableRenderer()); + panel.addMatrixRenderer(new MatrixChartRenderer()); + panel.addMatrix(matrix); + matrixViewerFrame.add(panel); + matrixViewerFrame.pack(); + matrixViewerFrame.setLocationRelativeTo(view); + matrixViewerFrame.setVisible(true); + } + finally { + setDefaultCursor(view); + } + } + }); } /** 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-08 16:55:37 UTC (rev 377) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionDetailsView.jaxx 2010-12-08 16:55:58 UTC (rev 378) @@ -58,6 +58,8 @@ <JToolBar floatable="false"> <JButton id="saveSelectionButton" text="coser.ui.selection.details.saveSelection" icon="disk.png" onActionPerformed="getHandler().saveSelection(this)" /> + <JButton icon="report.png" onActionPerformed="getHandler().displayLogReport(this)" + text="coser.ui.selection.logreport" /> </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-08 16:55:37 UTC (rev 377) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java 2010-12-08 16:55:58 UTC (rev 378) @@ -26,12 +26,14 @@ import static org.nuiton.i18n.I18n._; import java.awt.Component; +import java.awt.Desktop; import java.awt.GridBagConstraints; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -67,6 +69,7 @@ import fr.ifremer.coser.bean.Selection; import fr.ifremer.coser.services.ProjectService; import fr.ifremer.coser.services.PublicationService; +import fr.ifremer.coser.ui.control.ControlView; import fr.ifremer.coser.ui.result.SelectionAddResultDialog; import fr.ifremer.coser.ui.selection.model.OccurrenceDensitySpecyListModel; import fr.ifremer.coser.ui.util.CoserListSelectionModel; @@ -988,4 +991,39 @@ view.getOtherDataFileListModel().add(selectedFile); } } + + /** + * Genere le log des modifications faites lors du control en HTML + * et l'ouvre dans le navigateur systeme. + * + * @param view + */ + public void displayLogReport(SelectionDetailsView view) { + PublicationService publicationService = view.getContextValue(PublicationService.class); + Project project = view.getContextValue(Project.class); + Selection selection = view.getContextValue(Selection.class); + + File htmlFile = null; + try { + htmlFile = publicationService.extractLogAsHTML(project, selection); + displayReport(view, htmlFile); + } catch (CoserBusinessException ex) { + throw new CoserException("Can't generate html report", ex); + } + } + + /** + * Ouvre un fichier html dans le navigateur systeme. + * + * @param view view + * @param report report to open + */ + protected void displayReport(Component component, File report) { + try { + Desktop.getDesktop().browse(report.toURI()); + } catch (IOException ex) { + JOptionPane.showMessageDialog(component, _("coser.ui.error.htmlReportCantBeOpened", report.getAbsolutePath()), + _("coser.ui.error.htmlReportError"), JOptionPane.WARNING_MESSAGE); + } + } } 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-08 16:55:37 UTC (rev 377) +++ trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties 2010-12-08 16:55:58 UTC (rev 378) @@ -39,10 +39,9 @@ coser.ui.control.globalErrorMenuGenerateHTML=Export as HTML coser.ui.control.globalErrorMenuLabel=Error menu coser.ui.control.globalErrorMenuSelectAll=Select all lines +coser.ui.control.graph.lengthstructure= coser.ui.control.graph.species=Species \: coser.ui.control.graphtitle=Graph -coser.ui.control.htmlReportCantBeOpened=HTML report as been generated in \:\n%s\nbut it can't be opened because default system browser in undefined \! -coser.ui.control.htmlReportError=Open error coser.ui.control.logreport=Modification report coser.ui.control.progressStep=Step %d/%d \: %s coser.ui.control.project.requiredauthor=Author field is required @@ -59,6 +58,8 @@ coser.ui.control.save=Save coser.ui.control.validcontrol=Valid control coser.ui.control.validcontroltip=Mark control as validated. Can be done only after data check ended without errors. +coser.ui.error.htmlReportCantBeOpened=HTML report as been generated in \:\n%s\nbut it can't be opened because default system browser in undefined \! +coser.ui.error.htmlReportError=Open error coser.ui.error.htmlmessage=An error occurs \: %s coser.ui.error.reportSendTo=A repport has been sent to %s coser.ui.error.title=Global application error @@ -176,6 +177,7 @@ coser.ui.selection.fusion.title=Merge coser.ui.selection.fusionError=Merge error coser.ui.selection.invalidFusionName=Selection fusion name not found in referential \! +coser.ui.selection.logreport=Modification report coser.ui.selection.maturitySpecies=L4 \: Species with maturity (%d/%d) coser.ui.selection.nonJustifiedMaturity=Maturity species list is not all selected.\nYou must justify this selection with a comment. coser.ui.selection.nonJustifiedOccurenceDensity=Filtered list selection doesn't match filter selection.\nYou must justify this selection with a comment. 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-08 16:55:37 UTC (rev 377) +++ trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties 2010-12-08 16:55:58 UTC (rev 378) @@ -39,10 +39,9 @@ coser.ui.control.globalErrorMenuGenerateHTML=Exporter en HTML coser.ui.control.globalErrorMenuLabel=Menu des erreurs coser.ui.control.globalErrorMenuSelectAll=S\u00E9lectionner toutes les lignes +coser.ui.control.graph.lengthstructure= coser.ui.control.graph.species=Esp\u00E8ces \: coser.ui.control.graphtitle=Graphique -coser.ui.control.htmlReportCantBeOpened=Le rapport HTML a \u00E9t\u00E9 g\u00E9n\u00E9r\u00E9 dans le fichier \:\n%s\nmais ne peut pas \u00EAtre ouvert automatiquement car le navigateur\npar d\u00E9faut du syst\u00E8me n'est pas d\u00E9fini \! -coser.ui.control.htmlReportError=Erreur d'ouverture coser.ui.control.logreport=Rapport des modifications coser.ui.control.progressStep=\u00C9tape %d/%d \: %s coser.ui.control.project.requiredauthor=Le champ 'auteur' est requis @@ -59,6 +58,8 @@ coser.ui.control.save=Sauvegarder coser.ui.control.validcontrol=Valider le contr\u00F4le coser.ui.control.validcontroltip=Marque le contr\u00F4le comme valid\u00E9. Ne peut \u00EAtre effectu\u00E9 qu'apr\u00E8s une v\u00E9rification des donn\u00E9es termin\u00E9e sans erreurs. +coser.ui.error.htmlReportCantBeOpened=Le rapport HTML a \u00E9t\u00E9 g\u00E9n\u00E9r\u00E9 dans le fichier \:\n%s\nmais ne peut pas \u00EAtre ouvert automatiquement car le navigateur\npar d\u00E9faut du syst\u00E8me n'est pas d\u00E9fini \! +coser.ui.error.htmlReportError=Erreur d'ouverture coser.ui.error.htmlmessage=Une erreur s'est produite \: %s coser.ui.error.reportSendTo=Un rapport a \u00E9t\u00E9 envoy\u00E9 \u00E0 %s coser.ui.error.title=Erreur globale @@ -176,6 +177,7 @@ 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.logreport=Rapport des modifications coser.ui.selection.maturitySpecies=L4 \: Esp\u00E8ces avec maturit\u00E9 (%d/%d) coser.ui.selection.nonJustifiedMaturity=La liste esp\u00E8ces avec maturit\u00E9 n'est pas enti\u00E8rement s\u00E9lectionn\u00E9e.\nVous devez justifier cette s\u00E9lection par un commentaire. coser.ui.selection.nonJustifiedOccurenceDensity=La s\u00E9lection de la liste filtr\u00E9e ne correspond pas \u00E0 la s\u00E9lection op\u00E9r\u00E9e par le filtre.\nVous devez justifier cette s\u00E9lection par un commentaire.