+++ /dev/null
-package org.argeo.slc.client.ui.providers;
-
-import org.argeo.slc.client.ui.views.ProcessBuilderView;
-import org.argeo.slc.client.ui.views.ProcessParametersView;
-import org.argeo.slc.core.execution.PrimitiveAccessor;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.ColumnViewer;
-import org.eclipse.jface.viewers.EditingSupport;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.TextCellEditor;
-
-/**
- *
- *
- * Implements the ability to edit and save various type of
- * parameter of a given process. Parameter values are directly saved as
- * soon as the focus on a given field is lost.
- *
- *
- * Note that EditingSupport is tightly coupled with both
- * ProcessParametersView and ProcessBuilderView; it cannot serve as a
- * generic EditingSupport as is. Note also that it assumes that the
- * processes in ProcessBuilderView as stored as an ordered list.
-
- @author bsinou
- *
- */
-
-public class ProcessParametersEditingSupport extends EditingSupport {
-
- // private final static Log log = LogFactory
- // .getLog(ProcessParametersEditingSupport.class);
-
- private CellEditor strEditor;
- private CellEditor nbEditor;
- // private int column;
-
- private final static String strType = "string", intType = "integer";
-
- // different type of primitive
- private static enum primitiveType {
- strType, intType
- };
-
- // So that we can update corresponding process
- private int curProcessIndex;
- private ProcessBuilderView pbView;
-
- public ProcessParametersEditingSupport(ColumnViewer viewer, int column) {
- super(viewer);
- strEditor = new TextCellEditor(((TableViewer) viewer).getTable());
- // nbEditor = new NumberCellEditor(((TableViewer) viewer).getTable());
- // this.column = column;
- }
-
- @Override
- protected CellEditor getCellEditor(Object element) {
- // TODO return specific editor depending on the parameter type.
- return strEditor;
- }
-
- @Override
- protected boolean canEdit(Object element) {
- return true;
- }
-
- @Override
- protected Object getValue(Object element) {
- ProcessParametersView.ObjectWithName objectWithName = (ProcessParametersView.ObjectWithName) element;
-
- if (objectWithName.obj instanceof PrimitiveAccessor) {
- PrimitiveAccessor pv = (PrimitiveAccessor) objectWithName.obj;
- // we only handle string & integer parameter in a first time
- if (strType.equals(pv.getType())) {
- return pv.getValue();
- }
- if (intType.equals(pv.getType())) {
- return ((Integer) pv.getValue()).toString();
- }
- }
- return "unsupported param type";
-
- }
-
- @Override
- protected void setValue(Object element, Object value) {
- ProcessParametersView.ObjectWithName objectWithName = (ProcessParametersView.ObjectWithName) element;
- if (objectWithName.obj instanceof PrimitiveAccessor) {
- PrimitiveAccessor pv = (PrimitiveAccessor) objectWithName.obj;
- // we only handle string parameter in a first time
- if (strType.equals(pv.getType())) {
- pv.setValue(value);
- pbView.updateParameter(curProcessIndex, objectWithName.name,
- objectWithName.obj);
- } else if (intType.equals(pv.getType())) {
-
- String stVal = (String) value;
- Integer val = ("".equals(stVal)) ? new Integer(0)
- : new Integer(stVal);
- pv.setValue(val);
- pbView.updateParameter(curProcessIndex, objectWithName.name, pv);
- }
- getViewer().update(element, null);
- }
-
- }
-
- // Store the index of the process which parameters are being edited
- public void setCurrentProcessIndex(int index) {
- this.curProcessIndex = index;
- }
-
- public void setCurrentProcessBuilderView(
- ProcessBuilderView processbuilderView) {
- this.pbView = processbuilderView;
- }
-
-}