Graphic tree
Sylvestre KOUMAR [Wed, 8 Apr 2009 08:20:50 +0000 (10:20 +0200)]
scilab/modules/gui/Makefile.am
scilab/modules/gui/Makefile.in
scilab/modules/gui/sci_gateway/cpp/sci_displaytree.cpp
scilab/modules/gui/src/cpp/displaytree.cpp
scilab/modules/gui/src/cpp/displaytree.hxx
scilab/modules/gui/src/java/org/scilab/modules/gui/tree/ScilabDisplayTree.java [new file with mode: 0644]
scilab/modules/gui/src/java/org/scilab/modules/gui/tree/Tree.java
scilab/modules/gui/src/jni/ScilabDisplayTree.cpp [new file with mode: 0644]
scilab/modules/gui/src/jni/ScilabDisplayTree.giws.xml [new file with mode: 0644]
scilab/modules/gui/src/jni/ScilabDisplayTree.hxx [new file with mode: 0644]

index c0126d4..8a1b5d7 100644 (file)
@@ -1,9 +1,37 @@
-##########
-### Sylvestre Ledru <sylvestre.ledru@inria.fr>
-### INRIA - Scilab 2006
-### Vincent COUVERT <vincent.couvert@inria.fr>
-### INRIA - Scilab 2008
-##########
+#
+# Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+# Copyright (C) INRIA   - 2006-2008 - Sylvestre Ledru
+# Copyright (C) INRIA   - 2007 - Vincent COUVERT
+# Copyright (C) DIGITEO - 2009 - Sylvestre Ledru
+# Copyright (C) DIGITEO - 2009 - Pierre MARECHAL
+# 
+# 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
+#
+
+#### Target ######
+modulename=gui
+
+
+#### gui : Conf files ####
+libscigui_la_rootdir = $(mydatadir)
+libscigui_la_root_DATA = changelog.txt license.txt readme.txt version.xml
+
+
+#### gui : init scripts ####
+libscigui_la_etcdir = $(mydatadir)/etc
+libscigui_la_etc_DATA = etc/gui.quit \
+etc/gui.start \
+etc/graphics_menubar.xml \
+etc/graphics_toolbar.xml \
+etc/helpbrowser_menubar.xml \
+etc/main_menubar.xml \
+etc/main_toolbar.xml \
+etc/flexdock-themes.xml
+
 
 include $(top_srcdir)/Makefile.incl.am
 
@@ -108,7 +136,9 @@ sci_gateway/cpp/sci_raise_window.cpp \
 sci_gateway/cpp/sci_usecanvas.cpp \
 src/jni/GiwsException.cpp \
 src/jni/Juigetfile.cpp \
-src/cpp/CallJuigetfile.cpp
+src/cpp/CallJuigetfile.cpp \
+src/cpp/displaytree.cpp
+
 
 GIWS_WRAPPERS = \
 src/jni/CallScilabBridge.giws.xml \
@@ -158,7 +188,8 @@ sci_gateway/cpp/sci_setlookandfeel.cpp \
 sci_gateway/cpp/sci_getinstalledlookandfeels.cpp \
 sci_gateway/cpp/sci_getlookandfeel.cpp \
 sci_gateway/cpp/sci_uigetdir.cpp \
-sci_gateway/cpp/sci_uigetfile.cpp
+sci_gateway/cpp/sci_uigetfile.cpp \
+sci_gateway/cpp/sci_displaytree.cpp
 
 libscigui_la_CFLAGS=   -I$(srcdir)/src/c/ \
                        -I$(srcdir)/src/c/xsci/ \
@@ -232,27 +263,6 @@ INCLUDE_FLAGS = $(libscigui_la_CFLAGS)
 libscigui_la_LIBADD = $(top_builddir)/modules/renderer/libscirenderer.la $(top_builddir)/modules/core/libscicore.la $(top_builddir)/libs/MALLOC/libscimalloc.la $(top_builddir)/modules/output_stream/libscioutput_stream.la
 
 
-#### Target ######
-modulename=gui
-
-
-#### gui : Conf files ####
-libscigui_la_rootdir = $(mydatadir)
-libscigui_la_root_DATA = changelog.txt license.txt readme.txt version.xml
-
-
-#### gui : init scripts ####
-libscigui_la_etcdir = $(mydatadir)/etc
-libscigui_la_etc_DATA = etc/gui.quit \
-etc/gui.start \
-etc/graphics_menubar.xml \
-etc/graphics_toolbar.xml \
-etc/helpbrowser_menubar.xml \
-etc/main_menubar.xml \
-etc/main_toolbar.xml \
-etc/flexdock-themes.xml
-
-
 #### gui : gateway declaration ####
 libscigui_la_sci_gatewaydir = $(mydatadir)/sci_gateway
 libscigui_la_sci_gateway_DATA = sci_gateway/gui_gateway.xml
@@ -380,7 +390,5 @@ images/icons/zoom-area.png
 
 
 if GUI
-
 USEANT=1
-
 endif
index 2e61d82..8c35b80 100644 (file)
 
 @SET_MAKE@
 
-##########
-### Sylvestre Ledru <sylvestre.ledru@inria.fr>
-### INRIA - Scilab 2006
-### Vincent COUVERT <vincent.couvert@inria.fr>
-### INRIA - Scilab 2008
-##########
+#
+# Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+# Copyright (C) INRIA   - 2006-2008 - Sylvestre Ledru
+# Copyright (C) INRIA   - 2007 - Vincent COUVERT
+# Copyright (C) DIGITEO - 2009 - Sylvestre Ledru
+# Copyright (C) DIGITEO - 2009 - Pierre MARECHAL
+# 
+# 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
+#
 
 # Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 # Copyright (C) 2006-2008 - INRIA - Sylvestre LEDRU <sylvestre.ledru@inria.fr>
@@ -137,7 +144,8 @@ am__objects_4 = libscigui_la-sci_printsetupbox.lo \
        libscigui_la-sci_setlookandfeel.lo \
        libscigui_la-sci_getinstalledlookandfeels.lo \
        libscigui_la-sci_getlookandfeel.lo \
-       libscigui_la-sci_uigetdir.lo libscigui_la-sci_uigetfile.lo
+       libscigui_la-sci_uigetdir.lo libscigui_la-sci_uigetfile.lo \
+       libscigui_la-sci_displaytree.lo
 am__objects_5 = libscigui_la-InitUIMenu.lo \
        libscigui_la-CallScilabBridge.lo libscigui_la-Jxclick.lo \
        libscigui_la-DestroyUimenu.lo libscigui_la-DestroyUicontrol.lo \
@@ -207,7 +215,7 @@ am__objects_5 = libscigui_la-InitUIMenu.lo \
        libscigui_la-LookAndFeelManager.lo \
        libscigui_la-sci_raise_window.lo libscigui_la-sci_usecanvas.lo \
        libscigui_la-GiwsException.lo libscigui_la-Juigetfile.lo \
-       libscigui_la-CallJuigetfile.lo
+       libscigui_la-CallJuigetfile.lo libscigui_la-displaytree.lo
 am_libscigui_la_OBJECTS = $(am__objects_2) $(am__objects_3) \
        $(am__objects_4) $(am__objects_5)
 libscigui_la_OBJECTS = $(am_libscigui_la_OBJECTS)
@@ -275,6 +283,7 @@ CXXDEPMODE = @CXXDEPMODE@
 CXXFLAGS = @CXXFLAGS@
 CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
+DEMOTOOLS_ENABLE = @DEMOTOOLS_ENABLE@
 DEPDIR = @DEPDIR@
 DOCBOOK_ROOT = @DOCBOOK_ROOT@
 DSYMUTIL = @DSYMUTIL@
@@ -293,7 +302,10 @@ FLIBS = @FLIBS@
 FOP = @FOP@
 GIWS_BIN = @GIWS_BIN@
 GLUEGEN_RT = @GLUEGEN_RT@
+GRAPHICS_ENABLE = @GRAPHICS_ENABLE@
 GREP = @GREP@
+GUI_ENABLE = @GUI_ENABLE@
+HELP_ENABLE = @HELP_ENABLE@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -303,6 +315,8 @@ JAR = @JAR@
 JAVA = @JAVA@
 JAVAC = @JAVAC@
 JAVAH = @JAVAH@
+JAVASCI_ENABLE = @JAVASCI_ENABLE@
+JAVA_ENABLE = @JAVA_ENABLE@
 JAVA_G = @JAVA_G@
 JAVA_HOME = @JAVA_HOME@
 JAVA_JNI_INCLUDE = @JAVA_JNI_INCLUDE@
@@ -362,6 +376,7 @@ RT_LIB = @RT_LIB@
 SAXON = @SAXON@
 SCICOS_ENABLE = @SCICOS_ENABLE@
 SCILAB_LIBRARY_VERSION = @SCILAB_LIBRARY_VERSION@
+SCIPAD_ENABLE = @SCIPAD_ENABLE@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SET_RELOCATABLE = @SET_RELOCATABLE@
@@ -446,6 +461,25 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 
+#### Target ######
+modulename = gui
+
+#### gui : Conf files ####
+libscigui_la_rootdir = $(mydatadir)
+libscigui_la_root_DATA = changelog.txt license.txt readme.txt version.xml
+
+#### gui : init scripts ####
+libscigui_la_etcdir = $(mydatadir)/etc
+libscigui_la_etc_DATA = etc/gui.quit \
+etc/gui.start \
+etc/graphics_menubar.xml \
+etc/graphics_toolbar.xml \
+etc/helpbrowser_menubar.xml \
+etc/main_menubar.xml \
+etc/main_toolbar.xml \
+etc/flexdock-themes.xml
+
+
 # Where all the Scilab stuff is installed (macros, help, ...)
 mydatadir = $(pkgdatadir)/modules/$(modulename)
 
@@ -605,7 +639,8 @@ sci_gateway/cpp/sci_raise_window.cpp \
 sci_gateway/cpp/sci_usecanvas.cpp \
 src/jni/GiwsException.cpp \
 src/jni/Juigetfile.cpp \
-src/cpp/CallJuigetfile.cpp
+src/cpp/CallJuigetfile.cpp \
+src/cpp/displaytree.cpp
 
 GIWS_WRAPPERS = \
 src/jni/CallScilabBridge.giws.xml \
@@ -650,7 +685,8 @@ sci_gateway/cpp/sci_setlookandfeel.cpp \
 sci_gateway/cpp/sci_getinstalledlookandfeels.cpp \
 sci_gateway/cpp/sci_getlookandfeel.cpp \
 sci_gateway/cpp/sci_uigetdir.cpp \
-sci_gateway/cpp/sci_uigetfile.cpp
+sci_gateway/cpp/sci_uigetfile.cpp \
+sci_gateway/cpp/sci_displaytree.cpp
 
 libscigui_la_CFLAGS = -I$(srcdir)/src/c/ -I$(srcdir)/src/c/xsci/ \
        -I$(srcdir)/includes/ \
@@ -709,25 +745,6 @@ INCLUDE_FLAGS = $(libscigui_la_CFLAGS)
 #  cyclic $(top_builddir)/modules/graphics/libscigraphics.la $(top_builddir)/modules/jvm/libscijvm.la
 libscigui_la_LIBADD = $(top_builddir)/modules/renderer/libscirenderer.la $(top_builddir)/modules/core/libscicore.la $(top_builddir)/libs/MALLOC/libscimalloc.la $(top_builddir)/modules/output_stream/libscioutput_stream.la
 
-#### Target ######
-modulename = gui
-
-#### gui : Conf files ####
-libscigui_la_rootdir = $(mydatadir)
-libscigui_la_root_DATA = changelog.txt license.txt readme.txt version.xml
-
-#### gui : init scripts ####
-libscigui_la_etcdir = $(mydatadir)/etc
-libscigui_la_etc_DATA = etc/gui.quit \
-etc/gui.start \
-etc/graphics_menubar.xml \
-etc/graphics_toolbar.xml \
-etc/helpbrowser_menubar.xml \
-etc/main_menubar.xml \
-etc/main_toolbar.xml \
-etc/flexdock-themes.xml
-
-
 #### gui : gateway declaration ####
 libscigui_la_sci_gatewaydir = $(mydatadir)/sci_gateway
 libscigui_la_sci_gateway_DATA = sci_gateway/gui_gateway.xml
@@ -1021,12 +1038,14 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_la-Widget.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_la-addmenu.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_la-buildMainWindowTitle.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_la-displaytree.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_la-exportUserInterface.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_la-getMainWindowTitle.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_la-gw_gui.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_la-messageboxoptions.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_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@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_la-sci_getcallbackobject.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscigui_la-sci_getinstalledlookandfeels.Plo@am__quote@
@@ -1424,6 +1443,13 @@ libscigui_la-sci_uigetfile.lo: sci_gateway/cpp/sci_uigetfile.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_uigetfile.lo `test -f 'sci_gateway/cpp/sci_uigetfile.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_uigetfile.cpp
 
+libscigui_la-sci_displaytree.lo: sci_gateway/cpp/sci_displaytree.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_displaytree.lo -MD -MP -MF $(DEPDIR)/libscigui_la-sci_displaytree.Tpo -c -o libscigui_la-sci_displaytree.lo `test -f 'sci_gateway/cpp/sci_displaytree.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_displaytree.cpp
+@am__fastdepCXX_TRUE@  mv -f $(DEPDIR)/libscigui_la-sci_displaytree.Tpo $(DEPDIR)/libscigui_la-sci_displaytree.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='sci_gateway/cpp/sci_displaytree.cpp' object='libscigui_la-sci_displaytree.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_displaytree.lo `test -f 'sci_gateway/cpp/sci_displaytree.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_displaytree.cpp
+
 libscigui_la-InitUIMenu.lo: src/cpp/InitUIMenu.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-InitUIMenu.lo -MD -MP -MF $(DEPDIR)/libscigui_la-InitUIMenu.Tpo -c -o libscigui_la-InitUIMenu.lo `test -f 'src/cpp/InitUIMenu.cpp' || echo '$(srcdir)/'`src/cpp/InitUIMenu.cpp
 @am__fastdepCXX_TRUE@  mv -f $(DEPDIR)/libscigui_la-InitUIMenu.Tpo $(DEPDIR)/libscigui_la-InitUIMenu.Plo
@@ -2033,6 +2059,13 @@ libscigui_la-CallJuigetfile.lo: src/cpp/CallJuigetfile.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-CallJuigetfile.lo `test -f 'src/cpp/CallJuigetfile.cpp' || echo '$(srcdir)/'`src/cpp/CallJuigetfile.cpp
 
+libscigui_la-displaytree.lo: src/cpp/displaytree.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-displaytree.lo -MD -MP -MF $(DEPDIR)/libscigui_la-displaytree.Tpo -c -o libscigui_la-displaytree.lo `test -f 'src/cpp/displaytree.cpp' || echo '$(srcdir)/'`src/cpp/displaytree.cpp
+@am__fastdepCXX_TRUE@  mv -f $(DEPDIR)/libscigui_la-displaytree.Tpo $(DEPDIR)/libscigui_la-displaytree.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='src/cpp/displaytree.cpp' object='libscigui_la-displaytree.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-displaytree.lo `test -f 'src/cpp/displaytree.cpp' || echo '$(srcdir)/'`src/cpp/displaytree.cpp
+
 mostlyclean-libtool:
        -rm -f *.lo
 
index 92e295c..fe428fd 100644 (file)
@@ -1,30 +1,34 @@
 /*
- * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
- * Copyright (C) 2008 - INRIA - Antoine ELIAS
- * 
- * 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
- *
- */
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2008 - INRIA - Antoine ELIAS
+* 
+* 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 <vector>
 #include <sstream>
+#include <iostream> 
+#include <string>
 
 extern "C" 
 {
-       #include "stack-c.h"
-       #include "gw_gui.h"
-       #include "stdlib.h"
-       #include "sciprint.h"
-       #include "MALLOC.h"
+#include "stack-c.h"
+#include "gw_gui.h"
+#include "stdlib.h"
+#include "sciprint.h"
+#include "MALLOC.h"
+#include "getScilabJavaVM.h"
 }
 
 #include "displaytree.hxx"
+#include "ScilabDisplayTree.hxx"
 
 using namespace std;
 /*--------------------------------------------------------------------------*/
@@ -105,10 +109,10 @@ int sci_displaytree(char *fname,unsigned long fname_len)
                return false;
        }
 
-       szCallBack              = (char*)MALLOC((iRet + 1) * sizeof(char));
+       szCallBack              = (char*)MALLOC((iRet + 1) * sizeof(char)); //new char[iRet + 1]; replace later
        iRet                    = iGetNodeCallBack(1, piCurrentItem, szCallBack);
        StructList.push_back(szCallBack);
-       FREE(szCallBack);
+       FREE(szCallBack); //delete[] szCallBack; replace later
 
        if(iRet == -1)
        {
@@ -117,6 +121,31 @@ int sci_displaytree(char *fname,unsigned long fname_len)
 
        bool nRet = bParseListItem(1, piCurrentItem, &StructList, szCurLevel);
 
+
+       // Conversion Vector<string> to char ** 
+       char **tab = NULL;
+       char *tmp = NULL;
+       size_t i = 0;
+
+       size_t struct_size = StructList.size();
+       tab = new char*[struct_size];
+
+       for(i = 0; i < struct_size; ++i)
+       {
+               size_t element_size = StructList.at(i).size();  
+               tab[i] = strdup(StructList.at(i).c_str());              
+       }
+       
        //Java
+       org_scilab_modules_gui_tree::ScilabDisplayTree::scilabDisplayTree(getScilabJavaVM(), tab, struct_size);
+
+       //Free
+       for(i = 0; i < struct_size; ++i)
+       {
+               delete[] tab[i];
+       }
+
+       delete[] tab;
+
        return 0;
 }
index d0ae5d0..d4159f3 100644 (file)
@@ -338,3 +338,8 @@ int iGetFieldValue(int _iVar, int* _piCurrentItem, char* _pszFieldName, char * _
        FREE(piLen);
        return 0;
 }
+
+void displayTree(vector<string> vecteur)
+{
+
+}
index 11ed717..a0ff6c9 100644 (file)
@@ -16,6 +16,9 @@
 
 #include <vector>
 #include <sstream>
+#include <string>
+
+using namespace std;
 
 #define TREE_REF_NAME                  "Tree"
 #define TREE_REF_LABEL         "label"
@@ -30,4 +33,10 @@ int iGetNodeCallBack(int _iVar, int* _piCurrentItem, char* _pzValue);
 int iGetNodeIcon(int _iVar, int* _piCurrentItem, char* _pzValue);
 int iGetNodeLabel(int _iVar, int* _piCurrentItem, char* _pzValue);
 
+/**
+* Give to Java the Tree data structure
+* @param[in] vecteur the tree data structure
+*/
+void displayTree(vector<string> vecteur);
+
 #endif /* __DISPLAY_TREE__ */
\ No newline at end of file
diff --git a/scilab/modules/gui/src/java/org/scilab/modules/gui/tree/ScilabDisplayTree.java b/scilab/modules/gui/src/java/org/scilab/modules/gui/tree/ScilabDisplayTree.java
new file mode 100644 (file)
index 0000000..ead3c05
--- /dev/null
@@ -0,0 +1,112 @@
+package org.scilab.modules.gui.tree;
+
+import java.util.StringTokenizer;
+import java.util.Hashtable;
+
+public class ScilabDisplayTree {       
+
+       private static String[][] myShapedTree;
+
+       
+       /**
+        * PRIVATE constructor
+        */
+       private ScilabDisplayTree() {}
+
+       /**
+        * scilabDisplayTree called with 1 arg (treeData)
+        * @param treeData structure of the trees
+        */
+       public static void scilabDisplayTree(String[] treeData) {       
+
+               // Get depth and parent node for each node
+               myShapedTree = treeShaping(treeData);
+
+               // Display the GUI tree
+               createGraphicTree();
+       }
+
+       /**
+        * Get depth and parent node for each node
+        * @param treeData
+        * @return treeShape
+        */
+       public static String[][] treeShaping(String[] treeData) {
+
+               String[][] treeShape = new String[treeData.length][3];
+               StringTokenizer st;
+               int depth = 0;          
+
+               for (int i = 0; i < treeData.length; i++) {
+
+                       // Get original structure
+                       treeShape[i][0] = treeData[i];
+
+                       // Get depth & parent node
+                       if (i%4 == 0) {
+                               // Depth
+                               st = new StringTokenizer(treeData[i], ".");
+                               depth = st.countTokens() - 1;
+                               treeShape[i][1] = "" + depth;
+
+                               // Parent Node
+                               if (depth == 0) {
+                                       treeShape[i][2] = "root";
+                               } else {
+                                       treeShape[i][2] = treeData[i].substring(0, treeData[i].length() -2);
+                               } 
+                       }
+               }
+               return treeShape;
+       }
+
+       /**
+        * Display the GUI tree
+        */
+       public static void createGraphicTree() {
+
+               // Create the ScilabTree
+               ScilabTree t = createTree(myShapedTree);
+               
+               // Display the tree
+               t.showTree();
+       }
+
+       /**
+        * Get tree's max depth
+        * @param myShapedTree
+        * @return
+        */
+       public static int getTreeDepth(String[][] myShapedTree) {
+               int depth = 0;
+               for (int i = 0; i < myShapedTree.length; i++) {
+
+                       if (i%4 == 0 && i > 0) {
+                               if (Integer.parseInt(myShapedTree[i][1]) > depth) {
+                                       depth = Integer.parseInt(myShapedTree[i][1]);
+                               }
+                       }
+               }
+               return depth;
+       }
+
+       /**
+        * Create the tree structure
+        * @param myShapedTree
+        * @return ScilabTree
+        */
+       public static ScilabTree createTree(String[][] myShapedTree) {
+               ScilabTree tree = null;
+               Hashtable<String, ScilabTree> treeVsPosition = new Hashtable<String, ScilabTree>();
+
+               tree = new ScilabTree(myShapedTree[1][0], myShapedTree[2][0],myShapedTree[3][0]);
+               treeVsPosition.put(myShapedTree[0][0], tree);
+               for (int i = 4; i < myShapedTree.length; i = i+4) {
+                       tree = new ScilabTree(myShapedTree[i+1][0], myShapedTree[i+2][0],myShapedTree[i+3][0]);
+                       treeVsPosition.put(myShapedTree[i][0], tree);
+                       ((ScilabTree) treeVsPosition.get(myShapedTree[i][2])).addChild(tree);
+               }
+               return ((ScilabTree) treeVsPosition.get(myShapedTree[0][0]));
+       }
+
+}
index 9b4710c..45d3607 100644 (file)
@@ -17,7 +17,6 @@ import java.util.Vector;
 import javax.swing.Icon;
 
 import org.scilab.modules.gui.events.callback.CallBack;
-import org.scilab.modules.gui.utils.Size;
 import org.scilab.modules.gui.widget.Widget;
 
 
diff --git a/scilab/modules/gui/src/jni/ScilabDisplayTree.cpp b/scilab/modules/gui/src/jni/ScilabDisplayTree.cpp
new file mode 100644 (file)
index 0000000..5dbdf2d
--- /dev/null
@@ -0,0 +1,236 @@
+#include "ScilabDisplayTree.hxx"
+/* Generated by GIWS (version 1.0.1) */
+/*
+
+Copyright 2007-2008 INRIA
+
+Author : Sylvestre Ledru & others
+
+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_tree {
+
+// Returns the current env
+
+JNIEnv * ScilabDisplayTree::getCurrentEnv() {
+JNIEnv * curEnv = NULL;
+this->jvm->AttachCurrentThread((void **) &curEnv, NULL);
+return curEnv;
+}
+// Destructor
+
+ScilabDisplayTree::~ScilabDisplayTree() {
+JNIEnv * curEnv = NULL;
+this->jvm->AttachCurrentThread((void **) &curEnv, NULL);
+
+curEnv->DeleteGlobalRef(this->instance);
+curEnv->DeleteGlobalRef(this->instanceClass);
+curEnv->DeleteGlobalRef(this->stringArrayClass);}
+// Constructors
+
+ScilabDisplayTree::ScilabDisplayTree(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 = (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 */
+voidscilabDisplayTreeID=NULL; 
+voidscilabDisplayTreejobjectArrayID=NULL; 
+
+
+}
+
+ScilabDisplayTree::ScilabDisplayTree(JavaVM * jvm_, jobject JObj) {
+        jvm=jvm_;
+
+        JNIEnv * curEnv = getCurrentEnv();
+
+jclass localClass = curEnv->GetObjectClass(JObj);
+        this->instanceClass = (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 */
+        voidscilabDisplayTreeID=NULL; 
+voidscilabDisplayTreejobjectArrayID=NULL; 
+
+
+}
+
+// Generic methods
+
+
+void ScilabDisplayTree::synchronize() {
+if (getCurrentEnv()->MonitorEnter(instance) != JNI_OK) {
+std::cerr << "Fail to enter monitor." << std::endl;
+exit(EXIT_FAILURE);
+}
+}
+
+
+void ScilabDisplayTree::endSynchronize() {
+if ( getCurrentEnv()->MonitorExit(instance) != JNI_OK) {
+std::cerr << "Fail to exit monitor." << std::endl;
+exit(EXIT_FAILURE);
+}
+}
+
+// Method(s)
+
+void ScilabDisplayTree::scilabDisplayTree (JavaVM * jvm_){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread((void **) &curEnv, NULL);
+jclass cls = curEnv->FindClass( className().c_str() );
+
+jmethodID voidscilabDisplayTreeID = curEnv->GetStaticMethodID(cls, "scilabDisplayTree", "()V" ) ;
+if (voidscilabDisplayTreeID == NULL) {
+std::cerr << "Could not access to the method " << "scilabDisplayTree" << std::endl;
+curEnv->ExceptionDescribe();
+exit(EXIT_FAILURE);
+}
+
+                         curEnv->CallStaticVoidMethod(cls, voidscilabDisplayTreeID );
+
+if (curEnv->ExceptionCheck()) {
+curEnv->ExceptionDescribe() ;
+}
+
+}
+
+void ScilabDisplayTree::scilabDisplayTree (JavaVM * jvm_, char ** treeData, int treeDataSize){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread((void **) &curEnv, NULL);
+jclass cls = curEnv->FindClass( className().c_str() );
+
+jmethodID voidscilabDisplayTreejobjectArrayID = curEnv->GetStaticMethodID(cls, "scilabDisplayTree", "([Ljava/lang/String;)V" ) ;
+if (voidscilabDisplayTreejobjectArrayID == NULL) {
+std::cerr << "Could not access to the method " << "scilabDisplayTree" << std::endl;
+curEnv->ExceptionDescribe();
+exit(EXIT_FAILURE);
+}
+jclass stringArrayClass = curEnv->FindClass("java/lang/String");
+
+// create java array of strings.
+jobjectArray treeData_ = curEnv->NewObjectArray( treeDataSize, stringArrayClass, NULL);
+if (treeData_ == NULL)
+{
+std::cerr << "Could not allocate Java string array, memory full." << std::endl;
+exit(EXIT_FAILURE);
+}
+
+// convert each char * to java strings and fill the java array.
+for ( int i = 0; i < treeDataSize; i++)
+{
+jstring TempString = curEnv->NewStringUTF( treeData[i] );
+if (TempString == NULL)
+{
+std::cerr << "Could not convert C string to Java UTF string, memory full." << std::endl;
+exit(EXIT_FAILURE);
+}
+
+curEnv->SetObjectArrayElement( treeData_, i, TempString);
+
+// avoid keeping reference on to many strings
+curEnv->DeleteLocalRef(TempString);
+}
+                         curEnv->CallStaticVoidMethod(cls, voidscilabDisplayTreejobjectArrayID ,treeData_);
+curEnv->DeleteLocalRef(stringArrayClass);
+curEnv->DeleteLocalRef(treeData_);
+
+if (curEnv->ExceptionCheck()) {
+curEnv->ExceptionDescribe() ;
+}
+
+}
+
+}
diff --git a/scilab/modules/gui/src/jni/ScilabDisplayTree.giws.xml b/scilab/modules/gui/src/jni/ScilabDisplayTree.giws.xml
new file mode 100644 (file)
index 0000000..b342937
--- /dev/null
@@ -0,0 +1,8 @@
+<package name="org.scilab.modules.gui.tree">
+  <object name="ScilabDisplayTree">  
+    <method name="scilabDisplayTree" returnType="void" modifier="static"/>     
+    <method name="scilabDisplayTree" returnType="void" modifier="static">
+      <parameter name="treeData" type="String[]"/>
+    </method>  
+  </object>
+</package>
diff --git a/scilab/modules/gui/src/jni/ScilabDisplayTree.hxx b/scilab/modules/gui/src/jni/ScilabDisplayTree.hxx
new file mode 100644 (file)
index 0000000..359d64d
--- /dev/null
@@ -0,0 +1,118 @@
+/* Generated by GIWS (version 1.0.1) */
+/*
+
+Copyright 2007-2008 INRIA
+
+Author : Sylvestre Ledru & others
+
+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_TREE_SCILABDISPLAYTREE__
+#define __ORG_SCILAB_MODULES_GUI_TREE_SCILABDISPLAYTREE__
+#include <iostream>
+#include <string>
+#include <string.h>
+#include <stdlib.h>
+#include <jni.h>
+
+namespace org_scilab_modules_gui_tree {
+
+class ScilabDisplayTree {
+private:
+JavaVM * jvm;
+jobject instance;
+
+jclass instanceClass; // cache class
+jmethodID voidscilabDisplayTreeID; // cache method id
+jmethodID voidscilabDisplayTreejobjectArrayID; // cache method id
+jclass stringArrayClass;
+
+
+/**
+* Get the environment matching to the current thread.
+*/
+JNIEnv * getCurrentEnv();
+
+public:
+// Constructor
+/**
+* Create a wrapping of the object from a JNIEnv.
+* It will call the default constructor
+* @param JEnv_ the Java Env
+*/
+ScilabDisplayTree(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
+*/
+ScilabDisplayTree(JavaVM * jvm_, jobject JObj);
+
+// Destructor
+~ScilabDisplayTree();
+
+// 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 scilabDisplayTree(JavaVM * jvm_);
+
+static void scilabDisplayTree(JavaVM * jvm_, char ** treeData, int treeDataSize);
+
+
+                        /**
+                        * 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/tree/ScilabDisplayTree";
+                }
+                
+};
+
+
+}
+#endif