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

View differences:

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