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 @ 41670

History | View | Annotate | Download (11.8 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
 * AUTHORS (In addition to CIT):
26
 * 2009 {gvSIG}  {{Task}}
27
 */
28
package org.gvsig.symbology.impl;
29

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

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

    
101
        protected void doInitialize() throws LibraryException {
102
                Caller caller = new DefaultCaller();
103
                caller.add(new DefaultSymbologyManager.RegisterSymbologyManager());
104
                if (!caller.call()) {
105
                        throw new LibraryException(SymbologyDefaultImplLibrary.class,
106
                                        caller.getExceptions());
107
                }
108
        }
109

    
110
    protected void doPostInitialize() throws LibraryException {
111
        Caller caller = new DefaultCaller();
112

    
113
        /*
114
         * Add registry of symbols 
115
         */
116
        caller.add( new SimpleFillSymbol.RegisterSymbol() );
117
        caller.add( new MultiLayerFillSymbol.RegisterSymbol() );
118
        caller.add( new SimpleLineSymbol.RegisterSymbol() );
119
        caller.add( new MultiLayerLineSymbol.RegisterSymbol() );
120
        caller.add( new SimpleMarkerSymbol.RegisterSymbol() );
121
        caller.add( new MultiLayerMarkerSymbol.RegisterSymbol() );
122
        caller.add( new SimpleTextSymbol.RegisterSymbol() );
123
        caller.add( new MultiShapeSymbol.RegisterSymbol() );
124
        caller.add( new WarningSymbol.RegisterSymbol() );
125

    
126
        caller.add( new PictureFillSymbol.RegisterSymbol() );
127
        caller.add( new PictureLineSymbol.RegisterSymbol() );
128
        caller.add( new PictureMarkerSymbol.RegisterSymbol() );
129

    
130
//        caller.add( new MarkerFillSymbol.RegisterSymbol() );
131

    
132
        /*
133
         * Add registry of legends
134
         */
135
        caller.add( new VectorialUniqueValueLegend.RegisterLegend() );
136
        caller.add( new VectorialIntervalLegend.RegisterLegend() );
137
        caller.add( new SingleSymbolLegend.RegisterLegend() );
138
        
139
        /*
140
         * Add registry of persistent styles
141
         */
142
        caller.add( new AbstractStyle.RegisterPersistence() );
143
        caller.add( new ArrowDecoratorStyle.RegisterPersistence() );
144
        caller.add( new DefaultMask.RegisterPersistence() );
145
        caller.add( new SimpleLineStyle.RegisterPersistence() );
146

    
147
        caller.add( new BackgroundFileStyle.RegisterPersistence() );
148
        caller.add( new ImageStyle.RegisterPersistence() );
149
        caller.add( new RemoteFileStyle.RegisterPersistence() );
150
        caller.add( new SVGStyle.RegisterPersistence() );
151

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

    
176

    
177
        /*
178
         * Add registry of persistent legends
179
         */
180
        caller.add(new AbstractLegend.RegisterPersistence());
181
        caller.add(new AbstractVectorialLegend.RegisterPersistence());
182
        caller.add(new AbstractClassifiedVectorLegend.RegisterPersistence());
183
        caller.add(new FInterval.RegisterPersistence());
184
        caller.add(new AbstractIntervalLegend.RegisterPersistence());
185
        caller.add(new VectorialIntervalLegend.RegisterPersistence());
186
        caller.add(new VectorialUniqueValueLegend.RegisterPersistence());
187
        caller.add(new SingleSymbolLegend.RegisterPersistence());
188

    
189
        /*
190
         * Add registry of labeling classes
191
         */
192
        caller.add(new ZoomConstraintsImpl.RegisterPersistence());
193
        caller.add(new LabelClass.RegisterPersistence());
194
        caller.add(new DefaultLabelingMethod.RegisterPersistence());
195
        caller.add(new AttrInTableLabelingStrategy.RegisterPersistence());
196
                 
197
        /*
198
         * Default impl of simple label style
199
         */
200
        caller.add(new SimpleLabelStyle.RegisterPersistence());
201

    
202
        /*
203
         * Do register of all
204
         */
205
        if( !caller.call() ) {
206
                throw new LibraryException(SymbologyDefaultImplLibrary.class, caller.getExceptions());
207
        }
208
        
209
        // Registering persistence-based legend reader/writer
210
        // ===============================================
211
        MapContextManager mcoman = MapContextLocator.getMapContextManager();
212
        // =================================
213
        mcoman.registerLegendReader(
214
            // removing dot
215
            SymbolManager.LEGEND_FILE_EXTENSION.substring(1),
216
            PersistenceBasedLegendReader.class);
217
        // =================================
218
        mcoman.registerLegendWriter(
219
            ISingleSymbolLegend.class,
220
            SymbolManager.LEGEND_FILE_EXTENSION.substring(1),
221
            PersistenceBasedLegendWriter.class);
222
        mcoman.registerLegendWriter(
223
            IVectorialUniqueValueLegend.class,
224
            SymbolManager.LEGEND_FILE_EXTENSION.substring(1),
225
            PersistenceBasedLegendWriter.class);
226
        mcoman.registerLegendWriter(
227
            IVectorialIntervalLegend.class,
228
            SymbolManager.LEGEND_FILE_EXTENSION.substring(1),
229
            PersistenceBasedLegendWriter.class);
230
        // ===========================================================
231
        
232
        SymbologyManager symbologyManager = SymbologyLocator.getSymbologyManager();
233
        symbologyManager.registerLabelClass(new LabelClassFactory());
234
    }
235

    
236
}