Revision 47476 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/fmap/mapcontext/rendering/symbol/style/SimpleLabelStyle.java
SimpleLabelStyle.java | ||
---|---|---|
31 | 31 |
import java.awt.geom.Rectangle2D; |
32 | 32 |
import java.util.ArrayList; |
33 | 33 |
import java.util.List; |
34 |
|
|
35 | 34 |
import org.gvsig.fmap.geom.Geometry.SUBTYPES; |
36 | 35 |
import org.gvsig.fmap.geom.Geometry.TYPES; |
37 | 36 |
import org.gvsig.fmap.geom.GeometryLocator; |
38 |
import org.gvsig.fmap.geom.exception.CreateEnvelopeException; |
|
39 | 37 |
import org.gvsig.fmap.geom.primitive.Envelope; |
40 | 38 |
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol; |
41 | 39 |
import org.gvsig.fmap.mapcontext.rendering.symbols.SymbolDrawingException; |
... | ... | |
46 | 44 |
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.line.impl.SimpleLineSymbol; |
47 | 45 |
import org.gvsig.tools.ToolsLocator; |
48 | 46 |
import org.gvsig.tools.dynobject.DynStruct; |
49 |
import org.gvsig.tools.locator.LocatorException; |
|
50 | 47 |
import org.gvsig.tools.persistence.PersistenceManager; |
51 | 48 |
import org.gvsig.tools.persistence.PersistentState; |
52 | 49 |
import org.gvsig.tools.persistence.exception.PersistenceException; |
... | ... | |
62 | 59 |
*/ |
63 | 60 |
public class SimpleLabelStyle extends AbstractStyle implements ILabelStyle { |
64 | 61 |
|
65 |
private static Logger logger = LoggerFactory.getLogger(SimpleLabelStyle.class); |
|
62 |
private static final Logger logger = LoggerFactory.getLogger(SimpleLabelStyle.class);
|
|
66 | 63 |
|
67 | 64 |
public static final String SIMPLE_LABEL_STYLE_PERSISTENCE_NAME = |
68 | 65 |
"SIMPLE_LABEL_STYLE_PERSISTENCE_NAME"; |
... | ... | |
70 | 67 |
private Point2D markerPoint = new Point2D.Double(); |
71 | 68 |
// conertir a?? a Rectangle2D[] ja que pot arribar a gastar-se massivament |
72 | 69 |
// en el pintat |
73 |
private List<Rectangle2D> textFieldAreas = new ArrayList<Rectangle2D>();
|
|
70 |
private List<Rectangle2D> textFieldAreas = new ArrayList<>(); |
|
74 | 71 |
private IBackgroundFileStyle background; |
75 | 72 |
private Dimension defaultSize = new Dimension(32,32); |
76 | 73 |
private Dimension sz; |
77 | 74 |
|
78 | 75 |
|
79 | 76 |
|
77 |
@Override |
|
80 | 78 |
public int getFieldCount() { |
81 | 79 |
return textFieldAreas.size(); |
82 | 80 |
} |
83 | 81 |
|
82 |
@Override |
|
84 | 83 |
public void setTextFields(String[] texts) { |
85 | 84 |
StringBuffer sb = new StringBuffer(); |
86 | 85 |
for (int i = 0; texts != null && i < texts.length; i++) { |
... | ... | |
90 | 89 |
} |
91 | 90 |
} |
92 | 91 |
|
92 |
@Override |
|
93 | 93 |
public boolean isSuitableFor(ISymbol symbol) { |
94 | 94 |
return true; |
95 | 95 |
} |
... | ... | |
98 | 98 |
return getClass().getName(); |
99 | 99 |
} |
100 | 100 |
|
101 |
/* |
|
102 |
public XMLEntity getXMLEntity() { |
|
103 |
XMLEntity xml = new XMLEntity(); |
|
104 |
xml.putProperty("className", getClassName()); |
|
105 |
xml.putProperty("desc", getDescription()); |
|
106 |
xml.putProperty("markerPointX", markerPoint.getX()); |
|
107 |
xml.putProperty("markerPointY", markerPoint.getY()); |
|
108 |
|
|
109 |
int size = getFieldCount(); |
|
110 |
String[] minx = new String[size]; |
|
111 |
String[] miny = new String[size]; |
|
112 |
String[] widths = new String[size]; |
|
113 |
String[] heights = new String[size]; |
|
114 |
|
|
115 |
Rectangle2D[] rects = getTextBounds(); |
|
116 |
for (int i = 0; i < rects.length; i++) { |
|
117 |
minx[i] = String.valueOf(rects[i].getMinX()); |
|
118 |
miny[i] = String.valueOf(rects[i].getMinY()); |
|
119 |
widths[i] = String.valueOf(rects[i].getWidth()); |
|
120 |
heights[i] = String.valueOf(rects[i].getHeight()); |
|
121 |
} |
|
122 |
|
|
123 |
xml.putProperty("minXArray", minx); |
|
124 |
xml.putProperty("minYArray", miny); |
|
125 |
xml.putProperty("widthArray", widths); |
|
126 |
xml.putProperty("heightArray", heights); |
|
127 |
if(getBackgroundFileStyle() != null){ |
|
128 |
XMLEntity bgXML = getBackgroundFileStyle().getXMLEntity(); |
|
129 |
bgXML.putProperty("id", "LabelStyle"); |
|
130 |
xml.addChild(bgXML); |
|
131 |
} |
|
132 |
if (sz!=null){ |
|
133 |
xml.putProperty("sizeW",(int)sz.getWidth()); |
|
134 |
xml.putProperty("sizeH",(int)sz.getHeight()); |
|
135 |
} |
|
136 |
return xml; |
|
137 |
} |
|
138 |
|
|
139 |
public void setXMLEntity(XMLEntity xml) { |
|
140 |
setDescription(xml.getStringProperty("desc")); |
|
141 |
|
|
142 |
double x = xml.getDoubleProperty("markerPointX"); |
|
143 |
double y = xml.getDoubleProperty("markerPointY"); |
|
144 |
|
|
145 |
double[] minx = xml.getDoubleArrayProperty("minXArray"); |
|
146 |
double[] miny = xml.getDoubleArrayProperty("minYArray"); |
|
147 |
double[] widths = xml.getDoubleArrayProperty("widthArray"); |
|
148 |
double[] heights = xml.getDoubleArrayProperty("heightArray"); |
|
149 |
|
|
150 |
textFieldAreas.clear(); |
|
151 |
for (int i = 0; i < minx.length; i++) { |
|
152 |
addTextFieldArea(new Rectangle2D.Double( |
|
153 |
minx[i], |
|
154 |
miny[i], |
|
155 |
widths[i], |
|
156 |
heights[i])); |
|
157 |
} |
|
158 |
markerPoint.setLocation(x, y); |
|
159 |
XMLEntity bgXML = xml.firstChild("id", "LabelStyle"); |
|
160 |
if (bgXML!=null) { |
|
161 |
background = (BackgroundFileStyle) SymbologyFactory.createStyleFromXML(xml.getChild(0), null); |
|
162 |
} |
|
163 |
if (xml.contains("sizeW")) |
|
164 |
sz=new Dimension(xml.getIntProperty("sizeW"),xml.getIntProperty("sizeH")); |
|
165 |
|
|
166 |
} |
|
167 |
*/ |
|
168 |
|
|
101 |
@Override |
|
169 | 102 |
public Rectangle2D[] getTextBounds() { |
170 | 103 |
return (Rectangle2D[]) textFieldAreas.toArray(new Rectangle2D[textFieldAreas.size()]); |
171 | 104 |
} |
172 | 105 |
|
106 |
@Override |
|
173 | 107 |
public void drawInsideRectangle(Graphics2D g, Rectangle r) |
174 | 108 |
throws SymbolDrawingException { |
175 | 109 |
if(getBackgroundFileStyle() != null) |
... | ... | |
177 | 111 |
} |
178 | 112 |
|
179 | 113 |
|
114 |
@Override |
|
180 | 115 |
public Dimension getSize() { |
181 | 116 |
if (sz == null && getBackgroundFileStyle() != null) { |
182 | 117 |
Rectangle bgBounds = getBackgroundFileStyle().getBounds(); |
... | ... | |
186 | 121 |
return sz; |
187 | 122 |
} |
188 | 123 |
|
124 |
@Override |
|
189 | 125 |
public Point2D getMarkerPoint() { |
190 | 126 |
return markerPoint; |
191 | 127 |
} |
192 | 128 |
|
129 |
@Override |
|
193 | 130 |
public void setMarkerPoint(Point2D p) throws IllegalArgumentException { |
194 | 131 |
if (p.getX()<0 || p.getX()>1) |
195 | 132 |
throw new IllegalArgumentException("X must be >=0 and <=1 ("+p.getX()+")"); |
... | ... | |
200 | 137 |
} |
201 | 138 |
|
202 | 139 |
|
140 |
@Override |
|
203 | 141 |
public void drawOutline(Graphics2D g, Rectangle r) throws SymbolDrawingException { |
204 | 142 |
if(getBackgroundFileStyle() != null) |
205 | 143 |
getBackgroundFileStyle().drawOutline(g, r); |
... | ... | |
306 | 244 |
} |
307 | 245 |
} |
308 | 246 |
|
247 |
@Override |
|
309 | 248 |
public void setTextFieldArea(int index, Rectangle2D rect) { |
310 | 249 |
textFieldAreas.set(index, rect); |
311 | 250 |
} |
312 | 251 |
|
252 |
@Override |
|
313 | 253 |
public void addTextFieldArea(Rectangle2D rect) { |
314 | 254 |
textFieldAreas.add(rect); |
315 | 255 |
} |
316 | 256 |
|
257 |
@Override |
|
317 | 258 |
public void deleteTextFieldArea(int index) { |
318 | 259 |
textFieldAreas.remove(index); |
319 | 260 |
} |
320 | 261 |
|
262 |
@Override |
|
321 | 263 |
public void setSize(double width, double height) { |
322 | 264 |
sz = new Dimension( (int) Math.round(width), (int) Math.round(height)); |
323 | 265 |
} |
324 | 266 |
|
267 |
@Override |
|
325 | 268 |
public IBackgroundFileStyle getBackgroundFileStyle() { |
326 | 269 |
return background; |
327 | 270 |
} |
328 | 271 |
|
272 |
@Override |
|
329 | 273 |
public void setBackgroundFileStyle(IBackgroundFileStyle bg) { |
330 | 274 |
this.background = bg; |
331 | 275 |
} |
332 | 276 |
|
333 | 277 |
public static class RegisterPersistence implements Callable { |
334 | 278 |
|
279 |
@Override |
|
335 | 280 |
public Object call() throws Exception { |
336 | 281 |
|
337 | 282 |
PersistenceManager manager = ToolsLocator.getPersistenceManager(); |
... | ... | |
363 | 308 |
} |
364 | 309 |
|
365 | 310 |
|
311 |
@Override |
|
366 | 312 |
public void loadFromState(PersistentState state) |
367 | 313 |
throws PersistenceException { |
368 | 314 |
|
... | ... | |
379 | 325 |
this.sz = (Dimension) state.get("size"); |
380 | 326 |
} |
381 | 327 |
|
328 |
@Override |
|
382 | 329 |
public void saveToState(PersistentState state) throws PersistenceException { |
383 | 330 |
|
384 | 331 |
super.saveToState(state); |
Also available in: Unified diff