Author: chatellier Date: 2009-06-12 16:39:20 +0000 (Fri, 12 Jun 2009) New Revision: 2374 Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/analyzeplan/ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/analyzeplan/AnalyzePlanComboModel.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/analyzeplan/AnalyzePlanComboRenderer.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/analyzeplan/AnalyzePlanListModel.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/analyzeplan/AnalyzePlanListRenderer.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/analyzeplan/AnalyzePlanParametersTableCellEditor.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/analyzeplan/AnalyzePlanParametersTableCellRenderer.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/analyzeplan/AnalyzePlanParametersTableModel.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/rule/RuleParametersTableCellRenderer.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/util/TooltipHelper.java Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/ExportStorage.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/RuleStorage.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/rule/RuleHelper.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeUI.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/SensUI.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/SimulUI.jaxx isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ToolTipListModelFactory.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/rule/RuleComboBoxModel.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/rule/RuleListCellRenderer.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/rule/RuleParametersTableCellEditor.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/rule/RuleParametersTableModel.java Log: Refactor AnalysePlan models. Improve rules models. Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.java 2009-06-12 16:38:25 UTC (rev 2373) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.java 2009-06-12 16:39:20 UTC (rev 2374) @@ -59,8 +59,6 @@ private static Log log = LogFactory.getLog(AnalysePlanStorage.class); public final static String ANALYSE_PLAN_PATH = "analyseplans"; - - private final static String PARAM_PREFIX = "param_"; /** Template freemarker pour les plans d'analyse . */ public static final String ANALYSE_PLAN_TEMPLATE = "templates/script/analyseplan.ftl"; @@ -333,8 +331,7 @@ * (says the field PARAM_PREFIX+fieldName) */ public Doc getParamDoc(String paramName) { - Doc doc; - doc = getFieldDoc(PARAM_PREFIX + paramName); + Doc doc = getFieldDoc(PARAM_PREFIX + paramName); return doc; } 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-06-12 16:38:25 UTC (rev 2373) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/ExportStorage.java 2009-06-12 16:39:20 UTC (rev 2374) @@ -57,9 +57,6 @@ /** Class logger. */ private static Log log = LogFactory.getLog(ExportStorage.class); - /** Prefix des noms de paramètres. */ - private final static String PARAM_PREFIX = "param_"; - public static final String EXPORT_PATH = "exports"; /** Template freemarker pour les scripts d'export . */ Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java 2009-06-12 16:38:25 UTC (rev 2373) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java 2009-06-12 16:39:20 UTC (rev 2374) @@ -27,7 +27,10 @@ import fr.ifremer.isisfish.IsisFish; import fr.ifremer.isisfish.IsisFishException; +import fr.ifremer.isisfish.simulator.AnalysePlan; import fr.ifremer.isisfish.util.CompileHelper; +import fr.ifremer.isisfish.util.Doc; +import fr.ifremer.isisfish.util.DocHelper; import fr.ifremer.isisfish.util.JavadocHelper; /** @@ -48,6 +51,8 @@ */ public abstract class JavaSourceStorage extends CodeSourceStorage { + protected static final String PARAM_PREFIX = "param_"; + /** * Build a new java source storage. * @@ -159,4 +164,16 @@ } return result; } + + /** + * Get doc of parameter. + * + * @param object object containing parameter + * @param paramName parameter name + * @return {@link Doc} annotation + */ + public static Doc getParameterDoc(Object object, String paramName) { + Doc result = DocHelper.getFieldDoc(object.getClass(), PARAM_PREFIX + paramName); + return result; + } } Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/RuleStorage.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/RuleStorage.java 2009-06-12 16:38:25 UTC (rev 2373) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/RuleStorage.java 2009-06-12 16:39:20 UTC (rev 2374) @@ -63,8 +63,6 @@ public static final String RULE_PATH = "rules"; - private final static String PARAM_PREFIX = "param_"; - /** Template freemarker pour les regles. */ public static final String RULE_TEMPLATE = "templates/script/rule.ftl"; @@ -135,8 +133,8 @@ * @throws IsisFishException s'il est impossible de retourner une map * convenable */ - public Map<String, Class> getParameterNames() throws IsisFishException { - Map<String, Class> result = null; + 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 { @@ -175,8 +173,8 @@ * @param rule the rule to inspect * @return the list of parameters for a given rule */ - static public Map<String, Class> getParameterNames(Rule rule) { - Map<String, Class> result = new LinkedHashMap<String, Class>(); + static public Map<String, Class<?>> getParameterNames(Rule rule) { + Map<String, Class<?>> result = new LinkedHashMap<String, Class<?>>(); for (Field field : rule.getClass().getFields()) { if (field.getName().startsWith(PARAM_PREFIX)) { result.put(field.getName().substring(PARAM_PREFIX.length()), Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/rule/RuleHelper.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/rule/RuleHelper.java 2009-06-12 16:38:25 UTC (rev 2373) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/rule/RuleHelper.java 2009-06-12 16:39:20 UTC (rev 2374) @@ -65,9 +65,9 @@ String ruleName = RuleStorage.getName(rule); String paramTag = "rule." + ruleIndex + ".parameter."; - for (Map.Entry<String, Class> entry : RuleStorage.getParameterNames(rule).entrySet()) { + for (Map.Entry<String, Class<?>> entry : RuleStorage.getParameterNames(rule).entrySet()) { String propName = entry.getKey(); - Class type = entry.getValue(); + Class<?> type = entry.getValue(); if (TopiaEntity.class.isAssignableFrom(type)) { type = TopiaEntity.class; } Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeUI.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeUI.jaxx 2009-06-12 16:38:25 UTC (rev 2373) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeUI.jaxx 2009-06-12 16:39:20 UTC (rev 2374) @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *##%*/ --> -<JFrame id='isisfishFrame' title="isisfish.welcome.title" width='874' height='736' resizable="true" layout='{new BorderLayout()}'> +<JFrame title="isisfish.welcome.title" width='874' height='736' resizable="true" layout='{new BorderLayout()}'> <script><![CDATA[ import static org.codelutin.i18n.I18n._; import javax.swing.JFrame; @@ -48,6 +48,11 @@ allFrameOpened = new java.util.HashMap<JFrame, WelcomePanelUI>(); welcomePanelUI.setContent(new WelcomeTabUI(new JAXXInitialContext().add(getVerifier()).add(regionMonitor))); + // increase tooltip display time + ToolTipManager toolTipManager = ToolTipManager.sharedInstance(); + toolTipManager.setInitialDelay(0); + toolTipManager.setDismissDelay(60000); + protected void openFrame(Container c, String title) { JFrame f = new JFrame(); f.setLayout(new BorderLayout()); 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-06-12 16:38:25 UTC (rev 2373) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx 2009-06-12 16:39:20 UTC (rev 2374) @@ -41,6 +41,7 @@ import fr.ifremer.isisfish.ui.simulator.rule.RuleListModel; import fr.ifremer.isisfish.ui.simulator.rule.RuleParametersTableModel; import fr.ifremer.isisfish.ui.simulator.rule.RuleParametersTableCellEditor; +import fr.ifremer.isisfish.ui.simulator.rule.RuleParametersTableCellRenderer; import fr.ifremer.isisfish.rule.Rule; // instances variables déclaration @@ -313,8 +314,10 @@ Rule selectedRule = listModel.getRules().get(selectedRuleIndex); RuleParametersTableModel model = new RuleParametersTableModel(selectedRule); RuleParametersTableCellEditor cellEditor = new RuleParametersTableCellEditor(selectedRule); + RuleParametersTableCellRenderer cellRenderer = new RuleParametersTableCellRenderer(selectedRule); cellEditor.setRegion(simulAction.getRegionStorage()); simulParamsRules.setModel(model); + simulParamsRules.getColumnModel().getColumn(0).setCellRenderer(cellRenderer); simulParamsRules.getColumnModel().getColumn(1).setCellEditor(cellEditor); } } Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SensUI.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SensUI.jaxx 2009-06-12 16:38:25 UTC (rev 2373) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SensUI.jaxx 2009-06-12 16:39:20 UTC (rev 2374) @@ -16,136 +16,124 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *##%*/ - --> +--> <Table> -<script><![CDATA[ - import javax.swing.DefaultComboBoxModel; + <SimulAction id='simulAction' javaBean='getContextValue(SimulAction.class)' /> + + <script><![CDATA[ import javax.swing.table.DefaultTableModel; - import javax.swing.table.TableModel; - import fr.ifremer.isisfish.ui.widget.editor.ParameterColumnEditor; - import javax.swing.table.TableColumn; - import fr.ifremer.isisfish.ui.widget.renderer.SimpleToolTipTableColumnRenderer; - import fr.ifremer.isisfish.ui.widget.renderer.SimpleToolTipComboBoxRenderer; - import fr.ifremer.isisfish.ui.widget.editor.GenericCell; import fr.ifremer.isisfish.simulator.AnalysePlan; - import fr.ifremer.isisfish.datastore.AnalysePlanStorage; - import jaxx.runtime.swing.Item; - - public SensUI (SimulAction action) { - setContextValue(action); - } - + import fr.ifremer.isisfish.ui.simulator.analyzeplan.AnalyzePlanComboModel; + import fr.ifremer.isisfish.ui.simulator.analyzeplan.AnalyzePlanComboRenderer; + import fr.ifremer.isisfish.ui.simulator.analyzeplan.AnalyzePlanListModel; + import fr.ifremer.isisfish.ui.simulator.analyzeplan.AnalyzePlanListRenderer; + import fr.ifremer.isisfish.ui.simulator.analyzeplan.AnalyzePlanParametersTableModel; + import fr.ifremer.isisfish.ui.simulator.analyzeplan.AnalyzePlanParametersTableCellEditor; + import fr.ifremer.isisfish.ui.simulator.analyzeplan.AnalyzePlanParametersTableCellRenderer; + public void refresh() { - java.util.List<Item> items = new ArrayList<Item>(); - java.util.List<AnalysePlan> values = getContextValue(SimulAction.class).getParamAnalysePlans(); - for (AnalysePlan ap : values) { - items.add(new Item(ap.toString(), AnalysePlanStorage.getName(ap), ap, false)); - } - listSimulParamsAnalysePlansList.setItems(items); - // Tooltip here break Name display - //listSimulParamsAnalysePlansList.setCellRenderer(new SimpleToolTipComboBoxRenderer(ToolTipListModelFactory.createAnalysePlanDescriptionsModel2(values, buttonSimulParamsAnalysePlansClear, listSimulParamsAnalysePlansList))); - setSimulParamsAnalysePlans(); + // analyse plans names list + fieldSimulParamsAnalysePlansSelect.setModel(getAnalyzePlansComboModel()); + // simulation analyse plans instance + listSimulParamsAnalysePlansList.setModel(getSimulationAnalyzePlansListModel()); } + + /** + * Refresh analyze plan names list. + */ + protected AnalyzePlanComboModel getAnalyzePlansComboModel() { + java.util.List<String> analyzePlanNames = simulAction.getAnalysePlanNames(); + AnalyzePlanComboModel model = new AnalyzePlanComboModel(analyzePlanNames); + /*fieldSimulParamsAnalysePlansSelect.setModel(model); + fieldSimulParamsAnalysePlansSelect.setRenderer(new AnalyzePlanComboRenderer());*/ + return model; + } - public void addAnalysePlan() { - getContextValue(SimulAction.class).addAnalysePlan(fieldSimulParamsAnalysePlansSelect.getSelectedItem().toString()); - setAnalysePlanButton(); - refresh(); + /** + * Refresh simulation analyze plan list. + */ + protected AnalyzePlanListModel getSimulationAnalyzePlansListModel() { + java.util.List<AnalysePlan> analyzePlans = simulAction.getParamAnalysePlans(); + AnalyzePlanListModel model = new AnalyzePlanListModel(analyzePlans); + /*listSimulParamsAnalysePlansList.setModel(model); + listSimulParamsAnalysePlansList.setCellRenderer(new AnalyzePlanListRenderer());*/ + return model; } + + protected void addAnalysePlan() { + String selectedAnalyzePlanName = (String)fieldSimulParamsAnalysePlansSelect.getSelectedItem(); + simulAction.addAnalysePlan(selectedAnalyzePlanName); + listSimulParamsAnalysePlansList.setModel(getSimulationAnalyzePlansListModel()); + setAnalysePlanButtons(); + } - public void removeAnalysePlan() { - getContextValue(SimulAction.class).removeAnalysePlan((AnalysePlan)listSimulParamsAnalysePlansList.getSelectedValue()); - refresh(); + protected void removeAnalysePlan() { + AnalysePlan selectedAnalyzePlan = (AnalysePlan)listSimulParamsAnalysePlansList.getSelectedValue(); + simulAction.removeAnalysePlan(selectedAnalyzePlan); + listSimulParamsAnalysePlansList.setModel(getSimulationAnalyzePlansListModel()); + setAnalysePlanButtons(); } - public void clearAnalysePlan() { - getContextValue(SimulAction.class).clearAnalysePlan(); - refresh(); + protected void clearAnalysePlan() { + simulAction.clearAnalysePlans(); + listSimulParamsAnalysePlansList.setModel(getSimulationAnalyzePlansListModel()); + setAnalysePlanButtons(); } - protected void setAnalysePlanButton() { - if (getContextValue(SimulAction.class).getParamAnalysePlans().toArray().length == 0) { - buttonSimulParamsAnalysePlansClear.setEnabled(false); - buttonSimulParamsAnalysePlansRemove.setEnabled(false); - } - else { + protected void setAnalysePlanButtons() { + if (getContextValue(SimulAction.class).getParamAnalysePlans().isEmpty()) { + buttonSimulParamsAnalysePlansClear.setEnabled(false); + buttonSimulParamsAnalysePlansRemove.setEnabled(false); + } + else { if (listSimulParamsAnalysePlansList.getSelectedIndex() != -1) { buttonSimulParamsAnalysePlansRemove.setEnabled(true); - setSimulParamsAnalysePlans(); } + else { + buttonSimulParamsAnalysePlansRemove.setEnabled(false); + } buttonSimulParamsAnalysePlansClear.setEnabled(true); - } + } + setSimulParamsAnalysePlans(); } protected void setSimulParamsAnalysePlans() { - if (listSimulParamsAnalysePlansList.getSelectedIndex() != -1) { - AnalysePlan analysePlan = (AnalysePlan)listSimulParamsAnalysePlansList.getSelectedValue(); - Map<String, Class<?>> values = getContextValue(SimulAction.class).getAnalysePlanParameterName(analysePlan); - int row = 0; - if (values != null) { - DefaultTableModel model = new DefaultTableModel() { - @Override - public boolean isCellEditable(int row, int column) { - boolean result = false; - if (column > 0){ - result =true; - } - return result; - } - }; - java.util.List<GenericCell> valuesList = new ArrayList<GenericCell>(); - java.util.List<Object> propertyList = new ArrayList<Object>(); - for (Iterator<String> it = values.keySet().iterator(); it.hasNext();) { - String name = it.next(); - Object properties = getContextValue(SimulAction.class).getAnalysePlanParameterValue(name, (AnalysePlan)listSimulParamsAnalysePlansList.getSelectedValue()); - GenericCell value = new GenericCell(name, values.get(name), null); - valuesList.add(value); - propertyList.add(properties); - row++; - } - model.addColumn(_("isisfish.common.name"), valuesList.toArray()); - model.addColumn(_("isisfish.common.value"), propertyList.toArray()); - simulParamsAnalysePlans.setModel(model); - ParameterColumnEditor cellEditor = new ParameterColumnEditor(); - cellEditor.setRegion(getContextValue(SimulAction.class).getRegionStorage()); - simulParamsAnalysePlans.getColumnModel().getColumn(1).setCellEditor(cellEditor); - simulParamsAnalysePlans.getModel().addTableModelListener(new TableModelListener() { - @Override - public void tableChanged(TableModelEvent e) { - int row = e.getFirstRow(); - TableModel model = (TableModel)e.getSource(); - GenericCell data = (GenericCell) model.getValueAt(row, 0); - getContextValue(SimulAction.class).setAnalysePlanParameterValue(data.getName(), (AnalysePlan)listSimulParamsAnalysePlansList.getSelectedValue(), model.getValueAt(row, 1)); - } - }); - simulParamsAnalysePlans.getColumnModel().getColumn(0).setCellRenderer(new SimpleToolTipTableColumnRenderer(ToolTipListModelFactory.createAnalysePlanParamsModel(AnalysePlanStorage.getName(analysePlan)))); - } + AnalysePlan selectedAnalyzePlan = (AnalysePlan)listSimulParamsAnalysePlansList.getSelectedValue(); + if (selectedAnalyzePlan != null) { + AnalyzePlanParametersTableModel model = new AnalyzePlanParametersTableModel(selectedAnalyzePlan); + simulParamsAnalysePlans.setModel(model); + AnalyzePlanParametersTableCellEditor cellEditor = new AnalyzePlanParametersTableCellEditor(selectedAnalyzePlan); + cellEditor.setRegion(simulAction.getRegionStorage()); + simulParamsAnalysePlans.getColumnModel().getColumn(0).setCellRenderer(new AnalyzePlanParametersTableCellRenderer(selectedAnalyzePlan)); + simulParamsAnalysePlans.getColumnModel().getColumn(1).setCellEditor(cellEditor); } + else { + // clear table + simulParamsAnalysePlans.setModel(new DefaultTableModel()); + } } - protected void backParameter(){ + + protected void backParameter() { + // TODO remove getParentContainer() use SimulUI simul = getParentContainer(SimulUI.class); simul.selTab(0); } - protected DefaultComboBoxModel getAnalysePlansSelectModel(){ - java.util.List values = getContextValue(SimulAction.class).getAnalysePlanNames(); - fieldSimulParamsAnalysePlansSelect.setRenderer(new SimpleToolTipComboBoxRenderer(ToolTipListModelFactory.createAnalysePlanDescriptionsModel(values))); - return new DefaultComboBoxModel(values.toArray()); - } ]]> </script> <row> <cell columns="2" fill="horizontal" weightx="1.0"> - <JComboBox id="fieldSimulParamsAnalysePlansSelect" model='{getAnalysePlansSelectModel()}'/> + <JComboBox id="fieldSimulParamsAnalysePlansSelect" model='{getAnalyzePlansComboModel()}' renderer='{new AnalyzePlanComboRenderer()}' /> </cell> </row> <row> <cell fill="both" weightx="0.5"> <JScrollPane minimumSize='{new Dimension(0,0)}' preferredSize='{new Dimension(0,0)}'> - <JList id="listSimulParamsAnalysePlansList" selectionMode="0" model='{new DefaultComboBoxModel(getContextValue(SimulAction.class).getParamAnalysePlans().toArray())}' onValueChanged='setAnalysePlanButton()'/> + <JList id="listSimulParamsAnalysePlansList" selectionMode="{javax.swing.ListSelectionModel.SINGLE_SELECTION}" + onValueChanged='setAnalysePlanButtons()' model='{getSimulationAnalyzePlansListModel()}' cellRenderer='{new AnalyzePlanListRenderer()}'/> </JScrollPane> </cell> <cell fill="both" weightx="0.5"> - <Table id="simulSens" name="isisfish.sens.title"> + <Table name="isisfish.sens.title"> <row> <cell fill="both" weightx="1.0"> <JButton id="buttonSimulParamsAnalysePlansAdd" text="isisfish.common.add" onActionPerformed='addAnalysePlan()'/> 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-06-12 16:38:25 UTC (rev 2373) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2009-06-12 16:39:20 UTC (rev 2374) @@ -102,7 +102,6 @@ protected SimulationParameter param = null; protected RegionStorage regionStorage = null; protected SimulationStorage simulStorage = null; - protected List<String> analysePlan = null; protected Map<SensitivityExport, String> sensitivityExports = new HashMap<SensitivityExport, String>(); protected List<String> oldSimulNames = null; @@ -143,7 +142,6 @@ param.setExportDirectory(IsisFish.config .getDefaultExportDirectory().toString()); param.setExportNames(IsisFish.config.getDefaultExportNamesAsList()); - analysePlan = AnalysePlanStorage.getAnalysePlanNames(); List<String> defaultResultNames = IsisFish.config .getDefaultResultNamesAsList(); if (defaultResultNames != null) { @@ -618,13 +616,13 @@ return IsisFish.config.getDefaultResultNamesAsList(); } - /* - * SensUI + /** + * Return Analyse plan names list. + * + * @return Analyse plan names */ - - // Gestion des analysePlans public List<String> getAnalysePlanNames() { - return analysePlan; + return AnalysePlanStorage.getAnalysePlanNames(); } public List<AnalysePlan> getParamAnalysePlans() { @@ -648,7 +646,7 @@ getSimulationParameter().removeAnalysePlan(ap); } - public void clearAnalysePlan() { + public void clearAnalysePlans() { getSimulationParameter().clearPlans(); } Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulUI.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulUI.jaxx 2009-06-12 16:38:25 UTC (rev 2373) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulUI.jaxx 2009-06-12 16:39:20 UTC (rev 2374) @@ -18,9 +18,8 @@ *##%*/ --> <JPanel layout='{new BorderLayout()}'> + <script><![CDATA[ - import org.dom4j.DocumentHelper; - import org.dom4j.Element; import jaxx.runtime.JAXXInitialContext; import fr.ifremer.isisfish.ui.input.InputAction; import fr.ifremer.isisfish.ui.input.InputSaveVerifier; @@ -30,11 +29,6 @@ public SimulUI(SimulAction action) { setContextValue(action); - - // increase tooltip display time - ToolTipManager toolTipManager = ToolTipManager.sharedInstance(); - toolTipManager.setInitialDelay(0); - toolTipManager.setDismissDelay(60000); } protected void enablePreSimul(boolean selected) { simulTabs.setEnabledAt(1, selected); @@ -51,7 +45,7 @@ sensUI.refresh(); exportUI.refresh(); resultChoiceUI.refresh(); - advencedParamsUI.refresh(); + advancedParamsUI.refresh(); } // TODO duplicated code (simulUI, Params UI, SensitivityUI) protected void importSimulation() { @@ -86,22 +80,22 @@ </JMenuBar> <JTabbedPane id="simulTabs" constraints='BorderLayout.CENTER'> <tab id="paramsUITab" title='isisfish.params.title'> - <ParamsUI id="paramsUI" constructorParams='this'/> + <ParamsUI id="paramsUI" constructorParams='this' /> </tab> <tab id="preScriptUITab" title='isisfish.preScript.title' enabled='false'> - <PreScriptsUI id="preSciptUI" constructorParams='this'/> + <PreScriptsUI id="preSciptUI" constructorParams='this' /> </tab> <tab id="sensUITab" title='isisfish.sens.title' enabled='false'> - <SensUI id="sensUI" constructorParams='this'/> + <SensUI id="sensUI" constructorParams='this' /> </tab> <tab id="exportUITab" title='isisfish.export.title'> - <ExportUI id="exportUI" constructorParams='this'/> + <ExportUI id="exportUI" constructorParams='this' /> </tab> <tab id="resultChoiceUITab" title='isisfish.resultChoice.title'> - <ResultChoiceUI id="resultChoiceUI" constructorParams='this'/> + <ResultChoiceUI id="resultChoiceUI" constructorParams='this' /> </tab> <tab id="advancedParamsUITab" title='isisfish.advancedParameters.title'> - <AdvancedParamsUI id="advencedParamsUI" constructorParams='this'/> + <AdvancedParamsUI id="advancedParamsUI" constructorParams='this' /> </tab> </JTabbedPane> </JPanel> \ No newline at end of file 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-06-12 16:38:25 UTC (rev 2373) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ToolTipListModelFactory.java 2009-06-12 16:39:20 UTC (rev 2374) @@ -251,7 +251,7 @@ try { RuleStorage storage = RuleStorage.getRule(ruleName); - Map<String, Class> mapParams = storage.getParameterNames(); + Map<String, Class<?>> mapParams = storage.getParameterNames(); if (!mapParams.isEmpty()) { for (String paramName : mapParams.keySet()) { Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/analyzeplan/AnalyzePlanComboModel.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/analyzeplan/AnalyzePlanComboModel.java (rev 0) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/analyzeplan/AnalyzePlanComboModel.java 2009-06-12 16:39:20 UTC (rev 2374) @@ -0,0 +1,102 @@ +/* *##% + * Copyright (C) 2009 Code Lutin + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package fr.ifremer.isisfish.ui.simulator.analyzeplan; + +import java.util.List; + +import javax.swing.DefaultComboBoxModel; + +/** + * Model pour la liste des plans d'analyse. + * + * @author chatellier + * @version $Revision: 2350 $ + * + * Last update : $Date: 2009-06-09 13:52:58 +0200 (mar. 09 juin 2009) $ + * By : $Author: chatellier $ + */ +public class AnalyzePlanComboModel extends DefaultComboBoxModel { + + /** serialVersionUID. */ + private static final long serialVersionUID = -4070846632975105788L; + + /** Analyze plan names. */ + protected List<String> analyzePlanNames; + + /** + * Empty constructor. + */ + public AnalyzePlanComboModel() { + this(null); + } + + /** + * Constructor with rule list. + * + * @param analyzePlanNames analysePlan Names + */ + public AnalyzePlanComboModel(List<String> analyzePlanNames) { + super(); + setAnalyzePlanNames(analyzePlanNames); + } + + /** + * Get analyze plan names. + * + * @return the analyze plan names + */ + public List<String> getAnalyzePlanNames() { + return analyzePlanNames; + } + + /** + * Set analyze plan names. + * + * @param analyzePlanNames the analyze plan names to set + */ + public void setAnalyzePlanNames(List<String> analyzePlanNames) { + this.analyzePlanNames = analyzePlanNames; + + // default first selected + if (!analyzePlanNames.isEmpty()) { + setSelectedItem(analyzePlanNames.get(0)); + } + } + + /* + * @see javax.swing.ListModel#getElementAt(int) + */ + @Override + public Object getElementAt(int index) { + return analyzePlanNames.get(index); + } + + /* + * @see javax.swing.ListModel#getSize() + */ + @Override + public int getSize() { + int size = 0; + + if (analyzePlanNames != null) { + size = analyzePlanNames.size(); + } + return size; + } +} Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/analyzeplan/AnalyzePlanComboRenderer.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/analyzeplan/AnalyzePlanComboRenderer.java (rev 0) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/analyzeplan/AnalyzePlanComboRenderer.java 2009-06-12 16:39:20 UTC (rev 2374) @@ -0,0 +1,87 @@ +/* *##% + * Copyright (C) 2009 Code Lutin + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package fr.ifremer.isisfish.ui.simulator.analyzeplan; + +import java.awt.Component; +import java.util.HashMap; +import java.util.Map; + +import javax.swing.DefaultListCellRenderer; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.ListCellRenderer; + +import fr.ifremer.isisfish.datastore.AnalysePlanStorage; +import fr.ifremer.isisfish.simulator.AnalysePlan; + +/** + * Renderer pour la combo des plans d'analyse. + * + * @author chatellier + * @version $Revision: 2350 $ + * + * Last update : $Date: 2009-06-09 13:52:58 +0200 (mar. 09 juin 2009) $ + * By : $Author: chatellier $ + */ +public class AnalyzePlanComboRenderer extends DefaultListCellRenderer implements ListCellRenderer { + + /** serialVersionUID. */ + private static final long serialVersionUID = -4070846632975105788L; + + /** Analyse plan cache. */ + protected Map<String, AnalysePlan> analysePlanCache; + + /** + * Empty constructor. + */ + public AnalyzePlanComboRenderer() { + analysePlanCache = new HashMap<String, AnalysePlan>(); + } + + /* + * @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean) + */ + @Override + public Component getListCellRendererComponent(JList list, Object value, + int index, boolean isSelected, boolean cellHasFocus) { + + // this must be used to have alterned highlight rows and default + // selection color + JLabel c = (JLabel)super.getListCellRendererComponent(list,value,index, isSelected, cellHasFocus); + + String analysePlanName = (String)value; + c.setText(analysePlanName); + + // c'est tres couteux d'avoir une instance + // on les met en cache + try { + AnalysePlan plan = analysePlanCache.get(analysePlanName); + if (plan == null) { + AnalysePlanStorage storage = AnalysePlanStorage.getAnalysePlan(analysePlanName); + plan = storage.getNewAnalysePlanInstance(); + } + + c.setToolTipText(plan.getDescription()); + } catch (Exception e) { + // can't get exception + } + + return c; + } +} Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/analyzeplan/AnalyzePlanListModel.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/analyzeplan/AnalyzePlanListModel.java (rev 0) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/analyzeplan/AnalyzePlanListModel.java 2009-06-12 16:39:20 UTC (rev 2374) @@ -0,0 +1,98 @@ +/* *##% + * Copyright (C) 2009 Code Lutin + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package fr.ifremer.isisfish.ui.simulator.analyzeplan; + +import java.util.List; + +import javax.swing.AbstractListModel; + +import fr.ifremer.isisfish.simulator.AnalysePlan; + +/** + * Model pour la liste des instances de plans d'analyse. + * + * @author chatellier + * @version $Revision: 2350 $ + * + * Last update : $Date: 2009-06-09 13:52:58 +0200 (mar. 09 juin 2009) $ + * By : $Author: chatellier $ + */ +public class AnalyzePlanListModel extends AbstractListModel { + + /** serialVersionUID. */ + private static final long serialVersionUID = -4070846632975105788L; + + protected List<AnalysePlan> plans; + + /** + * Empty constructor. + */ + public AnalyzePlanListModel() { + this(null); + } + + /** + * Constructor with plan list. + * + * @param plans plans + */ + public AnalyzePlanListModel(List<AnalysePlan> plans) { + super(); + setAnalyzePlan(plans); + } + + /** + * Get plans list. + * + * @return the plans + */ + public List<AnalysePlan> getAnalyzePlans() { + return plans; + } + + /** + * Set plans list. + * + * @param plans the plans to set + */ + public void setAnalyzePlan(List<AnalysePlan> plans) { + this.plans = plans; + } + + /* + * @see javax.swing.ListModel#getElementAt(int) + */ + @Override + public Object getElementAt(int index) { + return plans.get(index); + } + + /* + * @see javax.swing.ListModel#getSize() + */ + @Override + public int getSize() { + int size = 0; + + if (plans != null) { + size = plans.size(); + } + return size; + } +} Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/analyzeplan/AnalyzePlanListRenderer.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/analyzeplan/AnalyzePlanListRenderer.java (rev 0) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/analyzeplan/AnalyzePlanListRenderer.java 2009-06-12 16:39:20 UTC (rev 2374) @@ -0,0 +1,67 @@ +/* *##% + * Copyright (C) 2009 Code Lutin + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package fr.ifremer.isisfish.ui.simulator.analyzeplan; + +import java.awt.Component; + +import javax.swing.DefaultListCellRenderer; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.ListCellRenderer; + +import fr.ifremer.isisfish.datastore.AnalysePlanStorage; +import fr.ifremer.isisfish.simulator.AnalysePlan; + +/** + * Renderer pour la liste des plans d'analyse. + * + * @author chatellier + * @version $Revision: 2350 $ + * + * Last update : $Date: 2009-06-09 13:52:58 +0200 (mar. 09 juin 2009) $ + * By : $Author: chatellier $ + */ +public class AnalyzePlanListRenderer extends DefaultListCellRenderer implements ListCellRenderer { + + /** serialVersionUID. */ + private static final long serialVersionUID = -4070846632975105788L; + + /* + * @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean) + */ + @Override + public Component getListCellRendererComponent(JList list, Object value, + int index, boolean isSelected, boolean cellHasFocus) { + + // this must be used to have alterned highlight rows and default + // selection color + JLabel c = (JLabel)super.getListCellRendererComponent(list,value,index, isSelected, cellHasFocus); + + AnalysePlan plan = (AnalysePlan)value; + c.setText(AnalysePlanStorage.getName(plan)); + + try { + c.setToolTipText(plan.getDescription()); + } catch (Exception e) { + // can't get exception + } + + return this; + } +} Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/analyzeplan/AnalyzePlanParametersTableCellEditor.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/analyzeplan/AnalyzePlanParametersTableCellEditor.java (rev 0) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/analyzeplan/AnalyzePlanParametersTableCellEditor.java 2009-06-12 16:39:20 UTC (rev 2374) @@ -0,0 +1,70 @@ +/* *##% + * Copyright (C) 2009 Code Lutin + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package fr.ifremer.isisfish.ui.simulator.analyzeplan; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import fr.ifremer.isisfish.datastore.AnalysePlanStorage; +import fr.ifremer.isisfish.simulator.AnalysePlan; +import fr.ifremer.isisfish.ui.widget.editor.ParameterTableCellEditor; + +/** + * Specific editor for rule parameters. + * + * @author chatellier + * @version $Revision: 1.0 $ + * + * Last update : $Date: 9 juin 2009 $ + * By : $Author: chatellier $ + */ +public class AnalyzePlanParametersTableCellEditor extends ParameterTableCellEditor { + + /** serialVersionUID. */ + private static final long serialVersionUID = 8211639776194497615L; + + protected AnalysePlan plan; + + protected List<Class<?>> planParametersTypes; + + /** + * Constructor with rule parameter. + * + * @param plan plan + */ + public AnalyzePlanParametersTableCellEditor(AnalysePlan plan) { + super(); + + this.plan = plan; + planParametersTypes = new ArrayList<Class<?>>(); + //TODO map may be sorted + Map<String, Class<?>> planParametersNamesAndTypes = AnalysePlanStorage.getParameterNames(plan); + for (Class<?> type : planParametersNamesAndTypes.values()) { + planParametersTypes.add(type); + } + } + /* + * @see fr.ifremer.isisfish.ui.widget.editor.ParameterTableCellEditor#getType(java.lang.Object, int, int) + */ + @Override + protected Class<?> getType(Object value, int row, int column) { + return planParametersTypes.get(row); + } +} Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/analyzeplan/AnalyzePlanParametersTableCellRenderer.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/analyzeplan/AnalyzePlanParametersTableCellRenderer.java (rev 0) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/analyzeplan/AnalyzePlanParametersTableCellRenderer.java 2009-06-12 16:39:20 UTC (rev 2374) @@ -0,0 +1,75 @@ +/* *##% + * Copyright (C) 2009 Code Lutin + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package fr.ifremer.isisfish.ui.simulator.analyzeplan; + +import java.awt.Component; + +import javax.swing.JLabel; +import javax.swing.JTable; +import javax.swing.table.DefaultTableCellRenderer; +import javax.swing.table.TableCellRenderer; + +import fr.ifremer.isisfish.datastore.AnalysePlanStorage; +import fr.ifremer.isisfish.simulator.AnalysePlan; +import fr.ifremer.isisfish.ui.util.TooltipHelper; +import fr.ifremer.isisfish.util.Doc; + +/** + * Specific editor for rule parameters. + * + * @author chatellier + * @version $Revision: 1.0 $ + * + * Last update : $Date: 9 juin 2009 $ + * By : $Author: chatellier $ + */ +public class AnalyzePlanParametersTableCellRenderer extends DefaultTableCellRenderer implements TableCellRenderer { + + /** serialVersionUID. */ + private static final long serialVersionUID = -1655744662816030649L; + + protected AnalysePlan plan; + + public AnalyzePlanParametersTableCellRenderer(AnalysePlan plan) { + this.plan = plan; + } + + /* + * @see javax.swing.table.TableCellRenderer#getTableCellRendererComponent(javax.swing.JTable, java.lang.Object, boolean, boolean, int, int) + */ + @Override + public Component getTableCellRendererComponent(JTable table, Object value, + boolean isSelected, boolean hasFocus, int row, int column) { + + // this must be used to have alterned highlight rows and default + // selection color + JLabel c = (JLabel)super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); + + String parameterName = (String)value; + c.setText(parameterName); + + Doc doc = AnalysePlanStorage.getParameterDoc(plan, parameterName); + String documentation = TooltipHelper.docToString(doc); + c.setToolTipText(documentation); + + return c; + } + + +} Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/analyzeplan/AnalyzePlanParametersTableModel.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/analyzeplan/AnalyzePlanParametersTableModel.java (rev 0) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/analyzeplan/AnalyzePlanParametersTableModel.java 2009-06-12 16:39:20 UTC (rev 2374) @@ -0,0 +1,203 @@ +/* *##% + * Copyright (C) 2009 Code Lutin + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package fr.ifremer.isisfish.ui.simulator.analyzeplan; + +import static org.codelutin.i18n.I18n._; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import javax.swing.table.AbstractTableModel; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import fr.ifremer.isisfish.IsisFishException; +import fr.ifremer.isisfish.datastore.AnalysePlanStorage; +import fr.ifremer.isisfish.simulator.AnalysePlan; +import fr.ifremer.isisfish.ui.input.metier.MetierSeasonInfoTargetSpeciesModel; + +/** + * Model de la table de definition de parametre d'un plan d'analyse. + * + * Columns : + * <li>Parameter name</li> + * <li>Parameter value</li> + * + * @author chatellier + * @version $Revision: 2350 $ + * + * Last update : $Date: 2009-06-09 13:52:58 +0200 (mar. 09 juin 2009) $ + * By : $Author: chatellier $ + */ +public class AnalyzePlanParametersTableModel extends AbstractTableModel { + + /** Log. */ + private static Log log = LogFactory.getLog(MetierSeasonInfoTargetSpeciesModel.class); + + /** serialVersionUID. */ + private static final long serialVersionUID = 3169786638868209920L; + + /** Columns names. */ + public final static String[] COLUMN_NAMES = { + _("isisfish.common.name"), + _("isisfish.common.value") }; + + protected AnalysePlan plan; + + protected List<String> planParametersNames; + + + /** + * Constructor with data. + * + * @param plan plan to edit parameters + */ + public AnalyzePlanParametersTableModel(AnalysePlan plan) { + super(); + this.plan = plan; + + //TODO map may be sorted + planParametersNames = new ArrayList<String>(); + Map<String, Class<?>> planParametersNamesAndTypes = AnalysePlanStorage.getParameterNames(plan); + for (String names : planParametersNamesAndTypes.keySet()) { + planParametersNames.add(names); + } + } + + /** + * Return analyse plan. + * + * @return plan + */ + public AnalysePlan getAnalysePlan() { + return plan; + } + + /* + * @see javax.swing.table.TableModel#getColumnCount() + */ + @Override + public int getColumnCount() { + return COLUMN_NAMES.length; + } + + /* + * @see javax.swing.table.TableModel#getRowCount() + */ + @Override + public int getRowCount() { + return planParametersNames.size(); + } + + /* + * @see javax.swing.table.TableModel#getValueAt(int, int) + */ + @Override + public Object getValueAt(int rowIndex, int columnIndex) { + + Object result = null; + + String name = planParametersNames.get(rowIndex); + switch (columnIndex) { + case 0: + result = name; + break; + case 1: + try { + result = AnalysePlanStorage.getParameterValue(plan, name); + } catch (IsisFishException e) { + if (log.isErrorEnabled()) { + log.debug("Can't get parameters value", e); + } + } + break; + default: + throw new IndexOutOfBoundsException("No such column " + columnIndex); + } + + return result; + } + + /* + * @see javax.swing.table.TableModel#getColumnClass(int) + */ + @Override + public Class<?> getColumnClass(int columnIndex) { + + Class<?> result = null; + + switch (columnIndex) { + case 0: + result = String.class; + break; + case 1: + result = Object.class; + break; + default: + throw new IndexOutOfBoundsException("No such column " + columnIndex); + } + + return result; + } + + /* + * @see javax.swing.table.TableModel#getColumnName(int) + */ + @Override + public String getColumnName(int columnIndex) { + return COLUMN_NAMES[columnIndex]; + } + + /* + * @see javax.swing.table.TableModel#isCellEditable(int, int) + */ + @Override + public boolean isCellEditable(int rowIndex, int columnIndex) { + return columnIndex > 0; + } + + /* + * @see javax.swing.table.TableModel#setValueAt(java.lang.Object, int, int) + */ + @Override + public void setValueAt(Object value, int rowIndex, int columnIndex) { + + if (log.isDebugEnabled()) { + log.debug("Cell edition (column " + columnIndex + ") = " + value); + } + + String name = planParametersNames.get(rowIndex); + switch (columnIndex) { + case 1: + try { + AnalysePlanStorage.setParameterValue(plan, name, value); + } catch (IsisFishException e) { + if (log.isErrorEnabled()) { + log.error("Can't set parameter value"); + } + } + break; + default: + throw new IndexOutOfBoundsException("Can't edit column " + columnIndex); + } + + } +} Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/rule/RuleComboBoxModel.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/rule/RuleComboBoxModel.java 2009-06-12 16:38:25 UTC (rev 2373) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/rule/RuleComboBoxModel.java 2009-06-12 16:39:20 UTC (rev 2374) @@ -20,8 +20,7 @@ import java.util.List; -import javax.swing.AbstractListModel; -import javax.swing.ComboBoxModel; +import javax.swing.DefaultComboBoxModel; import fr.ifremer.isisfish.rule.Rule; @@ -34,15 +33,13 @@ * Last update : $Date: 2009-06-09 13:52:58 +0200 (mar. 09 juin 2009) $ * By : $Author: chatellier $ */ -public class RuleComboBoxModel extends AbstractListModel implements ComboBoxModel { +public class RuleComboBoxModel extends DefaultComboBoxModel { /** serialVersionUID. */ private static final long serialVersionUID = -4070846632975105788L; protected List<Rule> rules; - protected Object selectedItem; - /** * Empty constructor. */ @@ -79,7 +76,7 @@ // default first selected if (!rules.isEmpty()) { - selectedItem = rules.get(0); + setSelectedItem(rules.get(0)); } } @@ -104,20 +101,4 @@ return size; } - - /* - * @see javax.swing.ComboBoxModel#getSelectedItem() - */ - @Override - public Object getSelectedItem() { - return selectedItem; - } - - /* - * @see javax.swing.ComboBoxModel#setSelectedItem(java.lang.Object) - */ - @Override - public void setSelectedItem(Object anItem) { - this.selectedItem = anItem; - } } Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/rule/RuleListCellRenderer.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/rule/RuleListCellRenderer.java 2009-06-12 16:38:25 UTC (rev 2373) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/rule/RuleListCellRenderer.java 2009-06-12 16:39:20 UTC (rev 2374) @@ -20,6 +20,7 @@ import java.awt.Component; +import javax.swing.DefaultListCellRenderer; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.ListCellRenderer; @@ -36,7 +37,7 @@ * Last update : $Date: 2009-06-09 13:52:58 +0200 (mar. 09 juin 2009) $ * By : $Author: chatellier $ */ -public class RuleListCellRenderer extends JLabel implements ListCellRenderer { +public class RuleListCellRenderer extends DefaultListCellRenderer implements ListCellRenderer { /** serialVersionUID. */ private static final long serialVersionUID = -948394724922547715L; @@ -48,29 +49,22 @@ public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { + // this must be used to have alterned highlight rows and default + // selection color + JLabel c = (JLabel)super.getListCellRendererComponent(list,value,index, isSelected, cellHasFocus); + if (value != null) { Rule rule = (Rule)value; String ruleName = RuleStorage.getName(rule); - setText(ruleName); + c.setText(ruleName); try { - setToolTipText(rule.getDescription()); + c.setToolTipText(rule.getDescription()); } catch (Exception e) { // can't get exception } - - if(isSelected) { - setBackground(list.getSelectionBackground()); - setForeground(list.getSelectionForeground()); - setOpaque(true); // background won't work - } - else { - setBackground(list.getBackground()); - setForeground(list.getForeground()); - setOpaque(false); // background won't work - } } - return this; + return c; } } Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/rule/RuleParametersTableCellEditor.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/rule/RuleParametersTableCellEditor.java 2009-06-12 16:38:25 UTC (rev 2373) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/rule/RuleParametersTableCellEditor.java 2009-06-12 16:39:20 UTC (rev 2374) @@ -55,7 +55,7 @@ this.rule = rule; ruleParametersTypes = new ArrayList<Class<?>>(); //TODO map may be sorted - Map<String, Class> ruleParametersNamesAndTypes = RuleStorage.getParameterNames(rule); + Map<String, Class<?>> ruleParametersNamesAndTypes = RuleStorage.getParameterNames(rule); for (Class<?> type : ruleParametersNamesAndTypes.values()) { ruleParametersTypes.add(type); } Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/rule/RuleParametersTableCellRenderer.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/rule/RuleParametersTableCellRenderer.java (rev 0) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/rule/RuleParametersTableCellRenderer.java 2009-06-12 16:39:20 UTC (rev 2374) @@ -0,0 +1,76 @@ +/* *##% + * Copyright (C) 2009 Code Lutin + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package fr.ifremer.isisfish.ui.simulator.rule; + +import java.awt.Component; + +import javax.swing.JLabel; +import javax.swing.JTable; +import javax.swing.UIManager; +import javax.swing.table.DefaultTableCellRenderer; +import javax.swing.table.TableCellRenderer; +import javax.swing.text.JTextComponent; + +import fr.ifremer.isisfish.datastore.RuleStorage; +import fr.ifremer.isisfish.rule.Rule; +import fr.ifremer.isisfish.ui.util.TooltipHelper; +import fr.ifremer.isisfish.util.Doc; + +/** + * Specific editor for rule parameters. + * + * @author chatellier + * @version $Revision: 1.0 $ + * + * Last update : $Date: 9 juin 2009 $ + * By : $Author: chatellier $ + */ +public class RuleParametersTableCellRenderer extends DefaultTableCellRenderer implements TableCellRenderer { + + /** serialVersionUID. */ + private static final long serialVersionUID = -1655744662816030649L; + + protected Rule rule; + + public RuleParametersTableCellRenderer(Rule rule) { + this.rule = rule; + + } + + /* + * @see javax.swing.table.TableCellRenderer#getTableCellRendererComponent(javax.swing.JTable, java.lang.Object, boolean, boolean, int, int) + */ + @Override + public Component getTableCellRendererComponent(JTable table, Object value, + boolean isSelected, boolean hasFocus, int row, int column) { + + JLabel c = (JLabel)super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); + + String parameterName = (String)value; + c.setText(parameterName); + + Doc doc = RuleStorage.getParameterDoc(rule, parameterName); + String documentation = TooltipHelper.docToString(doc); + c.setToolTipText(documentation); + + return c; + } + + +} Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/rule/RuleParametersTableModel.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/rule/RuleParametersTableModel.java 2009-06-12 16:38:25 UTC (rev 2373) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/rule/RuleParametersTableModel.java 2009-06-12 16:39:20 UTC (rev 2374) @@ -75,7 +75,7 @@ //TODO map may be sorted ruleParametersNames = new ArrayList<String>(); - Map<String, Class> ruleParametersNamesAndTypes = RuleStorage.getParameterNames(rule); + Map<String, Class<?>> ruleParametersNamesAndTypes = RuleStorage.getParameterNames(rule); for (String names : ruleParametersNamesAndTypes.keySet()) { ruleParametersNames.add(names); } Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/util/TooltipHelper.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/util/TooltipHelper.java (rev 0) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/util/TooltipHelper.java 2009-06-12 16:39:20 UTC (rev 2374) @@ -0,0 +1,77 @@ +/* *##% + * Copyright (C) 2009 Code Lutin + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package fr.ifremer.isisfish.ui.util; + +import org.apache.commons.lang.ArrayUtils; +import org.apache.commons.lang.StringUtils; + +import fr.ifremer.isisfish.util.Doc; + +/** + * Tooltip common utils methods. + * + * @author chatellier + * @version $Revision: 1.0 $ + * + * Last update : $Date: 12 juin 2009 $ + * By : $Author: chatellier $ + */ +public class TooltipHelper { + + /** + * Return HTML formatted tooltip. + * + * Use optional documentation (if any) or use @Doc's class doc. + * + * @param doc the doc to use + * @param optionalDocumentations optional documentation + * @return a string nicely print version + */ + public static String docToString(Doc doc, String... optionalDocumentations) { + + String tooltip = null; + + if (doc != null) { + StringBuilder sb = new StringBuilder(); + sb.append("<html>"); + if (!ArrayUtils.isEmpty(optionalDocumentations)) { + for (String optionalDocumentation : optionalDocumentations) { + sb.append("<p>" + optionalDocumentation + "</p>"); + } + } else { + sb.append("<p>" + doc.value() + "</p>"); + } + if (!StringUtils.isEmpty(doc.author())) { + sb.append("<p><b>author: </b>" + doc.author() + "</p>"); + } + if (!StringUtils.isEmpty(doc.date())) { + sb.append("<p><b>date: </b>" + doc.date() + "</p>"); + } + if (!StringUtils.isEmpty(doc.version())) { + sb.append("<p><b>version: </b>" + doc.version() + "</p>"); + } + sb.append("</html>"); + tooltip = sb.toString(); + + // replace all \n by <br/> + tooltip = tooltip.replace("\n", "<br/>"); + } + return tooltip; + } +}
participants (1)
-
chatellier@users.labs.libre-entreprise.org