Statistics
| Revision:

gvsig-tools / org.gvsig.tools / library / trunk / org.gvsig.tools / org.gvsig.tools.swing / org.gvsig.tools.swing.impl / src / main / java / org / gvsig / tools / swing / impl / dynobject / DefaultDynObjectSwingManager.java @ 497

History | View | Annotate | Download (7.06 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
package org.gvsig.tools.swing.impl.dynobject;
23

    
24
import org.gvsig.tools.dynobject.DynClass;
25
import org.gvsig.tools.dynobject.DynField;
26
import org.gvsig.tools.dynobject.DynObject;
27
import org.gvsig.tools.dynobject.DynObjectSet;
28
import org.gvsig.tools.dynobject.DynStruct;
29
import org.gvsig.tools.exception.BaseException;
30
import org.gvsig.tools.service.AbstractMultiServiceImplManager;
31
import org.gvsig.tools.service.Service;
32
import org.gvsig.tools.service.ServiceException;
33
import org.gvsig.tools.swing.api.ToolsSwingLocator;
34
import org.gvsig.tools.swing.api.dynobject.DynObjectModel;
35
import org.gvsig.tools.swing.api.dynobject.DynObjectSwingManager;
36
import org.gvsig.tools.swing.api.dynobject.JDynObjectComponent;
37
import org.gvsig.tools.swing.api.dynobject.dynfield.JDynFieldComponent;
38
import org.gvsig.tools.swing.api.dynobject.dynfield.ValueField;
39
import org.gvsig.tools.swing.api.dynobject.set.JDynObjectSetComponent;
40
import org.gvsig.tools.swing.impl.dynobject.set.DefaultJDynObjectSetComponent;
41
import org.gvsig.tools.swing.spi.DynObjectSwingServiceManager;
42
import org.gvsig.tools.swing.spi.ToolsSwingServiceLocator;
43

    
44
/**
45
 * Default {@link DynObjectSwingManager} implementation.
46
 * 
47
 * @author gvSIG team
48
 */
49
public class DefaultDynObjectSwingManager extends
50
    AbstractMultiServiceImplManager implements DynObjectSwingManager {
51

    
52
    private DefaultDynModelList dynModelList;
53

    
54
    /**
55
     * Empty constructor.
56
     */
57
    public DefaultDynObjectSwingManager() {
58
        super(ToolsSwingServiceLocator.getServiceManager());
59
    }
60

    
61
    public DynObjectModel createDynObjectModel(DynClass dynClass)
62
        throws ServiceException {
63
        if (dynClass == null) {
64
            return null;
65
        }
66
        
67
        DynObjectModel model = ToolsSwingLocator.getDynObjectSwingManager().getDynModel(dynClass);
68
        
69
        if (model != null) {
70
            return model;
71
        }
72

    
73
        
74
        return new DefaultDynObjectModel(dynClass, true);
75
    }
76

    
77
    public DynObjectModel createEmptyDynObjectModel(DynClass dynClass)
78
        throws ServiceException {
79
        return new DefaultDynObjectModel(dynClass, false);
80
    }
81

    
82
        public JDynFieldComponent createJDynFieldComponent(ValueField valueField)
83
                        throws ServiceException {
84
                return createJDynFieldComponent(valueField, false);
85
        }
86

    
87
        public JDynFieldComponent createJDynFieldComponent(ValueField valueField,
88
                        boolean writable) throws ServiceException {
89
                JDynFieldComponent component;
90
                DynField field = valueField.getDynField();
91
                if (field.getElementsType() != null) {
92
                        component = ((DynObjectSwingServiceManager) this
93
                                        .getServiceManager()).getJDynFieldComponent(valueField,
94
                                        true, writable);
95
                } else {
96
                        component = ((DynObjectSwingServiceManager) this
97
                                        .getServiceManager()).getJDynFieldComponent(valueField,
98
                                        false, writable);
99
                }
100
                return component;
101
        }
102

    
103
    public JDynObjectComponent createJDynObjectComponent(DynObject dynObject)
104
        throws ServiceException {
105
                return createJDynObjectComponent(dynObject, false);
106
    }
107

    
108
    public JDynObjectComponent createJDynObjectComponent(DynObject dynObject,
109
                        boolean writable) throws ServiceException {
110
        if (dynObject == null){
111
            return createJDynObjectComponent(dynObject, null, MODE_FORM, writable);
112
        }
113
                return createJDynObjectComponent(dynObject,
114
                                createDynObjectModel(dynObject.getDynClass()), writable);
115
        }
116

    
117
        public JDynObjectComponent createJDynObjectComponent(DynObject dynObject,
118
        DynObjectModel model) throws ServiceException {
119
                return createJDynObjectComponent(dynObject, model, MODE_FORM, false);
120
    }
121

    
122
        public JDynObjectComponent createJDynObjectComponent(DynObject dynObject,
123
                        DynObjectModel model, boolean writable) throws ServiceException {
124
                return createJDynObjectComponent(dynObject, model, MODE_FORM, writable);
125
        }
126

    
127
    public JDynObjectComponent createJDynObjectComponent(DynObject dynObject,
128
        DynObjectModel model, String mode) throws ServiceException {
129
                return createJDynObjectComponent(dynObject, model, mode, false);
130
        }
131

    
132
        public JDynObjectComponent createJDynObjectComponent(DynObject dynObject,
133
                        DynObjectModel model, String mode, boolean writable)
134
                        throws ServiceException {
135
        DynObject serviceParams =
136
            this.createServiceParameters(getServiceName(dynObject, mode));
137

    
138
        serviceParams.setDynValue(JDynObjectComponent.PARAMETERS.DYNMODEL,
139
            model);
140
        serviceParams.setDynValue(JDynObjectComponent.PARAMETERS.DYNOBJECT,
141
            dynObject);
142
                serviceParams.setDynValue(JDynObjectComponent.PARAMETERS.WRITABLE,
143
                                (writable ? Boolean.TRUE : Boolean.FALSE));
144

    
145
        return (JDynObjectComponent) this.getService(serviceParams);
146
    }
147

    
148
    public JDynObjectComponent createJDynObjectComponent(DynObject dynObject,
149
        String mode) throws ServiceException {
150
                return createJDynObjectComponent(dynObject, mode, false);
151
        }
152

    
153
        public JDynObjectComponent createJDynObjectComponent(DynObject dynObject,
154
                        String mode, boolean writable) throws ServiceException {
155
        return createJDynObjectComponent(dynObject,
156
                                createDynObjectModel(dynObject.getDynClass()), writable);
157
        }
158

    
159
    public Service getService(DynObject serviceParams) throws ServiceException {
160
        return this.getServiceManager().createService(serviceParams);
161
    }
162

    
163
    /**
164
     * @param dynObject
165
     * @param mode
166
     * @return
167
     */
168
    private String getServiceName(DynObject dynObject, String mode) {
169
        return mode;
170
    }
171

    
172
    public JDynObjectSetComponent createJDynObjectSetComponent(
173
        DynObjectSet dynObjectSet) throws BaseException {
174
                return createJDynObjectSetComponent(dynObjectSet, false);
175
        }
176

    
177
        public JDynObjectSetComponent createJDynObjectSetComponent(
178
                        DynObjectSet dynObjectSet, boolean writable) throws BaseException {
179
                return new DefaultJDynObjectSetComponent(dynObjectSet, this, writable);
180
    }
181

    
182
    public void registerDynModel(DynStruct dynStruct, DynObjectModel model) {
183
        getDynModelList().addModel(dynStruct, model);
184
    }
185

    
186
    private DefaultDynModelList getDynModelList() {
187
        if (dynModelList == null){
188
            dynModelList = new DefaultDynModelList();
189
        }
190
        return dynModelList;
191
    }
192
    
193
    public DynObjectModel getDynModel(DynStruct dynStruct){
194
       return getDynModelList().getModel(dynStruct);      
195
    }
196

    
197
}