Revision 43524 trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.api/src/main/java/org/gvsig/fmap/mapcontext/rendering/symbols/impl/DefaultSymbolManager.java
DefaultSymbolManager.java | ||
---|---|---|
100 | 100 |
|
101 | 101 |
private Map symbolsByShapeType = Collections.synchronizedMap(new HashMap()); |
102 | 102 |
|
103 |
private Map multiLineSymbolsByName
|
|
103 |
private Map multiLayerSymbolsByName
|
|
104 | 104 |
= Collections.synchronizedMap(new HashMap()); |
105 | 105 |
|
106 |
private Map multiLineSymbolsByShapeType
|
|
106 |
private Map multiLayerSymbolsByShapeType
|
|
107 | 107 |
= Collections.synchronizedMap(new HashMap()); |
108 | 108 |
|
109 | 109 |
private IWarningSymbol warningSymbol; |
... | ... | |
385 | 385 |
public IMultiLayerSymbol createMultiLayerSymbol(String symbolName) |
386 | 386 |
throws MapContextRuntimeException { |
387 | 387 |
return (IMultiLayerSymbol) createSymbol(symbolName, |
388 |
(Class) multiLineSymbolsByName.get(symbolName),
|
|
388 |
(Class) multiLayerSymbolsByName.get(symbolName),
|
|
389 | 389 |
IMultiLayerSymbol.class); |
390 | 390 |
} |
391 | 391 |
|
392 | 392 |
public IMultiLayerSymbol createMultiLayerSymbol(int shapeType) |
393 | 393 |
throws MapContextRuntimeException { |
394 |
String symbolName = getSymbolName(multiLineSymbolsByShapeType, shapeType);
|
|
394 |
String symbolName = getSymbolName(multiLayerSymbolsByShapeType, shapeType);
|
|
395 | 395 |
|
396 | 396 |
return symbolName == null ? null : createMultiLayerSymbol(symbolName); |
397 | 397 |
} |
... | ... | |
406 | 406 |
if (symbolName == null) { |
407 | 407 |
GeometryManager geomManager = GeometryLocator.getGeometryManager(); |
408 | 408 |
GeometryType shapeGeometryType; |
409 |
try { |
|
410 |
shapeGeometryType = geomManager.getGeometryType(shapeType, Geometry.SUBTYPES.UNKNOWN); |
|
411 | 409 |
Iterator it = symbols.keySet().iterator(); |
412 | 410 |
while (it.hasNext()) { |
413 | 411 |
Integer geomType = (Integer) it.next(); |
414 |
GeometryType geomGeometryType = |
|
415 |
geomManager.getGeometryType(geomType.intValue(), Geometry.SUBTYPES.UNKNOWN); |
|
416 |
if (shapeGeometryType.isSubTypeOf(geomGeometryType)) { |
|
417 |
symbolName = (String) symbols.get(geomType); |
|
418 |
break; |
|
419 |
} |
|
412 |
if (geomManager.isSubtype(geomType, shapeType)) { |
|
413 |
symbolName = (String) symbols.get(geomType); |
|
414 |
break; |
|
415 |
} |
|
420 | 416 |
} |
421 |
} catch (GeometryTypeNotSupportedException e) { |
|
422 |
// do nothing |
|
423 |
} catch (GeometryTypeNotValidException e) { |
|
424 |
// do nothing |
|
425 |
} |
|
426 | 417 |
} |
427 | 418 |
return symbolName; |
428 | 419 |
} |
... | ... | |
454 | 445 |
symbolClass, symbolName); |
455 | 446 |
} |
456 | 447 |
|
457 |
multiLineSymbolsByName.put(symbolName, symbolClass);
|
|
448 |
multiLayerSymbolsByName.put(symbolName, symbolClass);
|
|
458 | 449 |
} |
459 | 450 |
|
460 | 451 |
public void registerMultiLayerSymbol(String symbolName, int[] shapeTypes, |
... | ... | |
462 | 453 |
registerMultiLayerSymbol(symbolName, symbolClass); |
463 | 454 |
if (shapeTypes != null) { |
464 | 455 |
for (int i = 0; i < shapeTypes.length; i++) { |
465 |
multiLineSymbolsByShapeType.put(new Integer(shapeTypes[i]),
|
|
456 |
multiLayerSymbolsByShapeType.put(new Integer(shapeTypes[i]),
|
|
466 | 457 |
symbolName); |
467 | 458 |
} |
468 | 459 |
} |
Also available in: Unified diff