fix axes_size with figure/gcf function and xml load 71/14271/4
Antoine ELIAS [Tue, 1 Apr 2014 10:46:03 +0000 (12:46 +0200)]
Change-Id: I2401fd24e6997cb461e9f6399536bd18384b60eb

16 files changed:
scilab/modules/graphic_objects/includes/createGraphicObject.h
scilab/modules/graphic_objects/src/cpp/createGraphicObject.cpp
scilab/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/builder/Builder.java
scilab/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/GOBuilder.java
scilab/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/XMLDomLoader.java
scilab/modules/graphic_objects/src/jni/Builder.cpp
scilab/modules/graphic_objects/src/jni/Builder.hxx
scilab/modules/graphic_objects/src/jni/builder.giws.xml
scilab/modules/gui/sci_gateway/c/sci_figure.c
scilab/modules/gui/src/java/org/scilab/modules/gui/SwingView.java
scilab/modules/gui/src/java/org/scilab/modules/gui/bridge/tab/SwingScilabCommonPanel.java
scilab/modules/gui/src/java/org/scilab/modules/gui/bridge/tab/SwingScilabDockablePanel.java
scilab/modules/gui/src/java/org/scilab/modules/gui/bridge/tab/SwingScilabPanel.java
scilab/modules/gui/src/java/org/scilab/modules/gui/bridge/tab/SwingScilabStaticPanel.java
scilab/modules/gui/tests/unit_tests/axes_size.dia.ref [new file with mode: 0644]
scilab/modules/gui/tests/unit_tests/axes_size.tst [new file with mode: 0644]

index 112411a..2340058 100644 (file)
@@ -50,7 +50,7 @@ GRAPHIC_OBJECTS_IMPEXP int cloneAxesModel(int iParent);
 GRAPHIC_OBJECTS_IMPEXP int createHiddenLabel(int iParent);
 GRAPHIC_OBJECTS_IMPEXP int createLabel(int iParent, int type);
 GRAPHIC_OBJECTS_IMPEXP int createNewFigureWithAxes();
-GRAPHIC_OBJECTS_IMPEXP int createFigure(int _bDockable, int _iMenubarType, int _iToolbarType, int _bDefaultAxes, int _bVisible, double* figureSize, double* axesSize, double* position, int iMenuBar, int iToolBar, int iInfoBar);
+GRAPHIC_OBJECTS_IMPEXP int createFigure(int _bDockable, int _iMenubarType, int _iToolbarType, int _bDefaultAxes, int _bVisible);
 GRAPHIC_OBJECTS_IMPEXP int createSubWin(int iParent);
 GRAPHIC_OBJECTS_IMPEXP int createText(int iParentsubwinUID, char** text, int nbRow, int nbCol, double x, double y, BOOL autoSize, double* userSize, int  centerPos, int *foreground, int *background, BOOL isboxed, BOOL isline, BOOL isfilled, int align);
 GRAPHIC_OBJECTS_IMPEXP int createRect(int iParentsubwinUID, double x, double y, double height, double width, int foreground, int background, int isfilled, int isline);
index 98a865d..87ff10b 100644 (file)
@@ -84,6 +84,8 @@ int createNewFigureWithAxes()
     int iUserDataSize = 0;
     int* piUserDataSize = &iUserDataSize;
     int id = 0;
+    int on = 1;
+    int off = 0;
 
     id = Builder::createNewFigureWithAxes(getScilabJavaVM());
 
@@ -105,23 +107,24 @@ int createNewFigureWithAxes()
         setGraphicObjectProperty(getCurrentSubWin(), __GO_USER_DATA__, pUserData, jni_int_vector, iUserDataSize);
     }
 
+    setGraphicObjectProperty(id, __GO_MENUBAR_VISIBLE__, (void*)&off, jni_bool, 1);
+    setGraphicObjectProperty(id, __GO_TOOLBAR_VISIBLE__, (void*)&off, jni_bool, 1);
+    setGraphicObjectProperty(id, __GO_INFOBAR_VISIBLE__, (void*)&off, jni_bool, 1);
+
+    setGraphicObjectProperty(id, __GO_MENUBAR_VISIBLE__, (void*)&on, jni_bool, 1);
+    setGraphicObjectProperty(id, __GO_TOOLBAR_VISIBLE__, (void*)&on, jni_bool, 1);
+    setGraphicObjectProperty(id, __GO_INFOBAR_VISIBLE__, (void*)&on, jni_bool, 1);
+
     return id;
 }
 
-int createFigure(int iDockable, int iMenubarType, int iToolbarType, int iDefaultAxes, int iVisible,
-                 double* figureSize, double* axesSize, double* position, int iMenuBar, int iToolBar, int iInfoBar)
+int createFigure(int iDockable, int iMenubarType, int iToolbarType, int iDefaultAxes, int iVisible)
 {
     int id = 0;
     int iUserDataSize = 0;
     int* piUserDataSize = &iUserDataSize;
 
-    id = Builder::createFigure(getScilabJavaVM(), iDockable != 0, iMenubarType, iToolbarType, iDefaultAxes != 0, iVisible != 0,
-                               figureSize, figureSize == NULL ? 0 : 2,
-                               axesSize, axesSize == NULL ? 0 : 2,
-                               position, position == NULL ? 0 : 2,
-                               iMenuBar != 0,
-                               iToolBar != 0,
-                               iInfoBar != 0);
+    id = Builder::createFigure(getScilabJavaVM(), iDockable != 0, iMenubarType, iToolbarType, iDefaultAxes != 0, iVisible != 0);
     //clone gdf user_data is needed
     getGraphicObjectProperty(getFigureModel(), __GO_USER_DATA_SIZE__, jni_int, (void**)&piUserDataSize);
     if (iUserDataSize != 0)
index 54da926..2e48622 100644 (file)
@@ -314,8 +314,7 @@ public final class Builder {
         }
     }
 
-    public final static int createFigure(boolean dockable, int menubarType, int toolbarType, boolean defaultAxes, boolean visible, double[] figureSize, double[] axesSize, double[] position,
-                                         boolean menubar, boolean toolbar, boolean infobar) {
+    public final static int createFigure(boolean dockable, int menubarType, int toolbarType, boolean defaultAxes, boolean visible) {
         GraphicController controller = GraphicController.getController();
         Integer figModel = GraphicModel.getFigureModel().getIdentifier();
         Integer figId = controller.cloneObject(figModel, false);
@@ -326,19 +325,6 @@ public final class Builder {
         figure.setVisible(visible);
         figure.setDefaultAxes(defaultAxes);
 
-        //set figure size only if axes size is not set too
-        if (figureSize != null && figureSize.length == 2 && (axesSize == null || axesSize.length == 0)) {
-            figure.setSize(new Integer[] { (int) figureSize[0], (int) figureSize[1] });
-        }
-
-        if (position != null && position.length == 2) {
-            figure.setPosition(new Integer[] { (int) position[0], (int) position[1] });
-        }
-
-        figure.setMenubarVisible(menubar);
-        figure.setToolbarVisible(toolbar);
-        figure.setInfobarVisible(infobar);
-
         controller.objectCreated(figId);
 
         ScilabNativeView.ScilabNativeView__setCurrentFigure(figId);
@@ -352,10 +338,6 @@ public final class Builder {
             cloneAxesModel(figId);
         }
 
-        if (axesSize != null && axesSize.length == 2) {
-            controller.setProperty(figId, GraphicObjectProperties.__GO_AXES_SIZE__, new Integer[] { (int) axesSize[0], (int) axesSize[1] });
-        }
-
         return figId;
     }
 
index a7bb0e3..a8c0aae 100644 (file)
@@ -90,8 +90,7 @@ import org.xml.sax.Attributes;
 
 public class GOBuilder {
     public static Integer figureBuilder(GraphicController controller, Attributes attributes) {
-        Integer fig = Builder.createFigure(false, 0, 0, false, false, null, null, null, false, false, false);
-        //Integer fig = Builder.createNewFigureWithAxes();
+        Integer fig = Builder.createFigure(false, 0, 0, false, false);
         String item = null;
 
         // id
@@ -160,7 +159,6 @@ public class GOBuilder {
         // visible
         XmlTools.setPropAsBoolean(fig, __GO_VISIBLE__, attributes.getValue("visible"));
 
-
         return fig;
     }
 
index fab20b7..c447812 100644 (file)
@@ -18,7 +18,9 @@ import org.scilab.modules.graphic_objects.console.Console;
 import org.scilab.modules.graphic_objects.figure.Figure;
 import org.scilab.modules.graphic_objects.figure.Figure.BarType;
 import org.scilab.modules.graphic_objects.graphicController.GraphicController;
+import org.scilab.modules.graphic_objects.graphicModel.GraphicModel;
 import org.scilab.modules.graphic_objects.graphicObject.GraphicObject;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
 import org.scilab.modules.graphic_objects.uicontrol.Uicontrol;
 import org.scilab.modules.graphic_objects.uicontrol.frame.border.FrameBorderType;
 import org.scilab.modules.graphic_objects.utils.LayoutType;
@@ -568,8 +570,8 @@ public class XMLDomLoader {
         Integer menubar = 1;
         Integer toolbar = 1;
         Boolean default_axes = true;
-        double[] figureSize = null;
-        double[] axesSize = null;
+        Integer[] figureSize = null;
+        Integer[] axesSize = null;
         boolean menubarVisisble = true;
         boolean toolbarVisisble = true;
         boolean infobarVisisble = true;
@@ -609,16 +611,14 @@ public class XMLDomLoader {
         //axesSize
         tempnode = attr.getNamedItem("axes_size");
         if (tempnode != null) {
-            Double[] size = getAttributeAsDoubleArray(tempnode.getNodeValue());
-            axesSize = new double[] {size[0], size[1]};
+            axesSize = getAttributeAsIntegerArray(tempnode.getNodeValue());
             attr.removeNamedItem("axes_size");
         }
 
         //figureSize
         tempnode = attr.getNamedItem("figure_size");
         if (axesSize == null && tempnode != null) {
-            Double[] size = getAttributeAsDoubleArray(tempnode.getNodeValue());
-            figureSize = new double[] {size[0], size[1]};
+            figureSize = getAttributeAsIntegerArray(tempnode.getNodeValue());
             attr.removeNamedItem("figure_size");
         }
 
@@ -641,7 +641,7 @@ public class XMLDomLoader {
             attr.removeNamedItem("infobar_visible");
         }
 
-        Integer fig = Builder.createFigure(dockable, menubar, toolbar, default_axes, false, figureSize, axesSize, null, menubarVisisble, toolbarVisisble, infobarVisisble);
+        Integer fig = Builder.createFigure(dockable, menubar, toolbar, default_axes, false);
         //set new id
         int newId = ScilabNativeView.ScilabNativeView__getValidDefaultFigureId();
 
@@ -691,6 +691,18 @@ public class XMLDomLoader {
             }
         }
 
+        if (axesSize != null) {
+            controller.setProperty(fig, GraphicObjectProperties.__GO_AXES_SIZE__, axesSize);
+        } else if (figureSize != null) {
+            controller.setProperty(fig, GraphicObjectProperties.__GO_SIZE__, figureSize);
+        } else {
+            controller.setProperty(fig, GraphicObjectProperties.__GO_AXES_SIZE__, GraphicModel.getFigureModel().getAxesSize());
+        }
+
+        //set menubar, infobar, toolbar visibility
+        controller.setProperty(fig, __GO_MENUBAR_VISIBLE__, menubarVisisble);
+        controller.setProperty(fig, __GO_TOOLBAR_VISIBLE__, toolbarVisisble);
+        controller.setProperty(fig, __GO_INFOBAR_VISIBLE__, infobarVisisble);
         return fig;
     }
 
index 20b0b9d..1d1521b 100644 (file)
@@ -1,6 +1,6 @@
 #include "Builder.hxx"
 /* Generated by GIWS (version 2.0.2) with command:
-giws --disable-return-size-array --output-dir src\jni\ --throws-exception-on-error --description-file src\jni\builder.giws.xml
+giws --disable-return-size-array --output-dir src\jni --throws-exception-on-error --description-file src\jni\builder.giws.xml
 */
 /*
 
@@ -110,7 +110,7 @@ jintcreateHiddenLabeljintintID=NULL;
 jbooleanisAxesRedrawingjintintID=NULL;
 jintcreateLabeljintintjintintID=NULL;
 jintcreateNewFigureWithAxesID=NULL;
-jintcreateFigurejbooleanbooleanjintintjintintjbooleanbooleanjbooleanbooleanjdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejbooleanbooleanjbooleanbooleanjbooleanbooleanID=NULL;
+jintcreateFigurejbooleanbooleanjintintjintintjbooleanbooleanjbooleanbooleanID=NULL;
 voidcloneMenusjintintjintintID=NULL;
 jintcloneAxesModeljintintID=NULL;
 jintcreateSubWinjintintID=NULL;
@@ -157,7 +157,7 @@ jintcreateHiddenLabeljintintID=NULL;
 jbooleanisAxesRedrawingjintintID=NULL;
 jintcreateLabeljintintjintintID=NULL;
 jintcreateNewFigureWithAxesID=NULL;
-jintcreateFigurejbooleanbooleanjintintjintintjbooleanbooleanjbooleanbooleanjdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejbooleanbooleanjbooleanbooleanjbooleanbooleanID=NULL;
+jintcreateFigurejbooleanbooleanjintintjintintjbooleanbooleanjbooleanbooleanID=NULL;
 voidcloneMenusjintintjintintID=NULL;
 jintcloneAxesModeljintintID=NULL;
 jintcreateSubWinjintintID=NULL;
@@ -348,7 +348,7 @@ return res;
 
 }
 
-int Builder::createFigure (JavaVM * jvm_, bool dockable, int menubarType, int toolbarType, bool defaultAxes, bool visible, double const* figureSize, int figureSizeSize, double const* axesSize, int axesSizeSize, double const* position, int positionSize, bool menubar, bool toolbar, bool infobar){
+int Builder::createFigure (JavaVM * jvm_, bool dockable, int menubarType, int toolbarType, bool defaultAxes, bool visible){
 
 JNIEnv * curEnv = NULL;
 jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
@@ -357,8 +357,8 @@ if ( cls == NULL) {
 throw GiwsException::JniCallMethodException(curEnv);
 }
 
-static jmethodID jintcreateFigurejbooleanbooleanjintintjintintjbooleanbooleanjbooleanbooleanjdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejbooleanbooleanjbooleanbooleanjbooleanbooleanID = curEnv->GetStaticMethodID(cls, "createFigure", "(ZIIZZ[D[D[DZZZ)I" ) ;
-if (jintcreateFigurejbooleanbooleanjintintjintintjbooleanbooleanjbooleanbooleanjdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejbooleanbooleanjbooleanbooleanjbooleanbooleanID == NULL) {
+static jmethodID jintcreateFigurejbooleanbooleanjintintjintintjbooleanbooleanjbooleanbooleanID = curEnv->GetStaticMethodID(cls, "createFigure", "(ZIIZZ)I" ) ;
+if (jintcreateFigurejbooleanbooleanjintintjintintjbooleanbooleanjbooleanbooleanID == NULL) {
 throw GiwsException::JniMethodNotFoundException(curEnv, "createFigure");
 }
 
@@ -368,50 +368,8 @@ jboolean defaultAxes_ = (static_cast<bool>(defaultAxes) ? JNI_TRUE : JNI_FALSE);
 
 jboolean visible_ = (static_cast<bool>(visible) ? JNI_TRUE : JNI_FALSE);
 
-jdoubleArray figureSize_ = curEnv->NewDoubleArray( figureSizeSize ) ;
-
-if (figureSize_ == NULL)
-{
-// check that allocation succeed
-throw GiwsException::JniBadAllocException(curEnv);
-}
-
-curEnv->SetDoubleArrayRegion( figureSize_, 0, figureSizeSize, (jdouble*)(figureSize) ) ;
-
-
-jdoubleArray axesSize_ = curEnv->NewDoubleArray( axesSizeSize ) ;
-
-if (axesSize_ == NULL)
-{
-// check that allocation succeed
-throw GiwsException::JniBadAllocException(curEnv);
-}
-
-curEnv->SetDoubleArrayRegion( axesSize_, 0, axesSizeSize, (jdouble*)(axesSize) ) ;
-
-
-jdoubleArray position_ = curEnv->NewDoubleArray( positionSize ) ;
-
-if (position_ == NULL)
-{
-// check that allocation succeed
-throw GiwsException::JniBadAllocException(curEnv);
-}
-
-curEnv->SetDoubleArrayRegion( position_, 0, positionSize, (jdouble*)(position) ) ;
-
-
-jboolean menubar_ = (static_cast<bool>(menubar) ? JNI_TRUE : JNI_FALSE);
-
-jboolean toolbar_ = (static_cast<bool>(toolbar) ? JNI_TRUE : JNI_FALSE);
-
-jboolean infobar_ = (static_cast<bool>(infobar) ? JNI_TRUE : JNI_FALSE);
-
-                        jint res =  static_cast<jint>( curEnv->CallStaticIntMethod(cls, jintcreateFigurejbooleanbooleanjintintjintintjbooleanbooleanjbooleanbooleanjdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejbooleanbooleanjbooleanbooleanjbooleanbooleanID ,dockable_, menubarType, toolbarType, defaultAxes_, visible_, figureSize_, axesSize_, position_, menubar_, toolbar_, infobar_));
-                        curEnv->DeleteLocalRef(figureSize_);
-curEnv->DeleteLocalRef(axesSize_);
-curEnv->DeleteLocalRef(position_);
-if (curEnv->ExceptionCheck()) {
+                        jint res =  static_cast<jint>( curEnv->CallStaticIntMethod(cls, jintcreateFigurejbooleanbooleanjintintjintintjbooleanbooleanjbooleanbooleanID ,dockable_, menubarType, toolbarType, defaultAxes_, visible_));
+                        if (curEnv->ExceptionCheck()) {
 throw GiwsException::JniCallMethodException(curEnv);
 }
 return res;
index 01978b5..888d6b0 100644 (file)
@@ -1,5 +1,5 @@
 /* Generated by GIWS (version 2.0.2) with command:
-giws --disable-return-size-array --output-dir src\jni\ --throws-exception-on-error --description-file src\jni\builder.giws.xml
+giws --disable-return-size-array --output-dir src\jni --throws-exception-on-error --description-file src\jni\builder.giws.xml
 */
 /*
 
@@ -83,7 +83,7 @@ jmethodID jintcreateHiddenLabeljintintID; // cache method id
 jmethodID jbooleanisAxesRedrawingjintintID; // cache method id
 jmethodID jintcreateLabeljintintjintintID; // cache method id
 jmethodID jintcreateNewFigureWithAxesID; // cache method id
-jmethodID jintcreateFigurejbooleanbooleanjintintjintintjbooleanbooleanjbooleanbooleanjdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejbooleanbooleanjbooleanbooleanjbooleanbooleanID; // cache method id
+jmethodID jintcreateFigurejbooleanbooleanjintintjintintjbooleanbooleanjbooleanbooleanID; // cache method id
 jmethodID voidcloneMenusjintintjintintID; // cache method id
 jmethodID jintcloneAxesModeljintintID; // cache method id
 jmethodID jintcreateSubWinjintintID; // cache method id
@@ -175,7 +175,7 @@ static int createLabel(JavaVM * jvm_, int parent, int type);
 
 static int createNewFigureWithAxes(JavaVM * jvm_);
 
-static int createFigure(JavaVM * jvm_, bool dockable, int menubarType, int toolbarType, bool defaultAxes, bool visible, double const* figureSize, int figureSizeSize, double const* axesSize, int axesSizeSize, double const* position, int positionSize, bool menubar, bool toolbar, bool infobar);
+static int createFigure(JavaVM * jvm_, bool dockable, int menubarType, int toolbarType, bool defaultAxes, bool visible);
 
 static void cloneMenus(JavaVM * jvm_, int model, int newParent);
 
index a1acb2e..23c3ab9 100644 (file)
           <parameter name="toolbarType" type="int" />
           <parameter name="defaultAxes" type="boolean" />
           <parameter name="visible" type="boolean" />
-          <parameter name="figureSize" type="double[]" />
-          <parameter name="axesSize" type="double[]" />
-          <parameter name="position" type="double[]" />
-          <parameter name="menubar" type="boolean" />
-          <parameter name="toolbar" type="boolean" />
-          <parameter name="infobar" type="boolean" />
         </method>
         <method name="cloneMenus" returnType="void" modifier="static">
             <parameter name="model" type="int"/>
index 7a9e200..c192b16 100644 (file)
@@ -37,8 +37,9 @@
 #include "addColor.h"
 
 /*--------------------------------------------------------------------------*/
-int setDefaultProperties(int _iFig, BOOL bDefaultAxes, BOOL _axesSize);
+int setDefaultProperties(int _iFig, BOOL bDefaultAxes);
 int getStackArgumentAsBoolean(void* _pvCtx, int* _piAddr);
+void initBar(int iFig, BOOL menubar, BOOL toolbar, BOOL infobar);
 /*--------------------------------------------------------------------------*/
 int sci_figure(char * fname, unsigned long fname_len)
 {
@@ -77,7 +78,8 @@ int sci_figure(char * fname, unsigned long fname_len)
     if (iRhs == 0) // Auto ID
     {
         iFig = createNewFigureWithAxes();
-        iAxes = setDefaultProperties(iFig, TRUE, TRUE);
+        iAxes = setDefaultProperties(iFig, TRUE);
+        initBar(iFig, bMenuBar, bToolBar, bInfoBar);
         createScalarHandle(pvApiCtx, iRhs + 1, getHandle(iFig));
         AssignOutputVariable(pvApiCtx, 1) = iRhs + 1;
         ReturnArguments(pvApiCtx);
@@ -115,9 +117,10 @@ int sci_figure(char * fname, unsigned long fname_len)
         {
             iFig = createNewFigureWithAxes();
             setGraphicObjectProperty(iFig, __GO_ID__, &iId, jni_int,  1);
-            iAxes = setDefaultProperties(iFig, TRUE, TRUE);
+            iAxes = setDefaultProperties(iFig, TRUE);
         }
 
+        initBar(iFig, bMenuBar, bToolBar, bInfoBar);
         createScalarHandle(pvApiCtx, iRhs + 1, getHandle(iFig));
         AssignOutputVariable(pvApiCtx, 1) = iRhs + 1;
         ReturnArguments(pvApiCtx);
@@ -407,24 +410,9 @@ int sci_figure(char * fname, unsigned long fname_len)
 
         }
 
-        iFig = createFigure(bDockable, iMenubarType, iToolbarType, bDefaultAxes, bVisible, figureSize, axesSize, position, bMenuBar, bToolBar, bInfoBar);
+        iFig = createFigure(bDockable, iMenubarType, iToolbarType, bDefaultAxes, bVisible);
         setGraphicObjectProperty(iFig, __GO_ID__, &iNewId, jni_int, 1);
-        iAxes = setDefaultProperties(iFig, bDefaultAxes, figureSize || axesSize ? FALSE : TRUE);
-        if (figureSize)
-        {
-            int figure[2];
-            figure[0] = (int)figureSize[0];
-            figure[1] = (int)figureSize[1];
-            setGraphicObjectProperty(iFig, __GO_SIZE__, figure, jni_int_vector, 2);
-        }
-
-        if (axesSize)
-        {
-            int axes[2];
-            axes[0] = (int)axesSize[0];
-            axes[1] = (int)axesSize[1];
-            setGraphicObjectProperty(iFig, __GO_AXES_SIZE__, axes, jni_int_vector, 2);
-        }
+        iAxes = setDefaultProperties(iFig, bDefaultAxes);
     }
 
     //set(iFig, iPos, iPos + 1)
@@ -565,6 +553,31 @@ int sci_figure(char * fname, unsigned long fname_len)
         }
     }
 
+    //axes_size
+    if (axesSize)
+    {
+        int axes[2];
+        axes[0] = (int)axesSize[0];
+        axes[1] = (int)axesSize[1];
+        setGraphicObjectProperty(iFig, __GO_AXES_SIZE__, axes, jni_int_vector, 2);
+    }
+    else //no size, use default axes_size
+    {
+        int* piAxesSize = NULL;
+        getGraphicObjectProperty(getFigureModel(), __GO_AXES_SIZE__, jni_int_vector, (void **)&piAxesSize);
+        setGraphicObjectProperty(iFig, __GO_AXES_SIZE__, piAxesSize, jni_int_vector, 2);
+    }
+
+    initBar(iFig, bMenuBar, bToolBar, bInfoBar);
+
+    if (axesSize == NULL && figureSize) //figure_size
+    {
+        int figure[2];
+        figure[0] = (int)figureSize[0];
+        figure[1] = (int)figureSize[1];
+        setGraphicObjectProperty(iFig, __GO_SIZE__, figure, jni_int_vector, 2);
+    }
+
     //return new created fig
     createScalarHandle(pvApiCtx, iRhs + 1, getHandle(iFig));
     AssignOutputVariable(pvApiCtx, 1) = iRhs + 1;
@@ -607,7 +620,7 @@ int getStackArgumentAsBoolean(void* _pvCtx, int* _piAddr)
     return -1;
 }
 /*--------------------------------------------------------------------------*/
-int setDefaultProperties(int _iFig, BOOL _bDefaultAxes, BOOL _axesSize)
+int setDefaultProperties(int _iFig, BOOL _bDefaultAxes)
 {
     //get figure axes
     int iAxes = -1;
@@ -618,8 +631,6 @@ int setDefaultProperties(int _iFig, BOOL _bDefaultAxes, BOOL _axesSize)
     int* piAxesSize = NULL;
     double pdblNewColor[COLOR_COMPONENT] = {0.8, 0.8, 0.8};
 
-    setGraphicObjectProperty(_iFig, __GO_IMMEDIATE_DRAWING__, &iDrawing, jni_bool, 1);
-
     iColorIndex = addColor(_iFig, pdblNewColor);
 
     setGraphicObjectProperty(_iFig, __GO_BACKGROUND__, &iColorIndex, jni_int, 1);
@@ -638,17 +649,23 @@ int setDefaultProperties(int _iFig, BOOL _bDefaultAxes, BOOL _axesSize)
         setGraphicObjectProperty(iAxes, __GO_Z_AXIS_VISIBLE__, &iAxesVisible, jni_bool, 1);
     }
 
-    // axes_size
-    if (_axesSize)
-    {
-        getGraphicObjectProperty(getFigureModel(), __GO_AXES_SIZE__, jni_int_vector, (void **)&piAxesSize);
-        setGraphicObjectProperty(_iFig, __GO_AXES_SIZE__, piAxesSize, jni_int_vector, 2);
-    }
+    return iAxes;
+}
+/*--------------------------------------------------------------------------*/
+void initBar(int iFig, BOOL menubar, BOOL toolbar, BOOL infobar)
+{
+    BOOL notmenubar = !menubar;
+    BOOL nottoolbar = !toolbar;
+    BOOL notinfobar = !infobar;
 
-    //f.immediate_drawing = "on"
-    iDrawing = 1;
-    setGraphicObjectProperty(_iFig, __GO_IMMEDIATE_DRAWING__, &iDrawing, jni_bool, 1);
+    setGraphicObjectProperty(iFig, __GO_MENUBAR_VISIBLE__, (void*)&notmenubar, jni_bool, 1);
+    setGraphicObjectProperty(iFig, __GO_TOOLBAR_VISIBLE__, (void*)&nottoolbar, jni_bool, 1);
+    setGraphicObjectProperty(iFig, __GO_INFOBAR_VISIBLE__, (void*)&notinfobar, jni_bool, 1);
+
+    //set menubar, infobar, toolbar visibility
+    setGraphicObjectProperty(iFig, __GO_MENUBAR_VISIBLE__, (void*)&menubar, jni_bool, 1);
+    setGraphicObjectProperty(iFig, __GO_TOOLBAR_VISIBLE__, (void*)&toolbar, jni_bool, 1);
+    setGraphicObjectProperty(iFig, __GO_INFOBAR_VISIBLE__, (void*)&infobar, jni_bool, 1);
 
-    return iAxes;
 }
 /*--------------------------------------------------------------------------*/
index 73492f1..73a06ee 100644 (file)
@@ -431,19 +431,19 @@ public final class SwingView implements GraphicView {
 
                 /* MENUBAR */
                 MenuBar menuBar = ScilabMenuBar.createMenuBar();
-                menuBar.setVisible(figure.getMenubarVisible());
+                menuBar.setVisible(false);
                 tab.setMenuBar(menuBar);
                 window.addMenuBar(menuBar);
 
                 /* TOOLBAR */
                 ToolBar toolbar = ScilabToolBar.createToolBar();
-                toolbar.setVisible(figure.getToolbarVisible());
+                toolbar.setVisible(false);
                 tab.setToolBar(toolbar);
                 window.addToolBar(toolbar);
 
                 /* INFOBAR */
                 TextBox infoBar = ScilabTextBox.createTextBox();
-                infoBar.setVisible(figure.getInfobarVisible());
+                infoBar.setVisible(false);
                 tab.setInfoBar(infoBar);
                 window.addInfoBar(infoBar);
 
@@ -478,9 +478,8 @@ public final class SwingView implements GraphicView {
                 }
 
                 // TODO set other default properties
-
-                window.setVisible(figure.getVisible());
                 window.pack();
+                window.setVisible(figure.getVisible());
                 return tab;
             }
             case Axes:
@@ -1074,7 +1073,7 @@ public final class SwingView implements GraphicView {
         SwingScilabFrame updatedComponent = (SwingScilabFrame) updatedObject.getValue();
         boolean needRevalidate = false;
         boolean hasOpenGLAxes = false;
-        
+
         // Add new children
         for (Integer childId : newChildren) {
             int childType = (Integer) GraphicController.getController().getProperty(childId, __GO_TYPE__);
@@ -1089,11 +1088,11 @@ public final class SwingView implements GraphicView {
                     needRevalidate = true;
                 }
             }
-            
+
             if (childType == __GO_AXES__) {
                 hasOpenGLAxes = true;
             }
-            
+
         }
 
         // Remove children which have been deleted
@@ -1115,12 +1114,12 @@ public final class SwingView implements GraphicView {
                 }
             }
         }
-        
+
         if (!hasOpenGLAxes) {
             updatedComponent.removeAxes();
             needRevalidate = true;
         }
-        
+
         if (needRevalidate && updatedComponent != null) {
             updatedComponent.revalidate();
         }
index f745c57..63b26c8 100644 (file)
@@ -105,7 +105,7 @@ public class SwingScilabCommonPanel {
                 if (localFigure.getToolbarAsEnum() == BarType.FIGURE) {
                     SwingScilabWindow parentWindow = SwingScilabWindow.allScilabWindows.get(component.getParentWindowId());
 
-                    boolean currentVisible = localFigure.getToolbarVisible();
+                    boolean currentVisible = component.getToolBar().isVisible();
 
                     //only if toolbar is visible
                     if (currentVisible) {
@@ -114,7 +114,7 @@ public class SwingScilabCommonPanel {
                     }
 
                     ToolBar toolbar = ToolBarBuilder.buildToolBar(GRAPHICS_TOOLBAR_DESCRIPTOR, figureId);
-                    toolbar.setVisible(localFigure.getToolbarVisible());
+                    toolbar.setVisible(false/*localFigure.getToolbarVisible()*/);
                     component.setToolBar(toolbar);
                     parentWindow.addToolBar(toolbar);
                     //force redraw to get good value on contentpane.getHeight
@@ -163,6 +163,7 @@ public class SwingScilabCommonPanel {
                     int deltaY = axesSize[1] - (int) oldAxesSize.getHeight();
                     Size parentWindowSize = SwingScilabWindow.allScilabWindows.get(component.getParentWindowId()).getDims();
                     SwingScilabWindow.allScilabWindows.get(component.getParentWindowId()).setDims(new Size(parentWindowSize.getWidth() + deltaX, parentWindowSize.getHeight() + deltaY));
+                    GraphicController.getController().setProperty(component.getId(), __GO_SIZE__, new Integer[] { parentWindowSize.getWidth() + deltaX, parentWindowSize.getHeight() + deltaY});
                 }
                 break;
             case __GO_INFO_MESSAGE__:
@@ -185,27 +186,33 @@ public class SwingScilabCommonPanel {
                 }
                 break;
             case __GO_INFOBAR_VISIBLE__: {
+                component.disableResizeEvent();
                 Integer[] oldSize = (Integer[]) GraphicController.getController().getProperty(component.getId(), __GO_AXES_SIZE__);
                 component.getInfoBar().setVisible((Boolean) value);
                 SwingScilabWindow parentWindow = SwingScilabWindow.allScilabWindows.get(component.getParentWindowId());
                 parentWindow.validate();
                 GraphicController.getController().setProperty(component.getId(), __GO_AXES_SIZE__, oldSize);
+                component.enableResizeEvent();
                 break;
             }
             case __GO_TOOLBAR_VISIBLE__: {
+                component.disableResizeEvent();
                 Integer[] oldSize = (Integer[]) GraphicController.getController().getProperty(component.getId(), __GO_AXES_SIZE__);
                 component.getToolBar().setVisible((Boolean) value);
                 SwingScilabWindow parentWindow = SwingScilabWindow.allScilabWindows.get(component.getParentWindowId());
                 parentWindow.validate();
                 GraphicController.getController().setProperty(component.getId(), __GO_AXES_SIZE__, oldSize);
+                component.enableResizeEvent();
                 break;
             }
             case __GO_MENUBAR_VISIBLE__: {
+                component.disableResizeEvent();
                 Integer[] oldSize = (Integer[]) GraphicController.getController().getProperty(component.getId(), __GO_AXES_SIZE__);
                 component.getMenuBar().setVisible((Boolean) value);
                 SwingScilabWindow parentWindow = SwingScilabWindow.allScilabWindows.get(component.getParentWindowId());
                 parentWindow.validate();
                 GraphicController.getController().setProperty(component.getId(), __GO_AXES_SIZE__, oldSize);
+                component.enableResizeEvent();
                 break;
             }
             case __GO_RESIZE__:
index a72ecfe..863195b 100644 (file)
@@ -141,6 +141,7 @@ public class SwingScilabDockablePanel extends View implements SimpleTab, FocusLi
     private Integer id;
 
     private boolean eventEnabled = false;
+    ComponentListener componentListener;
 
     static {
         PropertyChangeListenerFactory.addFactory(new BarUpdater.UpdateBarFactory());
@@ -311,8 +312,7 @@ public class SwingScilabDockablePanel extends View implements SimpleTab, FocusLi
         });
 
         /* Manage figure_size property */
-        addComponentListener(new ComponentListener() {
-
+        componentListener = new ComponentListener() {
             public void componentShown(ComponentEvent arg0) {
             }
 
@@ -353,8 +353,9 @@ public class SwingScilabDockablePanel extends View implements SimpleTab, FocusLi
 
             public void componentHidden(ComponentEvent arg0) {
             }
-        });
+        };
 
+        addComponentListener(componentListener);
         /* Manage closerequestfcn */
         ClosingOperationsManager.registerClosingOperation(SwingScilabDockablePanel.this, new ClosingOperationsManager.ClosingOperation() {
 
@@ -1545,4 +1546,12 @@ public class SwingScilabDockablePanel extends View implements SimpleTab, FocusLi
         Size figureSize = figure.getDims();
         deltaSize = new Dimension((int)(figureSize.getWidth() - axesSize.getWidth()), (int)(figureSize.getHeight() - axesSize.getHeight()));
     }
+
+    public void disableResizeEvent() {
+        removeComponentListener(componentListener);
+    }
+
+    public void enableResizeEvent() {
+        addComponentListener(componentListener);
+    }
 }
index e456016..3ac2269 100644 (file)
@@ -60,4 +60,7 @@ public interface SwingScilabPanel extends SwingViewObject {
 
     public void applyDeltaSize();
     public void storeSizeDelta();
+
+    public void disableResizeEvent();
+    public void enableResizeEvent();
 }
index 7aaa982..a596ba9 100644 (file)
@@ -51,6 +51,7 @@ public class SwingScilabStaticPanel extends SwingScilabScrollPane implements Swi
     private String parentWindowId;
     private JLayeredPane uiContentPane;
     private JLayeredPane layeredPane;
+    private ComponentListener componentListener;
 
     private SwingScilabCanvas contentCanvas;
     protected boolean hasLayout;
@@ -73,8 +74,7 @@ public class SwingScilabStaticPanel extends SwingScilabScrollPane implements Swi
         uiContentPane.setVisible(true);
 
         /* Manage figure_size property */
-        addComponentListener(new ComponentListener() {
-
+        componentListener = new ComponentListener() {
             public void componentShown(ComponentEvent arg0) {
             }
 
@@ -110,7 +110,6 @@ public class SwingScilabStaticPanel extends SwingScilabScrollPane implements Swi
                         }
                     }
                 }
-                getParentWindow().validate();
             }
 
             public void componentMoved(ComponentEvent arg0) {
@@ -118,7 +117,8 @@ public class SwingScilabStaticPanel extends SwingScilabScrollPane implements Swi
 
             public void componentHidden(ComponentEvent arg0) {
             }
-        });
+        };
+        addComponentListener(componentListener);
     }
 
     public void setId(Integer id) {
@@ -259,4 +259,12 @@ public class SwingScilabStaticPanel extends SwingScilabScrollPane implements Swi
         Size figureSize = figure.getDims();
         deltaSize = new Dimension((int)(figureSize.getWidth() - axesSize.getWidth()), (int)(figureSize.getHeight() - axesSize.getHeight()));
     }
+
+    public void disableResizeEvent() {
+        removeComponentListener(componentListener);
+    }
+
+    public void enableResizeEvent() {
+        addComponentListener(componentListener);
+    }
 }
diff --git a/scilab/modules/gui/tests/unit_tests/axes_size.dia.ref b/scilab/modules/gui/tests/unit_tests/axes_size.dia.ref
new file mode 100644 (file)
index 0000000..1007d9a
--- /dev/null
@@ -0,0 +1,107 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Antoine ELIAS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- TEST WITH GRAPHIC -->
+function f = createFigure(num, flags)
+    g = gdf();
+    if flags(5) == %f then
+        f = figure("figure_id", num, "dockable", flags(1), "menubar_visible", flags(2), "toolbar_visible", flags(3), "infobar_visible", flags(4));
+        assert_checkequal(f.menubar_visible == "on", flags(2));
+        assert_checkequal(f.toolbar_visible == "on", flags(3));
+        assert_checkequal(f.infobar_visible == "on", flags(4));
+        assert_checkequal(f.axes_size, g.axes_size);
+        f.axes_size = [800 800];
+        assert_checkequal(f.axes_size, [800 800]);
+    else
+        f = figure("figure_id", num, "dockable", flags(1), "menubar_visible", flags(2), "toolbar_visible", flags(3), "infobar_visible", flags(4), "axes_size", [800, 800]);
+        assert_checkequal(f.menubar_visible == "on", flags(2));
+        assert_checkequal(f.toolbar_visible == "on", flags(3));
+        assert_checkequal(f.infobar_visible == "on", flags(4));
+        assert_checkequal(f.axes_size, [800 800]);
+        f.axes_size = g.axes_size;
+        assert_checkequal(f.axes_size, g.axes_size);
+    end
+    delete(f);
+endfunction
+function createFigureXML(num, flags)
+    g = gdf();
+    for i = 1:size(flags, "*")
+        if flags(i) == %t then
+            flagsStr(i) = "on";
+        else
+            flagsStr(i) = "off";
+        end
+    end
+    if flags(5) == %f then
+        str = [ ...
+        "<scilabgui usedeprecatedskin=""off"" version=""1.0"">";
+        "<figure dockable=""" + flagsStr(1) + """ menubar_visible=""" + flagsStr(2) + """ toolbar_visible=""" + flagsStr(3) + """ infobar_visible=""" + flagsStr(4) + """/>";
+        "</scilabgui>"];
+        doc = xmlReadStr(str);
+        xmlWrite(doc, TMPDIR + "/figure.xml");
+        f = loadGui(TMPDIR + "/figure.xml");
+        assert_checkequal(f.menubar_visible == "on", flags(2));
+        assert_checkequal(f.toolbar_visible == "on", flags(3));
+        assert_checkequal(f.infobar_visible == "on", flags(4));
+        assert_checkequal(f.axes_size, g.axes_size);
+        f.axes_size = [800 800];
+        assert_checkequal(f.axes_size, [800 800]);
+    else
+        str = [ ...
+        "<scilabgui usedeprecatedskin=""off"" version=""1.0"">";
+        "<figure dockable=""" + flagsStr(1) + """ menubar_visible=""" + flagsStr(2) + """ toolbar_visible=""" + flagsStr(3) + """ infobar_visible=""" + flagsStr(4) + """ axes_size=""800,800""/>";
+        "</scilabgui>"];
+        doc = xmlReadStr(str);
+        xmlWrite(doc, TMPDIR + "/figure.xml");
+        f = loadGui(TMPDIR + "/figure.xml");
+        assert_checkequal(f.menubar_visible == "on", flags(2));
+        assert_checkequal(f.toolbar_visible == "on", flags(3));
+        assert_checkequal(f.infobar_visible == "on", flags(4));
+        assert_checkequal(f.axes_size, [800 800]);
+        f.axes_size = g.axes_size;
+        assert_checkequal(f.axes_size, g.axes_size);
+    end
+    delete(f);
+endfunction
+flags = [
+    %f %f %f %f %f;
+    %f %f %f %f %t;
+    %f %f %f %t %f;
+    %f %f %f %t %t;
+    %f %f %t %f %f;
+    %f %f %t %f %t;
+    %f %f %t %t %f;
+    %f %f %t %t %t;
+    %f %f %f %f %f;
+    %f %t %f %f %t;
+    %f %t %f %t %f;
+    %f %t %f %t %t;
+    %f %t %t %f %f;
+    %f %t %t %f %t;
+    %f %t %t %t %f;
+    %f %t %t %t %t;
+    %t %f %f %f %f;
+    %t %f %f %f %t;
+    %t %f %f %t %f;
+    %t %f %f %t %t;
+    %t %f %t %f %f;
+    %t %f %t %f %t;
+    %t %f %t %t %f;
+    %t %f %t %t %t;
+    %t %f %f %f %f;
+    %t %t %f %f %t;
+    %t %t %f %t %f;
+    %t %t %f %t %t;
+    %t %t %t %f %f;
+    %t %t %t %f %t;
+    %t %t %t %t %f;
+    %t %t %t %t %t];
+for i = 1:size(flags, "r")
+    createFigure(i, flags(i, :));
+end
+for i = 1:size(flags, "r")
+    createFigureXML(i, flags(i, :));
+end
diff --git a/scilab/modules/gui/tests/unit_tests/axes_size.tst b/scilab/modules/gui/tests/unit_tests/axes_size.tst
new file mode 100644 (file)
index 0000000..15b4377
--- /dev/null
@@ -0,0 +1,116 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Antoine ELIAS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- TEST WITH GRAPHIC -->
+
+function f = createFigure(num, flags)
+    g = gdf();
+    if flags(5) == %f then
+        f = figure("figure_id", num, "dockable", flags(1), "menubar_visible", flags(2), "toolbar_visible", flags(3), "infobar_visible", flags(4));
+        assert_checkequal(f.menubar_visible == "on", flags(2));
+        assert_checkequal(f.toolbar_visible == "on", flags(3));
+        assert_checkequal(f.infobar_visible == "on", flags(4));
+        assert_checkequal(f.axes_size, g.axes_size);
+        f.axes_size = [800 800];
+        assert_checkequal(f.axes_size, [800 800]);
+    else
+        f = figure("figure_id", num, "dockable", flags(1), "menubar_visible", flags(2), "toolbar_visible", flags(3), "infobar_visible", flags(4), "axes_size", [800, 800]);
+        assert_checkequal(f.menubar_visible == "on", flags(2));
+        assert_checkequal(f.toolbar_visible == "on", flags(3));
+        assert_checkequal(f.infobar_visible == "on", flags(4));
+        assert_checkequal(f.axes_size, [800 800]);
+        f.axes_size = g.axes_size;
+        assert_checkequal(f.axes_size, g.axes_size);
+    end
+    delete(f);
+endfunction
+
+function createFigureXML(num, flags)
+    g = gdf();
+    for i = 1:size(flags, "*")
+        if flags(i) == %t then
+            flagsStr(i) = "on";
+        else
+            flagsStr(i) = "off";
+        end
+    end
+
+    if flags(5) == %f then
+        str = [ ...
+        "<scilabgui usedeprecatedskin=""off"" version=""1.0"">";
+        "<figure dockable=""" + flagsStr(1) + """ menubar_visible=""" + flagsStr(2) + """ toolbar_visible=""" + flagsStr(3) + """ infobar_visible=""" + flagsStr(4) + """/>";
+        "</scilabgui>"];
+
+        doc = xmlReadStr(str);
+        xmlWrite(doc, TMPDIR + "/figure.xml");
+        f = loadGui(TMPDIR + "/figure.xml");
+        assert_checkequal(f.menubar_visible == "on", flags(2));
+        assert_checkequal(f.toolbar_visible == "on", flags(3));
+        assert_checkequal(f.infobar_visible == "on", flags(4));
+        assert_checkequal(f.axes_size, g.axes_size);
+        f.axes_size = [800 800];
+        assert_checkequal(f.axes_size, [800 800]);
+    else
+        str = [ ...
+        "<scilabgui usedeprecatedskin=""off"" version=""1.0"">";
+        "<figure dockable=""" + flagsStr(1) + """ menubar_visible=""" + flagsStr(2) + """ toolbar_visible=""" + flagsStr(3) + """ infobar_visible=""" + flagsStr(4) + """ axes_size=""800,800""/>";
+        "</scilabgui>"];
+
+        doc = xmlReadStr(str);
+        xmlWrite(doc, TMPDIR + "/figure.xml");
+        f = loadGui(TMPDIR + "/figure.xml");
+        assert_checkequal(f.menubar_visible == "on", flags(2));
+        assert_checkequal(f.toolbar_visible == "on", flags(3));
+        assert_checkequal(f.infobar_visible == "on", flags(4));
+        assert_checkequal(f.axes_size, [800 800]);
+        f.axes_size = g.axes_size;
+        assert_checkequal(f.axes_size, g.axes_size);
+    end
+    delete(f);
+endfunction
+
+flags = [
+    %f %f %f %f %f;
+    %f %f %f %f %t;
+    %f %f %f %t %f;
+    %f %f %f %t %t;
+    %f %f %t %f %f;
+    %f %f %t %f %t;
+    %f %f %t %t %f;
+    %f %f %t %t %t;
+    %f %f %f %f %f;
+    %f %t %f %f %t;
+    %f %t %f %t %f;
+    %f %t %f %t %t;
+    %f %t %t %f %f;
+    %f %t %t %f %t;
+    %f %t %t %t %f;
+    %f %t %t %t %t;
+    %t %f %f %f %f;
+    %t %f %f %f %t;
+    %t %f %f %t %f;
+    %t %f %f %t %t;
+    %t %f %t %f %f;
+    %t %f %t %f %t;
+    %t %f %t %t %f;
+    %t %f %t %t %t;
+    %t %f %f %f %f;
+    %t %t %f %f %t;
+    %t %t %f %t %f;
+    %t %t %f %t %t;
+    %t %t %t %f %f;
+    %t %t %t %f %t;
+    %t %t %t %t %f;
+    %t %t %t %t %t];
+
+for i = 1:size(flags, "r")
+    createFigure(i, flags(i, :));
+end
+
+for i = 1:size(flags, "r")
+    createFigureXML(i, flags(i, :));
+end