Statistics
| Revision:

gvsig-3d / 2.0 / trunk / org.gvsig.gvsig3d / org.gvsig.gvsig3d.lib / org.gvsig.gvsig3d.lib.impl / src / main / java / org / gvsig / gvsig3d / impl / DefaultGvsig3DManager.java @ 257

History | View | Annotate | Download (10.2 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.gvsig3d.impl;
23

    
24
import org.cresques.cts.IProjection;
25
import org.gvsig.fmap.mapcontext.ViewPort;
26
import org.gvsig.fmap.mapcontext.layers.FLayers;
27
import org.gvsig.gvsig3d.Gvsig3DException;
28
import org.gvsig.gvsig3d.Gvsig3DManager;
29
import org.gvsig.gvsig3d.impl.layers.FLayers3DImpl;
30
import org.gvsig.gvsig3d.impl.map3d.GraphicLayer3DImpl;
31
import org.gvsig.gvsig3d.impl.map3d.Layer3DPropsImpl;
32
import org.gvsig.gvsig3d.impl.map3d.MapContext3DImpl;
33
import org.gvsig.gvsig3d.impl.map3d.MapControl3DImpl;
34
import org.gvsig.gvsig3d.impl.map3d.Viewport3DImpl;
35
import org.gvsig.gvsig3d.lib.spi.Gvsig3DProviderLocator;
36
import org.gvsig.gvsig3d.map3d.GraphicLayer3D;
37
import org.gvsig.gvsig3d.map3d.Layer3DProps;
38
import org.gvsig.gvsig3d.map3d.MapContext3D;
39
import org.gvsig.gvsig3d.map3d.MapControl3D;
40
import org.gvsig.gvsig3d.map3d.ViewPort3D;
41
import org.gvsig.gvsig3d.map3d.layers.FLayers3D;
42
import org.gvsig.osgvp.terrain.Terrain;
43
import org.gvsig.osgvp.terrain.TerrainViewer;
44
import org.gvsig.tools.ToolsLocator;
45
import org.gvsig.tools.dynobject.DynObject;
46
import org.gvsig.tools.extensionpoint.ExtensionPoint;
47
import org.gvsig.tools.extensionpoint.ExtensionPointManager;
48
import org.gvsig.tools.service.AbstractManager;
49
import org.gvsig.tools.service.Service;
50
import org.gvsig.tools.service.ServiceException;
51
import org.slf4j.Logger;
52
import org.slf4j.LoggerFactory;
53

    
54
/**
55
 * Default {@link Gvsig3DManager} implementation.
56
 * 
57
 * @author gvSIG Team
58
 * @version $Id$
59
 */
60
public class DefaultGvsig3DManager extends AbstractManager implements
61
                Gvsig3DManager {
62

    
63
        final static private Logger logger = LoggerFactory
64
                        .getLogger(Gvsig3DManager.class);
65

    
66
        final static private String GVSIG3D_MANAGER_MAPCONTEXT3D = "Gvsig3D.manager.mapcontext3D";
67
        final static private String GVSIG3D_MANAGER_MAPCONTEXT3D_DEFAULT = "default";
68
        final static private String GVSIG3D_MANAGER_MAPCONTEXT3D_DESCRIPTION = "gvSIG3D MapContext Class";
69

    
70
        final static private String GVSIG3D_MANAGER_MAPCONTROL3D = "Gvsig3D.manager.mapcontrol3D";
71
        final static private String GVSIG3D_MANAGER_MAPCONTROL3D_DEFAULT = "default";
72
        final static private String GVSIG3D_MANAGER_MAPCONTROL3D_DESCRIPTION = "gvSIG3D MapControl Class";
73

    
74
        final static private String GVSIG3D_MANAGER_GRAPHICSLAYER3D = "Gvsig3D.manager.graphicslayer3D";
75
        final static private String GVSIG3D_MANAGER_GRAPHICSLAYER3D_DEFAULT = "default";
76
        final static private String GVSIG3D_MANAGER_GRAPHICSLAYER3D_DESCRIPTION = "gvSIG3D MapControl Class";
77

    
78
        final static private String GVSIG3D_MANAGER_LAYER3DPROPS = "Gvsig3D.manager.layer3Dprops";
79
        final static private String GVSIG3D_MANAGER_LAYER3DPROPS_DEFAULT = "default";
80
        final static private String GVSIG3D_MANAGER_LAYER3DPROPS_DESCRIPTION = "gvSIG3D Layer3Dprops Class";
81

    
82
        final static private String GVSIG3D_MANAGER_VIEWPORT3D = "Gvsig3D.manager.viewport3D";
83
        final static private String GVSIG3D_MANAGER_VIEWPORT3D_DEFAULT = "default";
84
        final static private String GVSIG3D_MANAGER_VIEWPORT3D_DESCRIPTION = "gvSIG3D Viewport3D Class";
85

    
86
        final static private String GVSIG3D_MANAGER_FLAYERS3D = "Gvsig3D.manager.flayers3D";
87
        final static private String GVSIG3D_MANAGER_FLAYERS3D_DEFAULT = "default";
88
        final static private String GVSIG3D_MANAGER_FLAYERS3D_DESCRIPTION = "gvSIG3D FLayers3D Class";
89

    
90
        private ExtensionPointManager extensionPoints = ToolsLocator
91
                        .getExtensionPointManager();
92

    
93
        /**
94
         * Empty constructor.
95
         */
96
        public DefaultGvsig3DManager() {
97
                super(Gvsig3DProviderLocator.getManager());
98
                extensionPoints.add(GVSIG3D_MANAGER_MAPCONTEXT3D,
99
                                GVSIG3D_MANAGER_MAPCONTEXT3D_DESCRIPTION);
100
                extensionPoints.add(GVSIG3D_MANAGER_MAPCONTROL3D,
101
                                GVSIG3D_MANAGER_MAPCONTROL3D_DESCRIPTION);
102
                extensionPoints.add(GVSIG3D_MANAGER_GRAPHICSLAYER3D,
103
                                GVSIG3D_MANAGER_GRAPHICSLAYER3D_DESCRIPTION);
104
                extensionPoints.add(GVSIG3D_MANAGER_LAYER3DPROPS,
105
                                GVSIG3D_MANAGER_LAYER3DPROPS_DESCRIPTION);
106
                extensionPoints.add(GVSIG3D_MANAGER_VIEWPORT3D,
107
                                GVSIG3D_MANAGER_VIEWPORT3D_DESCRIPTION);
108
        }
109

    
110
        public Service getService(DynObject parameters) throws ServiceException {
111
                DefaultGvsig3DProviderServices providerServices = new DefaultGvsig3DProviderServices();
112
                DefaultGvsig3DService cookie = new DefaultGvsig3DService(this,
113
                                parameters, providerServices);
114
                return cookie;
115
        }
116

    
117
        public void registerDefaultMapContext3D(Class mapContext3DClass) {
118
                if (!MapContext3D.class.isAssignableFrom(mapContext3DClass)) {
119
                        throw new IllegalArgumentException(mapContext3DClass.getName()
120
                                        + " must implement the MapContext3D interface");
121
                }
122

    
123
                ExtensionPoint extensionPoint = extensionPoints.add(
124
                                GVSIG3D_MANAGER_MAPCONTEXT3D,
125
                                GVSIG3D_MANAGER_MAPCONTEXT3D_DESCRIPTION);
126
                extensionPoint.append(GVSIG3D_MANAGER_MAPCONTEXT3D_DEFAULT,
127
                                "Default MapContext3D", mapContext3DClass);
128

    
129
        }
130

    
131
        public MapContext3D createDefaultMapContext3DInstance() {
132

    
133
                return new MapContext3DImpl();
134
        }
135

    
136
        public MapContext3D createDefaultMapContext3DInstance(ViewPort vp) {
137
                return new MapContext3DImpl(vp);
138
        }
139
        
140
        public MapContext3D createDefaultMapContext3DInstance(FLayers fl, ViewPort vp) {
141
                return new MapContext3DImpl(fl, vp);
142
        }
143

    
144
        public MapContext3D createMapContext3DInstance(String name)
145
                        throws Gvsig3DException {
146
                ExtensionPoint ep = extensionPoints.add(GVSIG3D_MANAGER_MAPCONTEXT3D);
147
                try {
148
                        return (MapContext3D) ep.create(name);
149
                } catch (Exception e) {
150
                        throw new Gvsig3DException(e);
151
                }
152
        }
153

    
154
        public void registerDefaultMapControl3D(Class mapControl3DClass) {
155
                if (!MapControl3D.class.isAssignableFrom(mapControl3DClass)) {
156
                        throw new IllegalArgumentException(mapControl3DClass.getName()
157
                                        + " must implement the MapControl3D interface");
158
                }
159

    
160
                ExtensionPoint extensionPoint = extensionPoints.add(
161
                                GVSIG3D_MANAGER_MAPCONTROL3D,
162
                                GVSIG3D_MANAGER_MAPCONTROL3D_DESCRIPTION);
163
                extensionPoint.append(GVSIG3D_MANAGER_MAPCONTROL3D_DEFAULT,
164
                                "Default MapControl3D", mapControl3DClass);
165

    
166
        }
167

    
168
        public MapControl3D createDefaultMapControl3DInstance() {
169
                return new MapControl3DImpl();
170
        }
171

    
172
        public MapControl3D createMapControl3DInstance(String name)
173
                        throws Gvsig3DException {
174
                ExtensionPoint ep = extensionPoints.add(GVSIG3D_MANAGER_MAPCONTROL3D);
175
                try {
176
                        return (MapControl3D) ep.create(name);
177
                } catch (Exception e) {
178
                        throw new Gvsig3DException(e);
179
                }
180
        }
181

    
182
        public void registerDefaultGraphicsLayer3D(Class graphicLayer3DClass) {
183
                if (!GraphicLayer3D.class.isAssignableFrom(graphicLayer3DClass)) {
184
                        throw new IllegalArgumentException(graphicLayer3DClass.getName()
185
                                        + " must implement the GraphicLayer3D interface");
186
                }
187

    
188
                ExtensionPoint extensionPoint = extensionPoints.add(
189
                                GVSIG3D_MANAGER_GRAPHICSLAYER3D,
190
                                GVSIG3D_MANAGER_GRAPHICSLAYER3D_DESCRIPTION);
191
                extensionPoint.append(GVSIG3D_MANAGER_GRAPHICSLAYER3D_DEFAULT,
192
                                "Default GraphicsLayer3D", graphicLayer3DClass);
193

    
194
        }
195

    
196
        public GraphicLayer3D createDefaultGraphicsLayer3DInstance(
197
                        TerrainViewer terrainViewer, Terrain terrain) {
198
                return new GraphicLayer3DImpl(terrainViewer, terrain);
199
        }
200

    
201
        public GraphicLayer3D createGraphicsLayer3DInstance(String name)
202
                        throws Gvsig3DException {
203
                ExtensionPoint ep = extensionPoints
204
                                .add(GVSIG3D_MANAGER_GRAPHICSLAYER3D);
205
                try {
206
                        return (GraphicLayer3D) ep.create(name);
207
                } catch (Exception e) {
208
                        throw new Gvsig3DException(e);
209
                }
210
        }
211

    
212
        public void registerDefaultLayer3DProps(Class layer3dPropsClass) {
213
                if (!Layer3DProps.class.isAssignableFrom(layer3dPropsClass)) {
214
                        throw new IllegalArgumentException(layer3dPropsClass.getName()
215
                                        + " must implement the Layer3DProps interface");
216
                }
217

    
218
                ExtensionPoint extensionPoint = extensionPoints.add(
219
                                GVSIG3D_MANAGER_LAYER3DPROPS,
220
                                GVSIG3D_MANAGER_LAYER3DPROPS_DESCRIPTION);
221
                extensionPoint.append(GVSIG3D_MANAGER_LAYER3DPROPS_DEFAULT,
222
                                "Default Layer3DProps", layer3dPropsClass);
223

    
224
        }
225

    
226
        public Layer3DProps createDefaultLayer3DPropsInstance() {
227
                return new Layer3DPropsImpl();
228
        }
229

    
230
        public Layer3DProps createLayer3DPropsInstance(String name)
231
                        throws Gvsig3DException {
232
                ExtensionPoint ep = extensionPoints.add(GVSIG3D_MANAGER_LAYER3DPROPS);
233
                try {
234
                        return (Layer3DProps) ep.create(name);
235
                } catch (Exception e) {
236
                        throw new Gvsig3DException(e);
237
                }
238
        }
239

    
240
        public void registerDefaultViewPort3D(Class viewPort3DClass) {
241
                if (!ViewPort3D.class.isAssignableFrom(viewPort3DClass)) {
242
                        throw new IllegalArgumentException(viewPort3DClass.getName()
243
                                        + " must implement the ViewPort3D interface");
244
                }
245

    
246
                ExtensionPoint extensionPoint = extensionPoints.add(
247
                                GVSIG3D_MANAGER_VIEWPORT3D,
248
                                GVSIG3D_MANAGER_VIEWPORT3D_DESCRIPTION);
249
                extensionPoint.append(GVSIG3D_MANAGER_VIEWPORT3D_DEFAULT,
250
                                "Default Viewport3D", viewPort3DClass);
251

    
252
        }
253

    
254
        public ViewPort3D createDefaultViewPort3DInstance() {
255
                return new Viewport3DImpl();
256
        }
257

    
258
        public ViewPort3D createtDefaultViewPort3DInstance(IProjection proj) {
259
                return new Viewport3DImpl(proj);
260
        }
261

    
262
        public ViewPort3D createViewPort3DInstance(String name)
263
                        throws Gvsig3DException {
264
                ExtensionPoint ep = extensionPoints.add(GVSIG3D_MANAGER_VIEWPORT3D);
265
                try {
266
                        return (ViewPort3D) ep.create(name);
267
                } catch (Exception e) {
268
                        throw new Gvsig3DException(e);
269
                }
270
        }
271

    
272
        public FLayers3D createFLayers3DInstance(String name) throws Gvsig3DException{
273

    
274
                ExtensionPoint ep = extensionPoints.add(GVSIG3D_MANAGER_FLAYERS3D);
275
                try {
276
                        return (FLayers3D) ep.create(name);
277
                } catch (Exception e) {
278
                        throw new Gvsig3DException(e);
279
                }
280
                
281
        }
282

    
283
        public FLayers3D createDefaultFLayers3DInstance(ViewPort vp) {
284
                return new FLayers3DImpl(null, null, vp);
285
        }
286

    
287

    
288

    
289

    
290
}