X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.diagram%2Fsrc%2Forg%2Fsimantics%2Fdiagram%2Felements%2FEditorStateManager.java;h=1223d8eaffe74fe606d0461d7b122676622736c2;hp=5c59177cccf4f1c3a8088ff08690adf79c5c7ac7;hb=e1c5d8d7c5589cfa4a254e167f4d9f0e66df6bf7;hpb=1831379a76507e86e0f3c15f6018ca044e62de7d diff --git a/bundles/org.simantics.diagram/src/org/simantics/diagram/elements/EditorStateManager.java b/bundles/org.simantics.diagram/src/org/simantics/diagram/elements/EditorStateManager.java index 5c59177cc..1223d8eaf 100644 --- a/bundles/org.simantics.diagram/src/org/simantics/diagram/elements/EditorStateManager.java +++ b/bundles/org.simantics.diagram/src/org/simantics/diagram/elements/EditorStateManager.java @@ -1,3 +1,14 @@ +/******************************************************************************* + * Copyright (c) 2017 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: + * Semantum Oy - initial API and implementation + *******************************************************************************/ package org.simantics.diagram.elements; import java.awt.geom.Point2D; @@ -13,7 +24,8 @@ import org.simantics.scenegraph.g2d.events.KeyEvent.KeyPressedEvent; import org.simantics.scenegraph.g2d.events.MouseEvent.MouseClickEvent; import org.simantics.scenegraph.g2d.nodes.SingleElementNode; import org.simantics.scl.runtime.function.Function1; -import org.simantics.scl.runtime.function.Function2; +import org.simantics.scl.runtime.function.Function3; +import org.simantics.scl.runtime.tuple.Tuple4; import com.kitfox.svg.SVGDiagram; import com.kitfox.svg.SVGElement; @@ -36,6 +48,23 @@ class EditorStateManager { private LinkedList editorState = null; private int editorStateIndex = 0; + static class SVGMeasurementContextImpl implements SVGMeasurementContext { + private SVGNode node; + public SVGMeasurementContextImpl(SVGNode node) { + this.node = node; + } + @Override + public Tuple4 getBoundingBox(String id) { + try { + Rectangle2D rect = node.getElementBounds(id); + if(rect == null) return null; + return new Tuple4(rect.getX(), rect.getY(), rect.getWidth(), rect.getHeight()); + } catch (SVGException e) { + return null; + } + } + } + EditorStateManager(SVGNode node) { this.node = node; } @@ -119,9 +148,9 @@ class EditorStateManager { SingleElementNode sne = node.getSingleElementNode(); if (sne != null) { EditorState es = currentState(); - Function2 editor = sne.getParameter("textEditor"); + Function3 editor = sne.getParameter("textEditor"); if(editor != null) { - editor.apply(es.base.textElementId, es.currentText); + editor.apply(new SVGMeasurementContextImpl(node), es.base.textElementId, es.currentText); } } }