* Bug 13798 fixed: now datatip text updates when moving curve or changing data 57/20557/4
St├ęphane Mottelet [Wed, 17 Oct 2018 07:42:36 +0000 (09:42 +0200)]
http://bugzilla.scilab.org/show_bug.cgi?id=13798

Video: http://bugzilla.scilab.org/attachment.cgi?id=4828

Change-Id: I03bd04b59c5b8612d33ad3c46feb84cc3793de37

scilab/CHANGES.md
scilab/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/polyline/Polyline.java
scilab/modules/graphic_objects/tests/nonreg_tests/bug_13798.tst [new file with mode: 0644]

index 6fde78a..ce50044 100644 (file)
@@ -471,6 +471,7 @@ Known issues
 * [#13632](http://bugzilla.scilab.org/show_bug.cgi?id=13632): The syntax `savematfile(filename, varnames)` was not documented. Other information was missing in the page.
 * [#13778](http://bugzilla.scilab.org/show_bug.cgi?id=13778): The size of `repmat([], [1 1 3])` was [0 0 3] instead of [0 0].
 * [#13785](http://bugzilla.scilab.org/show_bug.cgi?id=13785): `gettext` was poorly documented.
+* [#13798](http://bugzilla.scilab.org/show_bug.cgi?id=13798): Datatips did not update when moving curve or changing data
 * [#13915](http://bugzilla.scilab.org/show_bug.cgi?id=13915): On Windows, reinstalling an ATOMS toolbox with an archive already present failed.
 * [#13936](http://bugzilla.scilab.org/show_bug.cgi?id=13936): The exponentiation of a matrix was much slower than its multiple products.
 * [#14010](http://bugzilla.scilab.org/show_bug.cgi?id=14010): Browsevar was not displaying dimensions > 2 of hypermatrix
index b105123..8cf4f01 100644 (file)
@@ -18,6 +18,7 @@ package org.scilab.modules.graphic_objects.polyline;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_ARROW_SIZE_FACTOR__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_BAR_WIDTH__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_CLOSED__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_DATA_MODEL__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_DATATIPS_COUNT__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_DATATIPS__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_DATATIP_DISPLAY_FNC__;
@@ -56,7 +57,7 @@ public class Polyline extends ClippableContouredObject {
     private enum PolylineProperty { CLOSED, ARROWSIZEFACTOR, POLYLINESTYLE,
                                     INTERPCOLORVECTOR, INTERPCOLORVECTORSET, INTERPCOLORMODE,
                                     XSHIFT, YSHIFT, ZSHIFT, BARWIDTH, DATATIPS, DATATIPSCOUNT,
-                                    TIP_DISPLAY_FNC, TIP_MARK, COLORSET, DATATIPDISPLAYMODE
+                                    TIP_DISPLAY_FNC, TIP_MARK, COLORSET, DATATIPDISPLAYMODE, DATA
                                   };
 
     public enum DatatipDisplayMode { ALWAYS, MOUSECLICK, MOUSEOVER;
@@ -170,6 +171,8 @@ public class Polyline extends ClippableContouredObject {
                 return PolylineProperty.ZSHIFT;
             case __GO_BAR_WIDTH__ :
                 return PolylineProperty.BARWIDTH;
+            case __GO_DATA_MODEL__ :
+                return PolylineProperty.DATA;
             case __GO_DATATIPS__ :
                 return PolylineProperty.DATATIPS;
             case __GO_DATATIPS_COUNT__ :
@@ -215,6 +218,8 @@ public class Polyline extends ClippableContouredObject {
                     return getZShift();
                 case BARWIDTH:
                     return getBarWidth();
+                case DATA:
+                    return getIdentifier();
                 case DATATIPS:
                     return getDatatips();
                 case DATATIPSCOUNT:
@@ -269,6 +274,9 @@ public class Polyline extends ClippableContouredObject {
                     case BARWIDTH:
                         setBarWidth((Double) value);
                         break;
+                    case DATA:
+                        updateDatatips();
+                        break;
                     case DATATIPS:
                         setDatatips((Integer[]) value);
                         break;
@@ -469,6 +477,17 @@ public class Polyline extends ClippableContouredObject {
         return datatips.toArray(new Integer[datatips.size()]);
     }
 
+    public UpdateStatus updateDatatips() {
+        GraphicController controller =  GraphicController.getController();
+        for (Integer uid : getDatatips()) {
+            Datatip datatip = (Datatip) controller.getObjectFromId(uid);
+            datatip.updateText();
+            //trigger redraw
+            controller.setProperty(uid, __GO_DATA_MODEL__, 0);
+        }
+        return UpdateStatus.Success;
+    }
+
     /**
      * @param datatips the datatips to set
      */
diff --git a/scilab/modules/graphic_objects/tests/nonreg_tests/bug_13798.tst b/scilab/modules/graphic_objects/tests/nonreg_tests/bug_13798.tst
new file mode 100644 (file)
index 0000000..f552352
--- /dev/null
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2018 - St├ęphane MOTTELET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- TEST WITH GRAPHIC -->
+// <-- NO CHECK REF -->
+
+// <-- Non-regression test for bug 13798 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=13798
+//
+// <-- Short Description -->
+// Datatips does not update when moving a curve or changing its data
+plot([0 1],[0 1]);
+e = gce().children;
+d = datatipCreate(e,[.5,.5]);
+e.data(1,:) = [0.1,0.5];
+assert_checkequal(d.text,["X:0.55";"Y:0.75"]);