Statistics
| Revision:

svn-gvsig-desktop / branches / simbologia / libraries / libFMap / src / com / iver / cit / gvsig / fmap / layers / LabeledTestFLayer.java @ 10436

History | View | Annotate | Download (4.2 KB)

1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
18
 *
19
 * For more information, contact:
20
 *
21
 *  Generalitat Valenciana
22
 *   Conselleria d'Infraestructures i Transport
23
 *   Av. Blasco Ib??ez, 50
24
 *   46010 VALENCIA
25
 *   SPAIN
26
 *
27
 *      +34 963862235
28
 *   gvsig@gva.es
29
 *      www.gvsig.gva.es
30
 *
31
 *    or
32
 *
33
 *   IVER T.I. S.A
34
 *   Salamanca 50
35
 *   46005 Valencia
36
 *   Spain
37
 *
38
 *   +34 963163400
39
 *   dac@iver.es
40
 */
41

    
42
/* CVS MESSAGES:
43
*
44
* $Id: LabeledTestFLayer.java 10436 2007-02-21 07:34:09Z jaume $
45
* $Log$
46
* Revision 1.1.2.6  2007-02-21 07:34:09  jaume
47
* labeling starts working
48
*
49
* Revision 1.1.2.5  2007/02/15 16:23:44  jaume
50
* *** empty log message ***
51
*
52
* Revision 1.1.2.4  2007/02/09 07:47:05  jaume
53
* Isymbol moved
54
*
55
* Revision 1.1.2.3  2007/02/02 16:21:24  jaume
56
* start commiting labeling stuff
57
*
58
* Revision 1.1.2.2  2007/02/01 17:46:49  jaume
59
* *** empty log message ***
60
*
61
* Revision 1.1.2.1  2007/01/30 18:10:45  jaume
62
* start commiting labeling stuff
63
*
64
*
65
*/
66
package com.iver.cit.gvsig.fmap.layers;
67

    
68
import java.awt.Graphics2D;
69
import java.awt.image.BufferedImage;
70
import java.util.logging.Logger;
71

    
72
import com.iver.cit.gvsig.fmap.DriverException;
73
import com.iver.cit.gvsig.fmap.ViewPort;
74
import com.iver.cit.gvsig.fmap.core.ILabelable;
75
import com.iver.cit.gvsig.fmap.rendering.styling.ILabelingMethod;
76
import com.iver.cit.gvsig.fmap.rendering.styling.ILabelingStrategy;
77
import com.iver.cit.gvsig.fmap.rendering.styling.LabelingFactory;
78
import com.iver.utiles.NotExistInXMLEntity;
79
import com.iver.utiles.XMLEntity;
80
import com.iver.utiles.swing.threads.Cancellable;
81

    
82
/**
83
 * @author   jaume dominguez faus - jaume.dominguez@iver.es
84
 */
85
public class LabeledTestFLayer extends FLyrVect implements ILabelable {
86

    
87
        private boolean isLabeled;
88
        private ILabelingStrategy strategy;
89

    
90
        public LabeledTestFLayer() {
91
                super();
92
        }
93

    
94
        /**
95
         * @return
96
         * @uml.property  name="isLabeled"
97
         */
98
        public boolean isLabeled() {
99
                return isLabeled;
100
        }
101

    
102
        public void setIsLabeled(boolean isLabeled) {
103
                this.isLabeled = isLabeled;
104
        }
105

    
106
        public ILabelingStrategy getLabelingStrategy() {
107
                return strategy;
108
        }
109

    
110
        public void setLabelingStrategy(ILabelingStrategy strategy) {
111
                this.strategy = strategy;
112
        }
113

    
114
        public void draw(BufferedImage image, Graphics2D g, ViewPort viewPort, Cancellable cancel, double scale) throws DriverException {
115
                super.draw(image, g, viewPort, cancel, scale);
116
                drawLabels(image, g, viewPort, cancel, scale);
117
        }
118

    
119
        public XMLEntity getXMLEntity() throws XMLException {
120
                XMLEntity xml = super.getXMLEntity();
121
                xml.remove("className");
122
                xml.putProperty("className", getClass().getName());
123
                xml.putProperty("isLabeled", isLabeled);
124
                
125
                if (strategy != null) {
126
                        XMLEntity strategyXML = strategy.getXMLEntity();
127
                        strategyXML.putProperty("Strategy", strategy.getClassName());
128
                        xml.addChild(strategy.getXMLEntity());
129
                }
130
                return xml;
131
        }
132

    
133
        public void setXMLEntity(XMLEntity xml) throws XMLException {
134
                super.setXMLEntity(xml);
135

    
136

    
137
                for (int i = 0; i < xml.getChildrenCount(); i++) {
138
                        try {
139
                                xml.getChild(i).getStringProperty("Strategy");
140
                                this.strategy = LabelingFactory.createStrategyFromXML(xml.getChild(i));
141
                        } catch (NotExistInXMLEntity neXMLEX) {
142
                                // no strategy was set, just continue;
143
                                Logger.getAnonymousLogger().warning("Reached what should be unreachable code");
144
                        }
145
                }
146

    
147
        }
148

    
149
        public void drawLabels(BufferedImage image, Graphics2D g, ViewPort viewPort, Cancellable cancel, double scale) throws DriverException {
150
                if (isWithinScale(scale) && isLabeled()) {
151
                        strategy.draw(image, g, viewPort, cancel);
152
                }
153
        }
154
}