-/*******************************************************************************\r
- * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
- * in Industry THTH ry.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the terms of the Eclipse Public License v1.0\r
- * which accompanies this distribution, and is available at\r
- * http://www.eclipse.org/legal/epl-v10.html\r
- *\r
- * Contributors:\r
- * VTT Technical Research Centre of Finland - initial API and implementation\r
- *******************************************************************************/\r
-package org.simantics.g2d.participant;\r
-\r
-import org.simantics.g2d.canvas.Hints;\r
-import org.simantics.g2d.canvas.ICanvasContext;\r
-import org.simantics.g2d.canvas.IMouseCaptureContext;\r
-import org.simantics.g2d.canvas.IMouseCursorContext;\r
-import org.simantics.g2d.canvas.IContentContext;\r
-import org.simantics.g2d.canvas.IContentContext.IContentListener;\r
-import org.simantics.g2d.canvas.impl.AbstractCanvasParticipant;\r
-import org.simantics.g2d.canvas.impl.DependencyReflection.Dependency;\r
-\r
-/**\r
- * Subcanvas encapsulates a canvas (another) in one participant.\r
- * \r
- * \r
- * @author Toni Kalajainen\r
- */\r
-public class SubCanvas extends AbstractCanvasParticipant {\r
-\r
- @Dependency TransformUtil util;\r
-\r
- private boolean enabled = true;\r
- private ICanvasContext superCtx = null;\r
- \r
- /** Sub-Canvas */\r
- private ICanvasContext sub;\r
- int eventPriority, paintPriority, hintPriority;\r
- //IHintContext subHintStack;\r
- IMouseCursorContext origSubCursorCtx;\r
- IMouseCaptureContext origSubCaptureCtx;\r
- \r
- // Subcanvas has become dirty, make super canvas also dirty\r
- IContentListener paintableCtxListener = new IContentListener() {\r
-\r
- @Override\r
- public void onDirty(IContentContext sender) {\r
- if (superCtx==null) return;\r
- superCtx.getContentContext().setDirty();\r
- }\r
- };\r
- \r
- public SubCanvas(ICanvasContext subCanvas, int eventPriority, int paintPriority, int hintPriority) {\r
- assert(subCanvas!=null);\r
- this.sub = subCanvas;\r
- this.eventPriority = eventPriority;\r
- this.paintPriority = paintPriority;\r
- this.hintPriority = hintPriority;\r
- //subHintStack = sub.getHintStack().createStackRead(sub.getDefaultHintContext());\r
- \r
-// subCanvas.getMouseCaptureContext().addMouseCaptureListener(new IMouseCaptureListener() {\r
-// @Override\r
-// public void onMouseCaptured(IMouseCaptureContext sender, int mouseId) {\r
-// if (superCtx==null) return;\r
-// superCtx.getMouseCaptureContext().\r
-// }\r
-// @Override\r
-// public void onMouseReleased(IMouseCaptureContext sender, int mouseId) {\r
-// }});\r
- }\r
- \r
- @Override\r
- public void addedToContext(ICanvasContext ctx) {\r
- super.addedToContext(ctx);\r
- superCtx = ctx;\r
- if (enabled) enable();\r
- }\r
- \r
- @Override\r
- public void removedFromContext(ICanvasContext ctx) {\r
- assert(superCtx==ctx);\r
- if (enabled) disable();\r
- superCtx = null;\r
- super.removedFromContext(ctx);\r
- }\r
- \r
- public void setEnabled(boolean enabled)\r
- {\r
- if (this.enabled == enabled) return;\r
- if (enabled) enable(); else disable();\r
- }\r
- \r
- void enable() {\r
- superCtx.getEventHandlerStack().add(sub.getEventHandlerStack(), eventPriority);\r
-// superCtx.getPainterStack().add(sub.getPainterStack(), paintPriority);\r
- //superCtx.getHintStack().addHintContext(subHintStack, hintPriority);\r
- sub.getContentContext().addPaintableContextListener(paintableCtxListener);\r
- origSubCursorCtx = sub.getMouseCursorContext();\r
- sub.setMouseCursorContext(getContext().getMouseCursorContext());\r
- origSubCaptureCtx = sub.getMouseCaptureContext();\r
- sub.setMouseCaptureContext(getContext().getMouseCaptureContext());\r
- assert(sub.getDefaultHintContext().getHint(Hints.KEY_SUPER_CANVAS)==null);\r
- //sub.getDefaultHintContext().setHint(Hints.KEY_SUPER_CANVAS, ctx);\r
- this.enabled = true;\r
- }\r
- \r
- void disable() {\r
- sub.getDefaultHintContext().removeHint(Hints.KEY_SUPER_CANVAS);\r
- sub.setMouseCaptureContext(origSubCaptureCtx); \r
- sub.setMouseCursorContext(origSubCursorCtx);\r
- sub.getContentContext().removePaintableContextListener(paintableCtxListener);\r
- //ctx.getHintStack().removeHintContext(subHintStack);\r
-// superCtx.getPainterStack().remove(sub.getPainterStack());\r
- superCtx.getEventHandlerStack().remove(sub.getEventHandlerStack());\r
- this.enabled = false;\r
- }\r
-\r
-}\r
+/*******************************************************************************
+ * Copyright (c) 2007, 2010 Association for Decentralized Information Management
+ * in Industry THTH ry.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * VTT Technical Research Centre of Finland - initial API and implementation
+ *******************************************************************************/
+package org.simantics.g2d.participant;
+
+import org.simantics.g2d.canvas.Hints;
+import org.simantics.g2d.canvas.ICanvasContext;
+import org.simantics.g2d.canvas.IMouseCaptureContext;
+import org.simantics.g2d.canvas.IMouseCursorContext;
+import org.simantics.g2d.canvas.IContentContext;
+import org.simantics.g2d.canvas.IContentContext.IContentListener;
+import org.simantics.g2d.canvas.impl.AbstractCanvasParticipant;
+import org.simantics.g2d.canvas.impl.DependencyReflection.Dependency;
+
+/**
+ * Subcanvas encapsulates a canvas (another) in one participant.
+ *
+ *
+ * @author Toni Kalajainen
+ */
+public class SubCanvas extends AbstractCanvasParticipant {
+
+ @Dependency TransformUtil util;
+
+ private boolean enabled = true;
+ private ICanvasContext superCtx = null;
+
+ /** Sub-Canvas */
+ private ICanvasContext sub;
+ int eventPriority, paintPriority, hintPriority;
+ //IHintContext subHintStack;
+ IMouseCursorContext origSubCursorCtx;
+ IMouseCaptureContext origSubCaptureCtx;
+
+ // Subcanvas has become dirty, make super canvas also dirty
+ IContentListener paintableCtxListener = new IContentListener() {
+
+ @Override
+ public void onDirty(IContentContext sender) {
+ if (superCtx==null) return;
+ superCtx.getContentContext().setDirty();
+ }
+ };
+
+ public SubCanvas(ICanvasContext subCanvas, int eventPriority, int paintPriority, int hintPriority) {
+ assert(subCanvas!=null);
+ this.sub = subCanvas;
+ this.eventPriority = eventPriority;
+ this.paintPriority = paintPriority;
+ this.hintPriority = hintPriority;
+ //subHintStack = sub.getHintStack().createStackRead(sub.getDefaultHintContext());
+
+// subCanvas.getMouseCaptureContext().addMouseCaptureListener(new IMouseCaptureListener() {
+// @Override
+// public void onMouseCaptured(IMouseCaptureContext sender, int mouseId) {
+// if (superCtx==null) return;
+// superCtx.getMouseCaptureContext().
+// }
+// @Override
+// public void onMouseReleased(IMouseCaptureContext sender, int mouseId) {
+// }});
+ }
+
+ @Override
+ public void addedToContext(ICanvasContext ctx) {
+ super.addedToContext(ctx);
+ superCtx = ctx;
+ if (enabled) enable();
+ }
+
+ @Override
+ public void removedFromContext(ICanvasContext ctx) {
+ assert(superCtx==ctx);
+ if (enabled) disable();
+ superCtx = null;
+ super.removedFromContext(ctx);
+ }
+
+ public void setEnabled(boolean enabled)
+ {
+ if (this.enabled == enabled) return;
+ if (enabled) enable(); else disable();
+ }
+
+ void enable() {
+ superCtx.getEventHandlerStack().add(sub.getEventHandlerStack(), eventPriority);
+// superCtx.getPainterStack().add(sub.getPainterStack(), paintPriority);
+ //superCtx.getHintStack().addHintContext(subHintStack, hintPriority);
+ sub.getContentContext().addPaintableContextListener(paintableCtxListener);
+ origSubCursorCtx = sub.getMouseCursorContext();
+ sub.setMouseCursorContext(getContext().getMouseCursorContext());
+ origSubCaptureCtx = sub.getMouseCaptureContext();
+ sub.setMouseCaptureContext(getContext().getMouseCaptureContext());
+ assert(sub.getDefaultHintContext().getHint(Hints.KEY_SUPER_CANVAS)==null);
+ //sub.getDefaultHintContext().setHint(Hints.KEY_SUPER_CANVAS, ctx);
+ this.enabled = true;
+ }
+
+ void disable() {
+ sub.getDefaultHintContext().removeHint(Hints.KEY_SUPER_CANVAS);
+ sub.setMouseCaptureContext(origSubCaptureCtx);
+ sub.setMouseCursorContext(origSubCursorCtx);
+ sub.getContentContext().removePaintableContextListener(paintableCtxListener);
+ //ctx.getHintStack().removeHintContext(subHintStack);
+// superCtx.getPainterStack().remove(sub.getPainterStack());
+ superCtx.getEventHandlerStack().remove(sub.getEventHandlerStack());
+ this.enabled = false;
+ }
+
+}