Datatip: added datatipManagerMode 19/10319/2
Pedro Arthur [Fri, 25 Jan 2013 18:49:39 +0000 (16:49 -0200)]
+ datatipManagerMode() -> toggle on cur fig.
                    (figurehandle) -> toggle on figure.
                    (%t|f) enable/disable on cur. fig.
                    (fig, %t|f) enable/disable on fig.

+Improved datatip code.

+Fix: datatipRemoveAll, datatipSetOrienattion

+Added: tip_interp_mode property.

+Removed useless files.

+Prepare code to add displayFunction

Change-Id: Ib69d9ec19ddcb60c7c49dcad46c6165b94b25471

47 files changed:
scilab/modules/graphic_objects/includes/graphicObjectProperties.h
scilab/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/datatip/Datatip.java
scilab/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/GraphicObjectProperties.java
scilab/modules/graphic_objects/src/scripts/propertiesMap.properties
scilab/modules/graphics/macros/%h_p.sci
scilab/modules/graphics/macros/datatips/datatipRemove.sci [deleted file]
scilab/modules/graphics/macros/datatips/datatipRemoveAll.sci
scilab/modules/graphics/macros/datatips/datatipSetOrientation.sci
scilab/modules/graphics/src/c/getHandleProperty/GetHashTable.c
scilab/modules/graphics/src/c/getHandleProperty/SetHashTable.c
scilab/modules/graphics/src/c/getHandleProperty/getHandleProperty.h
scilab/modules/graphics/src/c/getHandleProperty/get_datatip_property.c
scilab/modules/graphics/src/c/getHandleProperty/setHandleProperty.h
scilab/modules/graphics/src/c/getHandleProperty/set_datatip_property.c
scilab/modules/gui/Makefile.am
scilab/modules/gui/Makefile.in
scilab/modules/gui/etc/graphics_menubar.xml
scilab/modules/gui/etc/graphics_toolbar.xml
scilab/modules/gui/includes/gw_gui.h
scilab/modules/gui/sci_gateway/c/gw_gui.c
scilab/modules/gui/sci_gateway/cpp/sci_datatip_manager_mode.cpp [new file with mode: 0644]
scilab/modules/gui/sci_gateway/cpp/sci_datatipcreate.cpp
scilab/modules/gui/sci_gateway/cpp/sci_datatipremove.cpp
scilab/modules/gui/sci_gateway/cpp/sci_datatipsetinterp.cpp [deleted file]
scilab/modules/gui/sci_gateway/gui_gateway.xml
scilab/modules/gui/src/c/gui.vcxproj
scilab/modules/gui/src/c/gui.vcxproj.filters
scilab/modules/gui/src/java/org/scilab/modules/gui/datatip/DatatipActivateCallBack.java [deleted file]
scilab/modules/gui/src/java/org/scilab/modules/gui/datatip/DatatipCommon.java
scilab/modules/gui/src/java/org/scilab/modules/gui/datatip/DatatipCreate.java
scilab/modules/gui/src/java/org/scilab/modules/gui/datatip/DatatipDelete.java
scilab/modules/gui/src/java/org/scilab/modules/gui/datatip/DatatipDrag.java
scilab/modules/gui/src/java/org/scilab/modules/gui/datatip/DatatipHighlight.java [deleted file]
scilab/modules/gui/src/java/org/scilab/modules/gui/datatip/DatatipManager.java [new file with mode: 0644]
scilab/modules/gui/src/java/org/scilab/modules/gui/datatip/DatatipManagerMode.java
scilab/modules/gui/src/java/org/scilab/modules/gui/datatip/DatatipMove.java
scilab/modules/gui/src/java/org/scilab/modules/gui/datatip/DatatipSelect.java [deleted file]
scilab/modules/gui/src/java/org/scilab/modules/gui/editor/Editor.java
scilab/modules/gui/src/java/org/scilab/modules/gui/editor/EditorEventListener.java
scilab/modules/gui/src/jni/Datatip.giws.xml
scilab/modules/gui/src/jni/DatatipCreate.cpp
scilab/modules/gui/src/jni/DatatipCreate.hxx
scilab/modules/gui/src/jni/DatatipDelete.cpp [new file with mode: 0644]
scilab/modules/gui/src/jni/DatatipDelete.hxx [moved from scilab/modules/gui/src/jni/DatatipFunctions.hxx with 63% similarity]
scilab/modules/gui/src/jni/DatatipFunctions.cpp [deleted file]
scilab/modules/gui/src/jni/DatatipManager.cpp [new file with mode: 0644]
scilab/modules/gui/src/jni/DatatipManager.hxx [new file with mode: 0644]

index e4b90da..a08afa0 100644 (file)
 #define __GO_DATATIP_ORIENTATION__         299
 #define __GO_DATATIP_3COMPONENT__          300
 #define __GO_DATATIP_AUTOORIENTATION__          301
+#define __GO_DATATIP_INTERP_MODE__          302
+#define __GO_DATATIP_DISPLAY_FNC__          303
 
 
 #endif /* !__GRAPHIC_OBJECT_PROPERTIES_H__ */
index a41c319..d675856 100644 (file)
@@ -27,13 +27,17 @@ public class Datatip extends Text {
     Double[] tipData;
     /** false = display only (X, Y), true = display (X, Y, Z)*/
     Boolean use3component;
+    /** false = no interpolation between point segments*/
+    Boolean interpMode;
     /** Displayed number format*/
     DecimalFormat tipTextFormat;
+    /** Display function*/
+    String displayFnc;
     /** For automatic update the datatip orientation*/
     Boolean autoOrientation;
 
 
-    enum DatatipObjectProperty { TIP_DATA, TIP_ORIENTATION, TIP_AUTOORIENTATION, TIP_3COMPONENT };
+    enum DatatipObjectProperty { TIP_DATA, TIP_ORIENTATION, TIP_AUTOORIENTATION, TIP_3COMPONENT, TIP_INTERP_MODE, TIP_DISPLAY_FNC };
     enum TipOrientation { TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT, BOTTOM_RIGHT;
 
                           /**
@@ -68,6 +72,8 @@ public class Datatip extends Text {
         autoOrientation = true;
         setOrientationAsEnum(TipOrientation.TOP_RIGHT);
         tipTextFormat = new DecimalFormat("#.####");
+        interpMode = true;
+        displayFnc = null;
         setBox(true);
         setLineMode(true);
         setFillMode(true);
@@ -99,6 +105,10 @@ public class Datatip extends Text {
                 return DatatipObjectProperty.TIP_3COMPONENT;
             case __GO_DATATIP_AUTOORIENTATION__:
                 return DatatipObjectProperty.TIP_AUTOORIENTATION;
+          case __GO_DATATIP_INTERP_MODE__:
+                return DatatipObjectProperty.TIP_INTERP_MODE;
+          case __GO_DATATIP_DISPLAY_FNC__:
+                return DatatipObjectProperty.TIP_DISPLAY_FNC;
             default:
                 return super.getPropertyFromName(propertyName);
         }
@@ -116,6 +126,10 @@ public class Datatip extends Text {
             return isUsing3Component();
         } else if (property == DatatipObjectProperty.TIP_AUTOORIENTATION) {
             return isAutoOrientationEnabled();
+        } else if (property == DatatipObjectProperty.TIP_INTERP_MODE) {
+            return getInterpMode();
+        } else if (property == DatatipObjectProperty.TIP_DISPLAY_FNC) {
+            return getDisplayFunction();
         } else {
             return super.getProperty(property);
         }
@@ -135,6 +149,10 @@ public class Datatip extends Text {
             setUse3Component((Boolean)value);
         } else if (property == DatatipObjectProperty.TIP_AUTOORIENTATION) {
             setAutoOrientation((Boolean)value);
+        } else if (property == DatatipObjectProperty.TIP_INTERP_MODE) {
+            setInterpMode((Boolean) value);
+        } else if (property == DatatipObjectProperty.TIP_DISPLAY_FNC) {
+            setDisplayFunction((String) value);
         } else {
             return super.setProperty(property, value);
         }
@@ -241,6 +259,22 @@ public class Datatip extends Text {
         setTextStrings(textArray);
     }
 
+    public Boolean getInterpMode() {
+        return interpMode;
+    }
+    
+    public String getDisplayFunction() {
+        return displayFnc;
+    }
+
+    public void setInterpMode(Boolean mode) {
+        interpMode = mode;
+    }
+    
+    public void setDisplayFunction(String fnc) {
+        displayFnc = fnc;
+    }
+
     @Override
     public Double[] getPosition() {
         return getTipData();
index c505022..b0a0980 100644 (file)
@@ -361,6 +361,8 @@ public class GraphicObjectProperties {
     public static final int __GO_DATATIP_ORIENTATION__ =    299;
     public static final int __GO_DATATIP_3COMPONENT__ =     300;
     public static final int __GO_DATATIP_AUTOORIENTATION__ =     301;
+    public static final int __GO_DATATIP_INTERP_MODE__ =     302;
+    public static final int __GO_DATATIP_DISPLAY_FNC__ =     303;
 
 
 }
index 295d5d1..a7278b2 100644 (file)
 @DECLARE@ __GO_DATATIP_ORIENTATION__ @EQUAL@    299 @END@
 @DECLARE@ __GO_DATATIP_3COMPONENT__ @EQUAL@     300 @END@
 @DECLARE@ __GO_DATATIP_AUTOORIENTATION__ @EQUAL@     301 @END@
+@DECLARE@ __GO_DATATIP_INTERP_MODE__ @EQUAL@     302 @END@
+@DECLARE@ __GO_DATATIP_DISPLAY_FNC__ @EQUAL@     303 @END@
 
index a8351ab..28c71ac 100644 (file)
@@ -555,6 +555,16 @@ function %h_p(h)
                 "tip_orientation = "+sci2exp(h.tip_orientation)
                 "tip_3component = "+sci2exp(h.tip_3component)
                 "tip_auto_orientation = "+sci2exp(h.tip_auto_orientation)
+                "tip_interp_mode = "+sci2exp(h.tip_interp_mode)
+                "font_foreground = "+string(h.font_foreground)
+                "foreground = "+string(h.foreground)
+                "background = "+string(h.background)
+                "mark_mode = "+sci2exp(h.mark_mode)
+                "mark_style = "+sci2exp(h.mark_style)
+                "mark_size_unit = "+sci2exp(h.mark_size_unit)
+                "mark_size = "+string(h.mark_size)
+                "mark_foreground = "+string(h.mark_foreground)
+                "mark_background = "+string(h.mark_background)
                 "user_data = "+fmtuser_data(u)
                 "tag = "+h.tag
             ]
diff --git a/scilab/modules/graphics/macros/datatips/datatipRemove.sci b/scilab/modules/graphics/macros/datatips/datatipRemove.sci
deleted file mode 100644 (file)
index d9328a1..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
-// Copyright (C) 2010 - INRIA - Serge Steer <serge.steer@inria.fr>
-//
-// This file must be used under the terms of the CeCILL.
-// This source file is licensed as described in the file COPYING, which
-// you should have received as part of this distribution.  The terms
-// are also available at;
-// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
-
-function datatipRemove(handle,ind)
-  if argn(2)<1 then
-    error(msprintf(_("%s: Wrong number of input argument(s): At least %d expected.\n"),...
-                   "datatipRemove",1))
-  end
-
-
-  if argn(2)==1 then //handle on a tip
-    if type(handle)<>9|size(handle,'*')<>1|or(handle.type<>"Compound") then
-      error(msprintf(_("%s: Wrong type for input argument #%d: A ''%s'' handle expected.\n"),...
-                     "datatipRemove",1,"datatip"))
-    end
-    ind=[]
-
-    ax=handle.parent
-    while ax.type<>"Axes" then ax=ax.parent,end
-    curve_handles=datatipGetEntities(ax)
-
-    for k=1:size(curve_handles,'*')
-      ck=curve_handles(k)
-      ud=datatipGetStruct(ck);
-      if typeof(ud)=='datatips' then
-        ind=find(ud.tips.children==handle)
-        if ind<>[] then
-          curve_handle=ck
-          break
-        end
-      end
-    end
-    if ind==[] then return,end
-  else
-    curve_handle=handle;
-    if type(curve_handle)<>9|or(curve_handle.type<>"Polyline") then
-      error(msprintf(_("%s: Wrong type for input argument #%d: A ''%s'' handle expected.\n"),...
-                     "datatipRemove",1,"Polyline"))
-    end
-  end
-
-  ud=datatipGetStruct(curve_handle);// the curve datatips data structure
-  if  typeof(ud)<>'datatips' then return,end
-  tips=ud.tips.children
-  if ind<=size(tips,'*') then
-    if argn(2)==2
-      ind = length(tips) - ind + 1;
-    end
-    del=tips(ind)
-    if ud.selected==ind then
-      ud.selected=0;
-      datatipSetStruct(curve_handle,ud);
-    end
-    delete(del);
-  end
-
-endfunction
index 3e82463..0bf29b2 100644 (file)
@@ -38,14 +38,15 @@ function datatipRemoveAll(curve_handles)
   fig.immediate_drawing="off"
   for k=1:size(curve_handles,'*')
     ck=curve_handles(k);
-    ud=datatipGetStruct(ck)// the curve datatips data structure
-    if typeof(ud)=='datatips' then
-      if ud.tips <> []
-          delete(ud.tips);
+
+    num = 1;
+    for t=1:size(ck.children,'*')
+      tip = ck.children(num);
+      if tip.type == "Datatip" then
+          datatipRemove(tip);
+      else
+         num = num + 1;
       end
-      ud.tips=[]
-      ud.selected=0;
-      datatipSetStruct(ck,ud)
     end
   end
   fig.immediate_drawing=id
index 0235558..45daed8 100644 (file)
@@ -8,5 +8,13 @@
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
 
 function datatipSetOrientation(tip_handle,o)
-// to be removed
+    if o == "upper left" then
+        tip_handle.tip_orientation = 0;
+    elseif o == "upper right" then
+        tip_handle.tip_orientation = 1;
+    elseif o == "lower left" then
+        tip_handle.tip_orientation = 2;
+    elseif o == "lower right" then
+        tip_handle.tip_orientation = 3;
+    end
 endfunction
index f356257..9aa59ba 100644 (file)
@@ -46,7 +46,7 @@ typedef struct
  * don't forget to modify it each time the propertyTable
  * is modified.
  */
-#define NB_PROPERTIES 166
+#define NB_PROPERTIES 167
 
 /**
  * list of all property names and associated functions in scilab
@@ -219,7 +219,8 @@ static getHashTableCouple propertyTable[NB_PROPERTIES] =
     {"tip_data", get_tip_data_property},
     {"tip_orientation", get_tip_orientation_property},
     {"tip_3component", get_tip_3component_property},
-    {"tip_auto_orientation", get_tip_auto_orientation_property}
+    {"tip_auto_orientation", get_tip_auto_orientation_property},
+    {"tip_interp_mode", get_tip_interp_mode_property}
 };
 
 /*--------------------------------------------------------------------------*/
index b3c02b7..4c7aca9 100644 (file)
@@ -52,7 +52,7 @@ typedef struct
 * don't forget to modify it each time the propertyTable
 * is modified.
 */
-#define NB_PROPERTIES 161
+#define NB_PROPERTIES 162
 
 /**
 * list of all property names and associated functions in scilab
@@ -220,7 +220,8 @@ static setHashTableCouple propertyTable[NB_PROPERTIES] =
     {"tip_data", set_tip_data_property},
     {"tip_orientation", set_tip_orientation_property},
     {"tip_3component", set_tip_3component_property},
-    {"tip_auto_orientation", set_tip_auto_orientation_property}
+    {"tip_auto_orientation", set_tip_auto_orientation_property},
+    {"tip_interp_mode", set_tip_interp_mode_property}
 };
 
 /*--------------------------------------------------------------------------*/
index eb7258a..9534b7f 100644 (file)
@@ -184,5 +184,6 @@ int get_tip_data_property(void* _pvCtx, char *pobjUID);
 int get_tip_orientation_property(void* _pvCtx, char *pobjUID);
 int get_tip_3component_property(void* _pvCtx, char *pobjUID);
 int get_tip_auto_orientation_property(void* _pvCtx, char* pobjUID);
+int get_tip_interp_mode_property(void* _pvCtx, char* pobjUID);
 
 #endif /* _GET_HANDLE_PROPERTY_H_ */
index a1d8a61..460dfce 100644 (file)
@@ -97,7 +97,33 @@ int get_tip_auto_orientation_property(void* _pvCtx, char* pobjUID)
 
     if (piTip_auto_orientation == NULL)
     {
-        Scierror(999, _("'%s' property does not exist for this handle.\n"), "tip_3component");
+        Scierror(999, _("'%s' property does not exist for this handle.\n"), "tip_auto_orientation");
+        return -1;
+    }
+
+    if (tip_auto_orientation)
+    {
+        return sciReturnString(_pvCtx, "on");
+    }
+    else
+    {
+        return sciReturnString(_pvCtx, "off");
+    }
+}
+
+/**
+ * Get the datatip interpolation mode (on/off).
+ */
+int get_tip_interp_mode_property(void* _pvCtx, char* pobjUID)
+{
+    int tip_auto_orientation;
+    int *piTip_auto_orientation = &tip_auto_orientation;
+
+    getGraphicObjectProperty(pobjUID, __GO_DATATIP_INTERP_MODE__, jni_bool, (void **)&piTip_auto_orientation);
+
+    if (piTip_auto_orientation == NULL)
+    {
+        Scierror(999, _("'%s' property does not exist for this handle.\n"), "tip_interp_mode");
         return -1;
     }
 
index 59ca2b8..fb09f82 100644 (file)
@@ -185,5 +185,6 @@ int set_tip_data_property(void* _pvCtx, char* pobj, void* _pvData, int valueType
 int set_tip_orientation_property(void* _pvCtx, char* pobj, void* _pvData, int valueType, int nbRow, int nbCol);
 int set_tip_3component_property(void* _pvCtx, char* pobj, void* _pvData, int valueType, int nbRow, int nbCol);
 int set_tip_auto_orientation_property(void* _pvCtx, char* pobj, void* _pvData, int valueType, int nbRow, int nbCol);
+int set_tip_interp_mode_property(void* _pvCtx, char* pobj, void* _pvData, int valueType, int nbRow, int nbCol);
 
 #endif /* _SET_HANDLE_PROPERTY_H_ */
index 82a19e4..15b9590 100644 (file)
@@ -138,3 +138,28 @@ int set_tip_auto_orientation_property(void* _pvCtx, char* pobj, void* _pvData, i
     }
 }
 
+
+/**
+ * Set the datatip interpolation mode (on/off).
+ */
+int set_tip_interp_mode_property(void* _pvCtx, char* pobj, void* _pvData, int valueType, int nbRow, int nbCol)
+{
+    BOOL status = FALSE;
+    int interp_mode = tryGetBooleanValueFromStack(_pvData, valueType, nbRow, nbCol, "tip_interp_mode");
+    if (interp_mode == NOT_A_BOOLEAN_VALUE)
+    {
+        return SET_PROPERTY_ERROR;
+    }
+    status = setGraphicObjectProperty(pobj, __GO_DATATIP_INTERP_MODE__, &interp_mode, jni_bool, 1);
+
+    if (status == TRUE)
+    {
+        return SET_PROPERTY_SUCCEED;
+    }
+    else
+    {
+        Scierror(999, _("'%s' property does not exist for this handle.\n"), "tip_interp_mode");
+        return SET_PROPERTY_ERROR;
+    }
+}
+
index 3cece65..d5b9bcb 100755 (executable)
@@ -133,8 +133,10 @@ src/cpp/displaytree.cpp \
 src/jni/ScilabDisplayTree.cpp \
 src/jni/EditorManager.cpp \
 src/jni/StartGED.cpp \
-src/jni/DatatipFunctions.cpp \
-src/jni/StartPlotBrowser.cpp
+src/jni/StartPlotBrowser.cpp \
+src/jni/DatatipManager.cpp \
+src/jni/DatatipCreate.cpp \
+src/jni/DatatipDelete.cpp
 
 GIWS_WRAPPERS = \
 src/jni/SwingView.giws.xml \
@@ -205,8 +207,7 @@ sci_gateway/cpp/sci_openged.cpp \
 sci_gateway/cpp/sci_datatipcreate.cpp \
 sci_gateway/cpp/sci_datatipremove.cpp \
 sci_gateway/cpp/sci_plotbrowser.cpp \
-sci_gateway/cpp/sci_datatipsetinterp.cpp
-
+sci_gateway/cpp/sci_datatip_manager_mode.cpp
 
 libscigui_la_CPPFLAGS = \
                        -I$(srcdir)/includes/ \
index 91232be..e9c562e 100644 (file)
@@ -1,9 +1,9 @@
-# Makefile.in generated by automake 1.11.6 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
-    case $$MAKEFLAGS in \
-      *\\[\ \  ]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
-    esac; \
-    test $$am__dry = yes; \
-  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -134,12 +117,6 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
 am__installdirs = "$(DESTDIR)$(pkglibdir)" \
        "$(DESTDIR)$(libscigui_la_etcdir)" \
        "$(DESTDIR)$(libscigui_la_rootdir)" \
@@ -228,8 +205,10 @@ am__objects_2 = libscigui_algo_la-InitUIMenu.lo \
        libscigui_algo_la-ScilabDisplayTree.lo \
        libscigui_algo_la-EditorManager.lo \
        libscigui_algo_la-StartGED.lo \
-       libscigui_algo_la-DatatipFunctions.lo \
-       libscigui_algo_la-StartPlotBrowser.lo
+       libscigui_algo_la-StartPlotBrowser.lo \
+       libscigui_algo_la-DatatipManager.lo \
+       libscigui_algo_la-DatatipCreate.lo \
+       libscigui_algo_la-DatatipDelete.lo
 am_libscigui_algo_la_OBJECTS = $(am__objects_1) $(am__objects_2)
 libscigui_algo_la_OBJECTS = $(am_libscigui_algo_la_OBJECTS)
 @GUI_TRUE@am_libscigui_algo_la_rpath =
@@ -266,7 +245,7 @@ am__objects_5 = libscigui_la-sci_printsetupbox.lo \
        libscigui_la-sci_openged.lo libscigui_la-sci_datatipcreate.lo \
        libscigui_la-sci_datatipremove.lo \
        libscigui_la-sci_plotbrowser.lo \
-       libscigui_la-sci_datatipsetinterp.lo
+       libscigui_la-sci_datatip_manager_mode.lo
 am_libscigui_la_OBJECTS = $(am__objects_4) $(am__objects_5)
 libscigui_la_OBJECTS = $(am_libscigui_la_OBJECTS)
 @GUI_TRUE@am_libscigui_la_rpath = -rpath $(pkglibdir)
@@ -296,11 +275,6 @@ SOURCES = $(libscigui_algo_la_SOURCES) $(libscigui_disable_la_SOURCES) \
        $(libscigui_la_SOURCES)
 DIST_SOURCES = $(libscigui_algo_la_SOURCES) \
        $(libscigui_disable_la_SOURCES) $(libscigui_la_SOURCES)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
 DATA = $(libscigui_la_etc_DATA) $(libscigui_la_root_DATA) \
        $(libscigui_la_sci_gateway_DATA) \
        $(nobase_libscigui_la_icons_DATA)
@@ -679,8 +653,10 @@ src/cpp/displaytree.cpp \
 src/jni/ScilabDisplayTree.cpp \
 src/jni/EditorManager.cpp \
 src/jni/StartGED.cpp \
-src/jni/DatatipFunctions.cpp \
-src/jni/StartPlotBrowser.cpp
+src/jni/StartPlotBrowser.cpp \
+src/jni/DatatipManager.cpp \
+src/jni/DatatipCreate.cpp \
+src/jni/DatatipDelete.cpp
 
 GIWS_WRAPPERS = \
 src/jni/SwingView.giws.xml \
@@ -743,7 +719,7 @@ sci_gateway/cpp/sci_openged.cpp \
 sci_gateway/cpp/sci_datatipcreate.cpp \
 sci_gateway/cpp/sci_datatipremove.cpp \
 sci_gateway/cpp/sci_plotbrowser.cpp \
-sci_gateway/cpp/sci_datatipsetinterp.cpp
+sci_gateway/cpp/sci_datatip_manager_mode.cpp
 
 libscigui_la_CPPFLAGS = \
                        -I$(srcdir)/includes/ \
@@ -1031,7 +1007,6 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
            echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
            cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
        esac;
-$(top_srcdir)/Makefile.incl.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -1052,6 +1027,7 @@ clean-noinstLTLIBRARIES:
        done
 install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
        @$(NORMAL_INSTALL)
+       test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
        @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
        list2=; for p in $$list; do \
          if test -f $$p; then \
@@ -1059,8 +1035,6 @@ install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
          else :; fi; \
        done; \
        test -z "$$list2" || { \
-         echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \
-         $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \
          echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
          $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
        }
@@ -1082,11 +1056,11 @@ clean-pkglibLTLIBRARIES:
          echo "rm -f \"$${dir}/so_locations\""; \
          rm -f "$${dir}/so_locations"; \
        done
-libscigui-algo.la: $(libscigui_algo_la_OBJECTS) $(libscigui_algo_la_DEPENDENCIES) $(EXTRA_libscigui_algo_la_DEPENDENCIES) 
+libscigui-algo.la: $(libscigui_algo_la_OBJECTS) $(libscigui_algo_la_DEPENDENCIES) 
        $(CXXLINK) $(am_libscigui_algo_la_rpath) $(libscigui_algo_la_OBJECTS) $(libscigui_algo_la_LIBADD) $(LIBS)
-libscigui-disable.la: $(libscigui_disable_la_OBJECTS) $(libscigui_disable_la_DEPENDENCIES) $(EXTRA_libscigui_disable_la_DEPENDENCIES) 
+libscigui-disable.la: $(libscigui_disable_la_OBJECTS) $(libscigui_disable_la_DEPENDENCIES) 
        $(LINK) -rpath $(pkglibdir) $(libscigui_disable_la_OBJECTS) $(libscigui_disable_la_LIBADD) $(LIBS)
-libscigui.la: $(libscigui_la_OBJECTS) $(libscigui_la_DEPENDENCIES) $(EXTRA_libscigui_la_DEPENDENCIES) 
+libscigui.la: $(libscigui_la_OBJECTS) $(libscigui_la_DEPENDENCIES) 
        $(CXXLINK) $(am_libscigui_la_rpath) $(libscigui_la_OBJECTS) $(libscigui_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
@@ -1107,7 +1081,9 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_algo_la-ContextMenu.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_algo_la-CreateUIControl.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_algo_la-CreateUimenu.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_algo_la-DatatipFunctions.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_algo_la-DatatipCreate.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_algo_la-DatatipDelete.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_algo_la-DatatipManager.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_algo_la-EditorManager.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_algo_la-GetConsoleShowHiddenHandles.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_algo_la-GetScreenProperty.Plo@am__quote@
@@ -1184,9 +1160,9 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_la-gw_gui.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_la-sci_ClipBoard.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_la-sci_about.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_la-sci_datatip_manager_mode.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_la-sci_datatipcreate.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_la-sci_datatipremove.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_la-sci_datatipsetinterp.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_la-sci_delmenu.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_la-sci_displaytree.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_la-sci_exportUI.Plo@am__quote@
@@ -2024,13 +2000,6 @@ libscigui_algo_la-StartGED.lo: src/jni/StartGED.cpp
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@ $(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigui_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libscigui_algo_la-StartGED.lo `test -f 'src/jni/StartGED.cpp' || echo '$(srcdir)/'`src/jni/StartGED.cpp
 
-libscigui_algo_la-DatatipFunctions.lo: src/jni/DatatipFunctions.cpp
-@am__fastdepCXX_TRUE@  $(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigui_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libscigui_algo_la-DatatipFunctions.lo -MD -MP -MF $(DEPDIR)/libscigui_algo_la-DatatipFunctions.Tpo -c -o libscigui_algo_la-DatatipFunctions.lo `test -f 'src/jni/DatatipFunctions.cpp' || echo '$(srcdir)/'`src/jni/DatatipFunctions.cpp
-@am__fastdepCXX_TRUE@  $(am__mv) $(DEPDIR)/libscigui_algo_la-DatatipFunctions.Tpo $(DEPDIR)/libscigui_algo_la-DatatipFunctions.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='src/jni/DatatipFunctions.cpp' object='libscigui_algo_la-DatatipFunctions.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigui_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libscigui_algo_la-DatatipFunctions.lo `test -f 'src/jni/DatatipFunctions.cpp' || echo '$(srcdir)/'`src/jni/DatatipFunctions.cpp
-
 libscigui_algo_la-StartPlotBrowser.lo: src/jni/StartPlotBrowser.cpp
 @am__fastdepCXX_TRUE@  $(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigui_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libscigui_algo_la-StartPlotBrowser.lo -MD -MP -MF $(DEPDIR)/libscigui_algo_la-StartPlotBrowser.Tpo -c -o libscigui_algo_la-StartPlotBrowser.lo `test -f 'src/jni/StartPlotBrowser.cpp' || echo '$(srcdir)/'`src/jni/StartPlotBrowser.cpp
 @am__fastdepCXX_TRUE@  $(am__mv) $(DEPDIR)/libscigui_algo_la-StartPlotBrowser.Tpo $(DEPDIR)/libscigui_algo_la-StartPlotBrowser.Plo
@@ -2038,6 +2007,27 @@ libscigui_algo_la-StartPlotBrowser.lo: src/jni/StartPlotBrowser.cpp
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@ $(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigui_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libscigui_algo_la-StartPlotBrowser.lo `test -f 'src/jni/StartPlotBrowser.cpp' || echo '$(srcdir)/'`src/jni/StartPlotBrowser.cpp
 
+libscigui_algo_la-DatatipManager.lo: src/jni/DatatipManager.cpp
+@am__fastdepCXX_TRUE@  $(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigui_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libscigui_algo_la-DatatipManager.lo -MD -MP -MF $(DEPDIR)/libscigui_algo_la-DatatipManager.Tpo -c -o libscigui_algo_la-DatatipManager.lo `test -f 'src/jni/DatatipManager.cpp' || echo '$(srcdir)/'`src/jni/DatatipManager.cpp
+@am__fastdepCXX_TRUE@  $(am__mv) $(DEPDIR)/libscigui_algo_la-DatatipManager.Tpo $(DEPDIR)/libscigui_algo_la-DatatipManager.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='src/jni/DatatipManager.cpp' object='libscigui_algo_la-DatatipManager.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigui_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libscigui_algo_la-DatatipManager.lo `test -f 'src/jni/DatatipManager.cpp' || echo '$(srcdir)/'`src/jni/DatatipManager.cpp
+
+libscigui_algo_la-DatatipCreate.lo: src/jni/DatatipCreate.cpp
+@am__fastdepCXX_TRUE@  $(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigui_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libscigui_algo_la-DatatipCreate.lo -MD -MP -MF $(DEPDIR)/libscigui_algo_la-DatatipCreate.Tpo -c -o libscigui_algo_la-DatatipCreate.lo `test -f 'src/jni/DatatipCreate.cpp' || echo '$(srcdir)/'`src/jni/DatatipCreate.cpp
+@am__fastdepCXX_TRUE@  $(am__mv) $(DEPDIR)/libscigui_algo_la-DatatipCreate.Tpo $(DEPDIR)/libscigui_algo_la-DatatipCreate.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='src/jni/DatatipCreate.cpp' object='libscigui_algo_la-DatatipCreate.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigui_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libscigui_algo_la-DatatipCreate.lo `test -f 'src/jni/DatatipCreate.cpp' || echo '$(srcdir)/'`src/jni/DatatipCreate.cpp
+
+libscigui_algo_la-DatatipDelete.lo: src/jni/DatatipDelete.cpp
+@am__fastdepCXX_TRUE@  $(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigui_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libscigui_algo_la-DatatipDelete.lo -MD -MP -MF $(DEPDIR)/libscigui_algo_la-DatatipDelete.Tpo -c -o libscigui_algo_la-DatatipDelete.lo `test -f 'src/jni/DatatipDelete.cpp' || echo '$(srcdir)/'`src/jni/DatatipDelete.cpp
+@am__fastdepCXX_TRUE@  $(am__mv) $(DEPDIR)/libscigui_algo_la-DatatipDelete.Tpo $(DEPDIR)/libscigui_algo_la-DatatipDelete.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='src/jni/DatatipDelete.cpp' object='libscigui_algo_la-DatatipDelete.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigui_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libscigui_algo_la-DatatipDelete.lo `test -f 'src/jni/DatatipDelete.cpp' || echo '$(srcdir)/'`src/jni/DatatipDelete.cpp
+
 libscigui_la-sci_printsetupbox.lo: sci_gateway/cpp/sci_printsetupbox.cpp
 @am__fastdepCXX_TRUE@  $(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigui_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libscigui_la-sci_printsetupbox.lo -MD -MP -MF $(DEPDIR)/libscigui_la-sci_printsetupbox.Tpo -c -o libscigui_la-sci_printsetupbox.lo `test -f 'sci_gateway/cpp/sci_printsetupbox.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_printsetupbox.cpp
 @am__fastdepCXX_TRUE@  $(am__mv) $(DEPDIR)/libscigui_la-sci_printsetupbox.Tpo $(DEPDIR)/libscigui_la-sci_printsetupbox.Plo
@@ -2171,12 +2161,12 @@ libscigui_la-sci_plotbrowser.lo: sci_gateway/cpp/sci_plotbrowser.cpp
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@ $(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigui_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libscigui_la-sci_plotbrowser.lo `test -f 'sci_gateway/cpp/sci_plotbrowser.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_plotbrowser.cpp
 
-libscigui_la-sci_datatipsetinterp.lo: sci_gateway/cpp/sci_datatipsetinterp.cpp
-@am__fastdepCXX_TRUE@  $(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigui_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libscigui_la-sci_datatipsetinterp.lo -MD -MP -MF $(DEPDIR)/libscigui_la-sci_datatipsetinterp.Tpo -c -o libscigui_la-sci_datatipsetinterp.lo `test -f 'sci_gateway/cpp/sci_datatipsetinterp.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_datatipsetinterp.cpp
-@am__fastdepCXX_TRUE@  $(am__mv) $(DEPDIR)/libscigui_la-sci_datatipsetinterp.Tpo $(DEPDIR)/libscigui_la-sci_datatipsetinterp.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='sci_gateway/cpp/sci_datatipsetinterp.cpp' object='libscigui_la-sci_datatipsetinterp.lo' libtool=yes @AMDEPBACKSLASH@
+libscigui_la-sci_datatip_manager_mode.lo: sci_gateway/cpp/sci_datatip_manager_mode.cpp
+@am__fastdepCXX_TRUE@  $(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigui_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libscigui_la-sci_datatip_manager_mode.lo -MD -MP -MF $(DEPDIR)/libscigui_la-sci_datatip_manager_mode.Tpo -c -o libscigui_la-sci_datatip_manager_mode.lo `test -f 'sci_gateway/cpp/sci_datatip_manager_mode.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_datatip_manager_mode.cpp
+@am__fastdepCXX_TRUE@  $(am__mv) $(DEPDIR)/libscigui_la-sci_datatip_manager_mode.Tpo $(DEPDIR)/libscigui_la-sci_datatip_manager_mode.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='sci_gateway/cpp/sci_datatip_manager_mode.cpp' object='libscigui_la-sci_datatip_manager_mode.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigui_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libscigui_la-sci_datatipsetinterp.lo `test -f 'sci_gateway/cpp/sci_datatipsetinterp.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_datatipsetinterp.cpp
+@am__fastdepCXX_FALSE@ $(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigui_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libscigui_la-sci_datatip_manager_mode.lo `test -f 'sci_gateway/cpp/sci_datatip_manager_mode.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_datatip_manager_mode.cpp
 
 mostlyclean-libtool:
        -rm -f *.lo
@@ -2185,11 +2175,8 @@ clean-libtool:
        -rm -rf .libs _libs
 install-libscigui_la_etcDATA: $(libscigui_la_etc_DATA)
        @$(NORMAL_INSTALL)
+       test -z "$(libscigui_la_etcdir)" || $(MKDIR_P) "$(DESTDIR)$(libscigui_la_etcdir)"
        @list='$(libscigui_la_etc_DATA)'; test -n "$(libscigui_la_etcdir)" || list=; \
-       if test -n "$$list"; then \
-         echo " $(MKDIR_P) '$(DESTDIR)$(libscigui_la_etcdir)'"; \
-         $(MKDIR_P) "$(DESTDIR)$(libscigui_la_etcdir)" || exit 1; \
-       fi; \
        for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
          echo "$$d$$p"; \
@@ -2203,14 +2190,13 @@ uninstall-libscigui_la_etcDATA:
        @$(NORMAL_UNINSTALL)
        @list='$(libscigui_la_etc_DATA)'; test -n "$(libscigui_la_etcdir)" || list=; \
        files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-       dir='$(DESTDIR)$(libscigui_la_etcdir)'; $(am__uninstall_files_from_dir)
+       test -n "$$files" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(libscigui_la_etcdir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(libscigui_la_etcdir)" && rm -f $$files
 install-libscigui_la_rootDATA: $(libscigui_la_root_DATA)
        @$(NORMAL_INSTALL)
+       test -z "$(libscigui_la_rootdir)" || $(MKDIR_P) "$(DESTDIR)$(libscigui_la_rootdir)"
        @list='$(libscigui_la_root_DATA)'; test -n "$(libscigui_la_rootdir)" || list=; \
-       if test -n "$$list"; then \
-         echo " $(MKDIR_P) '$(DESTDIR)$(libscigui_la_rootdir)'"; \
-         $(MKDIR_P) "$(DESTDIR)$(libscigui_la_rootdir)" || exit 1; \
-       fi; \
        for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
          echo "$$d$$p"; \
@@ -2224,14 +2210,13 @@ uninstall-libscigui_la_rootDATA:
        @$(NORMAL_UNINSTALL)
        @list='$(libscigui_la_root_DATA)'; test -n "$(libscigui_la_rootdir)" || list=; \
        files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-       dir='$(DESTDIR)$(libscigui_la_rootdir)'; $(am__uninstall_files_from_dir)
+       test -n "$$files" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(libscigui_la_rootdir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(libscigui_la_rootdir)" && rm -f $$files
 install-libscigui_la_sci_gatewayDATA: $(libscigui_la_sci_gateway_DATA)
        @$(NORMAL_INSTALL)
+       test -z "$(libscigui_la_sci_gatewaydir)" || $(MKDIR_P) "$(DESTDIR)$(libscigui_la_sci_gatewaydir)"
        @list='$(libscigui_la_sci_gateway_DATA)'; test -n "$(libscigui_la_sci_gatewaydir)" || list=; \
-       if test -n "$$list"; then \
-         echo " $(MKDIR_P) '$(DESTDIR)$(libscigui_la_sci_gatewaydir)'"; \
-         $(MKDIR_P) "$(DESTDIR)$(libscigui_la_sci_gatewaydir)" || exit 1; \
-       fi; \
        for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
          echo "$$d$$p"; \
@@ -2245,21 +2230,20 @@ uninstall-libscigui_la_sci_gatewayDATA:
        @$(NORMAL_UNINSTALL)
        @list='$(libscigui_la_sci_gateway_DATA)'; test -n "$(libscigui_la_sci_gatewaydir)" || list=; \
        files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-       dir='$(DESTDIR)$(libscigui_la_sci_gatewaydir)'; $(am__uninstall_files_from_dir)
+       test -n "$$files" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(libscigui_la_sci_gatewaydir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(libscigui_la_sci_gatewaydir)" && rm -f $$files
 install-nobase_libscigui_la_iconsDATA: $(nobase_libscigui_la_icons_DATA)
        @$(NORMAL_INSTALL)
+       test -z "$(libscigui_la_iconsdir)" || $(MKDIR_P) "$(DESTDIR)$(libscigui_la_iconsdir)"
        @list='$(nobase_libscigui_la_icons_DATA)'; test -n "$(libscigui_la_iconsdir)" || list=; \
-       if test -n "$$list"; then \
-         echo " $(MKDIR_P) '$(DESTDIR)$(libscigui_la_iconsdir)'"; \
-         $(MKDIR_P) "$(DESTDIR)$(libscigui_la_iconsdir)" || exit 1; \
-       fi; \
        $(am__nobase_list) | while read dir files; do \
          xfiles=; for file in $$files; do \
            if test -f "$$file"; then xfiles="$$xfiles $$file"; \
            else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \
          test -z "$$xfiles" || { \
            test "x$$dir" = x. || { \
-             echo " $(MKDIR_P) '$(DESTDIR)$(libscigui_la_iconsdir)/$$dir'"; \
+             echo "$(MKDIR_P) '$(DESTDIR)$(libscigui_la_iconsdir)/$$dir'"; \
              $(MKDIR_P) "$(DESTDIR)$(libscigui_la_iconsdir)/$$dir"; }; \
            echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(libscigui_la_iconsdir)/$$dir'"; \
            $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(libscigui_la_iconsdir)/$$dir" || exit $$?; }; \
@@ -2269,7 +2253,9 @@ uninstall-nobase_libscigui_la_iconsDATA:
        @$(NORMAL_UNINSTALL)
        @list='$(nobase_libscigui_la_icons_DATA)'; test -n "$(libscigui_la_iconsdir)" || list=; \
        $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \
-       dir='$(DESTDIR)$(libscigui_la_iconsdir)'; $(am__uninstall_files_from_dir)
+       test -n "$$files" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(libscigui_la_iconsdir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(libscigui_la_iconsdir)" && rm -f $$files
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
        list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -2373,15 +2359,10 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-       if test -z '$(STRIP)'; then \
-         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-             install; \
-       else \
-         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-       fi
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
 mostlyclean-generic:
 
 clean-generic:
index 6ddc2cf..f5f1583 100644 (file)
     </submenu>
     <separator/>
     <submenu label="&amp;Start datatip manager" icon="datatips">
-      <callback instruction='org.scilab.modules.gui.datatip.DatatipManagerMode.setDatatipManagerModeButtonOn' type="3"/>
+      <callback instruction='datatipManagerMode(get_figure_handle([SCILAB_FIGURE_ID]), %t)' type="-2"/>
     </submenu>
     <submenu label="Stop datatip manager">
-      <callback instruction='org.scilab.modules.gui.datatip.DatatipManagerMode.setDatatipManagerModeButtonOff' type="3"/>
+      <callback instruction='datatipManagerMode(get_figure_handle([SCILAB_FIGURE_ID]), %f)' type="-2"/>
     </submenu>
 
     <submenu label="Start curve data modify" icon="data_modify">
index 85c699a..062d01d 100644 (file)
@@ -17,7 +17,7 @@
   <separator/>
   <!-- Datatips -->
   <button icon="datatips" tooltiptext="toggle datatip mode">
-    <callback instruction="org.scilab.modules.gui.datatip.DatatipManagerMode.setDatatipManagerModeToggle" type="3"/>
+    <callback instruction="datatipManagerMode(get_figure_handle([SCILAB_FIGURE_ID]))" type="-2"/>
   </button>
   <!-- Scilab Graphic Editor -->
   <button icon="plot" tooltiptext="Open the graphics editor">
index a3c08e2..983ea68 100755 (executable)
@@ -59,7 +59,7 @@ GUI_IMPEXP int sci_openged(char *fname, unsigned long fname_len);
 GUI_IMPEXP int sci_datatipcreate(char *fname, unsigned long fname_len);
 GUI_IMPEXP int sci_datatipremove(char *fname, unsigned long fname_len);
 GUI_IMPEXP int sci_plotbrowser(char *fname, unsigned long fname_len);
-GUI_IMPEXP int sci_datatipsetinterp(char *fname, unsigned long fname_len);
+GUI_IMPEXP int sci_datatip_manager_mode(char *fname, unsigned long fname_len);
 /*--------------------------------------------------------------------------*/
 #endif /*  __GW_GUI__ */
 /*--------------------------------------------------------------------------*/
index 8ef5382..0e733b6 100755 (executable)
@@ -67,7 +67,7 @@ static gw_generic_table Tab[] =
     {sci_datatipcreate, "datatipCreate"},
     {sci_datatipremove, "datatipRemove"},
     {sci_plotbrowser,"plotbrowser"},
-    {sci_datatipsetinterp,"datatipSetInterp"}
+    {sci_datatip_manager_mode,"datatipManagerMode"}
 };
 /*--------------------------------------------------------------------------*/
 int gw_gui(void)
diff --git a/scilab/modules/gui/sci_gateway/cpp/sci_datatip_manager_mode.cpp b/scilab/modules/gui/sci_gateway/cpp/sci_datatip_manager_mode.cpp
new file mode 100644 (file)
index 0000000..d80ac6d
--- /dev/null
@@ -0,0 +1,136 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2013 - Pedro Arthur dos S. Souza
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#include "DatatipManager.hxx"
+
+extern "C"
+{
+#include "api_scilab.h"
+#include "getScilabJavaVM.h"
+#include "localization.h"
+#include "Scierror.h"
+#include "gw_gui.h"
+#include "HandleManagement.h"
+#include "CurrentFigure.h"
+}
+
+using namespace org_scilab_modules_gui_datatip;
+
+int sci_datatip_manager_mode(char *fname, unsigned long fname_len)
+{
+    int n = 0, nbRow = 0, nbCol = 0, l1 = 0, i = 0;
+    int* piAddr        = NULL;;
+    int stkAdr = 0;
+    const char* pstFigureUID = NULL;
+    int * pbValue = NULL;
+    bool enabled = false;
+
+    SciErr sciErr;
+    CheckInputArgument(pvApiCtx, 0, 2);
+    CheckOutputArgument(pvApiCtx, 1, 1);
+
+    if (Rhs == 0) 
+    {
+        pstFigureUID = getCurrentFigure();
+        if (pstFigureUID)
+        {
+            enabled = DatatipManager::isEnabled(getScilabJavaVM(), pstFigureUID);
+            DatatipManager::setEnabled(getScilabJavaVM(), pstFigureUID, (!enabled));
+        }
+    }
+    else if (Rhs == 1)
+    {
+        sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
+        if (sciErr.iErr)
+        {
+            printError(&sciErr, 0);
+            return FALSE;
+        }
+        if (checkInputArgumentType(pvApiCtx, 1, sci_boolean))
+        {
+
+            sciErr = getMatrixOfBoolean(pvApiCtx, piAddr, &nbRow, &nbCol, &pbValue);
+            if (sciErr.iErr)
+            {
+                printError(&sciErr, 0);
+                return FALSE;
+            }   
+            if (nbRow * nbCol != 1)
+            {
+                Scierror(999, _("%s: Wrong size for input argument #%d: A boolean expected.\n"), fname, 1);
+                return FALSE;
+            }
+            pstFigureUID = getCurrentFigure();
+            if (pstFigureUID)
+            {
+
+                DatatipManager::setEnabled(getScilabJavaVM(), pstFigureUID, (bool)pbValue[0]);
+            }
+        } 
+        else if (checkInputArgumentType(pvApiCtx, 1, sci_handles))
+        {
+            GetRhsVar(1, GRAPHICAL_HANDLE_DATATYPE, &nbRow, &nbCol, &stkAdr);
+            if (nbRow * nbCol != 1)
+            {
+                Scierror(999, _("%s: Wrong size for input argument #%d: A graphic handle expected.\n"), fname, 1);
+                return FALSE;
+            }
+            pstFigureUID = (char *)getObjectFromHandle((unsigned long) * (hstk(stkAdr)));
+            if (pstFigureUID)
+            {
+                enabled = DatatipManager::isEnabled(getScilabJavaVM(), pstFigureUID);
+                DatatipManager::setEnabled(getScilabJavaVM(), pstFigureUID, (!enabled));
+            }
+        }
+    }
+    else if (Rhs == 2)
+    {
+        GetRhsVar(1, GRAPHICAL_HANDLE_DATATYPE, &nbRow, &nbCol, &stkAdr);
+        if (nbRow * nbCol != 1)
+        {
+            Scierror(999, _("%s: Wrong size for input argument #%d: A graphic handle expected.\n"), fname, 1);
+            return FALSE;
+        }
+        pstFigureUID = (char *)getObjectFromHandle((unsigned long) * (hstk(stkAdr)));
+
+        sciErr = getVarAddressFromPosition(pvApiCtx, 2, &piAddr);
+        if (sciErr.iErr)
+        {
+            printError(&sciErr, 0);
+            return FALSE;
+        }
+        sciErr = getMatrixOfBoolean(pvApiCtx, piAddr, &nbRow, &nbCol, &pbValue);
+        if (sciErr.iErr)
+        {
+            printError(&sciErr, 0);
+            return FALSE;
+        }   
+        if (nbRow * nbCol != 1)
+        {
+            Scierror(999, _("%s: Wrong size for input argument #%d: A boolean expected.\n"), fname, 1);
+            return FALSE;
+        }
+        DatatipManager::setEnabled(getScilabJavaVM(), pstFigureUID, (bool)pbValue[0]);
+    }
+    else
+    {
+        Scierror(999, _("%s: Wrong number for input argument: %d expected.\n"), fname, 2);
+        return FALSE;
+    }
+
+
+    LhsVar(1) = 0;
+    PutLhsVar();
+
+    return TRUE;
+}
+
index 2cbd9a2..01b3687 100755 (executable)
@@ -10,7 +10,7 @@
  *
  */
 
-#include "DatatipFunctions.hxx"
+#include "DatatipCreate.hxx"
 #include "ScilabView.hxx"
 
 extern "C"
index 81d8eec..e43dd47 100644 (file)
@@ -10,7 +10,7 @@
  *
  */
 
-#include "DatatipFunctions.hxx"
+#include "DatatipDelete.hxx"
 #include "ScilabView.hxx"
 
 extern "C"
diff --git a/scilab/modules/gui/sci_gateway/cpp/sci_datatipsetinterp.cpp b/scilab/modules/gui/sci_gateway/cpp/sci_datatipsetinterp.cpp
deleted file mode 100755 (executable)
index f1a074b..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
- * Copyright (C) 2012 - Gustavo Barbosa Libotte
- *
- * This file must be used under the terms of the CeCILL.
- * This source file is licensed as described in the file COPYING, which
- * you should have received as part of this distribution.  The terms
- * are also available at
- * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
- *
- */
-
-#include "DatatipFunctions.hxx"
-#include "ScilabView.hxx"
-
-extern "C"
-{
-#include "api_scilab.h"
-#include "getScilabJavaVM.h"
-#include "localization.h"
-#include "Scierror.h"
-#include "gw_gui.h"
-#include "BOOL.h"
-#include "MALLOC.h"
-#include "setGraphicObjectProperty.h"
-#include "getGraphicObjectProperty.h"
-#include "graphicObjectProperties.h"
-#include "HandleManagement.h"
-#include "FigureList.h"
-#include "CurrentFigure.h"
-#include "BuildObjects.h"
-}
-
-using namespace org_scilab_modules_gui_datatip;
-
-int sci_datatipsetinterp(char *fname, unsigned long fname_len)
-{
-
-    SciErr sciErr;
-    CheckInputArgument(pvApiCtx, 2, 2);
-    CheckOutputArgument(pvApiCtx, 0, 1);
-    int nbRow = 0, nbCol = 0;
-    int stkAdr = 0;
-    int *addrBool = 0;
-    int boolParam;
-    const char* polylineUID = NULL;
-    bool interpMode = false;
-
-    GetRhsVar(1, GRAPHICAL_HANDLE_DATATYPE, &nbRow, &nbCol, &stkAdr);
-
-    if (nbRow * nbCol != 1)
-    {
-        Scierror(999, _("%s: Wrong size for input argument #%d: A graphic handle expected.\n"), fname, 1);
-        return FALSE;
-    }
-
-    polylineUID = (char *)getObjectFromHandle((unsigned long) * (hstk(stkAdr)));
-
-    sciErr = getVarAddressFromPosition(pvApiCtx, 2, &addrBool);
-    if (sciErr.iErr)
-    {
-        printError(&sciErr, 0);
-        Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 2);
-        return FALSE;
-    }
-
-    if (!isBooleanType(pvApiCtx, addrBool) || !checkVarDimension(pvApiCtx, addrBool, 1, 1))
-    {
-        Scierror(999, _("%s: Wrong type for input argument #%d: A boolean expected.\n"), fname, 2);
-        return FALSE;
-    }
-    getScalarBoolean(pvApiCtx, addrBool, &boolParam);
-    interpMode = boolParam;
-
-    DatatipCreate::datatipSetInterp (getScilabJavaVM(), (char*)polylineUID, interpMode);
-
-    LhsVar(1) = Rhs + 1;
-    PutLhsVar();
-    return TRUE;
-
-}
index add0128..0abf6cb 100755 (executable)
@@ -73,5 +73,5 @@
     <PRIMITIVE gatewayId="25" primitiveId="40" primitiveName="datatipCreate" />
     <PRIMITIVE gatewayId="25" primitiveId="41" primitiveName="datatipRemove" />
     <PRIMITIVE gatewayId="25" primitiveId="42" primitiveName="plotbrowser" />
-    <PRIMITIVE gatewayId="25" primitiveId="43" primitiveName="datatipSetInterp" />
+    <PRIMITIVE gatewayId="25" primitiveId="43" primitiveName="datatipManagerMode" />
 </GATEWAY>
index aae8852..55db03a 100755 (executable)
     </Link>
   </ItemDefinitionGroup>
   <ItemGroup>
+    <ClCompile Include="..\..\sci_gateway\cpp\sci_datatip_manager_mode.cpp" />
     <ClCompile Include="..\..\sci_gateway\cpp\sci_plotbrowser.cpp" />
     <ClCompile Include="..\..\sci_gateway\cpp\sci_useeditor.cpp" />
     <ClCompile Include="..\..\sci_gateway\cpp\sci_fire_closing_finished.cpp" />
     <ClCompile Include="..\..\sci_gateway\cpp\sci_openged.cpp" />
     <ClCompile Include="..\..\sci_gateway\cpp\sci_datatipcreate.cpp" />
     <ClCompile Include="..\..\sci_gateway\cpp\sci_datatipremove.cpp" />
-    <ClCompile Include="..\..\sci_gateway\cpp\sci_datatipsetinterp.cpp" />
     <ClCompile Include="..\cpp\GetConsoleShowHiddenHandles.cpp" />
     <ClCompile Include="..\cpp\GetUicontrolTooltipString.cpp" />
     <ClCompile Include="..\cpp\SetConsoleShowHiddenHandles.cpp" />
+    <ClCompile Include="..\jni\DatatipCreate.cpp" />
+    <ClCompile Include="..\jni\DatatipDelete.cpp" />
+    <ClCompile Include="..\jni\DatatipManager.cpp" />
     <ClCompile Include="..\jni\EditorManager.cpp" />
     <ClCompile Include="..\jni\StartGED.cpp" />
-    <ClCompile Include="..\jni\DatatipFunctions.cpp" />
     <ClCompile Include="..\cpp\SetUicontrolTooltipString.cpp" />
     <ClCompile Include="..\jni\ScilabTermination_wrap.c" />
     <ClCompile Include="..\jni\StartPlotBrowser.cpp" />
     <ClInclude Include="..\..\includes\TerminateGui.h" />
     <ClInclude Include="..\..\includes\Toolbar.h" />
     <ClInclude Include="..\..\includes\Widget.h" />
+    <ClInclude Include="..\jni\DatatipCreate.hxx" />
+    <ClInclude Include="..\jni\DatatipDelete.hxx" />
+    <ClInclude Include="..\jni\DatatipManager.hxx" />
     <ClInclude Include="..\jni\EditorManager.hxx" />
     <ClInclude Include="..\jni\StartGED.hxx" />
-    <ClInclude Include="..\jni\DatatipFunctions.hxx" />
     <ClInclude Include="..\cpp\CallClipboard.hxx" />
     <ClInclude Include="..\cpp\CallColorChooser.hxx" />
     <ClInclude Include="..\cpp\CallFontChooser.hxx" />
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
\ No newline at end of file
+</Project>
index 83e8b6f..f9943fd 100755 (executable)
     <ClCompile Include="..\jni\StartGED.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="..\jni\DatatipFunctions.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\sci_gateway\cpp\sci_useeditor.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
     <ClCompile Include="..\..\sci_gateway\cpp\sci_datatipremove.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\sci_gateway\cpp\sci_datatipsetinterp.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
     <ClCompile Include="..\jni\StartPlotBrowser.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
     <ClCompile Include="..\..\sci_gateway\cpp\sci_plotbrowser.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="..\jni\DatatipCreate.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\jni\DatatipDelete.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\jni\DatatipManager.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\sci_gateway\cpp\sci_datatip_manager_mode.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <None Include="core_import.def">
     <ClInclude Include="..\jni\StartGED.hxx">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="..\jni\DatatipFunctions.hxx">
+    <ClInclude Include="..\jni\StartPlotBrowser.hxx">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="..\jni\StartPlotBrowser.hxx">
+    <ClInclude Include="..\jni\DatatipCreate.hxx">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\jni\DatatipDelete.hxx">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\jni\DatatipManager.hxx">
       <Filter>Header Files</Filter>
     </ClInclude>
   </ItemGroup>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/scilab/modules/gui/src/java/org/scilab/modules/gui/datatip/DatatipActivateCallBack.java b/scilab/modules/gui/src/java/org/scilab/modules/gui/datatip/DatatipActivateCallBack.java
deleted file mode 100644 (file)
index 713e71d..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
- * Copyright (C) 2012 - Gustavo Barbosa Libotte
- *
- * This file must be used under the terms of the CeCILL.
- * This source file is licensed as described in the file COPYING, which
- * you should have received as part of this distribution.  The terms
- * are also available at
- * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
- *
- */
-
-package org.scilab.modules.gui.datatip;
-
-/**
- * Set true or false for datatip toggle button
- * @author Gustavo Barbosa Libotte
- */
-public class DatatipActivateCallBack {
-
-    public static boolean isDatatipActivated = true;
-
-    /**
-    * Get the axes handler of the figure which mouse click belongs
-    *
-    * @return true if datatip button is activated or false otherwise
-    */
-    public static boolean toggleDatatip() {
-        if (isDatatipActivated == false) {
-            isDatatipActivated = true;
-            return isDatatipActivated;
-        } else {
-            isDatatipActivated = false;
-            return isDatatipActivated;
-        }
-    }
-}
index 3d40a09..7105434 100644 (file)
@@ -42,6 +42,15 @@ public class DatatipCommon {
      * the segment from the polyline that x belongs
      */
     public static Segment getSegment(double x, String polyline) {
+        return getSegment(x, polyline, 0);
+    }
+
+
+    /*
+     * Given a polyline and a position x in X axis return
+     * the segment+offset from the polyline that x belongs
+     */
+    public static Segment getSegment(double x, String polyline, int offset) {
 
         double dataX[] = (double[])PolylineData.getDataX(polyline);
         double dataY[] = (double[])PolylineData.getDataY(polyline);
@@ -52,6 +61,7 @@ public class DatatipCommon {
                 double min = Math.min(dataX[i], dataX[i + 1]);
                 double max = Math.max(dataX[i], dataX[i + 1]);
 
+                // using "if (x >= min && x < max)" seems to have no difference
                 if (x >= min && x <= max) {
                     index = i;
                     break;
@@ -70,6 +80,10 @@ public class DatatipCommon {
                     index = (max == dataX[0]) ? 0 : (dataX.length - 2);
                 }
             }
+            //check upper bound
+            index = (index + offset + 1) < dataX.length ? (index + offset) : dataX.length-2;
+            //check lower bound
+            index = (index + offset) >= 0 ? index : 0;
             return new Segment(index, dataX[index], dataX[index + 1], dataY[index], dataY[index + 1]);
         }
         return null;
index e721084..945332b 100755 (executable)
@@ -48,12 +48,9 @@ public class DatatipCreate {
     */
     public static String createDatatip(String figureUid, Integer coordIntX, Integer coordIntY) {
 
-        Integer[] pixelMouseCoordInt = { coordIntX , coordIntY };
-        String polylineUid = ep.pick (figureUid, coordIntX, coordIntY);
-        String axesUid = datatipAxesHandler(figureUid, pixelMouseCoordInt);
-        double[] pixelMouseCoordDouble = transformPixelCoordToDouble(pixelMouseCoordInt);
-        double[] graphicCoord = transformPixelCoordToGraphic(axesUid, pixelMouseCoordDouble);
-        String newDatatip = datatipProperties (graphicCoord, polylineUid);
+        String polylineUid = ep.pick(figureUid, coordIntX, coordIntY);
+        double[] graphicCoord = DatatipCommon.getTransformedPosition(figureUid, new Integer[] {coordIntX, coordIntY});
+        String newDatatip = datatipProperties(graphicCoord, polylineUid);
         return newDatatip;
     }
 
@@ -68,21 +65,14 @@ public class DatatipCreate {
     public static String createDatatipProgramCoord(String polylineUid, double[] coordDoubleXY) {
 
         if (polylineUid != null) {
-            String polylineInterp = null;
-            polylineInterp = (String) GraphicController.getController().getProperty(polylineUid, GraphicObjectProperties.__GO_TAG__);
 
             DatatipCommon.Segment seg = DatatipCommon.getSegment(coordDoubleXY[0], polylineUid);
 
-            double[] position = null;
 
-            if (polylineInterp.equals("d_i")) {
-                Double[] pos = DatatipCommon.Interpolate(coordDoubleXY[0], seg);
-                position = new double[] {pos[0], pos[1], 0.0};
-            } else {
-                position = new double[] {seg.x0, seg.y0, 0.0};
-            }
+            Double[] pos = DatatipCommon.Interpolate(coordDoubleXY[0], seg);
+            double[] position = new double[] {pos[0], pos[1], 0.0};
 
-            String newDatatip = datatipProperties (position, polylineUid);
+            String newDatatip = datatipProperties(position, polylineUid);
             return newDatatip;
 
         }
@@ -115,13 +105,13 @@ public class DatatipCreate {
     }
 
     /**
-    * Get integer datatip position on a specific axes
+    * Get the datatip position in pixels on a specific axes
     *
     * @param coordinates Datatip coordinates x, y in double precision
     * @param axesUid Axes unique identifier
-    * @return integer datatip position
+    * @return datatip position in pixels
     */
-    public static Integer[] getDatatipPositionInteger (double[] coordinates, String axesUid) {
+    public static Integer[] getDatatipPositionInteger(double[] coordinates, String axesUid) {
 
         double[] graphCoordDouble = new double[] {0.0, 0.0, 0.0};
         graphCoordDouble[0] = coordinates[0];
@@ -141,103 +131,24 @@ public class DatatipCreate {
         return coordInteger;
     }
 
-    /**
-    * Get the axes handler of the figure which mouse click belongs
-    *
-    * @param figureUid Figure unique identifier.
-    * @param pixelMouseCoordInt Vector with pixel mouse position x and y.
-    * @return Axes handler string.
-    */
-    public static String datatipAxesHandler(String figureUid, Integer[] pixelMouseCoordInt) {
-
-        return AxesHandler.clickedAxes(figureUid, pixelMouseCoordInt);
-    }
 
     /**
-    * Transform integer pixel coordinate to double precision
+    * Creates and setup the datatip.
     *
-    * @param pixelMouseCoordInt Vector with pixel mouse position x and y.
-    * @return Pixel coordinates in double precision.
+    * @param coord double array with graphic position x and y.
+    * @param polyline the polyline uid string.
+    * @return Datatip uid string.
     */
-    public static double[] transformPixelCoordToDouble(Integer[] pixelMouseCoordInt) {
-
-        double[] pixelMouseCoordDouble = new double[3];
-        for (int i = 0 ; i < pixelMouseCoordInt.length ; i++) {
-            pixelMouseCoordDouble[i] = (double) pixelMouseCoordInt[i];
-        }
-        return pixelMouseCoordDouble;
-    }
-
-    /**
-    * Transform pixel screen coordinates in graphic coordinates
-    *
-    * @param axesUid Axes handler of clicked figure.
-    * @param pixelMouseCoordDouble Mouse click pixel coordinates in double precision.
-    * @return Graphic coordinates related to inserted pixel coordinates.
-    */
-    public static double[] transformPixelCoordToGraphic(String axesUid, double[] pixelMouseCoordDouble) {
-        return CallRenderer.get2dViewFromPixelCoordinates(axesUid, pixelMouseCoordDouble);
-    }
-
-    /**
-    * Ask to create an object in graphic window
-    *
-    * @return Datatip object handle
-    */
-    public static String askToCreateObject() {
+    private static String datatipProperties(double[] coord, String polyline) {
 
         String newDatatip = GraphicController.getController().askObject(GraphicObject.getTypeFromName(GraphicObjectProperties.__GO_DATATIP__));
-        return newDatatip;
-    }
-
-
-    /**
-    * Set the position which datatip will be shown in graphic
-    *
-    * @param graphicCoord Vector containing the graphic coordinates in double precision.
-    * @return Graphic coordinates x, y that datatip will be shown.
-    */
-    public static Double[] setDatatipPosition (double[] graphicCoord) {
-
-        Double[] datatipPosition = new Double[3];
-        datatipPosition[0] = graphicCoord[0];
-        datatipPosition[1] = graphicCoord[1];
-        datatipPosition[2] = 0.0;
-        return datatipPosition;
-    }
-
-    /**
-    * Set all default datatip properties;
-    *
-    * @param graphicCoord double array with graphic position x and y.
-    * @param polyline the polyline handler string.
-    * @return Datatip handler string.
-    */
-    private static String datatipProperties (double[] graphicCoord, String polyline) {
-
-        String newDatatip = askToCreateObject();
-        Double[] datatipPosition = setDatatipPosition(graphicCoord);
+        Double[] datatipPosition = new Double[] {coord[0], coord[1], 0.0};
 
         GraphicController.getController().setProperty(newDatatip, GraphicObjectProperties.__GO_DATATIP_DATA__, datatipPosition);
         GraphicController.getController().setGraphicObjectRelationship(polyline, newDatatip);
         return newDatatip;
     }
 
-    /**
-     * Set interpolation mode of a polyline;
-     *
-     * @param polylineUid Polyline handler string.
-     * @param interpMode Boolean to control interpolation mode
-     */
-    public static void datatipSetInterp (String polylineUid, boolean interpMode) {
-
-        if (interpMode) {
-            String interpString = "d_i";
-            GraphicController.getController().setProperty(polylineUid, GraphicObjectProperties.__GO_TAG__, interpString);
-        } else {
-            String interpString = "";
-            GraphicController.getController().setProperty(polylineUid, GraphicObjectProperties.__GO_TAG__, interpString);
-        }
-    }
+
 
 }
index 41205fa..7df7a87 100644 (file)
@@ -38,7 +38,6 @@ public class DatatipDelete {
         graphCoordDouble[1] = datatipPosition[1];
         graphCoordDouble[2] = datatipPosition[2];
 
-        String polylineUid = DatatipCommon.getParentPolyline(datatipUid);
 
         GraphicController.getController().removeRelationShipAndDelete(datatipUid);
     }
index 6ff56fe..4b7ebb4 100644 (file)
@@ -13,8 +13,7 @@
 package org.scilab.modules.gui.datatip;
 
 
-import org.scilab.modules.gui.datatip.DatatipCreate;
-import org.scilab.modules.gui.datatip.DatatipMove;
+
 import org.scilab.modules.gui.datatip.DatatipCommon;
 import org.scilab.modules.gui.datatip.DatatipOrientation;
 
@@ -40,13 +39,19 @@ public class DatatipDrag {
         String parentPolyline = DatatipCommon.getParentPolyline(datatipUid);
 
         if (parentPolyline != null) {
-            Double[] oldPos = (Double[]) GraphicController.getController().getProperty(datatipUid, __GO_DATATIP_DATA__);
             Integer pos[] = {endX, endY};
             String figure = (String)GraphicController.getController().getProperty(datatipUid, __GO_PARENT_FIGURE__);
             double[] c2d = DatatipCommon.getTransformedPosition(figure, pos);
 
             DatatipCommon.Segment seg = DatatipCommon.getSegment(c2d[0], parentPolyline);
-            Double[] newPos = DatatipCommon.Interpolate(c2d[0], seg);
+
+            Boolean useInterp = (Boolean)GraphicController.getController().getProperty(datatipUid, __GO_DATATIP_INTERP_MODE__);
+            Double[] newPos;
+            if (useInterp) {
+                newPos = DatatipCommon.Interpolate(c2d[0], seg);
+            } else {
+                newPos = new Double[] {seg.x0, seg.y0, 0.0};
+            }
             GraphicController.getController().setProperty(datatipUid, __GO_DATATIP_DATA__, newPos);
 
             Boolean AutoOrientation = (Boolean)GraphicController.getController().getProperty(datatipUid, __GO_DATATIP_AUTOORIENTATION__);
diff --git a/scilab/modules/gui/src/java/org/scilab/modules/gui/datatip/DatatipHighlight.java b/scilab/modules/gui/src/java/org/scilab/modules/gui/datatip/DatatipHighlight.java
deleted file mode 100644 (file)
index 38507fc..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
- * Copyright (C) 2012 - Gustavo Barbosa Libotte
- *
- * This file must be used under the terms of the CeCILL.
- * This source file is licensed as described in the file COPYING, which
- * you should have received as part of this distribution.  The terms
- * are also available at
- * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
- *
- */
-
-package org.scilab.modules.gui.datatip;
-
-import org.scilab.modules.graphic_objects.graphicController.GraphicController;
-import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.Type;
-import org.scilab.modules.graphic_objects.graphicObject.GraphicObject;
-import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
-
-/**
- * Highlight and discolor the selected datatip
- * @author Gustavo Barbosa Libotte
- */
-public class DatatipHighlight {
-
-    private static boolean isSelected = false;
-    public static Integer firstColorMarker;
-    public static String oldDatatip = null;
-
-    /**
-    * Highlight a datatip and its mark when selected
-    *
-    * @param datatipUid Datatip unique identifier.
-    */
-    public static void highlightSelected (String datatipUid) {
-        if (datatipUid != null) {
-            if (!isSelected) {
-                firstColorMarker = (Integer) GraphicController.getController().getProperty(datatipUid, GraphicObjectProperties.__GO_MARK_BACKGROUND__);
-                GraphicController.getController().setProperty(datatipUid, GraphicObjectProperties.__GO_MARK_BACKGROUND__, -3);
-            } else {
-                GraphicController.getController().setProperty(oldDatatip, GraphicObjectProperties.__GO_MARK_BACKGROUND__, firstColorMarker);
-                firstColorMarker = (Integer) GraphicController.getController().getProperty(datatipUid, GraphicObjectProperties.__GO_MARK_BACKGROUND__);
-                GraphicController.getController().setProperty(datatipUid, GraphicObjectProperties.__GO_MARK_BACKGROUND__, -3);
-            }
-            isSelected = true;
-        } else {
-            if (oldDatatip != null) {
-                GraphicController.getController().setProperty(oldDatatip, GraphicObjectProperties.__GO_MARK_BACKGROUND__, firstColorMarker);
-                isSelected = false;
-            }
-        }
-        oldDatatip = datatipUid;
-    }
-}
diff --git a/scilab/modules/gui/src/java/org/scilab/modules/gui/datatip/DatatipManager.java b/scilab/modules/gui/src/java/org/scilab/modules/gui/datatip/DatatipManager.java
new file mode 100644 (file)
index 0000000..c1eef50
--- /dev/null
@@ -0,0 +1,95 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2013 - Pedro Arthur dos S. Souza
+ * Copyright (C) 2013 - Caio Lucas dos S. Souza
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+package org.scilab.modules.gui.datatip;
+
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Manages all the datatipManagerMode.
+ *
+ * @author Pedro Souza <bygrandao@gmail.com>
+ *
+ * @since 2013-25-01
+ */
+
+public class DatatipManager {
+
+    private static Map<String, DatatipManagerMode> allDatatipManagers = new HashMap<String, DatatipManagerMode>();
+
+    /**
+     * Create an DatatipManagerMode and put it on the map.
+     * @param figureUid Figure which the DatatipManagerMode belongs.
+     * @return The created DatatipManagerMode instance.
+     */
+    public static DatatipManagerMode newDatatipManagerMode(String figureUid) {
+        DatatipManagerMode tipManagerMode = new DatatipManagerMode();
+        tipManagerMode.setFigure(figureUid);
+        allDatatipManagers.put(figureUid, tipManagerMode);
+        return tipManagerMode;
+    }
+
+    /**
+     * Enables the DatatipManagerMode which belongs to the given figure uid.
+     * @param figureUid Figure wich the editor belongs.
+     */
+    public static void setEnabled(String uid, boolean b) {
+        DatatipManagerMode tipManagerMode = allDatatipManagers.get(uid);
+        if (tipManagerMode != null) {
+            tipManagerMode.setEnabled(b);
+        }
+    }
+
+
+    public static boolean isEnabled(String uid) {
+        DatatipManagerMode tipManagerMode = allDatatipManagers.get(uid);
+        if (tipManagerMode != null) {
+            return tipManagerMode.isEnabled();
+        }
+        return false;
+    }
+
+    public static String getSelected(String uid) {
+        DatatipManagerMode tipManagerMode = allDatatipManagers.get(uid);
+        if (tipManagerMode != null) {
+            return tipManagerMode.getSelectedTip();
+        }
+        return null;
+    }
+
+    public static void setSelected(String figureUid, String tipUid) {
+        DatatipManagerMode tipManagerMode = allDatatipManagers.get(figureUid);
+        if (tipManagerMode != null) {
+            tipManagerMode.setSelectedTip(tipUid);
+        }
+    }
+
+
+    /**
+     * Remove the DatatipManagerMode from the map.
+     */
+    public static void deleteDatatipManager(String uid) {
+        allDatatipManagers.remove(uid);
+    }
+
+    /**
+     * Get the DatatipManagerMode by figure uid.
+     * @param uid The figure uid.
+     * @return The DatatipManagerMode instance.
+     */
+    public static DatatipManagerMode getFromUid(String uid) {
+        return allDatatipManagers.get(uid);
+    }
+}
index f7be544..3b3b4b7 100644 (file)
@@ -12,9 +12,9 @@
 
 package org.scilab.modules.gui.datatip;
 
+import org.scilab.modules.localization.Messages;
+import org.scilab.modules.gui.editor.EntityPicker;
 import org.scilab.modules.graphic_objects.graphicController.GraphicController;
-import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.Type;
-import org.scilab.modules.graphic_objects.graphicObject.GraphicObject;
 import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
 
 /**
@@ -23,78 +23,99 @@ import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
  */
 public class DatatipManagerMode {
 
-    public static String figureUid = null;
-    public static boolean datatipManagerModeStatus = false;
-    public static String datatipMessage = "Left click on the curve creates a datatip and right click on the datatip removes it.";
+    private String selectedTip;
+    private Integer markColor;
+
+    private String figureUid;
+    private boolean datatipManagerModeStatus;
+
+    private static String datatipMessage = Messages.gettext("Left click on the curve creates a datatip and right click on the datatip removes it.");
 
     public DatatipManagerMode() {
-        setFigure(null);
+        selectedTip = null;
+        figureUid = null;
+        datatipManagerModeStatus = false;
     }
 
-    /**
-    * Set the datatip manager mode between on/off
-    * for graphics toolbar's toggle button
-    *
-    * @return Datatip manager mode status.
-    */
-    public static boolean setDatatipManagerModeToggle() {
-        if (datatipManagerModeStatus) {
-            datatipManagerModeStatus = false;
+    public void setEnabled(boolean b) {
+        datatipManagerModeStatus = b;
+        if (!datatipManagerModeStatus) {
             GraphicController.getController().setProperty(figureUid, GraphicObjectProperties.__GO_INFO_MESSAGE__, "");
         } else {
-            datatipManagerModeStatus = true;
             GraphicController.getController().setProperty(figureUid, GraphicObjectProperties.__GO_INFO_MESSAGE__, datatipMessage);
         }
-        return datatipManagerModeStatus;
     }
 
     /**
-    * Set the datatip manager mode on
-    * for graphics menubar's button
+    * Get the datatip's actual manager mode
     *
-    * @return Datatip manager mode status on.
+    * @return Datatip manager mode status.
     */
-    public static boolean setDatatipManagerModeButtonOn() {
-        if (!datatipManagerModeStatus) {
-            datatipManagerModeStatus = true;
-            GraphicController.getController().setProperty(figureUid, GraphicObjectProperties.__GO_INFO_MESSAGE__, datatipMessage);
-        }
+    public boolean isEnabled() {
         return datatipManagerModeStatus;
     }
 
+
+    public void setSelectedTip(String uid) {
+        markColor = highlightSelected(uid, selectedTip, markColor);
+        selectedTip = uid;
+    }
+
+    public String getSelectedTip() {
+        return selectedTip;
+    }
+
+
+
     /**
-    * Set the datatip manager mode off
-    * for graphics menubar's button
+    * Set figure uid
     *
-    * @return Datatip manager mode status off.
+    * @param uid Figure unique identifier.
     */
-    public static boolean setDatatipManagerModeButtonOff() {
-        if (datatipManagerModeStatus) {
-            datatipManagerModeStatus = false;
-            GraphicController.getController().setProperty(figureUid, GraphicObjectProperties.__GO_INFO_MESSAGE__, "");
-        }
-        return datatipManagerModeStatus;
+    public void setFigure(String uid) {
+        figureUid = uid;
     }
 
+
     /**
-    * Get the datatip's actual manager mode
+    * Highlight the datatip mark when selected
     *
-    * @return Datatip manager mode status.
+    * @param newTip datatip to highlight.
+    * @param odTip datatip to restore the orginal color.
+    * @param oldTipColor coor to restore.
+    * @return the original datatip mark color.
     */
-    public static boolean getDatatipManagerMode() {
-        if (datatipManagerModeStatus) {
-            return true;
-        } else {
-            return false;
+    private Integer highlightSelected(String newTip, String oldTip, Integer oldTipColor) {
+
+        Integer color = 0;
+        if (oldTip != null) {
+            GraphicController.getController().setProperty(oldTip, GraphicObjectProperties.__GO_MARK_BACKGROUND__, oldTipColor);
+        }
+        if (newTip != null){
+            color = (Integer) GraphicController.getController().getProperty(newTip, GraphicObjectProperties.__GO_MARK_BACKGROUND__);
+            GraphicController.getController().setProperty(newTip, GraphicObjectProperties.__GO_MARK_BACKGROUND__, -3);
         }
+        return color;
     }
 
-    /**
-    * Set figure uid
-    *
-    * @param uid Figure unique identifier.
-    */
-    public static void setFigure(String uid) {
-        figureUid = uid;
+
+    public boolean pickAndHighlight(Integer x, Integer y) {
+        Integer pos[] = {x, y};
+        String datatip = (new EntityPicker()).pickDatatip(figureUid, pos);
+        setSelectedTip(datatip);
+        return (datatip != null);
     }
+
+    public boolean pickAndDelete(Integer x, Integer y) {
+        Integer pos[] = {x, y};
+        String datatip = (new EntityPicker()).pickDatatip(figureUid, pos);
+
+        if (datatip != null) {
+            DatatipDelete.deleteDatatip(datatip);
+            if (datatip.equals(selectedTip)) {
+                selectedTip = null;
+            }
+        }
+        return (datatip != null);
+    } 
 }
index e1000e4..820ebb6 100644 (file)
 
 package org.scilab.modules.gui.datatip;
 
+
+import org.scilab.modules.gui.datatip.DatatipCommon;
+import org.scilab.modules.gui.datatip.DatatipOrientation;
+
+import org.scilab.modules.renderer.CallRenderer;
 import org.scilab.modules.graphic_objects.graphicController.GraphicController;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.*;
-import org.scilab.modules.renderer.CallRenderer;
 
 
 /**
@@ -31,21 +35,58 @@ public class DatatipMove {
     *
     * @param markerUid datatip marker unique identifier
     */
-    public static void moveRight (String datatipUid) {
-        Integer[] pix_pos = getCoordInteger(datatipUid);
-        pix_pos[0] += 1;
-        DatatipDrag.dragDatatip(datatipUid, pix_pos[0], pix_pos[1]);
+    public static void moveRight(String datatipUid) {
+        move(datatipUid, 1, 2);
     }
 
+
     /**
     * Move a datatip to the left using keyboard
     *
     * @param datatipUid datatip unique identifier
     */
-    public static void moveLeft (String datatipUid) {
-        Integer[] pix_pos = getCoordInteger(datatipUid);
-        pix_pos[0] -= 1;
-        DatatipDrag.dragDatatip(datatipUid, pix_pos[0], pix_pos[1]);
+    public static void moveLeft(String datatipUid) {
+        move(datatipUid, -1, 0);
+    }
+
+    /*
+     * moves the datatip in the given dir(X axis)
+     * seg_offset is used when interp_mode is off so the
+     * datatip is shifted in the right direction (0 -> left, 2 -> right,
+     * the number 0 and 2 is because getSegment returns one segment more
+     * the right would be -1, 1. Probably this is because float round error.
+     */
+    private static void move(String datatipUid, int dir, int seg_offset) {
+
+        String parentPolyline = DatatipCommon.getParentPolyline(datatipUid);
+
+        if (parentPolyline != null) {
+            String figure = (String)GraphicController.getController().getProperty(datatipUid, __GO_PARENT_FIGURE__);
+            Boolean useInterp = (Boolean)GraphicController.getController().getProperty(datatipUid, __GO_DATATIP_INTERP_MODE__);
+            Integer[] pos = getCoordInteger(datatipUid);
+
+
+            DatatipCommon.Segment seg;
+            Double[] newPos;
+            if (useInterp) {
+                pos[0] += dir;
+                double[] c2d = DatatipCommon.getTransformedPosition(figure, pos);
+                seg = DatatipCommon.getSegment(c2d[0], parentPolyline);
+                newPos = DatatipCommon.Interpolate(c2d[0], seg);
+            } else {
+                double[] c2d = DatatipCommon.getTransformedPosition(figure, pos);
+                seg = DatatipCommon.getSegment(c2d[0], parentPolyline, seg_offset);
+                newPos = new Double[] {seg.x0, seg.y0, 0.0};
+            }
+
+            GraphicController.getController().setProperty(datatipUid, __GO_DATATIP_DATA__, newPos);
+
+            Boolean AutoOrientation = (Boolean)GraphicController.getController().getProperty(datatipUid, __GO_DATATIP_AUTOORIENTATION__);
+            if (AutoOrientation) {
+                DatatipOrientation.setOrientation(datatipUid, seg);
+            }
+
+        }
     }
 
     /**
diff --git a/scilab/modules/gui/src/java/org/scilab/modules/gui/datatip/DatatipSelect.java b/scilab/modules/gui/src/java/org/scilab/modules/gui/datatip/DatatipSelect.java
deleted file mode 100644 (file)
index c5311c2..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
- * Copyright (C) 2012 - Gustavo Barbosa Libotte
- *
- * This file must be used under the terms of the CeCILL.
- * This source file is licensed as described in the file COPYING, which
- * you should have received as part of this distribution.  The terms
- * are also available at
- * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
- *
- */
-
-package org.scilab.modules.gui.datatip;
-
-import java.util.ArrayList;
-
-import org.scilab.modules.gui.editor.EntityPicker;
-import org.scilab.modules.gui.datatip.DatatipCreate;
-import org.scilab.modules.gui.datatip.DatatipHighlight;
-
-/**
- * Select a datatip
- * @author Gustavo Barbosa Libotte
- */
-public class DatatipSelect {
-
-    /**
-    * Select a datatip when click on it
-    *
-    * @param figureUid Figure unique identifier.
-    * @param coordIntX Integer with pixel mouse position x.
-    * @param coordIntY Integer with pixel mouse position y.
-    * @return String containing the datatip unique identifier
-    */
-    public static String selectDatatip(String figureUid, Integer coordIntX, Integer coordIntY) {
-
-        Integer pos[] = {coordIntX, coordIntY};
-        String datatip = (new EntityPicker()).pickDatatip(figureUid, pos);
-        DatatipHighlight.highlightSelected(datatip);
-        return datatip;
-    }
-}
index c0cf339..8eac8e6 100644 (file)
@@ -24,7 +24,7 @@ import javax.swing.JMenu;
 import javax.swing.JMenuItem;
 import javax.swing.JPopupMenu;
 
-import org.scilab.modules.gui.datatip.DatatipSelect;
+import org.scilab.modules.gui.datatip.DatatipManager;
 import org.scilab.modules.gui.editor.ScilabClipboard;
 import org.scilab.modules.gui.editor.SystemClipboard;
 import org.scilab.modules.gui.editor.PolylineHandler;
@@ -750,9 +750,8 @@ public class Editor {
         if (lastClick[0] != 0 && lastClick[1] != 0) {
 
             /*first try pick datatip*/
-            String selectedDatatip = DatatipSelect.selectDatatip(figureUid, lastClick[0], lastClick[1]);
-            if (selectedDatatip != null) {
-                Inspector.getInspector(SelectionEnum.DATATIP , selectedDatatip, 0, 0);
+            if (DatatipManager.getFromUid(figureUid).pickAndHighlight(lastClick[0], lastClick[1])) {
+                Inspector.getInspector(SelectionEnum.DATATIP , DatatipManager.getFromUid(figureUid).getSelectedTip(), 0, 0);
             } else {
 
                 String picked = tryPickAnyObject(lastClick);
index 4a388c9..2639abb 100644 (file)
@@ -20,12 +20,12 @@ import java.awt.event.MouseListener;
 import java.awt.event.MouseMotionListener;
 
 import org.scilab.modules.gui.datatip.DatatipCreate;
-import org.scilab.modules.gui.datatip.DatatipSelect;
 import org.scilab.modules.gui.datatip.DatatipDelete;
 import org.scilab.modules.gui.datatip.DatatipMove;
 import org.scilab.modules.gui.datatip.DatatipDrag;
 import org.scilab.modules.gui.datatip.DatatipOrientation;
 import org.scilab.modules.gui.datatip.DatatipManagerMode;
+import org.scilab.modules.gui.datatip.DatatipManager;
 
 import org.scilab.modules.gui.editor.Editor;
 import org.scilab.modules.gui.editor.EditorManager;
@@ -54,7 +54,7 @@ public class EditorEventListener implements KeyListener, MouseListener, MouseMot
     String picked;
     EntityPicker ep;
 
-    String selectedDatatip = null;
+    DatatipManagerMode datatipManagerMode;
     String lastDatatip = null;
     Integer[] lastClick = new Integer[2];
     boolean changeOrientation = false; 
@@ -68,23 +68,24 @@ public class EditorEventListener implements KeyListener, MouseListener, MouseMot
         windowUid = uid;
         editor = EditorManager.newEditor(uid);
         ep = new EntityPicker();
-        DatatipManagerMode.setFigure(uid);
+        datatipManagerMode = DatatipManager.newDatatipManagerMode(uid);
     }
 
     public void onExit() {
         EditorManager.deleteEditor(editor.getFigureUid());
+       DatatipManager.deleteDatatipManager(windowUid);
     }
 
     public void keyPressed(KeyEvent arg0) {
 
         editor.onKeyPressed(arg0);
 
-        if (DatatipManagerMode.getDatatipManagerMode()) {
-            if (selectedDatatip != null) {
+        if (datatipManagerMode.isEnabled()) {
+            if (datatipManagerMode.getSelectedTip() != null) {
                 if (arg0.getKeyCode() == KeyEvent.VK_RIGHT) {
-                    DatatipMove.moveRight (selectedDatatip);
+                    DatatipMove.moveRight(datatipManagerMode.getSelectedTip());
                 } else if (arg0.getKeyCode() == KeyEvent.VK_LEFT) {
-                    DatatipMove.moveLeft (selectedDatatip);
+                    DatatipMove.moveLeft(datatipManagerMode.getSelectedTip());
                 }
             }
         }
@@ -119,7 +120,7 @@ public class EditorEventListener implements KeyListener, MouseListener, MouseMot
 
                 isLeftButtonPressed = true;
 
-            if (!DatatipManagerMode.getDatatipManagerMode()) {
+            if (!datatipManagerMode.isEnabled()) {
                 editor.onLeftMouseDown(arg0);
 
                 // Part responsible for the exchange of properties of the GED.
@@ -131,8 +132,7 @@ public class EditorEventListener implements KeyListener, MouseListener, MouseMot
                     PlotBrowser.getPlotBrowser(windowUid);
                 }
             } else {
-                selectedDatatip = DatatipSelect.selectDatatip(windowUid, arg0.getX(), arg0.getY());
-                if (selectedDatatip == null) {
+                if (!datatipManagerMode.pickAndHighlight(arg0.getX(), arg0.getY())) {
                     picked = ep.pick(windowUid, arg0.getX(), arg0.getY());
                     if (picked != null) {
                         lastClick[0] = arg0.getX();
@@ -152,7 +152,7 @@ public class EditorEventListener implements KeyListener, MouseListener, MouseMot
      * @param arg0 MouseEvent
      */
     public void mouseReleased(MouseEvent arg0) {
-        if (!DatatipManagerMode.getDatatipManagerMode()) {
+        if (!datatipManagerMode.isEnabled()) {
 
             if (arg0.getButton() == 3) {
                 if (!isInRotation) {
@@ -164,12 +164,7 @@ public class EditorEventListener implements KeyListener, MouseListener, MouseMot
 
         } else {
             if (arg0.getButton() == 3 && !isInRotation) {
-                Integer pos[] = {arg0.getX(), arg0.getY()};
-                selectedDatatip = ep.pickDatatip(windowUid, pos);
-                if (selectedDatatip != null) {
-                    DatatipDelete.deleteDatatip(selectedDatatip);
-                    selectedDatatip = null;
-                }
+                datatipManagerMode.pickAndDelete(arg0.getX(), arg0.getY());
             }
         }
         isInRotation = false;
@@ -184,7 +179,7 @@ public class EditorEventListener implements KeyListener, MouseListener, MouseMot
      */
     public void mouseDragged(MouseEvent arg0) {
 
-        if (!DatatipManagerMode.getDatatipManagerMode()) {
+        if (!datatipManagerMode.isEnabled()) {
 
             if (isLeftButtonPressed) {
                 editor.onMouseDragged(arg0);
@@ -195,8 +190,8 @@ public class EditorEventListener implements KeyListener, MouseListener, MouseMot
             if (changeOrientation) {
                 Integer[] curClick = {arg0.getX(), arg0.getY()};
                 DatatipOrientation.setOrientation(lastDatatip, lastClick, curClick);
-            } else if (selectedDatatip != null && isLeftButtonPressed) {
-                DatatipDrag.dragDatatip(selectedDatatip, arg0.getX(), arg0.getY());
+            } else if (datatipManagerMode.getSelectedTip() != null && isLeftButtonPressed) {
+                DatatipDrag.dragDatatip(datatipManagerMode.getSelectedTip(), arg0.getX(), arg0.getY());
             }
         }
     }
index 1a7d2a0..8af775b 100755 (executable)
@@ -8,10 +8,6 @@
             <parameter name="polylineUid" type="String"/>
             <parameter name="indexPoint" type="int"/>
         </method>
-        <method name="datatipSetInterp" returnType="void" modifier="static">
-            <parameter name="polylineUid" type="String"/>
-            <parameter name="interpMode" type="boolean"/>
-        </method>
     </object>
     <object name="DatatipDelete">
         <method name="datatipRemoveProgramIndex" returnType="void" modifier="static">
             <parameter name="figureUid" type="String"/>
         </method>
     </object>
+
+    <object name="DatatipManager">
+        <method name="setEnabled" returnType="void" modifier="static">
+            <parameter name="uid" type="String"/>
+            <parameter name="b" type="boolean"/>
+        </method>
+        <method name="isEnabled" returnType="boolean" modifier="static">
+            <parameter name="uid" type="String"/>
+        </method>
+        <method name="getSelected" returnType="String" modifier="static">
+            <parameter name="uid" type="String"/>
+        </method>
+        <method name="setSelected" returnType="void" modifier="static">
+            <parameter name="figureUid" type="String"/>
+            <parameter name="tipUid" type="String"/>
+        </method>
+    </object>
 </package>
index c28b1bd..6c4103e 100644 (file)
@@ -1,7 +1,6 @@
 #include "DatatipCreate.hxx"
-
 /* Generated by GIWS (version 2.0.0) with command:
-giws -f Datatip.giws.xml -p 
+giws --disable-return-size-array --output-dir src/jni/ --throws-exception-on-error --description-file src/jni/Datatip.giws.xml 
 */
 /*
 
@@ -45,7 +44,6 @@ knowledge of the CeCILL-B license and that you accept its terms.
 
 namespace org_scilab_modules_gui_datatip {
 
-
                 // Static declarations (if any)
                 
 // Returns the current env
@@ -54,9 +52,7 @@ JNIEnv * DatatipCreate::getCurrentEnv() {
 JNIEnv * curEnv = NULL;
 jint res=this->jvm->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
 if (res != JNI_OK) {
-std::cerr << "Could not retrieve the current JVM." << std::endl;
-exit(EXIT_FAILURE);
-
+throw GiwsException::JniException(getCurrentEnv());
 }
 return curEnv;
 }
@@ -83,9 +79,7 @@ JNIEnv * curEnv = getCurrentEnv();
 
 localClass = curEnv->FindClass( this->className().c_str() ) ;
 if (localClass == NULL) {
-std::cerr << "Could not get the Class " << this->className() <<  std::endl;
-curEnv->ExceptionDescribe();
-exit(EXIT_FAILURE);
+  throw GiwsException::JniClassNotFoundException(curEnv, this->className());
 }
 
 this->instanceClass = static_cast<jclass>(curEnv->NewGlobalRef(localClass));
@@ -94,31 +88,23 @@ this->instanceClass = static_cast<jclass>(curEnv->NewGlobalRef(localClass));
 curEnv->DeleteLocalRef(localClass);
 
 if (this->instanceClass == NULL) {
-std::cerr << "Could not create a Global Ref of " << this->className() <<  std::endl;
-curEnv->ExceptionDescribe();
-exit(EXIT_FAILURE);
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
 }
 
 
 constructObject = curEnv->GetMethodID( this->instanceClass, construct.c_str() , param.c_str() ) ;
 if(constructObject == NULL){
-std::cerr << "Could not retrieve the constructor of the class " << this->className() << " with the profile : " << construct << param << std::endl;
-curEnv->ExceptionDescribe();
-exit(EXIT_FAILURE);
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
 }
 
 localInstance = curEnv->NewObject( this->instanceClass, constructObject ) ;
 if(localInstance == NULL){
-std::cerr << "Could not instantiate the object " << this->className() << " with the constructor : " << construct << param << std::endl;
-curEnv->ExceptionDescribe();
-exit(EXIT_FAILURE);
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
 }
  
 this->instance = curEnv->NewGlobalRef(localInstance) ;
 if(this->instance == NULL){
-std::cerr << "Could not create a new global ref of " << this->className() << std::endl;
-curEnv->ExceptionDescribe();
-exit(EXIT_FAILURE);
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
 }
 /* localInstance not needed anymore */
 curEnv->DeleteLocalRef(localInstance);
@@ -140,18 +126,12 @@ jclass localClass = curEnv->GetObjectClass(JObj);
         curEnv->DeleteLocalRef(localClass);
 
         if (this->instanceClass == NULL) {
-
-std::cerr << "Could not create a Global Ref of " << this->className() <<  std::endl;
-curEnv->ExceptionDescribe();
-exit(EXIT_FAILURE);
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
         }
 
         this->instance = curEnv->NewGlobalRef(JObj) ;
         if(this->instance == NULL){
-
-std::cerr << "Could not create a new global ref of " << this->className() << std::endl;
-curEnv->ExceptionDescribe();
-exit(EXIT_FAILURE);
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
         }
         /* Methods ID set to NULL */
         jstringcreateDatatipProgramCoordjstringjava_lang_StringjdoubleArray_doubledoubleID=NULL;
@@ -164,17 +144,13 @@ jstringcreateDatatipProgramIndexjstringjava_lang_StringjintintID=NULL;
 
 void DatatipCreate::synchronize() {
 if (getCurrentEnv()->MonitorEnter(instance) != JNI_OK) {
-std::cerr << "Fail to enter monitor." << std::endl;
-exit(EXIT_FAILURE);
-
+throw GiwsException::JniMonitorException(getCurrentEnv(), "DatatipCreate");
 }
 }
 
 void DatatipCreate::endSynchronize() {
 if ( getCurrentEnv()->MonitorExit(instance) != JNI_OK) {
-
-std::cerr << "Fail to exit monitor." << std::endl;
-exit(EXIT_FAILURE);
+throw GiwsException::JniMonitorException(getCurrentEnv(), "DatatipCreate");
 }
 }
 // Method(s)
@@ -187,31 +163,32 @@ jclass cls = curEnv->FindClass( className().c_str() );
 
 jmethodID jstringcreateDatatipProgramCoordjstringjava_lang_StringjdoubleArray_doubledoubleID = curEnv->GetStaticMethodID(cls, "createDatatipProgramCoord", "(Ljava/lang/String;[D)Ljava/lang/String;" ) ;
 if (jstringcreateDatatipProgramCoordjstringjava_lang_StringjdoubleArray_doubledoubleID == NULL) {
-std::cerr << "Could not access to the method " << "createDatatipProgramCoord" << std::endl;
-curEnv->ExceptionDescribe();
-
-exit(EXIT_FAILURE);
+throw GiwsException::JniMethodNotFoundException(curEnv, "createDatatipProgramCoord");
 }
 
 jstring polylineUid_ = curEnv->NewStringUTF( polylineUid );
 if (polylineUid != NULL && polylineUid_ == NULL)
 {
-std::cerr << "Could not convert C string to Java UTF string, memory full." << std::endl;
-exit(EXIT_FAILURE);
+throw GiwsException::JniBadAllocException(curEnv);
 }
 
 
 jdoubleArray coordDoubleXY_ = curEnv->NewDoubleArray( coordDoubleXYSize ) ;
 
+if (coordDoubleXY_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
 curEnv->SetDoubleArrayRegion( coordDoubleXY_, 0, coordDoubleXYSize, (jdouble*)(coordDoubleXY) ) ;
 
 
                         jstring res =  static_cast<jstring>( curEnv->CallStaticObjectMethod(cls, jstringcreateDatatipProgramCoordjstringjava_lang_StringjdoubleArray_doubledoubleID ,polylineUid_, coordDoubleXY_));
                         if (curEnv->ExceptionCheck()) {
-curEnv->ExceptionDescribe() ;
+throw GiwsException::JniCallMethodException(curEnv);
 }
 
-
 const char *tempString = curEnv->GetStringUTFChars(res, 0);
 char * myStringBuffer = new char[strlen(tempString) + 1];
 strcpy(myStringBuffer, tempString);
@@ -221,9 +198,9 @@ curEnv->DeleteLocalRef(polylineUid_);
 curEnv->DeleteLocalRef(coordDoubleXY_);
 curEnv->DeleteLocalRef(cls);
 if (curEnv->ExceptionCheck()) {
-curEnv->ExceptionDescribe() ;
+delete[] myStringBuffer;
+                                throw GiwsException::JniCallMethodException(curEnv);
 }
-
 return myStringBuffer;
 
 }
@@ -236,26 +213,21 @@ jclass cls = curEnv->FindClass( className().c_str() );
 
 jmethodID jstringcreateDatatipProgramIndexjstringjava_lang_StringjintintID = curEnv->GetStaticMethodID(cls, "createDatatipProgramIndex", "(Ljava/lang/String;I)Ljava/lang/String;" ) ;
 if (jstringcreateDatatipProgramIndexjstringjava_lang_StringjintintID == NULL) {
-std::cerr << "Could not access to the method " << "createDatatipProgramIndex" << std::endl;
-curEnv->ExceptionDescribe();
-
-exit(EXIT_FAILURE);
+throw GiwsException::JniMethodNotFoundException(curEnv, "createDatatipProgramIndex");
 }
 
 jstring polylineUid_ = curEnv->NewStringUTF( polylineUid );
 if (polylineUid != NULL && polylineUid_ == NULL)
 {
-std::cerr << "Could not convert C string to Java UTF string, memory full." << std::endl;
-exit(EXIT_FAILURE);
+throw GiwsException::JniBadAllocException(curEnv);
 }
 
 
                         jstring res =  static_cast<jstring>( curEnv->CallStaticObjectMethod(cls, jstringcreateDatatipProgramIndexjstringjava_lang_StringjintintID ,polylineUid_, indexPoint));
                         if (curEnv->ExceptionCheck()) {
-curEnv->ExceptionDescribe() ;
+throw GiwsException::JniCallMethodException(curEnv);
 }
 
-
 const char *tempString = curEnv->GetStringUTFChars(res, 0);
 char * myStringBuffer = new char[strlen(tempString) + 1];
 strcpy(myStringBuffer, tempString);
@@ -264,13 +236,11 @@ curEnv->DeleteLocalRef(res);
 curEnv->DeleteLocalRef(polylineUid_);
 curEnv->DeleteLocalRef(cls);
 if (curEnv->ExceptionCheck()) {
-curEnv->ExceptionDescribe() ;
+delete[] myStringBuffer;
+                                throw GiwsException::JniCallMethodException(curEnv);
 }
-
 return myStringBuffer;
 
 }
 
-
 }
-
index 1f54c39..d5d9448 100644 (file)
@@ -1,5 +1,5 @@
 /* Generated by GIWS (version 2.0.0) with command:
-giws -f Datatip.giws.xml -p 
+giws --disable-return-size-array --output-dir src/jni/ --throws-exception-on-error --description-file src/jni/Datatip.giws.xml 
 */
 /*
 
@@ -42,18 +42,20 @@ knowledge of the CeCILL-B license and that you accept its terms.
 */
 
 
-#ifndef __ORG_SCILAB_MODULES_GUI_DATATIP__
-#define __ORG_SCILAB_MODULES_GUI_DATATIP__
+#ifndef __ORG_SCILAB_MODULES_GUI_DATATIP_DATATIPCREATE__
+#define __ORG_SCILAB_MODULES_GUI_DATATIP_DATATIPCREATE__
 #include <iostream>
 #include <string>
 #include <string.h>
 #include <stdlib.h>
 #include <jni.h>
 
-        #if !defined(byte) | !defined(_MSC_VER) /* Defined anyway with Visual */
-                typedef signed char byte;
+#include "GiwsException.hxx"
+
+        #if defined(_MSC_VER) /* Defined anyway with Visual */
+            #include <Windows.h>
         #else
-                #pragma message("Byte has been redefined elsewhere. Some problems can happen")
+            typedef signed char byte;
         #endif
 
 
@@ -74,7 +76,6 @@ knowledge of the CeCILL-B license and that you accept its terms.
 #endif
 
 namespace org_scilab_modules_gui_datatip {
-
 class GIWSEXPORT DatatipCreate {
 
 private:
@@ -160,7 +161,5 @@ static char* createDatatipProgramIndex(JavaVM * jvm_, char const* polylineUid, i
 };
 
 
-
 }
 #endif
-
diff --git a/scilab/modules/gui/src/jni/DatatipDelete.cpp b/scilab/modules/gui/src/jni/DatatipDelete.cpp
new file mode 100644 (file)
index 0000000..aff4085
--- /dev/null
@@ -0,0 +1,218 @@
+#include "DatatipDelete.hxx"
+/* Generated by GIWS (version 2.0.0) with command:
+giws --disable-return-size-array --output-dir src/jni/ --throws-exception-on-error --description-file src/jni/Datatip.giws.xml 
+*/
+/*
+
+Copyright 2007-2008 INRIA
+Copyright 2008-2011 DIGITEO
+Copyright 2011-2012 Scilab Enterprises
+
+Author : Sylvestre Ledru & others
+
+This is generated code.
+
+This software is a computer program whose purpose is to hide the complexity
+of accessing Java objects/methods from C++ code.
+
+This software is governed by the CeCILL-B license under French law and
+abiding by the rules of distribution of free software.  You can  use, 
+modify and/ or redistribute the software under the terms of the CeCILL-B
+license as circulated by CEA, CNRS and INRIA at the following URL
+"http://www.cecill.info". 
+
+As a counterpart to the access to the source code and  rights to copy,
+modify and redistribute granted by the license, users are provided only
+with a limited warranty  and the software's author,  the holder of the
+economic rights,  and the successive licensors  have only  limited
+liability. 
+
+In this respect, the user's attention is drawn to the risks associated
+with loading,  using,  modifying and/or developing or reproducing the
+software by the user in light of its specific status of free software,
+that may mean  that it is complicated to manipulate,  and  that  also
+therefore means  that it is reserved for developers  and  experienced
+professionals having in-depth computer knowledge. Users are therefore
+encouraged to load and test the software's suitability as regards their
+requirements in conditions enabling the security of their systems and/or 
+data to be ensured and,  more generally, to use and operate it in the 
+same conditions as regards security. 
+
+The fact that you are presently reading this means that you have had
+knowledge of the CeCILL-B license and that you accept its terms.
+*/
+
+namespace org_scilab_modules_gui_datatip {
+
+                // Static declarations (if any)
+                
+// Returns the current env
+
+JNIEnv * DatatipDelete::getCurrentEnv() {
+JNIEnv * curEnv = NULL;
+jint res=this->jvm->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+if (res != JNI_OK) {
+throw GiwsException::JniException(getCurrentEnv());
+}
+return curEnv;
+}
+// Destructor
+
+DatatipDelete::~DatatipDelete() {
+JNIEnv * curEnv = NULL;
+this->jvm->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+
+curEnv->DeleteGlobalRef(this->instance);
+curEnv->DeleteGlobalRef(this->instanceClass);
+}
+// Constructors
+DatatipDelete::DatatipDelete(JavaVM * jvm_) {
+jmethodID constructObject = NULL ;
+jobject localInstance ;
+jclass localClass ;
+
+const std::string construct="<init>";
+const std::string param="()V";
+jvm=jvm_;
+
+JNIEnv * curEnv = getCurrentEnv();
+
+localClass = curEnv->FindClass( this->className().c_str() ) ;
+if (localClass == NULL) {
+  throw GiwsException::JniClassNotFoundException(curEnv, this->className());
+}
+
+this->instanceClass = static_cast<jclass>(curEnv->NewGlobalRef(localClass));
+
+/* localClass is not needed anymore */
+curEnv->DeleteLocalRef(localClass);
+
+if (this->instanceClass == NULL) {
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+}
+
+
+constructObject = curEnv->GetMethodID( this->instanceClass, construct.c_str() , param.c_str() ) ;
+if(constructObject == NULL){
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+}
+
+localInstance = curEnv->NewObject( this->instanceClass, constructObject ) ;
+if(localInstance == NULL){
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+}
+this->instance = curEnv->NewGlobalRef(localInstance) ;
+if(this->instance == NULL){
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+}
+/* localInstance not needed anymore */
+curEnv->DeleteLocalRef(localInstance);
+
+                /* Methods ID set to NULL */
+voiddatatipRemoveProgramIndexjstringjava_lang_StringjintintID=NULL;
+voiddatatipRemoveProgramHandlerjstringjava_lang_Stringjstringjava_lang_StringID=NULL;
+
+
+}
+
+DatatipDelete::DatatipDelete(JavaVM * jvm_, jobject JObj) {
+        jvm=jvm_;
+
+        JNIEnv * curEnv = getCurrentEnv();
+
+jclass localClass = curEnv->GetObjectClass(JObj);
+        this->instanceClass = static_cast<jclass>(curEnv->NewGlobalRef(localClass));
+        curEnv->DeleteLocalRef(localClass);
+
+        if (this->instanceClass == NULL) {
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+        }
+
+        this->instance = curEnv->NewGlobalRef(JObj) ;
+        if(this->instance == NULL){
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+        }
+        /* Methods ID set to NULL */
+        voiddatatipRemoveProgramIndexjstringjava_lang_StringjintintID=NULL;
+voiddatatipRemoveProgramHandlerjstringjava_lang_Stringjstringjava_lang_StringID=NULL;
+
+
+}
+
+// Generic methods
+
+void DatatipDelete::synchronize() {
+if (getCurrentEnv()->MonitorEnter(instance) != JNI_OK) {
+throw GiwsException::JniMonitorException(getCurrentEnv(), "DatatipDelete");
+}
+}
+
+void DatatipDelete::endSynchronize() {
+if ( getCurrentEnv()->MonitorExit(instance) != JNI_OK) {
+throw GiwsException::JniMonitorException(getCurrentEnv(), "DatatipDelete");
+}
+}
+// Method(s)
+
+void DatatipDelete::datatipRemoveProgramIndex (JavaVM * jvm_, char const* polylineUid, int indexRemove){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = curEnv->FindClass( className().c_str() );
+
+jmethodID voiddatatipRemoveProgramIndexjstringjava_lang_StringjintintID = curEnv->GetStaticMethodID(cls, "datatipRemoveProgramIndex", "(Ljava/lang/String;I)V" ) ;
+if (voiddatatipRemoveProgramIndexjstringjava_lang_StringjintintID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "datatipRemoveProgramIndex");
+}
+
+jstring polylineUid_ = curEnv->NewStringUTF( polylineUid );
+if (polylineUid != NULL && polylineUid_ == NULL)
+{
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+
+                         curEnv->CallStaticVoidMethod(cls, voiddatatipRemoveProgramIndexjstringjava_lang_StringjintintID ,polylineUid_, indexRemove);
+                        curEnv->DeleteLocalRef(polylineUid_);
+curEnv->DeleteLocalRef(cls);
+if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+}
+
+void DatatipDelete::datatipRemoveProgramHandler (JavaVM * jvm_, char const* datatipUid, char const* figureUid){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = curEnv->FindClass( className().c_str() );
+
+jmethodID voiddatatipRemoveProgramHandlerjstringjava_lang_Stringjstringjava_lang_StringID = curEnv->GetStaticMethodID(cls, "datatipRemoveProgramHandler", "(Ljava/lang/String;Ljava/lang/String;)V" ) ;
+if (voiddatatipRemoveProgramHandlerjstringjava_lang_Stringjstringjava_lang_StringID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "datatipRemoveProgramHandler");
+}
+
+jstring datatipUid_ = curEnv->NewStringUTF( datatipUid );
+if (datatipUid != NULL && datatipUid_ == NULL)
+{
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+
+jstring figureUid_ = curEnv->NewStringUTF( figureUid );
+if (figureUid != NULL && figureUid_ == NULL)
+{
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+
+                         curEnv->CallStaticVoidMethod(cls, voiddatatipRemoveProgramHandlerjstringjava_lang_Stringjstringjava_lang_StringID ,datatipUid_, figureUid_);
+                        curEnv->DeleteLocalRef(datatipUid_);
+curEnv->DeleteLocalRef(figureUid_);
+curEnv->DeleteLocalRef(cls);
+if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+}
+
+}
@@ -1,5 +1,5 @@
 /* Generated by GIWS (version 2.0.0) with command:
-giws -f Datatip.giws.xml -p -r 
+giws --disable-return-size-array --output-dir src/jni/ --throws-exception-on-error --description-file src/jni/Datatip.giws.xml 
 */
 /*
 
@@ -42,14 +42,16 @@ knowledge of the CeCILL-B license and that you accept its terms.
 */
 
 
-#ifndef __ORG_SCILAB_MODULES_GUI_DATATIP__
-#define __ORG_SCILAB_MODULES_GUI_DATATIP__
+#ifndef __ORG_SCILAB_MODULES_GUI_DATATIP_DATATIPDELETE__
+#define __ORG_SCILAB_MODULES_GUI_DATATIP_DATATIPDELETE__
 #include <iostream>
 #include <string>
 #include <string.h>
 #include <stdlib.h>
 #include <jni.h>
 
+#include "GiwsException.hxx"
+
         #if defined(_MSC_VER) /* Defined anyway with Visual */
             #include <Windows.h>
         #else
@@ -74,98 +76,6 @@ knowledge of the CeCILL-B license and that you accept its terms.
 #endif
 
 namespace org_scilab_modules_gui_datatip {
-
-class GIWSEXPORT DatatipCreate {
-
-private:
-JavaVM * jvm;
-
-protected:
-jmethodID jstringcreateDatatipProgramCoordjstringjava_lang_StringjdoubleArray_doubledoubleID; // cache method id
-jmethodID jdoubleArray_createDatatipFieldjstringjava_lang_StringjdoubleArray_doubledoubleID; // cache method id
-jmethodID jstringcreateDatatipProgramIndexjstringjava_lang_StringjintintID; // cache method id
-jmethodID voiddatatipSetInterpjstringjava_lang_StringjbooleanbooleanID; // cache method id
-
-
-
-jobject instance;
-jclass instanceClass; // cache class
-
-                       
-// Caching (if any)
-
-
-/**
-* Get the environment matching to the current thread.
-*/
-virtual JNIEnv * getCurrentEnv();
-
-public:
-// Constructor
-/**
-* Create a wrapping of the object from a JNIEnv.
-* It will call the default constructor
-* @param JEnv_ the Java Env
-*/
-DatatipCreate(JavaVM * jvm_);
-
-/**
-* Create a wrapping of an already existing object from a JNIEnv.
-* The object must have already been instantiated
-* @param JEnv_ the Java Env
-* @param JObj the object
-*/
-DatatipCreate(JavaVM * jvm_, jobject JObj);
-
-
-/** 
-* This is a fake constructor to avoid the constructor
-* chaining when dealing with extended giws classes 
-*/
-#ifdef FAKEGIWSDATATYPE
-DatatipCreate(fakeGiwsDataType::fakeGiwsDataType /* unused */) {}
-#endif
-
-// Destructor
-~DatatipCreate();
-
-// Generic method
-// Synchronization methods
-/**
-* Enter monitor associated with the object.
-* Equivalent of creating a "synchronized(obj)" scope in Java.
-*/
-void synchronize();
-
-/**
-* Exit monitor associated with the object.
-* Equivalent of ending a "synchronized(obj)" scope.
-*/
-void endSynchronize();
-
-// Methods
-static char* createDatatipProgramCoord(JavaVM * jvm_, char const* polylineUid, double const* coordDoubleXY, int coordDoubleXYSize);
-
-static double* createDatatipField(JavaVM * jvm_, char const* polylineUid, double const* coordDoubleXY, int coordDoubleXYSize);
-
-static char* createDatatipProgramIndex(JavaVM * jvm_, char const* polylineUid, int indexPoint);
-
-static void datatipSetInterp(JavaVM * jvm_, char const* polylineUid, bool interpMode);
-
-
-                        /**
-                        * Get class name to use for static methods
-                        * @return class name to use for static methods
-                        */
-                        
-                static const std::string className()
-                {
-                return "org/scilab/modules/gui/datatip/DatatipCreate";
-                }
-                
-};
-
-
 class GIWSEXPORT DatatipDelete {
 
 private:
@@ -251,7 +161,5 @@ static void datatipRemoveProgramHandler(JavaVM * jvm_, char const* datatipUid, c
 };
 
 
-
 }
 #endif
-
diff --git a/scilab/modules/gui/src/jni/DatatipFunctions.cpp b/scilab/modules/gui/src/jni/DatatipFunctions.cpp
deleted file mode 100644 (file)
index d857cf4..0000000
+++ /dev/null
@@ -1,575 +0,0 @@
-#include "DatatipFunctions.hxx"
-
-/* Generated by GIWS (version 2.0.0) with command:
-giws -f Datatip.giws.xml -p -r 
-*/
-/*
-
-Copyright 2007-2008 INRIA
-Copyright 2008-2011 DIGITEO
-Copyright 2011-2012 Scilab Enterprises
-
-Author : Sylvestre Ledru & others
-
-This is generated code.
-
-This software is a computer program whose purpose is to hide the complexity
-of accessing Java objects/methods from C++ code.
-
-This software is governed by the CeCILL-B license under French law and
-abiding by the rules of distribution of free software.  You can  use, 
-modify and/ or redistribute the software under the terms of the CeCILL-B
-license as circulated by CEA, CNRS and INRIA at the following URL
-"http://www.cecill.info". 
-
-As a counterpart to the access to the source code and  rights to copy,
-modify and redistribute granted by the license, users are provided only
-with a limited warranty  and the software's author,  the holder of the
-economic rights,  and the successive licensors  have only  limited
-liability. 
-
-In this respect, the user's attention is drawn to the risks associated
-with loading,  using,  modifying and/or developing or reproducing the
-software by the user in light of its specific status of free software,
-that may mean  that it is complicated to manipulate,  and  that  also
-therefore means  that it is reserved for developers  and  experienced
-professionals having in-depth computer knowledge. Users are therefore
-encouraged to load and test the software's suitability as regards their
-requirements in conditions enabling the security of their systems and/or 
-data to be ensured and,  more generally, to use and operate it in the 
-same conditions as regards security. 
-
-The fact that you are presently reading this means that you have had
-knowledge of the CeCILL-B license and that you accept its terms.
-*/
-
-namespace org_scilab_modules_gui_datatip {
-
-
-                // Static declarations (if any)
-                
-// Returns the current env
-
-JNIEnv * DatatipCreate::getCurrentEnv() {
-JNIEnv * curEnv = NULL;
-jint res=this->jvm->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
-if (res != JNI_OK) {
-std::cerr << "Could not retrieve the current JVM." << std::endl;
-exit(EXIT_FAILURE);
-
-}
-return curEnv;
-}
-// Destructor
-
-DatatipCreate::~DatatipCreate() {
-JNIEnv * curEnv = NULL;
-this->jvm->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
-
-curEnv->DeleteGlobalRef(this->instance);
-curEnv->DeleteGlobalRef(this->instanceClass);
-}
-// Constructors
-DatatipCreate::DatatipCreate(JavaVM * jvm_) {
-jmethodID constructObject = NULL ;
-jobject localInstance ;
-jclass localClass ;
-
-const std::string construct="<init>";
-const std::string param="()V";
-jvm=jvm_;
-
-JNIEnv * curEnv = getCurrentEnv();
-
-localClass = curEnv->FindClass( this->className().c_str() ) ;
-if (localClass == NULL) {
-std::cerr << "Could not get the Class " << this->className() <<  std::endl;
-curEnv->ExceptionDescribe();
-exit(EXIT_FAILURE);
-}
-
-this->instanceClass = static_cast<jclass>(curEnv->NewGlobalRef(localClass));
-
-/* localClass is not needed anymore */
-curEnv->DeleteLocalRef(localClass);
-
-if (this->instanceClass == NULL) {
-std::cerr << "Could not create a Global Ref of " << this->className() <<  std::endl;
-curEnv->ExceptionDescribe();
-exit(EXIT_FAILURE);
-}
-
-
-constructObject = curEnv->GetMethodID( this->instanceClass, construct.c_str() , param.c_str() ) ;
-if(constructObject == NULL){
-std::cerr << "Could not retrieve the constructor of the class " << this->className() << " with the profile : " << construct << param << std::endl;
-curEnv->ExceptionDescribe();
-exit(EXIT_FAILURE);
-}
-
-localInstance = curEnv->NewObject( this->instanceClass, constructObject ) ;
-if(localInstance == NULL){
-std::cerr << "Could not instantiate the object " << this->className() << " with the constructor : " << construct << param << std::endl;
-curEnv->ExceptionDescribe();
-exit(EXIT_FAILURE);
-}
-this->instance = curEnv->NewGlobalRef(localInstance) ;
-if(this->instance == NULL){
-std::cerr << "Could not create a new global ref of " << this->className() << std::endl;
-curEnv->ExceptionDescribe();
-exit(EXIT_FAILURE);
-}
-/* localInstance not needed anymore */
-curEnv->DeleteLocalRef(localInstance);
-
-                /* Methods ID set to NULL */
-jstringcreateDatatipProgramCoordjstringjava_lang_StringjdoubleArray_doubledoubleID=NULL;
-jdoubleArray_createDatatipFieldjstringjava_lang_StringjdoubleArray_doubledoubleID=NULL;
-jstringcreateDatatipProgramIndexjstringjava_lang_StringjintintID=NULL;
-voiddatatipSetInterpjstringjava_lang_StringjbooleanbooleanID=NULL;
-
-
-}
-
-DatatipCreate::DatatipCreate(JavaVM * jvm_, jobject JObj) {
-        jvm=jvm_;
-
-        JNIEnv * curEnv = getCurrentEnv();
-
-jclass localClass = curEnv->GetObjectClass(JObj);
-        this->instanceClass = static_cast<jclass>(curEnv->NewGlobalRef(localClass));
-        curEnv->DeleteLocalRef(localClass);
-
-        if (this->instanceClass == NULL) {
-
-std::cerr << "Could not create a Global Ref of " << this->className() <<  std::endl;
-curEnv->ExceptionDescribe();
-exit(EXIT_FAILURE);
-        }
-
-        this->instance = curEnv->NewGlobalRef(JObj) ;
-        if(this->instance == NULL){
-
-std::cerr << "Could not create a new global ref of " << this->className() << std::endl;
-curEnv->ExceptionDescribe();
-exit(EXIT_FAILURE);
-        }
-        /* Methods ID set to NULL */
-        jstringcreateDatatipProgramCoordjstringjava_lang_StringjdoubleArray_doubledoubleID=NULL;
-jdoubleArray_createDatatipFieldjstringjava_lang_StringjdoubleArray_doubledoubleID=NULL;
-jstringcreateDatatipProgramIndexjstringjava_lang_StringjintintID=NULL;
-voiddatatipSetInterpjstringjava_lang_StringjbooleanbooleanID=NULL;
-
-
-}
-
-// Generic methods
-
-void DatatipCreate::synchronize() {
-if (getCurrentEnv()->MonitorEnter(instance) != JNI_OK) {
-std::cerr << "Fail to enter monitor." << std::endl;
-exit(EXIT_FAILURE);
-
-}
-}
-
-void DatatipCreate::endSynchronize() {
-if ( getCurrentEnv()->MonitorExit(instance) != JNI_OK) {
-
-std::cerr << "Fail to exit monitor." << std::endl;
-exit(EXIT_FAILURE);
-}
-}
-// Method(s)
-
-char* DatatipCreate::createDatatipProgramCoord (JavaVM * jvm_, char const* polylineUid, double const* coordDoubleXY, int coordDoubleXYSize){
-
-JNIEnv * curEnv = NULL;
-jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
-jclass cls = curEnv->FindClass( className().c_str() );
-
-jmethodID jstringcreateDatatipProgramCoordjstringjava_lang_StringjdoubleArray_doubledoubleID = curEnv->GetStaticMethodID(cls, "createDatatipProgramCoord", "(Ljava/lang/String;[D)Ljava/lang/String;" ) ;
-if (jstringcreateDatatipProgramCoordjstringjava_lang_StringjdoubleArray_doubledoubleID == NULL) {
-std::cerr << "Could not access to the method " << "createDatatipProgramCoord" << std::endl;
-curEnv->ExceptionDescribe();
-
-exit(EXIT_FAILURE);
-}
-
-jstring polylineUid_ = curEnv->NewStringUTF( polylineUid );
-if (polylineUid != NULL && polylineUid_ == NULL)
-{
-std::cerr << "Could not convert C string to Java UTF string, memory full." << std::endl;
-exit(EXIT_FAILURE);
-}
-
-
-jdoubleArray coordDoubleXY_ = curEnv->NewDoubleArray( coordDoubleXYSize ) ;
-
-curEnv->SetDoubleArrayRegion( coordDoubleXY_, 0, coordDoubleXYSize, (jdouble*)(coordDoubleXY) ) ;
-
-
-                        jstring res =  static_cast<jstring>( curEnv->CallStaticObjectMethod(cls, jstringcreateDatatipProgramCoordjstringjava_lang_StringjdoubleArray_doubledoubleID ,polylineUid_, coordDoubleXY_));
-                        if (curEnv->ExceptionCheck()) {
-curEnv->ExceptionDescribe() ;
-}
-
-
-const char *tempString = curEnv->GetStringUTFChars(res, 0);
-char * myStringBuffer = new char[strlen(tempString) + 1];
-strcpy(myStringBuffer, tempString);
-curEnv->ReleaseStringUTFChars(res, tempString);
-curEnv->DeleteLocalRef(res);
-curEnv->DeleteLocalRef(polylineUid_);
-curEnv->DeleteLocalRef(coordDoubleXY_);
-curEnv->DeleteLocalRef(cls);
-if (curEnv->ExceptionCheck()) {
-curEnv->ExceptionDescribe() ;
-}
-
-return myStringBuffer;
-
-}
-
-double* DatatipCreate::createDatatipField (JavaVM * jvm_, char const* polylineUid, double const* coordDoubleXY, int coordDoubleXYSize){
-
-JNIEnv * curEnv = NULL;
-jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
-jclass cls = curEnv->FindClass( className().c_str() );
-
-jmethodID jdoubleArray_createDatatipFieldjstringjava_lang_StringjdoubleArray_doubledoubleID = curEnv->GetStaticMethodID(cls, "createDatatipField", "(Ljava/lang/String;[D)[D" ) ;
-if (jdoubleArray_createDatatipFieldjstringjava_lang_StringjdoubleArray_doubledoubleID == NULL) {
-std::cerr << "Could not access to the method " << "createDatatipField" << std::endl;
-curEnv->ExceptionDescribe();
-
-exit(EXIT_FAILURE);
-}
-
-jstring polylineUid_ = curEnv->NewStringUTF( polylineUid );
-if (polylineUid != NULL && polylineUid_ == NULL)
-{
-std::cerr << "Could not convert C string to Java UTF string, memory full." << std::endl;
-exit(EXIT_FAILURE);
-}
-
-
-jdoubleArray coordDoubleXY_ = curEnv->NewDoubleArray( coordDoubleXYSize ) ;
-
-curEnv->SetDoubleArrayRegion( coordDoubleXY_, 0, coordDoubleXYSize, (jdouble*)(coordDoubleXY) ) ;
-
-
-                        jdoubleArray res =  static_cast<jdoubleArray>( curEnv->CallStaticObjectMethod(cls, jdoubleArray_createDatatipFieldjstringjava_lang_StringjdoubleArray_doubledoubleID ,polylineUid_, coordDoubleXY_));
-                        if (res == NULL) { return NULL; }
-                        if (curEnv->ExceptionCheck()) {
-curEnv->ExceptionDescribe() ;
-}
-int lenRow;
- lenRow = curEnv->GetArrayLength(res);
-jboolean isCopy = JNI_FALSE;
-
-/* GetPrimitiveArrayCritical is faster than getXXXArrayElements */
-jdouble *resultsArray = static_cast<jdouble *>(curEnv->GetPrimitiveArrayCritical(res, &isCopy));
-double* myArray= new double[ lenRow];
-
-for (jsize i = 0; i <  lenRow; i++){
-myArray[i]=resultsArray[i];
-}
-curEnv->ReleasePrimitiveArrayCritical(res, resultsArray, JNI_ABORT);
-
-                        curEnv->DeleteLocalRef(res);
-curEnv->DeleteLocalRef(polylineUid_);
-curEnv->DeleteLocalRef(coordDoubleXY_);
-curEnv->DeleteLocalRef(cls);
-if (curEnv->ExceptionCheck()) {
-curEnv->ExceptionDescribe() ;
-}
-
-return myArray;
-
-}
-
-char* DatatipCreate::createDatatipProgramIndex (JavaVM * jvm_, char const* polylineUid, int indexPoint){
-
-JNIEnv * curEnv = NULL;
-jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
-jclass cls = curEnv->FindClass( className().c_str() );
-
-jmethodID jstringcreateDatatipProgramIndexjstringjava_lang_StringjintintID = curEnv->GetStaticMethodID(cls, "createDatatipProgramIndex", "(Ljava/lang/String;I)Ljava/lang/String;" ) ;
-if (jstringcreateDatatipProgramIndexjstringjava_lang_StringjintintID == NULL) {
-std::cerr << "Could not access to the method " << "createDatatipProgramIndex" << std::endl;
-curEnv->ExceptionDescribe();
-
-exit(EXIT_FAILURE);
-}
-
-jstring polylineUid_ = curEnv->NewStringUTF( polylineUid );
-if (polylineUid != NULL && polylineUid_ == NULL)
-{
-std::cerr << "Could not convert C string to Java UTF string, memory full." << std::endl;
-exit(EXIT_FAILURE);
-}
-
-
-                        jstring res =  static_cast<jstring>( curEnv->CallStaticObjectMethod(cls, jstringcreateDatatipProgramIndexjstringjava_lang_StringjintintID ,polylineUid_, indexPoint));
-                        if (curEnv->ExceptionCheck()) {
-curEnv->ExceptionDescribe() ;
-}
-
-
-const char *tempString = curEnv->GetStringUTFChars(res, 0);
-char * myStringBuffer = new char[strlen(tempString) + 1];
-strcpy(myStringBuffer, tempString);
-curEnv->ReleaseStringUTFChars(res, tempString);
-curEnv->DeleteLocalRef(res);
-curEnv->DeleteLocalRef(polylineUid_);
-curEnv->DeleteLocalRef(cls);
-if (curEnv->ExceptionCheck()) {
-curEnv->ExceptionDescribe() ;
-}
-
-return myStringBuffer;
-
-}
-
-void DatatipCreate::datatipSetInterp (JavaVM * jvm_, char const* polylineUid, bool interpMode){
-
-JNIEnv * curEnv = NULL;
-jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
-jclass cls = curEnv->FindClass( className().c_str() );
-
-jmethodID voiddatatipSetInterpjstringjava_lang_StringjbooleanbooleanID = curEnv->GetStaticMethodID(cls, "datatipSetInterp", "(Ljava/lang/String;Z)V" ) ;
-if (voiddatatipSetInterpjstringjava_lang_StringjbooleanbooleanID == NULL) {
-std::cerr << "Could not access to the method " << "datatipSetInterp" << std::endl;
-curEnv->ExceptionDescribe();
-
-exit(EXIT_FAILURE);
-}
-
-jstring polylineUid_ = curEnv->NewStringUTF( polylineUid );
-if (polylineUid != NULL && polylineUid_ == NULL)
-{
-std::cerr << "Could not convert C string to Java UTF string, memory full." << std::endl;
-exit(EXIT_FAILURE);
-}
-
-
-jboolean interpMode_ = (static_cast<bool>(interpMode) ? JNI_TRUE : JNI_FALSE);
-
-                         curEnv->CallStaticVoidMethod(cls, voiddatatipSetInterpjstringjava_lang_StringjbooleanbooleanID ,polylineUid_, interpMode_);
-                        curEnv->DeleteLocalRef(polylineUid_);
-curEnv->DeleteLocalRef(cls);
-if (curEnv->ExceptionCheck()) {
-curEnv->ExceptionDescribe() ;
-}
-
-}
-
-
-                // Static declarations (if any)
-                
-// Returns the current env
-
-JNIEnv * DatatipDelete::getCurrentEnv() {
-JNIEnv * curEnv = NULL;
-jint res=this->jvm->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
-if (res != JNI_OK) {
-std::cerr << "Could not retrieve the current JVM." << std::endl;
-exit(EXIT_FAILURE);
-
-}
-return curEnv;
-}
-// Destructor
-
-DatatipDelete::~DatatipDelete() {
-JNIEnv * curEnv = NULL;
-this->jvm->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
-
-curEnv->DeleteGlobalRef(this->instance);
-curEnv->DeleteGlobalRef(this->instanceClass);
-}
-// Constructors
-DatatipDelete::DatatipDelete(JavaVM * jvm_) {
-jmethodID constructObject = NULL ;
-jobject localInstance ;
-jclass localClass ;
-
-const std::string construct="<init>";
-const std::string param="()V";
-jvm=jvm_;
-
-JNIEnv * curEnv = getCurrentEnv();
-
-localClass = curEnv->FindClass( this->className().c_str() ) ;
-if (localClass == NULL) {
-std::cerr << "Could not get the Class " << this->className() <<  std::endl;
-curEnv->ExceptionDescribe();
-exit(EXIT_FAILURE);
-}
-
-this->instanceClass = static_cast<jclass>(curEnv->NewGlobalRef(localClass));
-
-/* localClass is not needed anymore */
-curEnv->DeleteLocalRef(localClass);
-
-if (this->instanceClass == NULL) {
-std::cerr << "Could not create a Global Ref of " << this->className() <<  std::endl;
-curEnv->ExceptionDescribe();
-exit(EXIT_FAILURE);
-}
-
-
-constructObject = curEnv->GetMethodID( this->instanceClass, construct.c_str() , param.c_str() ) ;
-if(constructObject == NULL){
-std::cerr << "Could not retrieve the constructor of the class " << this->className() << " with the profile : " << construct << param << std::endl;
-curEnv->ExceptionDescribe();
-exit(EXIT_FAILURE);
-}
-
-localInstance = curEnv->NewObject( this->instanceClass, constructObject ) ;
-if(localInstance == NULL){
-std::cerr << "Could not instantiate the object " << this->className() << " with the constructor : " << construct << param << std::endl;
-curEnv->ExceptionDescribe();
-exit(EXIT_FAILURE);
-}
-this->instance = curEnv->NewGlobalRef(localInstance) ;
-if(this->instance == NULL){
-std::cerr << "Could not create a new global ref of " << this->className() << std::endl;
-curEnv->ExceptionDescribe();
-exit(EXIT_FAILURE);
-}
-/* localInstance not needed anymore */
-curEnv->DeleteLocalRef(localInstance);
-
-                /* Methods ID set to NULL */
-voiddatatipRemoveProgramIndexjstringjava_lang_StringjintintID=NULL;
-voiddatatipRemoveProgramHandlerjstringjava_lang_Stringjstringjava_lang_StringID=NULL;
-
-
-}
-
-DatatipDelete::DatatipDelete(JavaVM * jvm_, jobject JObj) {
-        jvm=jvm_;
-
-        JNIEnv * curEnv = getCurrentEnv();
-
-jclass localClass = curEnv->GetObjectClass(JObj);
-        this->instanceClass = static_cast<jclass>(curEnv->NewGlobalRef(localClass));
-        curEnv->DeleteLocalRef(localClass);
-
-        if (this->instanceClass == NULL) {
-
-std::cerr << "Could not create a Global Ref of " << this->className() <<  std::endl;
-curEnv->ExceptionDescribe();
-exit(EXIT_FAILURE);
-        }
-
-        this->instance = curEnv->NewGlobalRef(JObj) ;
-        if(this->instance == NULL){
-
-std::cerr << "Could not create a new global ref of " << this->className() << std::endl;
-curEnv->ExceptionDescribe();
-exit(EXIT_FAILURE);
-        }
-        /* Methods ID set to NULL */
-        voiddatatipRemoveProgramIndexjstringjava_lang_StringjintintID=NULL;
-voiddatatipRemoveProgramHandlerjstringjava_lang_Stringjstringjava_lang_StringID=NULL;
-
-
-}
-
-// Generic methods
-
-void DatatipDelete::synchronize() {
-if (getCurrentEnv()->MonitorEnter(instance) != JNI_OK) {
-std::cerr << "Fail to enter monitor." << std::endl;
-exit(EXIT_FAILURE);
-
-}
-}
-
-void DatatipDelete::endSynchronize() {
-if ( getCurrentEnv()->MonitorExit(instance) != JNI_OK) {
-
-std::cerr << "Fail to exit monitor." << std::endl;
-exit(EXIT_FAILURE);
-}
-}
-// Method(s)
-
-void DatatipDelete::datatipRemoveProgramIndex (JavaVM * jvm_, char const* polylineUid, int indexRemove){
-
-JNIEnv * curEnv = NULL;
-jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
-jclass cls = curEnv->FindClass( className().c_str() );
-
-jmethodID voiddatatipRemoveProgramIndexjstringjava_lang_StringjintintID = curEnv->GetStaticMethodID(cls, "datatipRemoveProgramIndex", "(Ljava/lang/String;I)V" ) ;
-if (voiddatatipRemoveProgramIndexjstringjava_lang_StringjintintID == NULL) {
-std::cerr << "Could not access to the method " << "datatipRemoveProgramIndex" << std::endl;
-curEnv->ExceptionDescribe();
-
-exit(EXIT_FAILURE);
-}
-
-jstring polylineUid_ = curEnv->NewStringUTF( polylineUid );
-if (polylineUid != NULL && polylineUid_ == NULL)
-{
-std::cerr << "Could not convert C string to Java UTF string, memory full." << std::endl;
-exit(EXIT_FAILURE);
-}
-
-
-                         curEnv->CallStaticVoidMethod(cls, voiddatatipRemoveProgramIndexjstringjava_lang_StringjintintID ,polylineUid_, indexRemove);
-                        curEnv->DeleteLocalRef(polylineUid_);
-curEnv->DeleteLocalRef(cls);
-if (curEnv->ExceptionCheck()) {
-curEnv->ExceptionDescribe() ;
-}
-
-}
-
-void DatatipDelete::datatipRemoveProgramHandler (JavaVM * jvm_, char const* datatipUid, char const* figureUid){
-
-JNIEnv * curEnv = NULL;
-jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
-jclass cls = curEnv->FindClass( className().c_str() );
-
-jmethodID voiddatatipRemoveProgramHandlerjstringjava_lang_Stringjstringjava_lang_StringID = curEnv->GetStaticMethodID(cls, "datatipRemoveProgramHandler", "(Ljava/lang/String;Ljava/lang/String;)V" ) ;
-if (voiddatatipRemoveProgramHandlerjstringjava_lang_Stringjstringjava_lang_StringID == NULL) {
-std::cerr << "Could not access to the method " << "datatipRemoveProgramHandler" << std::endl;
-curEnv->ExceptionDescribe();
-
-exit(EXIT_FAILURE);
-}
-
-jstring datatipUid_ = curEnv->NewStringUTF( datatipUid );
-if (datatipUid != NULL && datatipUid_ == NULL)
-{
-std::cerr << "Could not convert C string to Java UTF string, memory full." << std::endl;
-exit(EXIT_FAILURE);
-}
-
-
-jstring figureUid_ = curEnv->NewStringUTF( figureUid );
-if (figureUid != NULL && figureUid_ == NULL)
-{
-std::cerr << "Could not convert C string to Java UTF string, memory full." << std::endl;
-exit(EXIT_FAILURE);
-}
-
-
-                         curEnv->CallStaticVoidMethod(cls, voiddatatipRemoveProgramHandlerjstringjava_lang_Stringjstringjava_lang_StringID ,datatipUid_, figureUid_);
-                        curEnv->DeleteLocalRef(datatipUid_);
-curEnv->DeleteLocalRef(figureUid_);
-curEnv->DeleteLocalRef(cls);
-if (curEnv->ExceptionCheck()) {
-curEnv->ExceptionDescribe() ;
-}
-
-}
-
-
-}
-
diff --git a/scilab/modules/gui/src/jni/DatatipManager.cpp b/scilab/modules/gui/src/jni/DatatipManager.cpp
new file mode 100644 (file)
index 0000000..df11ce9
--- /dev/null
@@ -0,0 +1,290 @@
+#include "DatatipManager.hxx"
+/* Generated by GIWS (version 2.0.0) with command:
+giws --disable-return-size-array --output-dir src/jni/ --throws-exception-on-error --description-file src/jni/Datatip.giws.xml 
+*/
+/*
+
+Copyright 2007-2008 INRIA
+Copyright 2008-2011 DIGITEO
+Copyright 2011-2012 Scilab Enterprises
+
+Author : Sylvestre Ledru & others
+
+This is generated code.
+
+This software is a computer program whose purpose is to hide the complexity
+of accessing Java objects/methods from C++ code.
+
+This software is governed by the CeCILL-B license under French law and
+abiding by the rules of distribution of free software.  You can  use, 
+modify and/ or redistribute the software under the terms of the CeCILL-B
+license as circulated by CEA, CNRS and INRIA at the following URL
+"http://www.cecill.info". 
+
+As a counterpart to the access to the source code and  rights to copy,
+modify and redistribute granted by the license, users are provided only
+with a limited warranty  and the software's author,  the holder of the
+economic rights,  and the successive licensors  have only  limited
+liability. 
+
+In this respect, the user's attention is drawn to the risks associated
+with loading,  using,  modifying and/or developing or reproducing the
+software by the user in light of its specific status of free software,
+that may mean  that it is complicated to manipulate,  and  that  also
+therefore means  that it is reserved for developers  and  experienced
+professionals having in-depth computer knowledge. Users are therefore
+encouraged to load and test the software's suitability as regards their
+requirements in conditions enabling the security of their systems and/or 
+data to be ensured and,  more generally, to use and operate it in the 
+same conditions as regards security. 
+
+The fact that you are presently reading this means that you have had
+knowledge of the CeCILL-B license and that you accept its terms.
+*/
+
+namespace org_scilab_modules_gui_datatip {
+
+                // Static declarations (if any)
+                
+// Returns the current env
+
+JNIEnv * DatatipManager::getCurrentEnv() {
+JNIEnv * curEnv = NULL;
+jint res=this->jvm->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+if (res != JNI_OK) {
+throw GiwsException::JniException(getCurrentEnv());
+}
+return curEnv;
+}
+// Destructor
+
+DatatipManager::~DatatipManager() {
+JNIEnv * curEnv = NULL;
+this->jvm->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+
+curEnv->DeleteGlobalRef(this->instance);
+curEnv->DeleteGlobalRef(this->instanceClass);
+}
+// Constructors
+DatatipManager::DatatipManager(JavaVM * jvm_) {
+jmethodID constructObject = NULL ;
+jobject localInstance ;
+jclass localClass ;
+
+const std::string construct="<init>";
+const std::string param="()V";
+jvm=jvm_;
+
+JNIEnv * curEnv = getCurrentEnv();
+
+localClass = curEnv->FindClass( this->className().c_str() ) ;
+if (localClass == NULL) {
+  throw GiwsException::JniClassNotFoundException(curEnv, this->className());
+}
+
+this->instanceClass = static_cast<jclass>(curEnv->NewGlobalRef(localClass));
+
+/* localClass is not needed anymore */
+curEnv->DeleteLocalRef(localClass);
+
+if (this->instanceClass == NULL) {
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+}
+
+
+constructObject = curEnv->GetMethodID( this->instanceClass, construct.c_str() , param.c_str() ) ;
+if(constructObject == NULL){
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+}
+
+localInstance = curEnv->NewObject( this->instanceClass, constructObject ) ;
+if(localInstance == NULL){
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+}
+this->instance = curEnv->NewGlobalRef(localInstance) ;
+if(this->instance == NULL){
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+}
+/* localInstance not needed anymore */
+curEnv->DeleteLocalRef(localInstance);
+
+                /* Methods ID set to NULL */
+voidsetEnabledjstringjava_lang_StringjbooleanbooleanID=NULL;
+jbooleanisEnabledjstringjava_lang_StringID=NULL;
+jstringgetSelectedjstringjava_lang_StringID=NULL;
+voidsetSelectedjstringjava_lang_Stringjstringjava_lang_StringID=NULL;
+
+
+}
+
+DatatipManager::DatatipManager(JavaVM * jvm_, jobject JObj) {
+        jvm=jvm_;
+
+        JNIEnv * curEnv = getCurrentEnv();
+
+jclass localClass = curEnv->GetObjectClass(JObj);
+        this->instanceClass = static_cast<jclass>(curEnv->NewGlobalRef(localClass));
+        curEnv->DeleteLocalRef(localClass);
+
+        if (this->instanceClass == NULL) {
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+        }
+
+        this->instance = curEnv->NewGlobalRef(JObj) ;
+        if(this->instance == NULL){
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+        }
+        /* Methods ID set to NULL */
+        voidsetEnabledjstringjava_lang_StringjbooleanbooleanID=NULL;
+jbooleanisEnabledjstringjava_lang_StringID=NULL;
+jstringgetSelectedjstringjava_lang_StringID=NULL;
+voidsetSelectedjstringjava_lang_Stringjstringjava_lang_StringID=NULL;
+
+
+}
+
+// Generic methods
+
+void DatatipManager::synchronize() {
+if (getCurrentEnv()->MonitorEnter(instance) != JNI_OK) {
+throw GiwsException::JniMonitorException(getCurrentEnv(), "DatatipManager");
+}
+}
+
+void DatatipManager::endSynchronize() {
+if ( getCurrentEnv()->MonitorExit(instance) != JNI_OK) {
+throw GiwsException::JniMonitorException(getCurrentEnv(), "DatatipManager");
+}
+}
+// Method(s)
+
+void DatatipManager::setEnabled (JavaVM * jvm_, char const* uid, bool b){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = curEnv->FindClass( className().c_str() );
+
+jmethodID voidsetEnabledjstringjava_lang_StringjbooleanbooleanID = curEnv->GetStaticMethodID(cls, "setEnabled", "(Ljava/lang/String;Z)V" ) ;
+if (voidsetEnabledjstringjava_lang_StringjbooleanbooleanID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "setEnabled");
+}
+
+jstring uid_ = curEnv->NewStringUTF( uid );
+if (uid != NULL && uid_ == NULL)
+{
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+
+jboolean b_ = (static_cast<bool>(b) ? JNI_TRUE : JNI_FALSE);
+
+                         curEnv->CallStaticVoidMethod(cls, voidsetEnabledjstringjava_lang_StringjbooleanbooleanID ,uid_, b_);
+                        curEnv->DeleteLocalRef(uid_);
+curEnv->DeleteLocalRef(cls);
+if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+}
+
+bool DatatipManager::isEnabled (JavaVM * jvm_, char const* uid){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = curEnv->FindClass( className().c_str() );
+
+jmethodID jbooleanisEnabledjstringjava_lang_StringID = curEnv->GetStaticMethodID(cls, "isEnabled", "(Ljava/lang/String;)Z" ) ;
+if (jbooleanisEnabledjstringjava_lang_StringID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "isEnabled");
+}
+
+jstring uid_ = curEnv->NewStringUTF( uid );
+if (uid != NULL && uid_ == NULL)
+{
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+
+                        jboolean res =  static_cast<jboolean>( curEnv->CallStaticBooleanMethod(cls, jbooleanisEnabledjstringjava_lang_StringID ,uid_));
+                        curEnv->DeleteLocalRef(uid_);
+curEnv->DeleteLocalRef(cls);
+if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return (res == JNI_TRUE);
+
+}
+
+char* DatatipManager::getSelected (JavaVM * jvm_, char const* uid){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = curEnv->FindClass( className().c_str() );
+
+jmethodID jstringgetSelectedjstringjava_lang_StringID = curEnv->GetStaticMethodID(cls, "getSelected", "(Ljava/lang/String;)Ljava/lang/String;" ) ;
+if (jstringgetSelectedjstringjava_lang_StringID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "getSelected");
+}
+
+jstring uid_ = curEnv->NewStringUTF( uid );
+if (uid != NULL && uid_ == NULL)
+{
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+
+                        jstring res =  static_cast<jstring>( curEnv->CallStaticObjectMethod(cls, jstringgetSelectedjstringjava_lang_StringID ,uid_));
+                        if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+const char *tempString = curEnv->GetStringUTFChars(res, 0);
+char * myStringBuffer = new char[strlen(tempString) + 1];
+strcpy(myStringBuffer, tempString);
+curEnv->ReleaseStringUTFChars(res, tempString);
+curEnv->DeleteLocalRef(res);
+curEnv->DeleteLocalRef(uid_);
+curEnv->DeleteLocalRef(cls);
+if (curEnv->ExceptionCheck()) {
+delete[] myStringBuffer;
+                                throw GiwsException::JniCallMethodException(curEnv);
+}
+return myStringBuffer;
+
+}
+
+void DatatipManager::setSelected (JavaVM * jvm_, char const* figureUid, char const* tipUid){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = curEnv->FindClass( className().c_str() );
+
+jmethodID voidsetSelectedjstringjava_lang_Stringjstringjava_lang_StringID = curEnv->GetStaticMethodID(cls, "setSelected", "(Ljava/lang/String;Ljava/lang/String;)V" ) ;
+if (voidsetSelectedjstringjava_lang_Stringjstringjava_lang_StringID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "setSelected");
+}
+
+jstring figureUid_ = curEnv->NewStringUTF( figureUid );
+if (figureUid != NULL && figureUid_ == NULL)
+{
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+
+jstring tipUid_ = curEnv->NewStringUTF( tipUid );
+if (tipUid != NULL && tipUid_ == NULL)
+{
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+
+                         curEnv->CallStaticVoidMethod(cls, voidsetSelectedjstringjava_lang_Stringjstringjava_lang_StringID ,figureUid_, tipUid_);
+                        curEnv->DeleteLocalRef(figureUid_);
+curEnv->DeleteLocalRef(tipUid_);
+curEnv->DeleteLocalRef(cls);
+if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+}
+
+}
diff --git a/scilab/modules/gui/src/jni/DatatipManager.hxx b/scilab/modules/gui/src/jni/DatatipManager.hxx
new file mode 100644 (file)
index 0000000..364024a
--- /dev/null
@@ -0,0 +1,171 @@
+/* Generated by GIWS (version 2.0.0) with command:
+giws --disable-return-size-array --output-dir src/jni/ --throws-exception-on-error --description-file src/jni/Datatip.giws.xml 
+*/
+/*
+
+Copyright 2007-2008 INRIA
+Copyright 2008-2011 DIGITEO
+Copyright 2011-2012 Scilab Enterprises
+
+Author : Sylvestre Ledru & others
+
+This is generated code.
+
+This software is a computer program whose purpose is to hide the complexity
+of accessing Java objects/methods from C++ code.
+
+This software is governed by the CeCILL-B license under French law and
+abiding by the rules of distribution of free software.  You can  use, 
+modify and/ or redistribute the software under the terms of the CeCILL-B
+license as circulated by CEA, CNRS and INRIA at the following URL
+"http://www.cecill.info". 
+
+As a counterpart to the access to the source code and  rights to copy,
+modify and redistribute granted by the license, users are provided only
+with a limited warranty  and the software's author,  the holder of the
+economic rights,  and the successive licensors  have only  limited
+liability. 
+
+In this respect, the user's attention is drawn to the risks associated
+with loading,  using,  modifying and/or developing or reproducing the
+software by the user in light of its specific status of free software,
+that may mean  that it is complicated to manipulate,  and  that  also
+therefore means  that it is reserved for developers  and  experienced
+professionals having in-depth computer knowledge. Users are therefore
+encouraged to load and test the software's suitability as regards their
+requirements in conditions enabling the security of their systems and/or 
+data to be ensured and,  more generally, to use and operate it in the 
+same conditions as regards security. 
+
+The fact that you are presently reading this means that you have had
+knowledge of the CeCILL-B license and that you accept its terms.
+*/
+
+
+#ifndef __ORG_SCILAB_MODULES_GUI_DATATIP_DATATIPMANAGER__
+#define __ORG_SCILAB_MODULES_GUI_DATATIP_DATATIPMANAGER__
+#include <iostream>
+#include <string>
+#include <string.h>
+#include <stdlib.h>
+#include <jni.h>
+
+#include "GiwsException.hxx"
+
+        #if defined(_MSC_VER) /* Defined anyway with Visual */
+            #include <Windows.h>
+        #else
+            typedef signed char byte;
+        #endif
+
+
+#ifndef GIWSEXPORT
+# if defined(_MSC_VER) || defined(__WIN32__) || defined(__CYGWIN__)
+#   if defined(STATIC_LINKED)
+#     define GIWSEXPORT
+#   else
+#     define GIWSEXPORT __declspec(dllexport)
+#   endif
+# else
+#   if __GNUC__ >= 4
+#     define GIWSEXPORT __attribute__ ((visibility ("default")))
+#   else
+#     define GIWSEXPORT
+#   endif
+# endif
+#endif
+
+namespace org_scilab_modules_gui_datatip {
+class GIWSEXPORT DatatipManager {
+
+private:
+JavaVM * jvm;
+
+protected:
+jmethodID voidsetEnabledjstringjava_lang_StringjbooleanbooleanID; // cache method id
+jmethodID jbooleanisEnabledjstringjava_lang_StringID; // cache method id
+jmethodID jstringgetSelectedjstringjava_lang_StringID; // cache method id
+jmethodID voidsetSelectedjstringjava_lang_Stringjstringjava_lang_StringID; // cache method id
+
+
+
+jobject instance;
+jclass instanceClass; // cache class
+
+                       
+// Caching (if any)
+
+
+/**
+* Get the environment matching to the current thread.
+*/
+virtual JNIEnv * getCurrentEnv();
+
+public:
+// Constructor
+/**
+* Create a wrapping of the object from a JNIEnv.
+* It will call the default constructor
+* @param JEnv_ the Java Env
+*/
+DatatipManager(JavaVM * jvm_);
+
+/**
+* Create a wrapping of an already existing object from a JNIEnv.
+* The object must have already been instantiated
+* @param JEnv_ the Java Env
+* @param JObj the object
+*/
+DatatipManager(JavaVM * jvm_, jobject JObj);
+
+
+/** 
+* This is a fake constructor to avoid the constructor
+* chaining when dealing with extended giws classes 
+*/
+#ifdef FAKEGIWSDATATYPE
+DatatipManager(fakeGiwsDataType::fakeGiwsDataType /* unused */) {}
+#endif
+
+// Destructor
+~DatatipManager();
+
+// Generic method
+// Synchronization methods
+/**
+* Enter monitor associated with the object.
+* Equivalent of creating a "synchronized(obj)" scope in Java.
+*/
+void synchronize();
+
+/**
+* Exit monitor associated with the object.
+* Equivalent of ending a "synchronized(obj)" scope.
+*/
+void endSynchronize();
+
+// Methods
+static void setEnabled(JavaVM * jvm_, char const* uid, bool b);
+
+static bool isEnabled(JavaVM * jvm_, char const* uid);
+
+static char* getSelected(JavaVM * jvm_, char const* uid);
+
+static void setSelected(JavaVM * jvm_, char const* figureUid, char const* tipUid);
+
+
+                        /**
+                        * Get class name to use for static methods
+                        * @return class name to use for static methods
+                        */
+                        
+                static const std::string className()
+                {
+                return "org/scilab/modules/gui/datatip/DatatipManager";
+                }
+                
+};
+
+
+}
+#endif