Statistics
| Revision:

gvsig-tools / org.gvsig.tools / library / trunk / org.gvsig.tools / org.gvsig.tools.main / src / main / java / org / gvsig / tools / main / dynobject / TestDynObject.java @ 501

History | View | Annotate | Download (14 KB)

1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 * 
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 * 
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 * 
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
 * MA  02110-1301, USA.
20
 * 
21
 */
22
/*
23
 * AUTHORS (In addition to CIT):
24
 * 2010 Institute of New Imaging Technologies (INIT): 
25
 *   http://www.init.uji.es
26
 * Geographic Information research group: 
27
 *   http://www.geoinfo.uji.es
28
 * Universitat Jaume I, Spain
29
 */
30

    
31
/**
32
 * 
33
 */
34
package org.gvsig.tools.main.dynobject;
35

    
36
import java.io.File;
37
import java.util.ArrayList;
38
import java.util.Date;
39
import java.util.List;
40

    
41
import org.gvsig.tools.ToolsLocator;
42
import org.gvsig.tools.dataTypes.DataTypes;
43
import org.gvsig.tools.dynobject.DynObject;
44
import org.gvsig.tools.dynobject.DynObjectManager;
45
import org.gvsig.tools.dynobject.DynObjectValueItem;
46
import org.gvsig.tools.dynobject.impl.DefaultDynClass;
47
import org.gvsig.tools.service.ServiceException;
48
import org.gvsig.tools.swing.api.ToolsSwingLocator;
49
import org.gvsig.tools.swing.api.dynobject.DynObjectModel;
50
import org.gvsig.tools.swing.api.dynobject.DynObjectSwingManager;
51

    
52
/**
53
 * @author <a href="mailto:reinhold@uji.es">cmartin</a>
54
 * 
55
 */
56
public class TestDynObject extends DefaultDynClass {
57

    
58
    public static final String TESTDYNOBJECT_NAME = "Test";
59
    public static final String TESTDYNOBJECTREADONLY_NAME = "TestReadOnly";
60

    
61
    private static DynObjectSwingManager swingManager =
62
        ToolsSwingLocator.getDynObjectSwingManager();
63

    
64
    private static DynObjectManager dynManager =
65
        ToolsLocator.getDynObjectManager();
66
    
67
    
68

    
69
    public static void registerDynObject() {
70
        dynManager.add(new TestDynObject(TESTDYNOBJECT_NAME, "Test dynclass", false));
71
        dynManager.add(new TestDynObject(TESTDYNOBJECTREADONLY_NAME, "Test dynclass with readonly fields", true));
72
    }
73

    
74

    
75
    /**
76
     * @param manager
77
     * @param name
78
     * @param description
79
     */
80
    public TestDynObject(String name, String description, boolean allReadOnly) {
81
        super(dynManager, name, description);
82
        if(!allReadOnly){
83
            initDynClass();
84
        }else{
85
            initReadOnlyDynClass();
86
        }
87
    }
88

    
89
    /**
90
     * @return
91
     */
92
    // private JDynObjectComponent getAddressDynObjectView() {
93
    // try {
94
    // Adress testDynObject = (TestDynObject) dynManager
95
    // .get("Test");
96
    // return swingManager.createJDynObjectComponent(testDynObject
97
    // .createDynObject(), testDynObject.createDynModel());
98
    // } catch (ServiceException e) {
99
    // return null;
100
    // }
101
    // }
102

    
103
    /**
104
     * @return
105
     * @throws ServiceException
106
     */
107
    public DynObjectModel createDynModel() throws ServiceException {
108
        DynObjectModel model = swingManager.createEmptyDynObjectModel(this);
109
        model.add("text");
110
        model.add("label");
111
        model.add("text-list");
112
        model.add("label-list");
113
        
114
        model.add("boolean");
115
        model.add("boolean-list");
116

    
117
        // model.add("SRS", "srs");
118
        // model.add("SRS", "crs");
119
        model.add("Date", "date");
120
        model.add("Date", "date-only");
121
        model.add("Date", "time-only");
122
        model.add("Date", "timestamp");
123
        model.add("Files", "file");
124
        model.add("Files", "folder");
125
        model.add("Files", "files");
126
        model.add("Files", "folders");
127

    
128
        model.add("integers", "integer");
129
        model.add("integers", "float");
130
        model.add("integers", "dates");
131
        model.add("list", "byte");
132
        model.add("list", "integer-list");
133
        model.add("list", "float-list");
134
        model.add("list", "byte-list");
135

    
136
        model.add("combo-list");
137
        model.add("combo");
138
        model.add("combo");
139

    
140
        model.add("DynObjects", "Address");
141
        model.add("DynObjects", "Address-list");
142
        return model;
143
    }
144

    
145
    public DynObject createDynObject() throws ServiceException {
146
        DynObject dynObject = dynManager.createDynObject(this);
147

    
148
        dynObject.setDynValue("text", "some text");
149
        dynObject.setDynValue("label", "some readonly text");
150

    
151
        // BOOLEAN LIST
152
        List<Boolean> booleanList = new ArrayList<Boolean>();
153
        dynObject.setDynValue("boolean-list", booleanList);
154

    
155
        // adding list values
156
        booleanList.add(true);
157
        booleanList.add(false);
158
        booleanList.add(null);
159

    
160
        // STRING LIST
161
        List<String> stringList = new ArrayList<String>();
162
        dynObject.setDynValue("text-list", stringList);
163

    
164
        // adding list values
165
        stringList.add("string-1");
166
        stringList.add("string-2");
167
        stringList.add("string-3");
168

    
169
        
170
        // LABEL LIST
171
        List<String> labelList = new ArrayList<String>();
172
        dynObject.setDynValue("label-list", labelList);
173

    
174
        // adding list values
175
        labelList.add("label-1");
176
        labelList.add("label-2");
177
        labelList.add("label-3");
178

    
179
        
180
        // INTEGER LIST
181
        List<Integer> integerList = new ArrayList<Integer>();
182
        dynObject.setDynValue("integer-list", integerList);
183

    
184
        // a?ado los valores del list
185
        integerList.add(12345);
186
        integerList.add(123456);
187
        integerList.add(12345);
188
        integerList.add(123457);
189
        integerList.add(12345);
190

    
191
        // DOUBLE LIST
192
        List<Double> floatList = new ArrayList<Double>();
193
        dynObject.setDynValue("float-list", floatList);
194

    
195
        // a?ado los valores del list
196
        floatList.add(12345.45);
197
        floatList.add(123456.3);
198
        floatList.add(12345.2);
199

    
200
        // BIT LIST
201
        List<Byte> byteList = new ArrayList<Byte>();
202
        dynObject.setDynValue("byte-list", byteList);
203

    
204
        byte a = (byte) 0xAA;
205
        byte b = (byte) 0xBB;
206
        byte c = (byte) 0xCC;
207

    
208
        // a?ado los valores del list
209
        byteList.add(a);
210
        byteList.add(b);
211
        byteList.add(c);
212

    
213
        dynObject.setDynValue("float", 12345.321f);
214
        dynObject.setDynValue("integer", 123);
215
        dynObject.setDynValue("combo", 0);
216

    
217
        dynObject.setDynValue("date", new Date());
218
        dynObject.setDynValue("time-only", new Date());
219

    
220
        dynObject.setDynValue("Address", dynManager
221
            .createDynObject(new Address("Address", "Address example")));
222

    
223
        // DYNOBJECT LIST
224
        List<DynObject> dynObjectList = new ArrayList<DynObject>();
225
        dynObjectList.add(dynManager.createDynObject(new Address(
226
            "Address-list", "Address list example")));
227

    
228
        dynObject.setDynValue("Address-list", dynObjectList);
229

    
230
        List<File> folderList = new ArrayList<File>();
231
        dynObject.setDynValue("folders", folderList);
232
        return dynObject;
233
    }
234

    
235
    private void initDynClass() {
236

    
237
        this.addDynFieldList("Address-list").setMandatory(true)
238
            .setElementsType(DataTypes.DYNOBJECT);
239

    
240
        // TODO add all the available data types
241
        this.addDynFieldString("text");
242
        this.addDynFieldString("label").setReadOnly(true);
243

    
244
        this.addDynFieldInt("integer").setReadOnly(true).setMandatory(true);
245

    
246

    
247
        this.addDynFieldList("text-list").setMandatory(true)
248
            .setElementsType(DataTypes.STRING);
249

    
250
        this.addDynFieldList("label-list").setMandatory(true)
251
            .setElementsType(DataTypes.STRING).setReadOnly(true);
252
        
253
        this.addDynFieldList("boolean-list").setMandatory(true)
254
            .setElementsType(DataTypes.BOOLEAN);
255
        this.addDynFieldList("integer-list").setMandatory(true)
256
            .setElementsType(DataTypes.INT);
257
        this.addDynFieldFloat("float");
258
        this.addDynFieldList("float-list").setMandatory(true).setElementsType(
259
            DataTypes.FLOAT);
260
        //revisar esto
261
        this.addDynField("byte").setType(DataTypes.BYTE);
262
        this.addDynFieldList("byte-list").setMandatory(true).setElementsType(
263
            DataTypes.BYTE);
264

    
265
        DynObjectValueItem[] values = new DynObjectValueItem[3];
266
        values[0] = new DynObjectValueItem(0, "monday");
267
        values[1] = new DynObjectValueItem(1, "tuesday");
268
        values[2] = new DynObjectValueItem(2, "wednesday");
269
        this.addDynFieldInt("combo").setDefaultFieldValue(0)
270
            .setAvailableValues(values).setMandatory(true);
271

    
272
        this.addDynFieldList("combo-list").setMandatory(true).setElementsType(
273
            DataTypes.INT).getElementsType().setAvailableValues(values);
274

    
275
        this.addDynField("file").setMandatory(true).setType(DataTypes.FILE);
276
        this.addDynField("folder").setMandatory(true).setType(DataTypes.FOLDER);
277
        this.addDynFieldList("folders").setElementsType(DataTypes.FOLDER);
278
        this.addDynFieldList("files").setElementsType(DataTypes.FILE);
279

    
280
        this.addDynFieldDate("date").setMandatory(true).setSubtype(null);
281
        this.addDynField("date-only").setMandatory(true)
282
            .setType(DataTypes.DATE).setSubtype(DataTypes.SUBTYPE_DATE);
283
        this.addDynFieldDate("time-only").setMandatory(true).setType(
284
            DataTypes.TIME).setSubtype(null);
285
        this.addDynField("timestamp").setMandatory(true).setType(
286
            DataTypes.TIMESTAMP);
287

    
288
        this.addDynFieldBoolean("boolean");
289

    
290
        this.addDynField("Address").setType(DataTypes.DYNOBJECT);
291

    
292
         this.addDynFieldList("dates").setMandatory(true).setElementsType(
293
             DataTypes.DATE);
294
    }
295

    
296
    private void initReadOnlyDynClass() {
297

    
298
        this.addDynFieldList("Address-list").setMandatory(true)
299
            .setElementsType(DataTypes.DYNOBJECT).setReadOnly(true);
300

    
301
        // TODO add all the available data types
302
        this.addDynFieldString("text").setReadOnly(true);
303
        this.addDynFieldString("label").setReadOnly(true);
304

    
305
        this.addDynFieldInt("integer").setReadOnly(true).setMandatory(true);
306

    
307

    
308
        this.addDynFieldList("text-list").setMandatory(true)
309
            .setElementsType(DataTypes.STRING).setReadOnly(true);
310

    
311
        this.addDynFieldList("label-list").setMandatory(true)
312
            .setElementsType(DataTypes.STRING).setReadOnly(true);
313
        
314
        this.addDynFieldList("boolean-list").setMandatory(true)
315
            .setElementsType(DataTypes.BOOLEAN).setReadOnly(true);
316
        this.addDynFieldList("integer-list").setMandatory(true)
317
            .setElementsType(DataTypes.INT).setReadOnly(true);
318
        this.addDynFieldFloat("float").setReadOnly(true);
319
        this.addDynFieldList("float-list").setMandatory(true).setElementsType(
320
            DataTypes.FLOAT).setReadOnly(true);
321
        //revisar esto
322
        this.addDynField("byte").setType(DataTypes.BYTE).setReadOnly(true);
323
        this.addDynFieldList("byte-list").setMandatory(true).setElementsType(
324
            DataTypes.BYTE).setReadOnly(true);
325

    
326
        DynObjectValueItem[] values = new DynObjectValueItem[3];
327
        values[0] = new DynObjectValueItem(0, "monday");
328
        values[1] = new DynObjectValueItem(1, "tuesday");
329
        values[2] = new DynObjectValueItem(2, "wednesday");
330
        this.addDynFieldInt("combo").setDefaultFieldValue(0)
331
            .setAvailableValues(values).setMandatory(true).setReadOnly(true);
332

    
333
        this.addDynFieldList("combo-list").setMandatory(true).setElementsType(
334
            DataTypes.INT).getElementsType().setAvailableValues(values).setReadOnly(true);
335

    
336
        this.addDynField("file").setMandatory(true).setType(DataTypes.FILE).setReadOnly(true);
337
        this.addDynField("folder").setMandatory(true).setType(DataTypes.FOLDER);
338
        this.addDynFieldList("folders").setElementsType(DataTypes.FOLDER);
339
        this.addDynFieldList("files").setElementsType(DataTypes.FILE).setReadOnly(true);
340

    
341
        this.addDynFieldDate("date").setMandatory(true).setSubtype(null).setReadOnly(true);
342
        this.addDynField("date-only").setMandatory(true)
343
            .setType(DataTypes.DATE).setSubtype(DataTypes.SUBTYPE_DATE).setReadOnly(true);
344
        this.addDynFieldDate("time-only").setMandatory(true).setType(
345
            DataTypes.TIME).setSubtype(null).setReadOnly(true);
346
        this.addDynField("timestamp").setMandatory(true).setType(
347
            DataTypes.TIMESTAMP).setReadOnly(true);
348

    
349
        this.addDynFieldBoolean("boolean").setReadOnly(true);
350

    
351
        this.addDynField("Address").setType(DataTypes.DYNOBJECT).setReadOnly(true);
352

    
353
         this.addDynFieldList("dates").setMandatory(true).setElementsType(
354
             DataTypes.DATE).setReadOnly(true);
355
    }
356

    
357
    
358
    // public DynObject createDynObject() {
359
    // DynObject dynObject = dynManager.createDynObject(this);
360
    //
361
    // dynObject.setDynValue("text", "some text");
362
    //
363
    // dynObject.setDynValue("label", "this is a readonly text");
364
    //
365
    // List<Integer> integerList = new ArrayList<Integer>();
366
    // dynObject.setDynValue("integer-list", integerList);
367
    //
368
    // // a?ado los valores del list
369
    // integerList.add(12345);
370
    // integerList.add(123456);
371
    // integerList.add(12345);
372
    // integerList.add(123457);
373
    // integerList.add(12345);
374
    //
375
    // // List<File> folderList = new ArrayList<File>();
376
    //
377
    // dynObject.setDynValue("float", 12345.321f);
378
    // dynObject.setDynValue("integer-readonly", 123);
379
    // dynObject.setDynValue("combo", 0);
380
    // // dynObject.setDynValue("folders", folderList);
381
    //
382
    // return dynObject;
383
    // }
384
}