]> git.argeo.org Git - gpl/argeo-slc.git/blob - eclipse/plugins/org.argeo.slc.client.ui/src/org/argeo/slc/client/ui/providers/ProcessParametersEditingSupport.java
Add Spring Security JSP tags as a dependency
[gpl/argeo-slc.git] / eclipse / plugins / org.argeo.slc.client.ui / src / org / argeo / slc / client / ui / providers / ProcessParametersEditingSupport.java
1 package org.argeo.slc.client.ui.providers;
2
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;
11
12 /**
13 *
14 * @author bsinou
15 *
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.
19 *
20 *
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.
25 */
26
27 public class ProcessParametersEditingSupport extends EditingSupport {
28
29 // private final static Log log = LogFactory
30 // .getLog(ProcessParametersEditingSupport.class);
31
32 private CellEditor strEditor;
33 private CellEditor nbEditor;
34 // private int column;
35
36 private final static String strType = "string", intType = "integer";
37
38 // different type of primitive
39 private static enum primitiveType {
40 strType, intType
41 };
42
43 // So that we can update corresponding process
44 private int curProcessIndex;
45 private ProcessBuilderView pbView;
46
47 public ProcessParametersEditingSupport(ColumnViewer viewer, int column) {
48 super(viewer);
49 strEditor = new TextCellEditor(((TableViewer) viewer).getTable());
50 // nbEditor = new NumberCellEditor(((TableViewer) viewer).getTable());
51 // this.column = column;
52 }
53
54 @Override
55 protected CellEditor getCellEditor(Object element) {
56 // TODO return specific editor depending on the parameter type.
57 return strEditor;
58 }
59
60 @Override
61 protected boolean canEdit(Object element) {
62 return true;
63 }
64
65 @Override
66 protected Object getValue(Object element) {
67 ProcessParametersView.ObjectWithName objectWithName = (ProcessParametersView.ObjectWithName) element;
68
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())) {
73 return pv.getValue();
74 }
75 if (intType.equals(pv.getType())) {
76 return ((Integer) pv.getValue()).toString();
77 }
78 }
79 return "unsupported param type";
80
81 }
82
83 @Override
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())) {
90 pv.setValue(value);
91 pbView.updateParameter(curProcessIndex, objectWithName.name,
92 objectWithName.obj);
93 } else if (intType.equals(pv.getType())) {
94
95 String stVal = (String) value;
96 Integer val = ("".equals(stVal)) ? new Integer(0)
97 : new Integer(stVal);
98 pv.setValue(val);
99 pbView.updateParameter(curProcessIndex, objectWithName.name, pv);
100 }
101 getViewer().update(element, null);
102 }
103
104 }
105
106 // Store the index of the process which parameters are being edited
107 public void setCurrentProcessIndex(int index) {
108 this.curProcessIndex = index;
109 }
110
111 public void setCurrentProcessBuilderView(
112 ProcessBuilderView processbuilderView) {
113 this.pbView = processbuilderView;
114 }
115
116 }