1 package org
.argeo
.slc
.client
.ui
.providers
;
3 import org
.argeo
.slc
.client
.ui
.views
.ProcessBuilderView
;
4 import org
.argeo
.slc
.client
.ui
.views
.ProcessParametersView
;
5 import org
.argeo
.slc
.core
.execution
.PrimitiveAccessor
;
6 import org
.eclipse
.jface
.viewers
.CellEditor
;
7 import org
.eclipse
.jface
.viewers
.ColumnViewer
;
8 import org
.eclipse
.jface
.viewers
.EditingSupport
;
9 import org
.eclipse
.jface
.viewers
.TableViewer
;
10 import org
.eclipse
.jface
.viewers
.TextCellEditor
;
16 * This class implements the ability to edit and save various type of
17 * parameter of a given process. Parameter values are directly saved as
18 * soon as the focus on a given field is lost.
21 * Note that this EditingSupport is tightly coupled with both
22 * ProcessParametersView and ProcessBuilderView; it cannot serve as a
23 * generic EditingSupport as is. Note also that it assumes that the
24 * processes in ProcessBuilderView as stored as an ordered list.
27 public class ProcessParametersEditingSupport
extends EditingSupport
{
29 // private final static Log log = LogFactory
30 // .getLog(ProcessParametersEditingSupport.class);
32 private CellEditor strEditor
;
33 private CellEditor nbEditor
;
34 // private int column;
36 private final static String strType
= "string", intType
= "integer";
38 // different type of primitive
39 private static enum primitiveType
{
43 // So that we can update corresponding process
44 private int curProcessIndex
;
45 private ProcessBuilderView pbView
;
47 public ProcessParametersEditingSupport(ColumnViewer viewer
, int column
) {
49 strEditor
= new TextCellEditor(((TableViewer
) viewer
).getTable());
50 // nbEditor = new NumberCellEditor(((TableViewer) viewer).getTable());
51 // this.column = column;
55 protected CellEditor
getCellEditor(Object element
) {
56 // TODO return specific editor depending on the parameter type.
61 protected boolean canEdit(Object element
) {
66 protected Object
getValue(Object element
) {
67 ProcessParametersView
.ObjectWithName objectWithName
= (ProcessParametersView
.ObjectWithName
) element
;
69 if (objectWithName
.obj
instanceof PrimitiveAccessor
) {
70 PrimitiveAccessor pv
= (PrimitiveAccessor
) objectWithName
.obj
;
71 // we only handle string & integer parameter in a first time
72 if (strType
.equals(pv
.getType())) {
75 if (intType
.equals(pv
.getType())) {
76 return ((Integer
) pv
.getValue()).toString();
79 return "unsupported param type";
84 protected void setValue(Object element
, Object value
) {
85 ProcessParametersView
.ObjectWithName objectWithName
= (ProcessParametersView
.ObjectWithName
) element
;
86 if (objectWithName
.obj
instanceof PrimitiveAccessor
) {
87 PrimitiveAccessor pv
= (PrimitiveAccessor
) objectWithName
.obj
;
88 // we only handle string parameter in a first time
89 if (strType
.equals(pv
.getType())) {
91 pbView
.updateParameter(curProcessIndex
, objectWithName
.name
,
93 } else if (intType
.equals(pv
.getType())) {
95 String stVal
= (String
) value
;
96 Integer val
= ("".equals(stVal
)) ?
new Integer(0)
99 pbView
.updateParameter(curProcessIndex
, objectWithName
.name
, pv
);
101 getViewer().update(element
, null);
106 // Store the index of the process which parameters are being edited
107 public void setCurrentProcessIndex(int index
) {
108 this.curProcessIndex
= index
;
111 public void setCurrentProcessBuilderView(
112 ProcessBuilderView processbuilderView
) {
113 this.pbView
= processbuilderView
;