-
-
- Comparator<IElement> nearestVerticesFirst = (IElement e1, IElement e2) -> {
- // If there are any vertices in the elements, prefer those primarily.
- DistrictNetworkVertexNode v1 = e1.getHint(DistrictNetworkVertexElement.KEY_DN_VERTEX_NODE);
- DistrictNetworkVertexNode v2 = e2.getHint(DistrictNetworkVertexElement.KEY_DN_VERTEX_NODE);
-
- // Don't reorder edges
- if ((v1 == null && v2 == null))
- return 0;
-
- // Sort vertices in nearest first order
- if (v1 != null && v2 != null) {
- Rectangle2D b1 = v1.getBounds();
- Rectangle2D b2 = v2.getBounds();
- double dist1 = canvasPos.distanceSq(b1.getCenterX(), b1.getCenterY());
- double dist2 = canvasPos.distanceSq(b2.getCenterX(), b2.getCenterY());
- return dist1 < dist2 ? -1 : dist1 > dist2 ? 1 : 0;
- }
-
- // Always vertices before edges
- return v1 != null && v2 == null ? -1 : 1;
- };