1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.efaps.admin.datamodel.ui;
22
23 import java.util.Iterator;
24 import java.util.Map;
25 import java.util.Map.Entry;
26 import java.util.TreeMap;
27
28 import org.efaps.admin.datamodel.Attribute;
29 import org.efaps.admin.event.EventType;
30 import org.efaps.admin.event.Parameter.ParameterValues;
31 import org.efaps.admin.event.Return;
32 import org.efaps.admin.event.Return.ReturnValues;
33 import org.efaps.admin.ui.AbstractUserInterfaceObject.TargetMode;
34 import org.efaps.admin.ui.field.Field;
35 import org.efaps.util.EFapsException;
36
37
38
39
40
41
42
43
44
45
46
47 public class LinkWithRangesUI
48 extends AbstractUI
49 {
50
51
52
53
54 private static final long serialVersionUID = 1L;
55
56
57
58
59 @Override
60 public String getReadOnlyHtml(final FieldValue _fieldValue) throws EFapsException
61 {
62 final StringBuilder ret = new StringBuilder();
63 final Attribute attribute = _fieldValue.getAttribute();
64 if (_fieldValue.getValue() != null) {
65 if (attribute.hasEvents(EventType.RANGE_VALUE)) {
66 for (final Return values : attribute.executeEvents(EventType.RANGE_VALUE,
67 ParameterValues.UIOBJECT, _fieldValue,
68 ParameterValues.ACCESSMODE, _fieldValue.getTargetMode())) {
69 final Map<?, ?> map = (Map<?, ?>) values.get(ReturnValues.VALUES);
70 for (final Entry<?, ?> entry : map.entrySet()) {
71 if (entry.getValue().equals(_fieldValue.getValue().toString())) {
72 ret.append(entry.getKey().toString());
73 }
74 }
75 }
76 }
77 }
78 return ret.toString();
79 }
80
81
82
83
84 @Override
85 public String getEditHtml(final FieldValue _fieldValue)
86 throws EFapsException
87 {
88 final StringBuilder ret = new StringBuilder();
89 final Attribute attribute = _fieldValue.getAttribute();
90 if (_fieldValue.getTargetMode().equals(TargetMode.SEARCH)) {
91 final Field field = _fieldValue.getField();
92 ret.append("<input type=\"text\" ")
93 .append("size=\"").append(field.getCols())
94 .append("\" name=\"").append(field.getName())
95 .append("\" value=\"*\"").append("/>").toString();
96 } else {
97 if (attribute.hasEvents(EventType.RANGE_VALUE)) {
98 for (final Return values : attribute.executeEvents(EventType.RANGE_VALUE,
99 ParameterValues.UIOBJECT, _fieldValue,
100 ParameterValues.ACCESSMODE, _fieldValue.getTargetMode())) {
101 ret.append("<select name=\"").append(_fieldValue.getField().getName()).append("\" ")
102 .append(UIInterface.EFAPSTMPTAG).append(" size=\"1\">");
103 final Iterator<?> iter = ((TreeMap<?, ?>) values.get(ReturnValues.VALUES)).entrySet().iterator();
104
105 while (iter.hasNext()) {
106 final Entry<?, ?> entry = (Entry<?, ?>) iter.next();
107 ret.append("<option value=\"").append(entry.getValue());
108 if (_fieldValue.getValue() != null
109 && ((!_fieldValue.getTargetMode().equals(TargetMode.CREATE)
110 && _fieldValue.getValue().toString().equals(entry.getValue()))
111 || (_fieldValue.getTargetMode().equals(TargetMode.CREATE)
112 && _fieldValue.getValue().toString().equals(entry.getKey())))) {
113 ret.append("\" selected=\"selected");
114 }
115 ret.append("\">").append(entry.getKey()).append("</option>");
116 }
117 ret.append("</select>");
118 }
119 }
120 }
121 return ret.toString();
122 }
123
124
125
126
127 @Override
128 public int compare(final FieldValue _fieldValue,
129 final FieldValue _fieldValue2)
130 throws EFapsException
131 {
132 return _fieldValue.getValue().toString().compareTo(_fieldValue2.getValue().toString());
133 }
134
135
136
137
138
139 @SuppressWarnings("unchecked")
140 @Override
141 public Object getValue(final UIValue _uiValue)
142 throws EFapsException
143 {
144 final Map<Object, Object> ret = new TreeMap<Object, Object>();
145 final Attribute attribute = _uiValue.getAttribute();
146 if (attribute != null && attribute.hasEvents(EventType.RANGE_VALUE)) {
147 for (final Return values : attribute.executeEvents(EventType.RANGE_VALUE,
148 ParameterValues.UIOBJECT, _uiValue,
149 ParameterValues.ACCESSMODE, _uiValue.getTargetMode())) {
150 ret.putAll((Map<Object, Object>) values.get(ReturnValues.VALUES));
151 }
152 }
153 return ret;
154 }
155 }