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
;
15 * Implements the ability to edit and save various type of
16 * parameter of a given process. Parameter values are directly saved as
17 * soon as the focus on a given field is lost.
20 * Note that EditingSupport is tightly coupled with both
21 * ProcessParametersView and ProcessBuilderView; it cannot serve as a
22 * generic EditingSupport as is. Note also that it assumes that the
23 * processes in ProcessBuilderView as stored as an ordered list.
29 public class ProcessParametersEditingSupport
extends EditingSupport
{
31 // private final static Log log = LogFactory
32 // .getLog(ProcessParametersEditingSupport.class);
34 private CellEditor strEditor
;
35 private CellEditor nbEditor
;
36 // private int column;
38 private final static String strType
= "string", intType
= "integer";
40 // different type of primitive
41 private static enum primitiveType
{
45 // So that we can update corresponding process
46 private int curProcessIndex
;
47 private ProcessBuilderView pbView
;
49 public ProcessParametersEditingSupport(ColumnViewer viewer
, int column
) {
51 strEditor
= new TextCellEditor(((TableViewer
) viewer
).getTable());
52 // nbEditor = new NumberCellEditor(((TableViewer) viewer).getTable());
53 // this.column = column;
57 protected CellEditor
getCellEditor(Object element
) {
58 // TODO return specific editor depending on the parameter type.
63 protected boolean canEdit(Object element
) {
68 protected Object
getValue(Object element
) {
69 ProcessParametersView
.ObjectWithName objectWithName
= (ProcessParametersView
.ObjectWithName
) element
;
71 if (objectWithName
.obj
instanceof PrimitiveAccessor
) {
72 PrimitiveAccessor pv
= (PrimitiveAccessor
) objectWithName
.obj
;
73 // we only handle string & integer parameter in a first time
74 if (strType
.equals(pv
.getType())) {
77 if (intType
.equals(pv
.getType())) {
78 return ((Integer
) pv
.getValue()).toString();
81 return "unsupported param type";
86 protected void setValue(Object element
, Object value
) {
87 ProcessParametersView
.ObjectWithName objectWithName
= (ProcessParametersView
.ObjectWithName
) element
;
88 if (objectWithName
.obj
instanceof PrimitiveAccessor
) {
89 PrimitiveAccessor pv
= (PrimitiveAccessor
) objectWithName
.obj
;
90 // we only handle string parameter in a first time
91 if (strType
.equals(pv
.getType())) {
93 pbView
.updateParameter(curProcessIndex
, objectWithName
.name
,
95 } else if (intType
.equals(pv
.getType())) {
97 String stVal
= (String
) value
;
98 Integer val
= ("".equals(stVal
)) ?
new Integer(0)
101 pbView
.updateParameter(curProcessIndex
, objectWithName
.name
, pv
);
103 getViewer().update(element
, null);
108 // Store the index of the process which parameters are being edited
109 public void setCurrentProcessIndex(int index
) {
110 this.curProcessIndex
= index
;
113 public void setCurrentProcessBuilderView(
114 ProcessBuilderView processbuilderView
) {
115 this.pbView
= processbuilderView
;