Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.library / org.gvsig.symbology / org.gvsig.symbology.lib / org.gvsig.symbology.lib.impl / src / main / java / org / gvsig / symbology / impl / SymbologyDefaultImplLibrary.java @ 44534

History | View | Annotate | Download (12.7 KB)

1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
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 3
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
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24

    
25
package org.gvsig.symbology.impl;
26

    
27
import org.gvsig.fmap.mapcontext.MapContextLibrary;
28
import org.gvsig.fmap.mapcontext.MapContextLocator;
29
import org.gvsig.fmap.mapcontext.MapContextManager;
30
import org.gvsig.fmap.mapcontext.rendering.legend.ISingleSymbolLegend;
31
import org.gvsig.fmap.mapcontext.rendering.legend.IVectorialIntervalLegend;
32
import org.gvsig.fmap.mapcontext.rendering.legend.IVectorialUniqueValueLegend;
33
import org.gvsig.fmap.mapcontext.rendering.symbols.SymbolManager;
34
import org.gvsig.svgsupport.DefaultSVGSupportManager;
35
import org.gvsig.symbology.SymbologyLibrary;
36
import org.gvsig.symbology.SymbologyLocator;
37
import org.gvsig.symbology.SymbologyManager;
38
import org.gvsig.symbology.fmap.mapcontext.rendering.dynamiclegend.DefaultDynamicLabelingStrategy;
39
import org.gvsig.symbology.fmap.mapcontext.rendering.dynamiclegend.DefaultDynamicSymbol;
40
import org.gvsig.symbology.fmap.mapcontext.rendering.dynamiclegend.DefaultDynamicVectorLegend;
41
import org.gvsig.symbology.fmap.mapcontext.rendering.dynamiclegend.DynamicLabelingStrategyFactory;
42
import org.gvsig.symbology.fmap.mapcontext.rendering.dynamiclegend.DynamicSymbol;
43
import org.gvsig.symbology.fmap.mapcontext.rendering.legend.driver.impl.PersistenceBasedLegendReader;
44
import org.gvsig.symbology.fmap.mapcontext.rendering.legend.driver.impl.PersistenceBasedLegendWriter;
45
import org.gvsig.symbology.fmap.mapcontext.rendering.legend.impl.AbstractClassifiedVectorLegend;
46
import org.gvsig.symbology.fmap.mapcontext.rendering.legend.impl.AbstractIntervalLegend;
47
import org.gvsig.symbology.fmap.mapcontext.rendering.legend.impl.AbstractLegend;
48
import org.gvsig.symbology.fmap.mapcontext.rendering.legend.impl.AbstractVectorialLegend;
49
import org.gvsig.symbology.fmap.mapcontext.rendering.legend.impl.FInterval;
50
import org.gvsig.symbology.fmap.mapcontext.rendering.legend.impl.SingleSymbolLegend;
51
import org.gvsig.symbology.fmap.mapcontext.rendering.legend.impl.VectorialIntervalLegend;
52
import org.gvsig.symbology.fmap.mapcontext.rendering.legend.impl.VectorialUniqueValueLegend;
53
import org.gvsig.symbology.fmap.mapcontext.rendering.legend.styling.AttrInTableLabelingStrategy;
54
import org.gvsig.symbology.fmap.mapcontext.rendering.legend.styling.AttrInTableLabelingStrategyFactory;
55
import org.gvsig.symbology.fmap.mapcontext.rendering.legend.styling.DefaultLabelingMethod;
56
import org.gvsig.symbology.fmap.mapcontext.rendering.legend.styling.LabelClass;
57
import org.gvsig.symbology.fmap.mapcontext.rendering.legend.styling.LabelClassFactory;
58
import org.gvsig.symbology.fmap.mapcontext.rendering.legend.styling.ZoomConstraintsImpl;
59
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.fill.impl.AbstractFillSymbol;
60
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.fill.impl.MarkerFillSymbol;
61
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.fill.impl.MultiLayerFillSymbol;
62
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.fill.impl.PictureFillSymbol;
63
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.fill.impl.SimpleFillSymbol;
64
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.impl.AbstractSymbol;
65
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.impl.MultiShapeSymbol;
66
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.line.impl.AbstractLineSymbol;
67
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.line.impl.MultiLayerLineSymbol;
68
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.line.impl.PictureLineSymbol;
69
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.line.impl.SimpleLineSymbol;
70
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.marker.impl.AbstractMarkerSymbol;
71
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.marker.impl.ArrowMarkerSymbol;
72
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.marker.impl.MultiLayerMarkerSymbol;
73
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.marker.impl.PictureMarkerSymbol;
74
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.marker.impl.SimpleMarkerSymbol;
75
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.style.AbstractStyle;
76
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.style.ArrowDecoratorStyle;
77
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.style.BackgroundFileStyle;
78
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.style.DefaultMask;
79
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.style.ImageStyle;
80
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.style.RemoteFileStyle;
81
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.style.SVGStyle;
82
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.style.SimpleLabelStyle;
83
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.style.SimpleLineStyle;
84
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.style.SimpleMarkerFillPropertiesStyle;
85
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.text.impl.SimpleTextSymbol;
86
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.warning.impl.WarningSymbol;
87
import org.gvsig.tools.library.AbstractLibrary;
88
import org.gvsig.tools.library.LibraryException;
89
import org.gvsig.tools.util.Caller;
90
import org.gvsig.tools.util.impl.DefaultCaller;
91

    
92
/**
93
 * Library for the Basic Symbology implementation.
94
 * 
95
 * @author gvSIG team
96
 */
97
public class SymbologyDefaultImplLibrary extends AbstractLibrary {
98
        
99
    @Override
100
    public void doRegistration() {
101
        registerAsImplementationOf(SymbologyLibrary.class);
102
        require(MapContextLibrary.class);
103
    }
104

    
105
        protected void doInitialize() throws LibraryException {
106
                Caller caller = new DefaultCaller();
107
                caller.add(new DefaultSymbologyManager.RegisterSymbologyManager());
108
                caller.add(new DefaultSVGSupportManager.registerSVGSupportManager());
109
                if (!caller.call()) {
110
                        throw new LibraryException(SymbologyDefaultImplLibrary.class,
111
                                        caller.getExceptions());
112
                }
113
        }
114

    
115
    protected void doPostInitialize() throws LibraryException {
116
        Caller caller = new DefaultCaller();
117

    
118
        /*
119
         * Add registry of symbols 
120
         */
121
        caller.add( new SimpleFillSymbol.RegisterSymbol() );
122
        caller.add( new MultiLayerFillSymbol.RegisterSymbol() );
123
        caller.add( new SimpleLineSymbol.RegisterSymbol() );
124
        caller.add( new MultiLayerLineSymbol.RegisterSymbol() );
125
        caller.add( new SimpleMarkerSymbol.RegisterSymbol() );
126
        caller.add( new MultiLayerMarkerSymbol.RegisterSymbol() );
127
        caller.add( new SimpleTextSymbol.RegisterSymbol() );
128
        caller.add( new MultiShapeSymbol.RegisterSymbol() );
129
        caller.add( new WarningSymbol.RegisterSymbol() );
130

    
131
        caller.add( new PictureFillSymbol.RegisterSymbol() );
132
        caller.add( new PictureLineSymbol.RegisterSymbol() );
133
        caller.add( new PictureMarkerSymbol.RegisterSymbol() );
134

    
135
//        caller.add( new MarkerFillSymbol.RegisterSymbol() );
136

    
137
        /*
138
         * Add registry of legends
139
         */
140
        caller.add( new VectorialUniqueValueLegend.RegisterLegend() );
141
        caller.add( new VectorialIntervalLegend.RegisterLegend() );
142
        caller.add( new SingleSymbolLegend.RegisterLegend() );
143
        
144
        /*
145
         * Add registry of persistent styles
146
         */
147
        caller.add( new AbstractStyle.RegisterPersistence() );
148
        caller.add( new ArrowDecoratorStyle.RegisterPersistence() );
149
        caller.add( new DefaultMask.RegisterPersistence() );
150
        caller.add( new SimpleLineStyle.RegisterPersistence() );
151

    
152
        caller.add( new BackgroundFileStyle.RegisterPersistence() );
153
        caller.add( new ImageStyle.RegisterPersistence() );
154
        caller.add( new RemoteFileStyle.RegisterPersistence() );
155
        caller.add( new SVGStyle.RegisterPersistence() );
156

    
157
        /*
158
         * Add registry of persistent symbols
159
         */
160
        caller.add( new AbstractSymbol.RegisterPersistence() );
161
        caller.add( new AbstractFillSymbol.RegisterPersistence() );
162
        caller.add( new SimpleFillSymbol.RegisterPersistence() );
163
        caller.add( new MultiLayerFillSymbol.RegisterPersistence() );
164
        caller.add( new AbstractLineSymbol.RegisterPersistence() );
165
        caller.add( new SimpleLineSymbol.RegisterPersistence() );
166
        caller.add( new MultiLayerLineSymbol.RegisterPersistence() );
167
        caller.add( new AbstractMarkerSymbol.RegisterPersistence() );
168
        caller.add( new SimpleMarkerSymbol.RegisterPersistence() );
169
        caller.add( new ArrowMarkerSymbol.RegisterPersistence() );
170
        caller.add( new MultiLayerMarkerSymbol.RegisterPersistence() );
171
        caller.add( new SimpleTextSymbol.RegisterPersistence() );
172
        caller.add( new MultiShapeSymbol.RegisterPersistence() );
173
        caller.add( new WarningSymbol.RegisterPersistence() );
174
                
175
        caller.add( new PictureFillSymbol.RegisterPersistence() );
176
        caller.add( new PictureLineSymbol.RegisterPersistence() );
177
        caller.add( new PictureMarkerSymbol.RegisterPersistence() );
178
        caller.add( new MarkerFillSymbol.RegisterPersistence() );
179
        caller.add( new SimpleMarkerFillPropertiesStyle.RegisterPersistence() );
180

    
181

    
182
        /*
183
         * Add registry of persistent legends
184
         */
185
        caller.add(new AbstractLegend.RegisterPersistence());
186
        caller.add(new AbstractVectorialLegend.RegisterPersistence());
187
        caller.add(new AbstractClassifiedVectorLegend.RegisterPersistence());
188
        caller.add(new FInterval.RegisterPersistence());
189
        caller.add(new AbstractIntervalLegend.RegisterPersistence());
190
        caller.add(new VectorialIntervalLegend.RegisterPersistence());
191
        caller.add(new VectorialUniqueValueLegend.RegisterPersistence());
192
        caller.add(new SingleSymbolLegend.RegisterPersistence());
193

    
194
        /*
195
         * Add registry of labeling classes
196
         */
197
        caller.add(new ZoomConstraintsImpl.RegisterPersistence());
198
        caller.add(new LabelClass.RegisterPersistence());
199
        caller.add(new DefaultLabelingMethod.RegisterPersistence());
200
        caller.add(new AttrInTableLabelingStrategy.RegisterPersistence());
201
                 
202
        /*
203
         * Default impl of simple label style
204
         */
205
        caller.add(new SimpleLabelStyle.RegisterPersistence());
206
        
207
        /*
208
        * Add impl of labeling strategy
209
        */
210
        DynamicLabelingStrategyFactory.selfRegister();
211
        AttrInTableLabelingStrategyFactory.selfRegister();
212
        
213
        /*
214
        * Add symbol
215
        */
216
        DefaultDynamicSymbol.selfRegister();
217
        
218
        /*
219
        * Add legend
220
        */
221
        DefaultDynamicVectorLegend.selfRegister();
222

    
223
        
224
        /*
225
         * Do register of all
226
         */
227
        if( !caller.call() ) {
228
                throw new LibraryException(SymbologyDefaultImplLibrary.class, caller.getExceptions());
229
        }
230
        
231
        // Registering persistence-based legend reader/writer
232
        // ===============================================
233
        MapContextManager mcoman = MapContextLocator.getMapContextManager();
234
        // =================================
235
        mcoman.registerLegendReader(
236
            // removing dot
237
            SymbolManager.LEGEND_FILE_EXTENSION.substring(1),
238
            PersistenceBasedLegendReader.class);
239
        // =================================
240
        mcoman.registerLegendWriter(
241
            ISingleSymbolLegend.class,
242
            SymbolManager.LEGEND_FILE_EXTENSION.substring(1),
243
            PersistenceBasedLegendWriter.class);
244
        mcoman.registerLegendWriter(
245
            IVectorialUniqueValueLegend.class,
246
            SymbolManager.LEGEND_FILE_EXTENSION.substring(1),
247
            PersistenceBasedLegendWriter.class);
248
        mcoman.registerLegendWriter(
249
            IVectorialIntervalLegend.class,
250
            SymbolManager.LEGEND_FILE_EXTENSION.substring(1),
251
            PersistenceBasedLegendWriter.class);
252
        // ===========================================================
253
        
254
        SymbologyManager symbologyManager = SymbologyLocator.getSymbologyManager();
255
        symbologyManager.registerLabelClass(new LabelClassFactory());
256
    }
257

    
258
}