Author: chatellier Date: 2009-04-03 15:20:46 +0000 (Fri, 03 Apr 2009) New Revision: 2067 Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/ExportStorage.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ToolTipListModelFactory.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/widget/renderer/SimpleToolTipComboBoxRenderer.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/widget/renderer/SimpleToolTipTableColumnRenderer.java isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties Log: Add tooltip on sensitivity UIs Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/ExportStorage.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/ExportStorage.java 2009-04-03 12:30:29 UTC (rev 2066) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/ExportStorage.java 2009-04-03 15:20:46 UTC (rev 2067) @@ -154,8 +154,14 @@ * @see Docable */ public Doc getFieldDoc(String fieldName) { - throw new IsisFishRuntimeException(_("isisfish.error.not.found.class" - + "support Docable#getFieldDoc(String) method %1$s", this)); + Doc result=null; + try { + Class klazz = getCodeClass(); + result = DocHelper.getFieldDoc(klazz,fieldName); + } catch (Exception e) { + log.warn(_("isisfish.error.not.found.field",fieldName,this)); + } + return result; } /** @@ -167,11 +173,69 @@ * @see Docable */ public String getDescription() { - throw new IsisFishRuntimeException(_("isisfish.error.not.support.class" - + "Docable#getDescription() method %1$s", this)); + String result = null; + try { + Export export = getNewExportInstance(); + if (export != null) { + result = export.getDescription(); + } + } catch (Exception e) { + log.warn(_("isisfish.error.not.found.description",this)); + } + return result; } /** + * @param paramName the name of the param to inspect + * @return the doc associated with the param, + * (says the field PARAM_PREFIX+fieldName) + */ + public Doc getParamDoc(String paramName) { + Doc doc; + doc = getFieldDoc(PARAM_PREFIX + paramName); + return doc; + } + + /** + * Permet de recuperer les parametres de l'export. + * + * @return Une map contenant le nom du parametre et son type + * @throws IsisFishException s'il est impossible de retourner une map + * convenable + */ + public Map<String, Class<?>> getParameterNames() throws IsisFishException { + Map<String, Class<?>> result = null; + // On essai de recuperer les paramètres depuis la classe compilé + // si c possible + try { + if (0 == compile(false, null)) { + Export export = getNewExportInstance(); + result = ExportStorage.getParameterNames(export); + } + } catch (Exception eee) { + log.info(_("isisfish.error.compiled.parameter"), eee); + } + // si on ne reussi pas avec la classe compilé on essai en parsant le + // source + if (result == null) { + try { + //String code = getContent(); + log.fatal("FIXME a faire recherche des parametre dans le source"); + throw new IsisFishException(_("isisfish.error.source.parameter")); + // TODO implanter la recherche des parametres. + // Se sont les attributs commencant par 'param_' et ils doivent + // etre public non static, non transient. + // ex: public Date param_Date. + // Lorsqu'on ajoute un champs dans la map il ne faut pas mettre + // le prefix param. + } catch (Exception eee) { + throw new IsisFishException(_("isisfish.error.source.parameter"), eee); + } + } + return result; + } + + /** * Recherche par introspection tous les parametres de la classe * commencant par {@link #PARAM_PREFIX}. * Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx 2009-04-03 12:30:29 UTC (rev 2066) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx 2009-04-03 15:20:46 UTC (rev 2067) @@ -32,6 +32,7 @@ import javax.swing.table.DefaultTableModel; import javax.swing.table.TableModel; import jaxx.runtime.swing.Item; + import fr.ifremer.isisfish.datastore.ExportStorage; import fr.ifremer.isisfish.datastore.SensitivityStorage; import fr.ifremer.isisfish.ui.simulator.SimulAction; import fr.ifremer.isisfish.ui.widget.editor.GenericCell; @@ -42,6 +43,9 @@ import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain; import fr.ifremer.isisfish.export.SensitivityExport; import fr.ifremer.isisfish.IsisFishException; + import fr.ifremer.isisfish.ui.simulator.ToolTipListModelFactory; + import fr.ifremer.isisfish.ui.widget.renderer.SimpleToolTipComboBoxRenderer; + import fr.ifremer.isisfish.ui.widget.renderer.SimpleToolTipTableColumnRenderer; protected SimulAction getSimulAction() { return getContextValue(SimulAction.class); @@ -54,6 +58,8 @@ items.add(new Item(s, s, s, false)); } fieldSensitivityCalculatorSelect.setItems(items); + // add list tooltip renderer + //fieldSensitivityCalculatorSelect.setCellRenderer(new SimpleToolTipComboBoxRenderer(ToolTipListModelFactory.createRuleDescriptionsModel(getSimulAction().getSensitivityNames()))); return fieldSensitivityCalculatorSelect.getModel(); } @@ -78,7 +84,8 @@ } protected void setSensitivityCalculatorParamsModel() { - Map<String, Class<?>> values = getSimulAction().getSensitivityParameterNames((String)fieldSensitivityCalculatorSelect.getSelectedItem()); + String sensitivityName = (String)fieldSensitivityCalculatorSelect.getSelectedItem(); + Map<String, Class<?>> values = getSimulAction().getSensitivityParameterNames(sensitivityName); setSensitivityCalculatorParamsTableModel(values, simulSensitivityCalculatorParam); simulSensitivityCalculatorParam.getModel().addTableModelListener(new TableModelListener() { @Override @@ -89,6 +96,7 @@ getContextValue(SimulAction.class).setSensitivityCalculatorParameterValue(data.getName(), model.getValueAt(row, 1)); } }); + simulSensitivityCalculatorParam.getColumnModel().getColumn(0).setCellRenderer(new SimpleToolTipTableColumnRenderer(ToolTipListModelFactory.createSensitivityParamsModel(sensitivityName))); } protected void setSensitivityCalculatorParamsTableModel(Map<String, Class<?>> values, JTable table) { @@ -164,6 +172,7 @@ protected DefaultComboBoxModel getExportTableModel() { java.util.List<String> exportNames = getSimulAction().getSensitivityExportNames(); DefaultComboBoxModel model = new DefaultComboBoxModel(exportNames.toArray()); + // TODO add tooltip model for this combo return model; } @@ -177,7 +186,8 @@ * Fill export parameters names and values in table. */ protected void setExportParams() { - Map<String, Class<?>> values = getSimulAction().getSensitivityExportParameterNames(getSelectedExport()); + SensitivityExport export = getSelectedExport(); + Map<String, Class<?>> values = getSimulAction().getSensitivityExportParameterNames(export); setSensitivityExportParamsTableModel(values, exportParamsTable); exportParamsTable.getModel().addTableModelListener(new TableModelListener() { @@ -189,6 +199,7 @@ getContextValue(SimulAction.class).setSensitivityExportParameterValue(getSelectedExport(), (String)data.getName(), model.getValueAt(row, 1)); } }); + exportParamsTable.getColumnModel().getColumn(0).setCellRenderer(new SimpleToolTipTableColumnRenderer(ToolTipListModelFactory.createExportParamsModel(ExportStorage.getName(export)))); } /** @@ -254,11 +265,14 @@ } protected void setExportListModel() { + java.util.List<SensitivityExport> exports = getSimulAction().getSensitivityExportList(); DefaultListModel model = new DefaultListModel(); - for (SensitivityExport s : getSimulAction().getSensitivityExports()){ + + for (SensitivityExport s : exports) { model.addElement(new GenericCell(s.getExportFilename(), s, s.getClass())); } exportList.setModel(model); + exportList.setCellRenderer(new SimpleToolTipComboBoxRenderer(ToolTipListModelFactory.createExportDescriptionsModel2(exports, clearExportsButton, exportList))); } ]]> </script> Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx 2009-04-03 12:30:29 UTC (rev 2066) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx 2009-04-03 15:20:46 UTC (rev 2067) @@ -318,8 +318,8 @@ properties.add(propertie); cells.add(value); } - model.addColumn("Name", cells.toArray()); - model.addColumn("Value", properties.toArray()); + model.addColumn(_("isisfish.common.name"), cells.toArray()); + model.addColumn(_("isisfish.common.value"), properties.toArray()); } simulParamsRules.setModel(model); ParameterColumnEditor cellEditor = new ParameterColumnEditor(); Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2009-04-03 12:30:29 UTC (rev 2066) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2009-04-03 15:20:46 UTC (rev 2067) @@ -83,6 +83,7 @@ import fr.ifremer.isisfish.ui.simulator.filter.SimulationFilterUtil; import fr.ifremer.isisfish.ui.widget.ErrorDialogUI; import fr.ifremer.isisfish.ui.widget.filter.FilterModel; + /** * SimulAction. * @@ -707,10 +708,6 @@ return result; } - public Collection<SensitivityExport> getSensitivityExports() { - return sensitivityExports.keySet(); - } - public List<SensitivityExport> getSensitivityExportList() { List<SensitivityExport> result = new ArrayList<SensitivityExport>(); for (Map.Entry<SensitivityExport, String> entry : sensitivityExports Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ToolTipListModelFactory.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ToolTipListModelFactory.java 2009-04-03 12:30:29 UTC (rev 2066) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ToolTipListModelFactory.java 2009-04-03 15:20:46 UTC (rev 2067) @@ -38,6 +38,8 @@ import fr.ifremer.isisfish.datastore.ExportStorage; import fr.ifremer.isisfish.datastore.RuleStorage; import fr.ifremer.isisfish.datastore.ScriptStorage; +import fr.ifremer.isisfish.datastore.SensitivityStorage; +import fr.ifremer.isisfish.export.Export; import fr.ifremer.isisfish.rule.Rule; import fr.ifremer.isisfish.simulator.AnalysePlan; import fr.ifremer.isisfish.ui.widget.renderer.ToolTipListModel; @@ -69,8 +71,7 @@ * @param names Result script field names * @return the model builded */ - static public ToolTipListModel createResultFieldsModel( - List<String> names) { + public static ToolTipListModel createResultFieldsModel(List<String> names) { List<String> texts = new ArrayList<String>(); List<String> toolTips = new ArrayList<String>(); @@ -116,8 +117,7 @@ * @param names Export names to use * @return the model builded */ - public static ToolTipListModel createExportClassDocsModel( - List<String> names) { + public static ToolTipListModel createExportClassDocsModel(List<String> names) { List<String> texts = new ArrayList<String>(); List<String> toolTips = new ArrayList<String>(); @@ -270,7 +270,6 @@ * @param names AnalysePlan names to use * @return the model builded */ - @SuppressWarnings({"unchecked"}) public static ToolTipListModel createAnalysePlanDescriptionsModel( List<String> names) { @@ -315,7 +314,6 @@ * @param list list containing the renderer * @return the model builded */ - @SuppressWarnings({"unchecked"}) public static ToolTipListModel createAnalysePlanDescriptionsModel2( List<AnalysePlan> plans, JButton clearButton, JList list) { @@ -353,7 +351,7 @@ * the param in the AnalysePlan</li> * </ul> * - * @param analysePlans the selected analyse plan (we only use the first one) + * @param name the selected analyze plan name * @return the model builded */ public static ToolTipListModel createAnalysePlanParamsModel(String name) { @@ -381,4 +379,119 @@ } return new ToolTipListModel(texts, toolTips); } + + /** + * Build a new {@link ToolTipListModel} for params of a given {link SensitivityCalculator} : + * <ul> + * <li>text : the name fo the param fo the AnalysePlan</li> + * <li>tooltip : the nicely printed version of the @Doc associated to + * the param in the {link SensitivityCalculator}</li> + * </ul> + * + * @param sensitivityName the sensitivity calculator name + * @return the model builded + */ + public static ToolTipListModel createSensitivityParamsModel(String sensitivityName) { + + List<String> texts = new ArrayList<String>(); + List<String> toolTips = new ArrayList<String>(); + if (!StringUtils.isEmpty(sensitivityName)) { + try { + SensitivityStorage storage = + SensitivityStorage.getSensitivity(sensitivityName); + Map<String, Class<?>> mapParams = storage.getParameterNames(); + + if (!mapParams.isEmpty()) { + for (String paramName : mapParams.keySet()) { + Doc fieldDoc = storage.getParamDoc(paramName); + texts.add(paramName); + toolTips.add(DocHelper.asString(fieldDoc)); + } + } + } catch (Exception eee) { + if (log.isWarnEnabled()) { + log.warn(_("isisfish.error.obtain.field.sensitivitycalculator", sensitivityName), eee); + } + } + } + return new ToolTipListModel(texts, toolTips); + } + + /** + * Build a new {@link ToolTipListModel} for params of a given {@link Export} : + * <ul> + * <li>text : the name fo the param fo the AnalysePlan</li> + * <li>tooltip : the nicely printed version of the @Doc associated to + * the param in the AnalysePlan</li> + * </ul> + * + * @param exportName the selected export name + * @return the model builded + */ + public static ToolTipListModel createExportParamsModel(String exportName) { + + List<String> texts = new ArrayList<String>(); + List<String> toolTips = new ArrayList<String>(); + if (!StringUtils.isEmpty(exportName)) { + try { + ExportStorage storage = + ExportStorage.getExport(exportName); + Map<String, Class<?>> mapParams = storage.getParameterNames(); + + if (!mapParams.isEmpty()) { + for (String paramName : mapParams.keySet()) { + Doc fieldDoc = storage.getParamDoc(paramName); + texts.add(paramName); + toolTips.add(DocHelper.asString(fieldDoc)); + } + } + } catch (Exception eee) { + if (log.isWarnEnabled()) { + log.warn(_("isisfish.error.obtain.field.export", exportName), eee); + } + } + } + return new ToolTipListModel(texts, toolTips); + } + + /** + * Build a new {@link ToolTipListModel} for descriptions of given + * {@link Export} : + * <ul> + * <li>text : the name of the AnalysePlan</li> + * <li>tooltip : the description of the AnalysePlan</li> + * </ul> + * + * @param exports export to use + * @param clearButton clear button linked to list + * @param list list containing the renderer + * @return the model builded + */ + public static ToolTipListModel createExportDescriptionsModel2( + List<? extends Export> exports, JButton clearButton, JList list) { + + List<String> texts = new ArrayList<String>(); + List<String> toolTips = new ArrayList<String>(); + + if (!exports.isEmpty()) { + try { + // we are dealing with Export objects + for (Export export : exports) { + String name = ExportStorage.getName(export); + ExportStorage storage = ExportStorage.getExport(name); + String description = storage.getDescription(); + texts.add(name); + toolTips.add(description); + } + } catch (Exception eee) { + if (log.isWarnEnabled()) { + log.warn(_("isisfish.error.obtain.analyseplan"), eee); + } + } + } + ToolTipListModel listModel = new ToolTipListModel(texts, toolTips); + // should check if there is an already listener ? + SimulatorListeners.initButtonClearIfListNotEmpty(clearButton, list.getModel()); + return listModel; + } } Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/widget/renderer/SimpleToolTipComboBoxRenderer.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/widget/renderer/SimpleToolTipComboBoxRenderer.java 2009-04-03 12:30:29 UTC (rev 2066) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/widget/renderer/SimpleToolTipComboBoxRenderer.java 2009-04-03 15:20:46 UTC (rev 2067) @@ -19,8 +19,8 @@ package fr.ifremer.isisfish.ui.widget.renderer; -import java.awt.Color; import java.awt.Component; + import javax.swing.JLabel; import javax.swing.JList; import javax.swing.ListCellRenderer; Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/widget/renderer/SimpleToolTipTableColumnRenderer.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/widget/renderer/SimpleToolTipTableColumnRenderer.java 2009-04-03 12:30:29 UTC (rev 2066) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/widget/renderer/SimpleToolTipTableColumnRenderer.java 2009-04-03 15:20:46 UTC (rev 2067) @@ -19,7 +19,6 @@ package fr.ifremer.isisfish.ui.widget.renderer; -import java.awt.Color; import java.awt.Component; import javax.swing.JLabel; Modified: isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties =================================================================== --- isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties 2009-04-03 12:30:29 UTC (rev 2066) +++ isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties 2009-04-03 15:20:46 UTC (rev 2067) @@ -309,6 +309,8 @@ isisfish.error.obtain.doc.rule=Can't obtain description for a Rule class isisfish.error.obtain.field=Can't obtain field @Doc for Rule %1$s isisfish.error.obtain.field.analyseplan=Can't obtain field @Doc for AnalysePlan %1$s +isisfish.error.obtain.field.export=Can't obtain field @Doc for Export %1$s +isisfish.error.obtain.field.sensitivitycalculator=Can't obtain field @Doc for Calculator %1$s isisfish.error.out.memory=Out of memory try with more memory (option -mx) isisfish.error.overlap.season=Cette saison chevauche une autre saison isisfish.error.parse.date=Can't parse date %1$s Modified: isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties =================================================================== --- isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties 2009-04-03 12:30:29 UTC (rev 2066) +++ isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties 2009-04-03 15:20:46 UTC (rev 2067) @@ -309,6 +309,8 @@ isisfish.error.obtain.doc.rule=Can't obtain description for a Rule class isisfish.error.obtain.field=Can't obtain field @Doc for Rule %1$s isisfish.error.obtain.field.analyseplan=Can't obtain field @Doc for AnalysePlan %1$s +isisfish.error.obtain.field.export=Can't obtain field @Doc for Export %1$s +isisfish.error.obtain.field.sensitivitycalculator=Can't obtain field @Doc for Calculator %1$s isisfish.error.out.memory=Out of memory try with more memory (option -mx) isisfish.error.overlap.season=Cette saison chevauche une autre saison isisfish.error.parse.date=Can't parse date %1$s