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