X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.diagram%2Fsrc%2Forg%2Fsimantics%2Fdiagram%2Felements%2FTextGridNode.java;h=afd9772db217cff501f82f360d1f9ecc6013d438;hb=569d9bd9d6a270e8ede5867ff0b1f13475047e8b;hp=20d419ef089cb4690046de362a14755d258881e4;hpb=5b16b1d94b0c046803f8b246d32b74f289eca646;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.diagram/src/org/simantics/diagram/elements/TextGridNode.java b/bundles/org.simantics.diagram/src/org/simantics/diagram/elements/TextGridNode.java index 20d419ef0..afd9772db 100644 --- a/bundles/org.simantics.diagram/src/org/simantics/diagram/elements/TextGridNode.java +++ b/bundles/org.simantics.diagram/src/org/simantics/diagram/elements/TextGridNode.java @@ -11,15 +11,8 @@ *******************************************************************************/ package org.simantics.diagram.elements; -import gnu.trove.map.TIntObjectMap; -import gnu.trove.map.TMap; -import gnu.trove.map.hash.THashMap; -import gnu.trove.map.hash.TIntObjectHashMap; -import gnu.trove.procedure.TObjectProcedure; - import java.awt.Color; import java.awt.Font; -import java.awt.Graphics2D; import java.awt.geom.AffineTransform; import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; @@ -42,6 +35,12 @@ import org.simantics.scenegraph.g2d.nodes.Decoration; import org.simantics.scenegraph.utils.NodeUtil; import org.simantics.scl.runtime.function.Function1; +import gnu.trove.map.TIntObjectMap; +import gnu.trove.map.TMap; +import gnu.trove.map.hash.THashMap; +import gnu.trove.map.hash.TIntObjectHashMap; +import gnu.trove.procedure.TObjectProcedure; + /** * TODO: does not work remotely, e.g. rowIds */ @@ -264,13 +263,41 @@ public class TextGridNode extends G2DParentNode implements Decoration { return rowIds.get(y); } + class FontSizeSum implements TObjectProcedure { + + final double[] hs; + + FontSizeSum(int maxY) { + hs = new double[maxY+1]; + } + + @Override + public boolean execute(Cell key) { + A a = nodes.get(key); + int h = a.getFont().getSize(); + if(h > hs[key.y]) + hs[key.y] = h; + return true; + } + + public double getH() { + double result = 0; + for(int i=0;i translator = null; private static double FACTOR = 1.0; @@ -350,8 +377,8 @@ public class TextGridNode extends G2DParentNode implements Decoration { Rectangle2D bounds = super.getBoundsInLocal(false); if(bounds == null) return false; Point2D localPos = NodeUtil.worldToLocal(this, event.controlPosition, new Point2D.Double()); - double x = localPos.getX(); - double y = localPos.getY()+2.1*computeRows()*(up ? 1.0 : 0.0); + double x = localPos.getX(); + double y = localPos.getY()+(up ? bounds.getHeight() : 0.0); boolean hit = bounds.contains(x, y); return hit;