X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.g2d%2Fsrc%2Forg%2Fsimantics%2Fg2d%2Fchassis%2FAWTChassis.java;h=06b3ca22044dbb9ddfe808fe75ab2a8c94241532;hb=07bb01bc6390b0d22242edda1a1af9ce4760f5ec;hp=17304ef3e548da3642672c21993c6f4e4042e6c8;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.g2d/src/org/simantics/g2d/chassis/AWTChassis.java b/bundles/org.simantics.g2d/src/org/simantics/g2d/chassis/AWTChassis.java index 17304ef3e..06b3ca220 100644 --- a/bundles/org.simantics.g2d/src/org/simantics/g2d/chassis/AWTChassis.java +++ b/bundles/org.simantics.g2d/src/org/simantics/g2d/chassis/AWTChassis.java @@ -16,6 +16,7 @@ import java.awt.Container; import java.awt.Cursor; import java.awt.Graphics; import java.awt.Graphics2D; +import java.awt.GraphicsEnvironment; import java.awt.Rectangle; import java.awt.image.VolatileImage; import java.lang.reflect.Method; @@ -31,6 +32,7 @@ import org.simantics.g2d.canvas.IMouseCursorListener; import org.simantics.g2d.dnd.DragInteractor; import org.simantics.g2d.dnd.DropInteractor; import org.simantics.g2d.internal.DebugPolicy; +import org.simantics.g2d.participant.TransformUtil; import org.simantics.scenegraph.g2d.G2DRenderingHints; import org.simantics.scenegraph.g2d.events.Event; import org.simantics.scenegraph.g2d.events.IEventQueue; @@ -81,6 +83,8 @@ public class AWTChassis extends JComponent implements ICanvasChassis { private transient boolean closed = false; protected ICanvasContext canvasContext; + private boolean useVolatileImage = true; + // Marks the content dirty protected IContentListener contentListener = new IContentListener() { @Override @@ -237,6 +241,12 @@ public class AWTChassis extends JComponent implements ICanvasChassis { holder.addMouseMotionListener(mouseAdapter); holder.addMouseWheelListener(mouseAdapter); holder.addFocusListener(focusAdapter); + + TransformUtil util = canvasContext.getAtMostOneItemOfClass(TransformUtil.class); + if (util != null) { + mouseAdapter.initDragGestureListener(holder, (control) -> util.controlToCanvas(control, null)); + } + } }; if (AWTThread.getThreadAccess().currentThreadAccess()) @@ -277,6 +287,14 @@ public class AWTChassis extends JComponent implements ICanvasChassis { public IHintContext getHintContext() { return hintCtx; } + + public void setUseVolatileImage(boolean useVolatileImage) { + this.useVolatileImage = useVolatileImage; + } + + public boolean isUseVolatileImage() { + return useVolatileImage; + } private void paintScenegraph(Graphics2D g2d, Rectangle controlBounds) { Color bg = getBackground(); @@ -355,7 +373,9 @@ public class AWTChassis extends JComponent implements ICanvasChassis { startmem = Runtime.getRuntime().freeMemory(); start = System.nanoTime(); } - VolatileImage buffer = paintToVolatileImage(g2d, b); + VolatileImage buffer = null; + if (useVolatileImage) + buffer = paintToVolatileImage(g2d, b); if (closed) return; if (DebugPolicy.PERF_CHASSIS_RENDER_FRAME) {