Implementation of function datatipSetInterp() for the new datatip object. 72/12372/1
Gustavo LIBOTTE [Wed, 28 Aug 2013 01:15:29 +0000 (22:15 -0300)]
Change-Id: I5ad7aa411a920a5e2008aa71c1eac3fdcccc0f8a

13 files changed:
scilab/modules/graphics/src/c/getHandleProperty/get_datatip_property.c
scilab/modules/gui/Makefile.am
scilab/modules/gui/Makefile.in
scilab/modules/gui/includes/gw_gui.h
scilab/modules/gui/sci_gateway/c/gw_gui.c
scilab/modules/gui/sci_gateway/cpp/sci_datatip_set_interp.cpp [new file with mode: 0644]
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/DatatipCreate.java
scilab/modules/gui/src/jni/Datatip.giws.xml
scilab/modules/gui/src/jni/DatatipCreate.cpp
scilab/modules/gui/src/jni/DatatipCreate.hxx

index ad060f8..b486fb0 100755 (executable)
@@ -116,18 +116,18 @@ int get_tip_auto_orientation_property(void* _pvCtx, char* pobjUID)
  */
 int get_tip_interp_mode_property(void* _pvCtx, char* pobjUID)
 {
-    int tip_auto_orientation;
-    int *piTip_auto_orientation = &tip_auto_orientation;
+    int tip_interp_mode;
+    int *piTip_interp_mode = &tip_interp_mode;
 
-    getGraphicObjectProperty(pobjUID, __GO_DATATIP_INTERP_MODE__, jni_bool, (void **)&piTip_auto_orientation);
+    getGraphicObjectProperty(pobjUID, __GO_DATATIP_INTERP_MODE__, jni_bool, (void **)&piTip_interp_mode);
 
-    if (piTip_auto_orientation == NULL)
+    if (piTip_interp_mode == NULL)
     {
         Scierror(999, _("'%s' property does not exist for this handle.\n"), "tip_interp_mode");
         return -1;
     }
 
-    if (tip_auto_orientation)
+    if (tip_interp_mode)
     {
         return sciReturnString(_pvCtx, "on");
     }
index c5056a1..57cefea 100755 (executable)
@@ -213,7 +213,8 @@ sci_gateway/cpp/sci_datatip_manager_mode.cpp \
 sci_gateway/cpp/sci_datatip_toggle.cpp \
 sci_gateway/cpp/sci_datatipmove.cpp \
 sci_gateway/cpp/sci_datatip_set_style.cpp \
-sci_gateway/cpp/sci_datatip_set_display.cpp
+sci_gateway/cpp/sci_datatip_set_display.cpp \
+sci_gateway/cpp/sci_datatip_set_interp.cpp
 
 libscigui_la_CPPFLAGS = \
                        -I$(srcdir)/includes/ \
index fe86274..d7446a4 100644 (file)
@@ -275,7 +275,8 @@ am__objects_5 = libscigui_la-sci_printsetupbox.lo \
        libscigui_la-sci_datatip_toggle.lo \
        libscigui_la-sci_datatipmove.lo \
        libscigui_la-sci_datatip_set_style.lo \
-       libscigui_la-sci_datatip_set_display.lo
+       libscigui_la-sci_datatip_set_display.lo \
+       libscigui_la-sci_datatip_set_interp.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)
@@ -765,7 +766,8 @@ sci_gateway/cpp/sci_datatip_manager_mode.cpp \
 sci_gateway/cpp/sci_datatip_toggle.cpp \
 sci_gateway/cpp/sci_datatipmove.cpp \
 sci_gateway/cpp/sci_datatip_set_style.cpp \
-sci_gateway/cpp/sci_datatip_set_display.cpp
+sci_gateway/cpp/sci_datatip_set_display.cpp \
+sci_gateway/cpp/sci_datatip_set_interp.cpp
 
 libscigui_la_CPPFLAGS = \
                        -I$(srcdir)/includes/ \
@@ -1210,6 +1212,7 @@ distclean-compile:
 @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_datatip_set_display.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_la-sci_datatip_set_interp.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_la-sci_datatip_set_style.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_la-sci_datatip_toggle.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_la-sci_datatipcreate.Plo@am__quote@
@@ -2262,6 +2265,13 @@ libscigui_la-sci_datatip_set_display.lo: sci_gateway/cpp/sci_datatip_set_display
 @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_datatip_set_display.lo `test -f 'sci_gateway/cpp/sci_datatip_set_display.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_datatip_set_display.cpp
 
+libscigui_la-sci_datatip_set_interp.lo: sci_gateway/cpp/sci_datatip_set_interp.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_set_interp.lo -MD -MP -MF $(DEPDIR)/libscigui_la-sci_datatip_set_interp.Tpo -c -o libscigui_la-sci_datatip_set_interp.lo `test -f 'sci_gateway/cpp/sci_datatip_set_interp.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_datatip_set_interp.cpp
+@am__fastdepCXX_TRUE@  $(am__mv) $(DEPDIR)/libscigui_la-sci_datatip_set_interp.Tpo $(DEPDIR)/libscigui_la-sci_datatip_set_interp.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='sci_gateway/cpp/sci_datatip_set_interp.cpp' object='libscigui_la-sci_datatip_set_interp.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_datatip_set_interp.lo `test -f 'sci_gateway/cpp/sci_datatip_set_interp.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_datatip_set_interp.cpp
+
 mostlyclean-libtool:
        -rm -f *.lo
 
index bf6bbae..69b7ffe 100755 (executable)
@@ -64,6 +64,7 @@ GUI_IMPEXP int sci_datatip_toggle(char *fname, unsigned long fname_len);
 GUI_IMPEXP int sci_datatipmove(char *fname, unsigned long fname_len);
 GUI_IMPEXP int sci_datatip_set_style(char *fname, unsigned long fname_len);
 GUI_IMPEXP int sci_datatip_set_display(char *fname, unsigned long fname_len);
+GUI_IMPEXP int sci_datatip_set_interp(char *fname, unsigned long fname_len);
 /*--------------------------------------------------------------------------*/
 #endif /*  __GW_GUI__ */
 /*--------------------------------------------------------------------------*/
index 09a4684..83e7029 100755 (executable)
@@ -71,7 +71,8 @@ static gw_generic_table Tab[] =
     {sci_datatip_toggle, "datatipToggle"},
     {sci_datatipmove, "datatipMove"},
     {sci_datatip_set_style, "datatipSetStyle"},
-    {sci_datatip_set_display, "datatipSetDisplay"}
+    {sci_datatip_set_display, "datatipSetDisplay"},
+    {sci_datatip_set_interp, "datatipSetInterp"}
 };
 /*--------------------------------------------------------------------------*/
 int gw_gui(void)
diff --git a/scilab/modules/gui/sci_gateway/cpp/sci_datatip_set_interp.cpp b/scilab/modules/gui/sci_gateway/cpp/sci_datatip_set_interp.cpp
new file mode 100644 (file)
index 0000000..4a8deb8
--- /dev/null
@@ -0,0 +1,116 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2013 - Gustavo Barbosa Libotte <gustavolibotte@gmail.com>
+ *
+ * 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 "DatatipCreate.hxx"
+
+extern "C"
+{
+#include "api_scilab.h"
+#include "getScilabJavaVM.h"
+#include "localization.h"
+#include "Scierror.h"
+#include "gw_gui.h"
+#include "HandleManagement.h"
+#include "getGraphicObjectProperty.h"
+#include "setGraphicObjectProperty.h"
+#include "graphicObjectProperties.h"
+#include "BOOL.h"
+}
+
+using namespace org_scilab_modules_gui_datatip;
+
+int sci_datatip_set_interp(char *fname, unsigned long fname_len)
+{
+
+    int nbRow = 0, nbCol = 0, stkAdr = 0;
+    char* datatipUID = NULL;
+    int iType = 0;
+    int *piType = &iType;
+    int m1 = 0, n1 = 0;
+    int interpIntBool = 0;
+    bool interpMode;
+
+    SciErr sciErr;
+    CheckInputArgument(pvApiCtx, 2, 2);
+    CheckOutputArgument(pvApiCtx, 0, 1);
+
+    if (nbInputArgument(pvApiCtx) == 2)
+    {
+
+        GetRhsVar(1, GRAPHICAL_HANDLE_DATATYPE, &nbRow, &nbCol, &stkAdr);
+        datatipUID = (char *)getObjectFromHandle((unsigned long) * (hstk(stkAdr)));
+
+        if (checkInputArgumentType(pvApiCtx, 1, sci_handles))
+        {
+
+            getGraphicObjectProperty(datatipUID, __GO_TYPE__, jni_int, (void**) &piType);
+            if (iType == __GO_DATATIP__)
+            {
+
+                if (checkInputArgumentType(pvApiCtx, 2, sci_boolean))
+                {
+
+                    GetRhsVar(2, MATRIX_OF_BOOLEAN_DATATYPE, &m1, &n1, &interpIntBool);
+
+                    if (m1 * n1 != 1)
+                    {
+                        Scierror(999, _("%s: Wrong size for input argument #%d: A boolean expected.\n"), fname, 2);
+                        return FALSE;
+                    }
+                    else
+                    {
+                        interpMode = BOOLtobool(*istk(interpIntBool));
+                        DatatipCreate::datatipSetInterp(getScilabJavaVM(), (char*)datatipUID, interpMode);
+                    }
+
+                }
+                else
+                {
+
+                    Scierror(999, _("%s: Wrong type for input argument #%d: Boolean expected.\n"), fname, 2);
+                    return FALSE;
+
+                }
+
+            }
+            else
+            {
+
+                Scierror(999, _("%s: Wrong type for input argument #%d: Datatip handler expected.\n"), fname, 1);
+                return FALSE;
+
+            }
+
+        }
+        else
+        {
+
+            Scierror(999, _("%s: Wrong type for input argument #%d: Datatip handler expected.\n"), fname, 1);
+            return FALSE;
+
+        }
+
+    }
+    else
+    {
+
+        Scierror(999, _("%s: Wrong number of input arguments: %d expected.\n"), fname, 2);
+        return FALSE;
+
+    }
+
+    LhsVar(1) = 0;
+    PutLhsVar();
+
+    return TRUE;
+
+}
\ No newline at end of file
index b5523db..b9c76fd 100644 (file)
@@ -78,4 +78,5 @@
     <PRIMITIVE gatewayId="25" primitiveId="45" primitiveName="datatipMove" />
     <PRIMITIVE gatewayId="25" primitiveId="46" primitiveName="datatipSetStyle" />
     <PRIMITIVE gatewayId="25" primitiveId="47" primitiveName="datatipSetDisplay" />
+    <PRIMITIVE gatewayId="25" primitiveId="48" primitiveName="datatipSetInterp" />
 </GATEWAY>
index 74b7ef7..b46a8d8 100755 (executable)
   <ItemGroup>
     <ClCompile Include="..\..\sci_gateway\cpp\sci_datatipmove.cpp" />
     <ClCompile Include="..\..\sci_gateway\cpp\sci_datatip_set_display.cpp" />
+    <ClCompile Include="..\..\sci_gateway\cpp\sci_datatip_set_interp.cpp" />
     <ClCompile Include="..\..\sci_gateway\cpp\sci_datatip_set_style.cpp" />
     <ClCompile Include="..\..\sci_gateway\cpp\sci_datatip_toggle.cpp" />
     <ClCompile Include="..\..\sci_gateway\cpp\sci_datatip_manager_mode.cpp" />
index b706d7a..49feb89 100755 (executable)
     <ClCompile Include="..\..\sci_gateway\cpp\sci_datatip_set_display.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\sci_gateway\cpp\sci_datatip_set_interp.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
     <ClCompile Include="..\jni\StartPlotBrowser.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
index 59def80..0a60b4e 100755 (executable)
@@ -183,6 +183,16 @@ public class DatatipCreate {
         return newDatatip;
     }
 
+    /**
+    * Set the datatip interpolation mode.
+    *
+    * @param datatipUid datatip unique identifier.
+    * @param interpMode boolean for the interpolation mode.
+    */
+    private static void datatipSetInterp(String datatipUid, boolean interpMode) {
 
+        GraphicController.getController().setProperty(datatipUid, GraphicObjectProperties.__GO_DATATIP_INTERP_MODE__, interpMode);
+
+    }
 
 }
index 2f08525..c997697 100644 (file)
@@ -8,6 +8,10 @@
             <parameter name="polylineUid" type="String"/>
             <parameter name="indexPoint" type="int"/>
         </method>
+        <method name="datatipSetInterp" returnType="void" modifier="static">
+            <parameter name="datatipUid" type="String"/>
+            <parameter name="interpMode" type="boolean"/>
+        </method>
     </object>
     <object name="DatatipDelete">
         <method name="datatipRemoveProgramIndex" returnType="void" modifier="static">
index 6c4103e..542241f 100644 (file)
@@ -1,31 +1,25 @@
 #include "DatatipCreate.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 
+/* Generated by GIWS (version 2.0.1) with command:
+giws --throws-exception-on-error --description-file ../../../scilab/scilab/modules/gui/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, 
+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". 
+"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. 
+liability.
 
 In this respect, the user's attention is drawn to the risks associated
 with loading,  using,  modifying and/or developing or reproducing the
@@ -34,213 +28,285 @@ 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. 
+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 {
+namespace org_scilab_modules_gui_datatip
+{
+
+// Static declarations (if any)
 
-                // 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) {
-throw GiwsException::JniException(getCurrentEnv());
-}
-return curEnv;
+JNIEnv * DatatipCreate::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
 
-DatatipCreate::~DatatipCreate() {
-JNIEnv * curEnv = NULL;
-this->jvm->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+DatatipCreate::~DatatipCreate()
+{
+    JNIEnv * curEnv = NULL;
+    this->jvm->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
 
-curEnv->DeleteGlobalRef(this->instance);
-curEnv->DeleteGlobalRef(this->instanceClass);
+    curEnv->DeleteGlobalRef(this->instance);
+    curEnv->DeleteGlobalRef(this->instanceClass);
 }
 // Constructors
-DatatipCreate::DatatipCreate(JavaVM * jvm_) {
-jmethodID constructObject = NULL ;
-jobject localInstance ;
-jclass localClass ;
+DatatipCreate::DatatipCreate(JavaVM * jvm_)
+{
+    jmethodID constructObject = NULL ;
+    jobject localInstance ;
+    jclass localClass ;
 
-const std::string construct="<init>";
-const std::string param="()V";
-jvm=jvm_;
+    const std::string construct = "<init>";
+    const std::string param = "()V";
+    jvm = jvm_;
 
-JNIEnv * curEnv = getCurrentEnv();
+    JNIEnv * curEnv = getCurrentEnv();
 
-localClass = curEnv->FindClass( this->className().c_str() ) ;
-if (localClass == NULL) {
-  throw GiwsException::JniClassNotFoundException(curEnv, this->className());
-}
+    localClass = curEnv->FindClass( this->className().c_str() ) ;
+    if (localClass == NULL)
+    {
+        throw GiwsException::JniClassNotFoundException(curEnv, this->className());
+    }
 
-this->instanceClass = static_cast<jclass>(curEnv->NewGlobalRef(localClass));
+    this->instanceClass = static_cast<jclass>(curEnv->NewGlobalRef(localClass));
 
-/* localClass is not needed anymore */
-curEnv->DeleteLocalRef(localClass);
+    /* localClass is not needed anymore */
+    curEnv->DeleteLocalRef(localClass);
 
-if (this->instanceClass == NULL) {
-throw GiwsException::JniObjectCreationException(curEnv, this->className());
-}
+    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());
-}
+    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);
+    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 */
-jstringcreateDatatipProgramCoordjstringjava_lang_StringjdoubleArray_doubledoubleID=NULL;
-jstringcreateDatatipProgramIndexjstringjava_lang_StringjintintID=NULL;
+    /* Methods ID set to NULL */
+    jstringcreateDatatipProgramCoordjstringjava_lang_StringjdoubleArray_doubledoubleID = NULL;
+    jstringcreateDatatipProgramIndexjstringjava_lang_StringjintintID = NULL;
+    voiddatatipSetInterpjstringjava_lang_StringjbooleanbooleanID = NULL;
 
 
 }
 
-DatatipCreate::DatatipCreate(JavaVM * jvm_, jobject JObj) {
-        jvm=jvm_;
+DatatipCreate::DatatipCreate(JavaVM * jvm_, jobject JObj)
+{
+    jvm = jvm_;
 
-        JNIEnv * curEnv = getCurrentEnv();
+    JNIEnv * curEnv = getCurrentEnv();
 
-jclass localClass = curEnv->GetObjectClass(JObj);
-        this->instanceClass = static_cast<jclass>(curEnv->NewGlobalRef(localClass));
-        curEnv->DeleteLocalRef(localClass);
+    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());
-        }
+    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 */
-        jstringcreateDatatipProgramCoordjstringjava_lang_StringjdoubleArray_doubledoubleID=NULL;
-jstringcreateDatatipProgramIndexjstringjava_lang_StringjintintID=NULL;
+    this->instance = curEnv->NewGlobalRef(JObj) ;
+    if (this->instance == NULL)
+    {
+        throw GiwsException::JniObjectCreationException(curEnv, this->className());
+    }
+    /* Methods ID set to NULL */
+    jstringcreateDatatipProgramCoordjstringjava_lang_StringjdoubleArray_doubledoubleID = NULL;
+    jstringcreateDatatipProgramIndexjstringjava_lang_StringjintintID = NULL;
+    voiddatatipSetInterpjstringjava_lang_StringjbooleanbooleanID = NULL;
 
 
 }
 
 // Generic methods
 
-void DatatipCreate::synchronize() {
-if (getCurrentEnv()->MonitorEnter(instance) != JNI_OK) {
-throw GiwsException::JniMonitorException(getCurrentEnv(), "DatatipCreate");
-}
-}
-
-void DatatipCreate::endSynchronize() {
-if ( getCurrentEnv()->MonitorExit(instance) != JNI_OK) {
-throw GiwsException::JniMonitorException(getCurrentEnv(), "DatatipCreate");
-}
-}
-// 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) {
-throw GiwsException::JniMethodNotFoundException(curEnv, "createDatatipProgramCoord");
-}
-
-jstring polylineUid_ = curEnv->NewStringUTF( polylineUid );
-if (polylineUid != NULL && polylineUid_ == NULL)
+void DatatipCreate::synchronize()
 {
-throw GiwsException::JniBadAllocException(curEnv);
+    if (getCurrentEnv()->MonitorEnter(instance) != JNI_OK)
+    {
+        throw GiwsException::JniMonitorException(getCurrentEnv(), "DatatipCreate");
+    }
 }
 
-
-jdoubleArray coordDoubleXY_ = curEnv->NewDoubleArray( coordDoubleXYSize ) ;
-
-if (coordDoubleXY_ == NULL)
+void DatatipCreate::endSynchronize()
 {
-// check that allocation succeed
-throw GiwsException::JniBadAllocException(curEnv);
+    if ( getCurrentEnv()->MonitorExit(instance) != JNI_OK)
+    {
+        throw GiwsException::JniMonitorException(getCurrentEnv(), "DatatipCreate");
+    }
 }
+// Method(s)
 
-curEnv->SetDoubleArrayRegion( coordDoubleXY_, 0, coordDoubleXYSize, (jdouble*)(coordDoubleXY) ) ;
-
+char* DatatipCreate::createDatatipProgramCoord (JavaVM * jvm_, char const* polylineUid, double const* coordDoubleXY, int coordDoubleXYSize)
+{
 
-                        jstring res =  static_cast<jstring>( curEnv->CallStaticObjectMethod(cls, jstringcreateDatatipProgramCoordjstringjava_lang_StringjdoubleArray_doubledoubleID ,polylineUid_, coordDoubleXY_));
-                        if (curEnv->ExceptionCheck()) {
-throw GiwsException::JniCallMethodException(curEnv);
+    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)
+    {
+        throw GiwsException::JniMethodNotFoundException(curEnv, "createDatatipProgramCoord");
+    }
+
+    jstring polylineUid_ = curEnv->NewStringUTF( polylineUid );
+    if (polylineUid != NULL && polylineUid_ == NULL)
+    {
+        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())
+    {
+        throw GiwsException::JniCallMethodException(curEnv);
+    }
+    if (res != NULL)
+    {
+
+        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())
+        {
+            delete[] myStringBuffer;
+            throw GiwsException::JniCallMethodException(curEnv);
+        }
+        return myStringBuffer;
+    }
+    else
+    {
+        curEnv->DeleteLocalRef(res);
+        return NULL;
+    }
 }
 
-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()) {
-delete[] myStringBuffer;
-                                throw GiwsException::JniCallMethodException(curEnv);
-}
-return myStringBuffer;
+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)
+    {
+        throw GiwsException::JniMethodNotFoundException(curEnv, "createDatatipProgramIndex");
+    }
+
+    jstring polylineUid_ = curEnv->NewStringUTF( polylineUid );
+    if (polylineUid != NULL && polylineUid_ == NULL)
+    {
+        throw GiwsException::JniBadAllocException(curEnv);
+    }
+
+
+    jstring res =  static_cast<jstring>( curEnv->CallStaticObjectMethod(cls, jstringcreateDatatipProgramIndexjstringjava_lang_StringjintintID , polylineUid_, indexPoint));
+    if (curEnv->ExceptionCheck())
+    {
+        throw GiwsException::JniCallMethodException(curEnv);
+    }
+    if (res != NULL)
+    {
+
+        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())
+        {
+            delete[] myStringBuffer;
+            throw GiwsException::JniCallMethodException(curEnv);
+        }
+        return myStringBuffer;
+    }
+    else
+    {
+        curEnv->DeleteLocalRef(res);
+        return NULL;
+    }
 }
 
-char* DatatipCreate::createDatatipProgramIndex (JavaVM * jvm_, char const* polylineUid, int indexPoint){
+void DatatipCreate::datatipSetInterp (JavaVM * jvm_, char const* datatipUid, bool interpMode)
+{
 
-JNIEnv * curEnv = NULL;
-jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
-jclass cls = curEnv->FindClass( className().c_str() );
+    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) {
-throw GiwsException::JniMethodNotFoundException(curEnv, "createDatatipProgramIndex");
-}
+    jmethodID voiddatatipSetInterpjstringjava_lang_StringjbooleanbooleanID = curEnv->GetStaticMethodID(cls, "datatipSetInterp", "(Ljava/lang/String;Z)V" ) ;
+    if (voiddatatipSetInterpjstringjava_lang_StringjbooleanbooleanID == NULL)
+    {
+        throw GiwsException::JniMethodNotFoundException(curEnv, "datatipSetInterp");
+    }
 
-jstring polylineUid_ = curEnv->NewStringUTF( polylineUid );
-if (polylineUid != NULL && polylineUid_ == NULL)
-{
-throw GiwsException::JniBadAllocException(curEnv);
-}
+    jstring datatipUid_ = curEnv->NewStringUTF( datatipUid );
+    if (datatipUid != NULL && datatipUid_ == NULL)
+    {
+        throw GiwsException::JniBadAllocException(curEnv);
+    }
 
 
-                        jstring res =  static_cast<jstring>( curEnv->CallStaticObjectMethod(cls, jstringcreateDatatipProgramIndexjstringjava_lang_StringjintintID ,polylineUid_, indexPoint));
-                        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(polylineUid_);
-curEnv->DeleteLocalRef(cls);
-if (curEnv->ExceptionCheck()) {
-delete[] myStringBuffer;
-                                throw GiwsException::JniCallMethodException(curEnv);
-}
-return myStringBuffer;
+    jboolean interpMode_ = (static_cast<bool>(interpMode) ? JNI_TRUE : JNI_FALSE);
 
+    curEnv->CallStaticVoidMethod(cls, voiddatatipSetInterpjstringjava_lang_StringjbooleanbooleanID , datatipUid_, interpMode_);
+    curEnv->DeleteLocalRef(datatipUid_);
+    curEnv->DeleteLocalRef(cls);
+    if (curEnv->ExceptionCheck())
+    {
+        throw GiwsException::JniCallMethodException(curEnv);
+    }
 }
 
 }
index d5d9448..2c66320 100644 (file)
@@ -1,30 +1,24 @@
-/* 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 
+/* Generated by GIWS (version 2.0.1) with command:
+giws --throws-exception-on-error --description-file ../../../scilab/scilab/modules/gui/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, 
+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". 
+"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. 
+liability.
 
 In this respect, the user's attention is drawn to the risks associated
 with loading,  using,  modifying and/or developing or reproducing the
@@ -33,9 +27,9 @@ 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. 
+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.
@@ -52,11 +46,11 @@ knowledge of the CeCILL-B license and that you accept its terms.
 
 #include "GiwsException.hxx"
 
-        #if defined(_MSC_VER) /* Defined anyway with Visual */
-            #include <Windows.h>
-        #else
-            typedef signed char byte;
-        #endif
+#if defined(_MSC_VER) /* Defined anyway with Visual */
+#include <Windows.h>
+#else
+typedef signed char byte;
+#endif
 
 
 #ifndef GIWSEXPORT
@@ -75,89 +69,94 @@ knowledge of the CeCILL-B license and that you accept its terms.
 # endif
 #endif
 
-namespace org_scilab_modules_gui_datatip {
-class GIWSEXPORT DatatipCreate {
+namespace org_scilab_modules_gui_datatip
+{
+class GIWSEXPORT DatatipCreate
+{
 
 private:
-JavaVM * jvm;
+    JavaVM * jvm;
 
 protected:
-jmethodID jstringcreateDatatipProgramCoordjstringjava_lang_StringjdoubleArray_doubledoubleID; // cache method id
-jmethodID jstringcreateDatatipProgramIndexjstringjava_lang_StringjintintID; // cache method id
+    jmethodID jstringcreateDatatipProgramCoordjstringjava_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
+    jobject instance;
+    jclass instanceClass; // cache class
 
-                       
-// Caching (if any)
 
+    // Caching (if any)
 
-/**
-* Get the environment matching to the current thread.
-*/
-virtual JNIEnv * getCurrentEnv();
+
+    /**
+    * 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_);
+    // 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
 
-/**
-* 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);
+    // Destructor
+    ~DatatipCreate();
 
+    // Generic method
+    // Synchronization methods
+    /**
+    * Enter monitor associated with the object.
+    * Equivalent of creating a "synchronized(obj)" scope in Java.
+    */
+    void synchronize();
 
-/** 
-* This is a fake constructor to avoid the constructor
-* chaining when dealing with extended giws classes 
-*/
-#ifdef FAKEGIWSDATATYPE
-DatatipCreate(fakeGiwsDataType::fakeGiwsDataType /* unused */) {}
-#endif
+    /**
+    * Exit monitor associated with the object.
+    * Equivalent of ending a "synchronized(obj)" scope.
+    */
+    void endSynchronize();
 
-// Destructor
-~DatatipCreate();
+    // Methods
+    static char* createDatatipProgramCoord(JavaVM * jvm_, char const* polylineUid, double const* coordDoubleXY, int coordDoubleXYSize);
 
-// Generic method
-// Synchronization methods
-/**
-* Enter monitor associated with the object.
-* Equivalent of creating a "synchronized(obj)" scope in Java.
-*/
-void synchronize();
+    static char* createDatatipProgramIndex(JavaVM * jvm_, char const* polylineUid, int indexPoint);
 
-/**
-* Exit monitor associated with the object.
-* Equivalent of ending a "synchronized(obj)" scope.
-*/
-void endSynchronize();
+    static void datatipSetInterp(JavaVM * jvm_, char const* datatipUid, bool interpMode);
 
-// Methods
-static char* createDatatipProgramCoord(JavaVM * jvm_, char const* polylineUid, double const* coordDoubleXY, int coordDoubleXYSize);
 
-static char* createDatatipProgramIndex(JavaVM * jvm_, char const* polylineUid, int indexPoint);
+    /**
+    * 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";
+    }
 
-                        /**
-                        * 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";
-                }
-                
 };