This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 76821c73fa0026c737a490d03e27a08ed3befa06 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 23 10:16:56 2016 +0200 Improve unselect of report --- .../fr/ird/observe/ui/admin/report/ReportUI.jaxx | 3 +- .../observe/ui/admin/report/ReportUIHandler.java | 145 ++++++++++++--------- 2 files changed, 89 insertions(+), 59 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/report/ReportUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/report/ReportUI.jaxx index 5289faa..af5382a 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/report/ReportUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/report/ReportUI.jaxx @@ -78,7 +78,8 @@ public void destroy() { <!-- selecteur de report --> <JComboBox id='reportSelector' constraints='BorderLayout.CENTER' - onItemStateChanged='if (event.getStateChange() == ItemEvent.SELECTED) getHandler().updateSelectedReport((Report) ((JComboBox)event.getSource()).getSelectedItem());'/> + onItemStateChanged='getHandler().updateSelectedReportFromEvent(event)'/> + <!--onItemStateChanged='if (event.getStateChange() == ItemEvent.SELECTED) getHandler().updateSelectedReport((Report) ((JComboBox)event.getSource()).getSelectedItem());'/>--> <JScrollPane id='reportDescriptionPane' constraints='BorderLayout.SOUTH'> diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/report/ReportUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/report/ReportUIHandler.java index 0f73579..f42720d 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/report/ReportUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/report/ReportUIHandler.java @@ -111,7 +111,7 @@ public class ReportUIHandler extends AdminTabUIHandler { String propertyName = evt.getPropertyName(); Object newValue = evt.getNewValue(); - final ReportModel source = (ReportModel) evt.getSource(); + ReportModel source = (ReportModel) evt.getSource(); if (ReportModel.REPORTS_PROPERTY_NAME.equals(propertyName)) { List<?> reports = (List<?>) newValue; @@ -215,11 +215,29 @@ public class ReportUIHandler extends AdminTabUIHandler { }); } + public void updateSelectedReportFromEvent(ItemEvent event) { + + if (event.getStateChange() == ItemEvent.SELECTED) { + if (log.isInfoEnabled()) { + log.info("Item selected!"); + } + JComboBox<Report> source = (JComboBox<Report>) event.getSource(); + updateSelectedReport((Report) source.getSelectedItem()); + } else if (getStepModel().getSelectedReport() != null) { + + Object item = event.getItem(); + if (log.isInfoEnabled()) { + log.info("Item not selected: " + item); + } + updateSelectedReport(null); + } + } + public void updateSelectedReport(Report report) { getModel().setBusy(true); try { - if (log.isDebugEnabled()) { - log.debug("New selected report : " + report); + if (log.isInfoEnabled()) { + log.info("New selected report : " + report); } getStepModel().setSelectedReport(report); @@ -296,24 +314,13 @@ public class ReportUIHandler extends AdminTabUIHandler { ReportModel model, Report report) { - if (report != null) { - - if (log.isInfoEnabled()) { - log.info("New selected report [" + report + "]"); - } - - try { - - ObserveSwingDataSource dataSource = getModel().getSafeLocalSource(true); - - ReportService reportService = dataSource.newReportService(); - - report = reportService.populateVariables(report, getModel().getSelectedTrip().getId()); + if (log.isInfoEnabled()) { + log.info("New selected report [" + report + "]"); + } - } catch (Exception e) { - throw new ObserveSwingTechnicalException("unable to populate report : " + report.getName(), e); - } + getModel().setBusy(true); + try { // on regénère l'ui de configuration des variables JPanel variablesPanel = tabUI.getReportVariableSelectorPanel(); variablesPanel.removeAll(); @@ -322,55 +329,77 @@ public class ReportUIHandler extends AdminTabUIHandler { boolean useVariables = report != null && report.isVariableRequired(); tabUI.getReportVariableSelectorPane().setVisible(useVariables); - if (useVariables) { - - // on construit les ui pour chaqsue variable - for (ReportVariable variable : report.getVariables()) { - String variableName = variable.getName(); - // String value = variables.get(variableName); - Set values = variable.getValues(); - List<Object> universe = Lists.newArrayList(values); - BeanComboBox<Object> combo = new BeanComboBox<>(); - - combo.setShowReset(true); - variablesPanel.add(combo); - Decorator decorator; - if (ReferentialDto.class.isAssignableFrom(variable.getType()) && !universe.isEmpty()) { - decorator = getDecoratorService().getReferentialReferenceDecorator(variable.getType()); - } else if (DataDto.class.isAssignableFrom(variable.getType()) && !universe.isEmpty()) { - decorator = getDecoratorService().getDataReferenceDecorator(variable.getType()); - } else { - decorator = getDecoratorService().getDecoratorByType(variable.getType()); - } - combo.init((JXPathDecorator<Object>) decorator, universe); - JComboBox jComboBox = combo.getCombobox(); - jComboBox.putClientProperty(VARIABLE_NAME, variableName); - jComboBox.addItemListener(e -> { + // calcul des données et contruction du tableau + model.getResultModel().clear(); - JComboBox comboBox = (JComboBox) e.getSource(); + if (report != null) { - if (e.getStateChange() == ItemEvent.DESELECTED) { + try { - // ne rien faire de l'évènement de déselection - // sauf si le modèle devient vide + ObserveSwingDataSource dataSource = getModel().getSafeLocalSource(true); - if (comboBox.getSelectedItem() == null) { - updateVariable(comboBox, null); - } - return; + ReportService reportService = dataSource.newReportService(); + + report = reportService.populateVariables(report, getModel().getSelectedTrip().getId()); + + } catch (Exception e) { + throw new ObserveSwingTechnicalException("unable to populate report : " + report.getName(), e); + } + + if (useVariables) { + + // on construit les ui pour chaqsue variable + for (ReportVariable variable : report.getVariables()) { + String variableName = variable.getName(); + // String value = variables.get(variableName); + Set values = variable.getValues(); + List<Object> universe = Lists.newArrayList(values); + BeanComboBox<Object> combo = new BeanComboBox<>(); + + combo.setShowReset(true); + variablesPanel.add(combo); + Decorator decorator; + if (ReferentialDto.class.isAssignableFrom(variable.getType()) && !universe.isEmpty()) { + decorator = getDecoratorService().getReferentialReferenceDecorator(variable.getType()); + } else if (DataDto.class.isAssignableFrom(variable.getType()) && !universe.isEmpty()) { + decorator = getDecoratorService().getDataReferenceDecorator(variable.getType()); + } else { + decorator = getDecoratorService().getDecoratorByType(variable.getType()); } + combo.init((JXPathDecorator<Object>) decorator, universe); + JComboBox jComboBox = combo.getCombobox(); + jComboBox.putClientProperty(VARIABLE_NAME, variableName); + jComboBox.addItemListener(e -> { + + JComboBox comboBox = (JComboBox) e.getSource(); - Object o = e.getItem(); - updateVariable(comboBox, o); - }); + if (e.getStateChange() == ItemEvent.DESELECTED) { + + // ne rien faire de l'évènement de déselection + // sauf si le modèle devient vide + + if (comboBox.getSelectedItem() == null) { + updateVariable(comboBox, null); + } + return; + } + + Object o = e.getItem(); + updateVariable(comboBox, o); + }); + } } + + // on revalide la disposition de l'onglet + SwingUtilities.invokeLater(revalidateTabUI); + + Map<String, Object> variables = model.getVariables(); + updateValidState(report, variables); } + } finally { - // on revalide la disposition de l'onglet - SwingUtilities.invokeLater(revalidateTabUI); + getModel().setBusy(false); - Map<String, Object> variables = model.getVariables(); - updateValidState(report, variables); } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.