]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/nodes/RulerNode.java
Add max digits for ruler node for subclasses to override
[simantics/platform.git] / bundles / org.simantics.scenegraph / src / org / simantics / scenegraph / g2d / nodes / RulerNode.java
index 27c1c1fd2bae4c1d2469ea24af1d0259647b152c..7e962976e52f1b67ec5f489af713c25357e90a2b 100644 (file)
@@ -111,7 +111,7 @@ public class RulerNode extends G2DNode {
             if(x > 20) {
                 double val = (x-offsetX)/scaleX / getTransform().getScaleX();
                 double modifiedValue = modifyHorizontalValue(val);
-                String str = formatValue(modifiedValue);
+                String str = formatValue(modifiedValue, getMaxDigits());
                 FontMetrics fm = g.getFontMetrics();
                 Rectangle2D r = fm.getStringBounds(str, g);
                 if((x-r.getWidth()/2) > previousText) {
@@ -144,7 +144,7 @@ public class RulerNode extends G2DNode {
             if(y > 20) {
                 double val = (y-offsetY)/scaleY / getTransform().getScaleY();
                 double modifiedValue = modifyVerticalValue(val);
-                String str = formatValue(modifiedValue);
+                String str = formatValue(modifiedValue, getMaxDigits());
                 FontMetrics fm = g.getFontMetrics();
                 Rectangle2D r = fm.getStringBounds(str, g);
                 if(y-1+r.getHeight()/2 > previousText) {
@@ -202,11 +202,15 @@ public class RulerNode extends G2DNode {
     private static final transient String[] SI_UNIT_LARGE_PREFIXES = {
         "k", "M", "G", "T", "P", "E", "Z", "Y"
     };
+    
+    protected int getMaxDigits() {
+        return MAX_DIGITS;
+    }
 
-    public static String formatValue(double value) {
+    public static String formatValue(double value, int maxDigits) {
         int magnitude = (int) Math.round(Math.log10(value));
         //System.out.println("magnitude: " + magnitude + ", " + value);
-        int allowedDecimals = MAX_DIGITS;
+        int allowedDecimals = maxDigits;
         allowedDecimals -= Math.abs(magnitude);
         if (allowedDecimals < 0)
             allowedDecimals = 0;