public class DistrictNetworkEdgeElement {
+ private static final Logger LOGGER = LoggerFactory.getLogger(DistrictNetworkEdgeElement.class);
+
public static final Key KEY_DN_EDGE = new KeyOf(DistrictNetworkEdge.class, "DN_EDGE");
public static final Key KEY_DN_EDGE_NODE = new SceneGraphNodeKey(DistrictNetworkEdgeNode.class, "DN_EDGE_NODE");
public static final Key KEY_DN_EDGE_SYMBOL_NODE = new SceneGraphNodeKey(DistrictNetworkEdgeNode.class, "DN_EDGE_SYMBOL_NODE");
@Override
public void init(IElement edgeElement, G2DParentNode parent) {
- DistrictNetworkEdge edge = edgeElement.getHint(KEY_DN_EDGE);
- if (edge == null) {
- cleanup(edgeElement);
- } else {
- DistrictNetworkEdgeNode node = edgeElement.getHint(KEY_DN_EDGE_NODE);
- if (node == null) {
- node = parent.addNode(ElementUtils.generateNodeId(edgeElement), DistrictNetworkEdgeNode.class);
- edgeElement.setHint(KEY_DN_EDGE_NODE, node);
+ try {
+ DistrictNetworkEdge edge = edgeElement.getHint(KEY_DN_EDGE);
+ if (edge == null) {
+ cleanup(edgeElement);
+ } else {
+ DistrictNetworkEdgeNode node = edgeElement.getHint(KEY_DN_EDGE_NODE);
+ if (node == null) {
+ node = parent.addNode(ElementUtils.generateNodeId(edgeElement), DistrictNetworkEdgeNode.class);
+ edgeElement.setHint(KEY_DN_EDGE_NODE, node);
+
+ SVGNode symbol = node.addNode(ElementUtils.generateNodeId(edgeElement), SVGNode.class);
+ edgeElement.setHint(KEY_DN_EDGE_SYMBOL_NODE, symbol);
+ }
- SVGNode symbol = node.addNode(ElementUtils.generateNodeId(edgeElement), SVGNode.class);
- edgeElement.setHint(KEY_DN_EDGE_SYMBOL_NODE, symbol);
+ node.setColor(ElementUtils.getAdditionalColor(edgeElement, Color.BLUE));
+
+ node.setDNEdge(edge);
+ AffineTransform at = ElementUtils.getTransform(edgeElement);
+ if (at != null)
+ node.setTransform(at);
}
-
- node.setColor(ElementUtils.getAdditionalColor(edgeElement, Color.BLUE));
-
- node.setDNEdge(edge);
- AffineTransform at = ElementUtils.getTransform(edgeElement);
- if (at != null)
- node.setTransform(at);
+ } catch (Exception e) {
+ LOGGER.error("Could not initialize element {} for parent {}", edgeElement, parent, e);
}
}
public static final DNEdgeInternalSize INSTANCE = new DNEdgeInternalSize();
- private ThreadLocal<Path2D> path = new ThreadLocal<Path2D>() {
- protected Path2D initialValue() { return new Path2D.Double(); }
- };
-
@Override
public Rectangle2D getBounds(IElement e, Rectangle2D size) {
- DistrictNetworkEdge edge = e.getHint(KEY_DN_EDGE);
+ DistrictNetworkEdgeNode edgeNode = e.getHint(KEY_DN_EDGE_NODE);
if (size == null)
size = new Rectangle2D.Double();
- if (edge != null)
- size.setFrame(DistrictNetworkEdgeNode.calculatePath(edge, path.get(), false).getBounds2D());
+ if (edgeNode != null)
+ size.setFrame(edgeNode.getBoundsInLocal());
else
LOGGER.debug("Element {} does not have edge!", e);
@Override
public Shape getElementShape(IElement e) {
- DistrictNetworkEdge edge = e.getHint(KEY_DN_EDGE);
- if (edge != null) {
- return DistrictNetworkEdgeNode.calculatePath(edge, null, false);
+ DistrictNetworkEdgeNode edgeNode = e.getHint(KEY_DN_EDGE_NODE);
+ if (edgeNode != null) {
+ return edgeNode.getPath();
} else {
return getBounds(e, null);
}