import org.simantics.g2d.diagram.handler.PickRequest.PickSorter;
import org.simantics.g2d.diagram.participant.pointertool.PointerInteractor;
import org.simantics.g2d.diagram.participant.pointertool.TerminalUtil.TerminalInfo;
+import org.simantics.g2d.element.ElementHints;
import org.simantics.g2d.element.IElement;
-import org.simantics.scenegraph.g2d.G2DNode;
+import org.simantics.scenegraph.g2d.IG2DNode;
+import org.simantics.scenegraph.g2d.nodes.SingleElementNode;
public class DNPointerInteractor extends PointerInteractor {
@Override
public void sort(List<IElement> elements) {
Collections.sort(elements, (e1, e2) -> {
- G2DNode e1node = getNode(e1);
- G2DNode e2node = getNode(e2);
+ IG2DNode e1node = getNode(e1);
+ IG2DNode e2node = getNode(e2);
if (e1node.getZIndex() < e2node.getZIndex())
return -1;
else if (e1node.getZIndex() > e2node.getZIndex())
});
}
- private static G2DNode getNode(IElement element) {
- G2DNode node = element.getHint(DistrictNetworkEdgeElement.KEY_DN_EDGE_NODE);
+ private static IG2DNode getNode(IElement element) {
+ IG2DNode node = element.getHint(DistrictNetworkEdgeElement.KEY_DN_EDGE_NODE);
if (node == null)
node = element.getHint(DistrictNetworkVertexElement.KEY_DN_VERTEX_NODE);
+ if (node == null) {
+ node = element.getHint(ElementHints.KEY_SG_NODE);
+ if (node instanceof SingleElementNode) {
+ SingleElementNode snode = (SingleElementNode) node;
+ node = snode.getNodes().iterator().next();
+ }
+ }
return node;
}
}