1 package org.simantics.district.network.ui.nodes;
3 import java.awt.Graphics2D;
4 import java.awt.geom.AffineTransform;
5 import java.awt.geom.Rectangle2D;
6 import java.util.LinkedList;
8 import java.util.ListIterator;
10 import org.simantics.scenegraph.g2d.G2DNode;
11 import org.simantics.utils.datastructures.Pair;
13 public class DeferredRenderingNode extends G2DNode {
15 private static final long serialVersionUID = 1L;
17 List<Pair<AffineTransform, DeferredNode>> queue = new LinkedList<>();
20 public void render(Graphics2D g2d) {
21 AffineTransform currentTransform = g2d.getTransform();
23 ListIterator<Pair<AffineTransform, DeferredNode>> listIterator = queue.listIterator();
24 while (listIterator.hasNext()) {
25 Pair<AffineTransform, DeferredNode> node = listIterator.next();
26 listIterator.remove();
28 g2d.setTransform(node.first);
29 node.second.renderDeferred(g2d);
32 g2d.setTransform(currentTransform);
36 public Rectangle2D getBoundsInLocal() {
40 public void deferNode(AffineTransform transform, DeferredNode node) {
41 queue.add(new Pair<>(transform, node));