]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.g2d/src/org/simantics/g2d/chassis/AWTChassis.java
Merge "Minor refactorings related to SCL constructors"
[simantics/platform.git] / bundles / org.simantics.g2d / src / org / simantics / g2d / chassis / AWTChassis.java
index 17304ef3e548da3642672c21993c6f4e4042e6c8..06b3ca22044dbb9ddfe808fe75ab2a8c94241532 100644 (file)
@@ -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) {