Revision 21112 branches/v2_0_0_prep/libraries/libFMap/src/org/gvsig/fmap/mapcontext/rendering/legend/styling/AttrInTableLabelingStrategy.java
AttrInTableLabelingStrategy.java | ||
---|---|---|
2 | 2 |
|
3 | 3 |
import java.awt.Graphics2D; |
4 | 4 |
import java.awt.image.BufferedImage; |
5 |
import java.util.Iterator; |
|
5 | 6 |
import java.util.Vector; |
6 | 7 |
import java.util.logging.Level; |
7 | 8 |
import java.util.logging.Logger; |
... | ... | |
10 | 11 |
import javax.print.attribute.standard.PrintQuality; |
11 | 12 |
|
12 | 13 |
import org.gvsig.data.ReadException; |
14 |
import org.gvsig.data.vectorial.Feature; |
|
15 |
import org.gvsig.data.vectorial.FeatureCollection; |
|
16 |
import org.gvsig.data.vectorial.FeatureStore; |
|
17 |
import org.gvsig.data.vectorial.FeatureType; |
|
13 | 18 |
import org.gvsig.fmap.core.geometries.utils.FConstant; |
14 | 19 |
import org.gvsig.fmap.core.geometries.utils.FLabel; |
15 | 20 |
import org.gvsig.fmap.geom.Geometry; |
... | ... | |
21 | 26 |
import org.gvsig.fmap.mapcontext.layers.FLayer; |
22 | 27 |
import org.gvsig.fmap.mapcontext.layers.ReadableVectorial; |
23 | 28 |
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect; |
29 |
import org.gvsig.fmap.mapcontext.rendering.legend.NullValue; |
|
24 | 30 |
import org.gvsig.fmap.mapcontext.rendering.symbols.CartographicSupport; |
25 | 31 |
import org.gvsig.fmap.mapcontext.rendering.symbols.CartographicSupportToolkit; |
26 | 32 |
import org.gvsig.fmap.mapcontext.rendering.symbols.SimpleTextSymbol; |
... | ... | |
87 | 93 |
&& (scale <= zoom.getMinScale()) ) ) { |
88 | 94 |
try { |
89 | 95 |
// limit the labeling to the visible extent |
90 |
FBitSet bs = layer.queryByRect(viewPort.getAdjustedExtent()); |
|
91 |
|
|
92 |
ReadableVectorial source = layer.getSource(); |
|
93 |
SelectableDataSource recordSet = source.getRecordset(); |
|
94 |
|
|
95 |
for(int i=bs.nextSetBit(0); i>=0 && !cancel.isCanceled(); i=bs.nextSetBit(i+1)) { |
|
96 |
Value[] vv = recordSet.getRow(i); |
|
96 |
// FBitSet bs = layer.queryByRect(viewPort.getAdjustedExtent()); |
|
97 |
FeatureCollection collection=(FeatureCollection)layer.getFeatureStore().getDataCollection(new String[0],null,null); |
|
98 |
// ReadableVectorial source = layer.getSource(); |
|
99 |
// SelectableDataSource recordSet = source.getRecordset(); |
|
100 |
Iterator iterator=collection.iterator(); |
|
101 |
while(iterator.hasNext()){ |
|
102 |
if (cancel.isCanceled()){ |
|
103 |
return; |
|
104 |
} |
|
105 |
Feature feature=(Feature)iterator.next(); |
|
106 |
// for(int i=bs.nextSetBit(0); i>=0 && !cancel.isCanceled(); i=bs.nextSetBit(i+1)) { |
|
107 |
// Value[] vv = recordSet.getRow(i); |
|
97 | 108 |
double size; |
98 | 109 |
|
99 | 110 |
if (useFixedSize){ |
... | ... | |
102 | 113 |
} else if (idHeightField != -1) { |
103 | 114 |
// text size is defined in the table |
104 | 115 |
try { |
105 |
size = ((NumericValue) vv[idHeightField]).doubleValue() * fontScaleFactor;
|
|
116 |
size = ((Number) feature.get(idHeightField)).doubleValue() * fontScaleFactor;
|
|
106 | 117 |
} catch (ClassCastException ccEx) { |
107 |
if (!NullValue.class.equals(vv[idHeightField].getClass())) {
|
|
118 |
if (!NullValue.class.equals(feature.get(idHeightField).getClass())) {
|
|
108 | 119 |
throw new ReadException("Unknown", ccEx); |
109 | 120 |
} |
110 | 121 |
// a null value |
111 | 122 |
Logger.getAnonymousLogger(). |
112 |
warning("Null text height value for text '"+vv[idTextField].toString()+"'");
|
|
123 |
warning("Null text height value for text '"+feature.get(idTextField).toString()+"'");
|
|
113 | 124 |
continue; |
114 | 125 |
} |
115 | 126 |
} else { |
... | ... | |
138 | 149 |
double rotation = 0D; |
139 | 150 |
if (idRotationField!= -1) { |
140 | 151 |
// text rotation is defined in the table |
141 |
rotation = -Math.toRadians(((NumericValue) vv[idRotationField]).doubleValue());
|
|
152 |
rotation = -Math.toRadians(((Number) feature.get(idRotationField)).doubleValue());
|
|
142 | 153 |
} |
143 | 154 |
|
144 |
Geometry geom = source.getGeometry(i);
|
|
145 |
sym.setText(vv[idTextField].toString());
|
|
155 |
Geometry geom = (Geometry)feature.getDefaultGeometry();
|
|
156 |
sym.setText(feature.get(idTextField).toString());
|
|
146 | 157 |
sym.setRotation(rotation); |
147 | 158 |
|
148 | 159 |
FLabel[] aux = geom.createLabels(0, true); |
... | ... | |
152 | 163 |
sym.draw(g, null, p, cancel); |
153 | 164 |
} |
154 | 165 |
} |
155 |
} catch (VisitorException e) { |
|
156 |
Logger.getAnonymousLogger().log(Level.SEVERE, "Could not get the layer extent.\n" + |
|
157 |
e.getMessage()); |
|
158 |
} catch (ExpansionFileReadException e) { |
|
159 |
Logger.getAnonymousLogger().log(Level.SEVERE, "Could not draw annotation in the layer" + |
|
160 |
"\""+layer.getName()+"\".\nIs the layer being edited?.\n"+e.getMessage()); |
|
161 | 166 |
} catch (ReadException e) { |
162 | 167 |
Logger.getAnonymousLogger().log(Level.SEVERE, "Could not draw annotation in the layer.\n" + |
163 | 168 |
e.getMessage()); |
... | ... | |
199 | 204 |
|
200 | 205 |
public String getRotationField() throws ReadException { |
201 | 206 |
if (idRotationField == -1) return null; |
202 |
return ((SelectableDataSource) layer.getRecordset()) |
|
203 |
.getFieldName(idRotationField); |
|
207 |
return ((FeatureType)layer.getFeatureStore().getFeatureTypes().get(0)).getByOrder(idRotationField).getName(); |
|
204 | 208 |
} |
205 | 209 |
|
206 | 210 |
public int getRotationFieldId() { |
... | ... | |
213 | 217 |
|
214 | 218 |
public String getTextField() throws ReadException { |
215 | 219 |
if (idTextField == -1) return null; |
216 |
return ((SelectableDataSource) layer.getRecordset()) |
|
217 |
.getFieldName(idTextField); |
|
220 |
return ((FeatureType)layer.getFeatureStore().getFeatureTypes().get(0)).getByOrder(idTextField).getName(); |
|
218 | 221 |
} |
219 | 222 |
|
220 | 223 |
public int getTextFieldId() { |
... | ... | |
227 | 230 |
|
228 | 231 |
public String getHeightField() throws ReadException { |
229 | 232 |
if (idHeightField == -1) return null; |
230 |
return ((SelectableDataSource) layer.getRecordset()) |
|
231 |
.getFieldName(idHeightField); |
|
233 |
return ((FeatureType)layer.getFeatureStore().getFeatureTypes().get(0)).getByOrder(idHeightField).getName(); |
|
232 | 234 |
} |
233 | 235 |
|
234 | 236 |
public int getHeightFieldId() { |
... | ... | |
255 | 257 |
|
256 | 258 |
public void setTextField(String textFieldName) { |
257 | 259 |
try { |
258 |
idTextField = ((SelectableDataSource) layer.getRecordset()) |
|
259 |
.getFieldIndexByName(textFieldName); |
|
260 |
} catch (ReadDriverException e) { |
|
260 |
idTextField = ((FeatureType)layer.getFeatureStore().getFeatureTypes().get(0)).getFieldIndex(textFieldName); |
|
261 |
} catch (ReadException e) { |
|
261 | 262 |
Logger.getAnonymousLogger().log(Level.SEVERE, e.getMessage()); |
262 | 263 |
} |
263 | 264 |
} |
... | ... | |
265 | 266 |
public void setRotationField(String rotationFieldName) { |
266 | 267 |
if (rotationFieldName != null) { |
267 | 268 |
try { |
268 |
idRotationField = ((SelectableDataSource) layer.getRecordset()) |
|
269 |
.getFieldIndexByName(rotationFieldName); |
|
270 |
} catch (ReadDriverException e) { |
|
269 |
idRotationField = ((FeatureType)layer.getFeatureStore().getFeatureTypes().get(0)).getFieldIndex(rotationFieldName); |
|
270 |
} catch (ReadException e) { |
|
271 | 271 |
Logger.getAnonymousLogger().log(Level.SEVERE, e.getMessage()); |
272 | 272 |
} |
273 | 273 |
} else idRotationField = -1; |
... | ... | |
282 | 282 |
public void setHeightField(String heightFieldName) { |
283 | 283 |
if (heightFieldName != null) { |
284 | 284 |
try { |
285 |
idHeightField = ((SelectableDataSource) layer.getRecordset()) |
|
286 |
.getFieldIndexByName(heightFieldName); |
|
285 |
idHeightField = ((FeatureType)layer.getFeatureStore().getFeatureTypes().get(0)).getFieldIndex(heightFieldName); |
|
287 | 286 |
} catch (ReadException e) { |
288 | 287 |
Logger.getAnonymousLogger().log(Level.SEVERE, e.getMessage()); |
289 | 288 |
} |
... | ... | |
291 | 290 |
} |
292 | 291 |
|
293 | 292 |
|
294 |
public void print(Graphics2D g, ViewPort viewPort, Cancellable cancel, PrintRequestAttributeSet properties) throws ReadDriverException {
|
|
293 |
public void print(Graphics2D g, ViewPort viewPort, Cancellable cancel, PrintRequestAttributeSet properties) throws ReadException { |
|
295 | 294 |
isPrinting = true; |
296 | 295 |
PrintQuality resolution=(PrintQuality)properties.get(PrintQuality.class); |
297 | 296 |
if (resolution.equals(PrintQuality.NORMAL)){ |
Also available in: Unified diff