Revision 270 org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.spi/src/main/java/org/gvsig/tools/swing/spi/AbstractJDynFieldComponent.java
AbstractJDynFieldComponent.java | ||
---|---|---|
50 | 50 |
* @author 2010- C?sar Ordi?ana - gvSIG team |
51 | 51 |
*/ |
52 | 52 |
public abstract class AbstractJDynFieldComponent extends AbstractJDynField |
53 |
implements JDynFieldComponent {
|
|
53 |
implements JDynFieldComponent {
|
|
54 | 54 |
|
55 | 55 |
private static final long serialVersionUID = 7833217085675382320L; |
56 | 56 |
|
... | ... | |
60 | 60 |
|
61 | 61 |
private final ValueField fieldValue; |
62 | 62 |
|
63 |
/**
|
|
64 |
* Constructor.
|
|
65 |
*
|
|
66 |
* @param dynField
|
|
67 |
* the field of the {@link DynObject} to render
|
|
68 |
* @param dynObject
|
|
69 |
* the {@link DynObject} with the attribute to render
|
|
70 |
*/
|
|
71 |
public AbstractJDynFieldComponent(DynField dynField, ValueField value)
|
|
72 |
throws ServiceException {
|
|
73 |
super(dynField);
|
|
74 |
fieldValue = value;
|
|
75 |
listeners = new ArrayList<ValueChangedListener>();
|
|
76 |
// this.dynObject = dynObject.getDynObject();
|
|
77 |
manager = ToolsSwingLocator.getDynObjectSwingManager();
|
|
78 |
this.init();
|
|
79 |
}
|
|
63 |
/**
|
|
64 |
* Constructor.
|
|
65 |
*
|
|
66 |
* @param dynField
|
|
67 |
* the field of the {@link DynObject} to render
|
|
68 |
* @param dynObject
|
|
69 |
* the {@link DynObject} with the attribute to render
|
|
70 |
*/
|
|
71 |
public AbstractJDynFieldComponent(DynField dynField, ValueField value)
|
|
72 |
throws ServiceException {
|
|
73 |
super(dynField);
|
|
74 |
fieldValue = value;
|
|
75 |
listeners = new ArrayList<ValueChangedListener>();
|
|
76 |
// this.dynObject = dynObject.getDynObject();
|
|
77 |
manager = ToolsSwingLocator.getDynObjectSwingManager();
|
|
78 |
this.init();
|
|
79 |
}
|
|
80 | 80 |
|
81 |
/*
|
|
82 |
* (non-Javadoc)
|
|
83 |
*
|
|
84 |
* @seeorg.gvsig.tools.swing.api.dynobject.dynfield.JDynFieldComponent#
|
|
85 |
* addValueChangedListener
|
|
86 |
* (org.gvsig.tools.swing.api.dynobject.ValueChangedListener)
|
|
87 |
*/
|
|
88 |
public void addValueChangedListener(ValueChangedListener listener) {
|
|
89 |
// If it was the first item, we need to
|
|
90 |
// initialize Component listeners
|
|
91 |
// add listener to the dynfield set of listeners
|
|
92 |
listeners.add(listener);
|
|
93 |
// set supplementary listeners.
|
|
94 |
this.setJDynFieldComponentListeners();
|
|
95 |
}
|
|
81 |
/*
|
|
82 |
* (non-Javadoc)
|
|
83 |
*
|
|
84 |
* @seeorg.gvsig.tools.swing.api.dynobject.dynfield.JDynFieldComponent#
|
|
85 |
* addValueChangedListener
|
|
86 |
* (org.gvsig.tools.swing.api.dynobject.ValueChangedListener)
|
|
87 |
*/
|
|
88 |
public void addValueChangedListener(ValueChangedListener listener) {
|
|
89 |
// If it was the first item, we need to
|
|
90 |
// initialize Component listeners
|
|
91 |
// add listener to the dynfield set of listeners
|
|
92 |
listeners.add(listener);
|
|
93 |
// set supplementary listeners.
|
|
94 |
this.setJDynFieldComponentListeners();
|
|
95 |
}
|
|
96 | 96 |
|
97 |
protected JPanel createBoxLayout(Component component1,
|
|
98 |
Component component2, Integer marginLeft, Integer marginRight,
|
|
99 |
JPanel container) {
|
|
100 |
return this.createBoxRowPanel(container, component1, component2,
|
|
101 |
marginLeft, marginRight);
|
|
102 |
}
|
|
97 |
protected JPanel createBoxLayout(Component component1,
|
|
98 |
Component component2, Integer marginLeft, Integer marginRight,
|
|
99 |
JPanel container) {
|
|
100 |
return this.createBoxRowPanel(container, component1, component2,
|
|
101 |
marginLeft, marginRight);
|
|
102 |
}
|
|
103 | 103 |
|
104 |
public void setValue(Object value) {
|
|
105 |
if (value == null)
|
|
106 |
setNullValue();
|
|
107 |
else
|
|
108 |
setNonNullValue(value);
|
|
109 |
this.fireValueChangedEvent();
|
|
110 |
}
|
|
104 |
public void setValue(Object value) {
|
|
105 |
if (value == null)
|
|
106 |
setNullValue();
|
|
107 |
else
|
|
108 |
setNonNullValue(value);
|
|
109 |
this.fireValueChangedEvent();
|
|
110 |
}
|
|
111 | 111 |
|
112 |
/**
|
|
113 |
* @param value
|
|
114 |
*/
|
|
115 |
protected abstract void setNonNullValue(Object value);
|
|
112 |
/**
|
|
113 |
* @param value
|
|
114 |
*/
|
|
115 |
protected abstract void setNonNullValue(Object value);
|
|
116 | 116 |
|
117 |
/**
|
|
117 |
/**
|
|
118 | 118 |
* |
119 | 119 |
*/ |
120 |
protected abstract void setNullValue();
|
|
120 |
protected abstract void setNullValue();
|
|
121 | 121 |
|
122 |
/* |
|
123 |
* (non-Javadoc) |
|
124 |
* |
|
125 |
* @see |
|
126 |
* org.gvsig.tools.swing.api.usability.UsabilitySwingManager#createBoxRowPanel |
|
127 |
* (javax.swing.JPanel, java.awt.Component, java.awt.Component, |
|
128 |
* java.lang.Integer, java.lang.Integer) |
|
129 |
*/ |
|
130 |
public JPanel createBoxRowPanel(JPanel panel, Component labelComponent, |
|
131 |
Component fieldLabel, Integer marginLeft, Integer marginRight) { |
|
122 |
/* |
|
123 |
* (non-Javadoc) |
|
124 |
* |
|
125 |
* @see |
|
126 |
* |
|
127 |
* org.gvsig.tools.swing.api.usability.UsabilitySwingManager#createBoxRowPanel |
|
128 |
* (javax.swing.JPanel, java.awt.Component, java.awt.Component, |
|
129 |
* java.lang.Integer, java.lang.Integer) |
|
130 |
*/ |
|
131 |
public JPanel createBoxRowPanel(JPanel panel, Component labelComponent, |
|
132 |
Component fieldLabel, Integer marginLeft, Integer marginRight) { |
|
132 | 133 |
|
133 |
// Create a panel that uses GridLayout.
|
|
134 |
JPanel pane = new JPanel();
|
|
135 |
pane.setLayout(new BoxLayout(pane, BoxLayout.LINE_AXIS));
|
|
136 |
pane.add(labelComponent);
|
|
137 |
if (marginLeft != null)
|
|
138 |
pane.add(Box.createHorizontalStrut(marginLeft));
|
|
139 |
// pane.add(new JSeparator(SwingConstants.VERTICAL));
|
|
140 |
if (marginRight != null)
|
|
141 |
pane.add(Box.createHorizontalStrut(marginRight));
|
|
142 |
pane.add(fieldLabel, BorderLayout.NORTH);
|
|
143 |
// if (buttonComponent!=null)
|
|
144 |
// pane.add(buttonComponent);
|
|
145 |
pane.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
|
|
146 |
return pane;
|
|
134 |
// Create a panel that uses GridLayout.
|
|
135 |
JPanel pane = new JPanel();
|
|
136 |
pane.setLayout(new BoxLayout(pane, BoxLayout.LINE_AXIS));
|
|
137 |
pane.add(labelComponent);
|
|
138 |
if (marginLeft != null)
|
|
139 |
pane.add(Box.createHorizontalStrut(marginLeft));
|
|
140 |
// pane.add(new JSeparator(SwingConstants.VERTICAL));
|
|
141 |
if (marginRight != null)
|
|
142 |
pane.add(Box.createHorizontalStrut(marginRight));
|
|
143 |
pane.add(fieldLabel, BorderLayout.NORTH);
|
|
144 |
// if (buttonComponent!=null)
|
|
145 |
// pane.add(buttonComponent);
|
|
146 |
pane.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
|
|
147 |
return pane;
|
|
147 | 148 |
} |
148 | 149 |
|
149 |
|
|
150 | 150 |
protected JButton createButton(String text) { |
151 |
return ToolsSwingLocator.getUsabilitySwingManager().createJToolButton(
|
|
152 |
this.translate(text));
|
|
151 |
return ToolsSwingLocator.getUsabilitySwingManager().createJToolButton(
|
|
152 |
this.translate(text));
|
|
153 | 153 |
} |
154 |
|
|
154 |
|
|
155 | 155 |
/* |
156 | 156 |
* (non-Javadoc) |
157 | 157 |
* |
... | ... | |
159 | 159 |
* raiseValueChangedEvent() |
160 | 160 |
*/ |
161 | 161 |
public void fireValueChangedEvent() { |
162 |
for (ValueChangedListener listener : listeners)
|
|
163 |
listener.handleValueChanged(this);
|
|
162 |
for (ValueChangedListener listener : listeners)
|
|
163 |
listener.handleValueChanged(this);
|
|
164 | 164 |
} |
165 | 165 |
|
166 | 166 |
/** |
... | ... | |
169 | 169 |
* @return the default field's value if any, else null |
170 | 170 |
*/ |
171 | 171 |
protected Object getDefaultFieldValue() { |
172 |
return this.getDynField().getDefaultValue();
|
|
172 |
return this.getDynField().getDefaultValue();
|
|
173 | 173 |
} |
174 | 174 |
|
175 | 175 |
/* |
... | ... | |
179 | 179 |
* org.gvsig.tools.swing.api.dynobject.dynfield.ValueField#getDefaultValue() |
180 | 180 |
*/ |
181 | 181 |
public Object getDefaultValue() { |
182 |
return fieldValue.getDefaultValue();
|
|
182 |
return fieldValue.getDefaultValue();
|
|
183 | 183 |
} |
184 | 184 |
|
185 | 185 |
protected String getFieldName() { |
186 |
return this.getDynField().getName();
|
|
186 |
return this.getDynField().getName();
|
|
187 | 187 |
} |
188 | 188 |
|
189 | 189 |
/** |
... | ... | |
191 | 191 |
*/ |
192 | 192 |
@Override |
193 | 193 |
public Object getFieldValue() { |
194 |
Object value = fieldValue.getValue();
|
|
195 |
if (value == null)
|
|
196 |
return fieldValue.getDefaultValue();
|
|
197 |
return value;
|
|
194 |
Object value = fieldValue.getValue();
|
|
195 |
if (value == null)
|
|
196 |
return fieldValue.getDefaultValue();
|
|
197 |
return value;
|
|
198 | 198 |
} |
199 | 199 |
|
200 | 200 |
/** |
... | ... | |
203 | 203 |
* @return the field's value |
204 | 204 |
*/ |
205 | 205 |
protected Object getFieldValue(ValueField fieldValue) { |
206 |
return fieldValue.getValue();
|
|
206 |
return fieldValue.getValue();
|
|
207 | 207 |
} |
208 | 208 |
|
209 | 209 |
/* |
... | ... | |
212 | 212 |
* @see org.gvsig.tools.service.Service#getManager() |
213 | 213 |
*/ |
214 | 214 |
public Manager getManager() { |
215 |
return manager;
|
|
215 |
return manager;
|
|
216 | 216 |
} |
217 | 217 |
|
218 | 218 |
public boolean isMandatory() { |
219 |
return this.getDynField().isMandatory();
|
|
219 |
return this.getDynField().isMandatory();
|
|
220 | 220 |
} |
221 | 221 |
|
222 | 222 |
/** |
223 | 223 |
* @return |
224 | 224 |
*/ |
225 | 225 |
protected boolean isReadOnly() { |
226 |
return this.getDynField().isReadOnly();
|
|
226 |
return this.getDynField().isReadOnly();
|
|
227 | 227 |
} |
228 | 228 |
|
229 | 229 |
/* |
... | ... | |
233 | 233 |
* org.gvsig.tools.swing.api.dynobject.dynfield.JDynFieldComponent#isValid() |
234 | 234 |
*/ |
235 | 235 |
public boolean isValid() { |
236 |
// Object value = getValue();
|
|
237 |
// if ((value==null)||(value.equals("")))
|
|
238 |
// if (isMandatory())
|
|
239 |
// return false;
|
|
240 |
// else if (value==null)
|
|
241 |
// return true;
|
|
242 |
return this.validate(this.getValue());
|
|
236 |
// Object value = getValue();
|
|
237 |
// if ((value==null)||(value.equals("")))
|
|
238 |
// if (isMandatory())
|
|
239 |
// return false;
|
|
240 |
// else if (value==null)
|
|
241 |
// return true;
|
|
242 |
return this.validate(this.getValue());
|
|
243 | 243 |
} |
244 | 244 |
|
245 | 245 |
/** |
246 | 246 |
* Stores the edited data into the DynObject field. |
247 | 247 |
*/ |
248 | 248 |
public void saveStatus() { |
249 |
this.setFieldValue(this.getValue());
|
|
249 |
this.setFieldValue(this.getValue());
|
|
250 | 250 |
} |
251 |
|
|
251 |
|
|
252 | 252 |
/** |
253 | 253 |
* Sets the value of the {@link DynObject}'s field to manage. |
254 | 254 |
* |
... | ... | |
256 | 256 |
* the value for the field |
257 | 257 |
*/ |
258 | 258 |
public void setFieldValue(Object value) { |
259 |
if (validate(value)){
|
|
260 |
fieldValue.setValue(value);
|
|
259 |
if (validate(value)) {
|
|
260 |
fieldValue.setValue(value);
|
|
261 | 261 |
} |
262 | 262 |
} |
263 |
|
|
263 |
|
|
264 | 264 |
/** |
265 | 265 |
* |
266 | 266 |
*/ |
267 | 267 |
protected abstract void setJDynFieldComponentListeners(); |
268 | 268 |
|
269 | 269 |
protected String translate(String text) { |
270 |
return ToolsLocator.getI18nManager().getTranslation(text);
|
|
270 |
return ToolsLocator.getI18nManager().getTranslation(text);
|
|
271 | 271 |
} |
272 | 272 |
|
273 | 273 |
/** |
274 | 274 |
* @param value |
275 | 275 |
*/ |
276 | 276 |
private boolean validate(Object value) { |
277 |
try {
|
|
278 |
this.getDynField().validate(value);
|
|
279 |
return true;
|
|
280 |
} catch (DynFieldValidateException e) {
|
|
281 |
return false;
|
|
282 |
}
|
|
277 |
try {
|
|
278 |
this.getDynField().validate(value);
|
|
279 |
return true;
|
|
280 |
} catch (DynFieldValidateException e) {
|
|
281 |
return false;
|
|
282 |
}
|
|
283 | 283 |
} |
284 | 284 |
|
285 |
} |
|
285 |
} |
Also available in: Unified diff