Xcos: create an ANNOTATION works 28/17228/2
Clément DAVID [Fri, 18 Sep 2015 11:21:58 +0000 (13:21 +0200)]
Change-Id: I3553cdd3afd5410f76eeef1115c7b532d37fc828

48 files changed:
scilab/modules/graph/src/java/org/scilab/modules/graph/ScilabGraph.java
scilab/modules/scicos/includes/View.hxx
scilab/modules/scicos/includes/utilities.hxx
scilab/modules/scicos/src/cpp/Controller.cpp
scilab/modules/scicos/src/cpp/LoggerView.cpp
scilab/modules/scicos/src/cpp/LoggerView.hxx
scilab/modules/scicos/src/cpp/Model_getObjectProperties.cpp
scilab/modules/scicos/src/cpp/Model_setObjectProperties.cpp
scilab/modules/scicos/src/cpp/model/Annotation.hxx
scilab/modules/scicos/src/cpp/model/Port.hxx
scilab/modules/scicos/src/cpp/view_scilab/LinkAdapter.cpp
scilab/modules/scicos/src/cpp/view_scilab/ports_management.hxx
scilab/modules/xcos/sci_gateway/cpp/sci_Xcos.cpp
scilab/modules/xcos/src/java/org/scilab/modules/xcos/BrowserView.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/JavaControllerJNI.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/PortKind.java [new file with mode: 0644]
scilab/modules/xcos/src/java/org/scilab/modules/xcos/VectorOfBool.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/VectorOfDouble.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/VectorOfInt.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/VectorOfScicosID.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/VectorOfString.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/View.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/Xcos.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/XcosTab.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/XcosView.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/XcosViewListener.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/actions/ExportAllAction.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/block/BasicBlock.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/block/TextBlock.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/block/actions/ShowParentAction.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/configuration/ConfigurationManager.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/graph/DiagramComparator.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/graph/PaletteDiagram.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/graph/XcosDiagram.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/graph/model/XcosCell.java [new file with mode: 0644]
scilab/modules/xcos/src/java/org/scilab/modules/xcos/graph/swing/handler/GraphHandler.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/io/codec/BasicLinkCodec.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/link/BasicLink.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/link/commandcontrol/CommandControlLink.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/link/explicit/ExplicitLink.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/link/implicit/ImplicitLink.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/palette/Palette.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/port/BasicPort.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/utils/BlockPositioning.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/utils/XcosDelegates.java
scilab/modules/xcos/src/jni/JavaController.i
scilab/modules/xcos/src/jni/JavaController_wrap.cxx
scilab/modules/xcos/src/jni/JavaController_wrap.h

index 3fefbd6..f8f5143 100644 (file)
@@ -35,6 +35,7 @@ import com.mxgraph.model.mxGraphModel.mxStyleChange;
 import com.mxgraph.model.mxGraphModel.mxTerminalChange;
 import com.mxgraph.model.mxGraphModel.mxValueChange;
 import com.mxgraph.model.mxGraphModel.mxVisibleChange;
+import com.mxgraph.model.mxIGraphModel;
 import com.mxgraph.swing.mxGraphComponent;
 import com.mxgraph.swing.handler.mxRubberband;
 import com.mxgraph.swing.util.mxGraphActions;
@@ -45,6 +46,7 @@ import com.mxgraph.util.mxUndoableEdit;
 import com.mxgraph.util.mxUndoableEdit.mxUndoableChange;
 import com.mxgraph.view.mxGraph;
 import com.mxgraph.view.mxGraphView;
+import com.mxgraph.view.mxStylesheet;
 
 /**
  * Represent the base diagram of Xcos.
@@ -130,11 +132,22 @@ public class ScilabGraph extends mxGraph {
     };
 
     /**
-     * /** Default constructor: - disable unused actions - install listeners -
-     * Replace JGraphX components by specialized components if needed.
+     * Default constructor:
+     * <UL>
+     *   <LI> disable unused actions
+     *   <LI> install listeners
+     *   <LI> Replace JGraphX components by specialized components if needed.
      */
     public ScilabGraph() {
-        super();
+        this(null, null);
+    }
+
+    /**
+     * Constructor using a specific model
+     * @param model the model to use
+     */
+    public ScilabGraph(mxIGraphModel model, mxStylesheet stylesheet) {
+        super(model, stylesheet);
 
         // Disabling the default connected action and event listeners.
         mxGraphActions.getSelectNextAction().setEnabled(false);
@@ -157,6 +170,8 @@ public class ScilabGraph extends mxGraph {
         getModel().addListener(mxEvent.CHANGE, changeTracker);
     }
 
+
+
     /**
      * @return The previously saved file or null.
      */
index 1f717e7..7bc8d8f 100644 (file)
@@ -27,8 +27,8 @@ public:
     virtual ~View() {};
 
     virtual void objectCreated(const ScicosID& uid, kind_t kind) = 0;
-    virtual void objectReferenced(const ScicosID& uid, kind_t kind) = 0;
-    virtual void objectUnreferenced(const ScicosID& uid, kind_t kind) = 0;
+    virtual void objectReferenced(const ScicosID& uid, kind_t kind, unsigned refCount) = 0;
+    virtual void objectUnreferenced(const ScicosID& uid, kind_t kind, unsigned refCount) = 0;
     virtual void objectDeleted(const ScicosID& uid, kind_t kind) = 0;
     virtual void propertyUpdated(const ScicosID& uid, kind_t kind, object_properties_t property, update_status_t status) = 0;
 };
index 522a606..b76235d 100644 (file)
@@ -110,4 +110,17 @@ enum object_properties_t
     MAX_OBJECT_PROPERTIES //!< last valid value of the object_properties_t enum
 };
 
+/**
+ * PORT_KIND valid values
+ */
+enum portKind
+{
+    PORT_UNDEF,
+    PORT_IN,
+    PORT_OUT,
+    PORT_EIN,
+    PORT_EOUT
+};
+
+
 #endif /* UTILITIES_HXX_ */
index dd7ec65..00f53bc 100644 (file)
@@ -147,7 +147,7 @@ unsigned Controller::referenceObject(const ScicosID uid) const
     auto o = getObject(uid);
     for (view_set_t::iterator iter = m_instance.allViews.begin(); iter != m_instance.allViews.end(); ++iter)
     {
-        (*iter)->objectReferenced(uid, o->kind());
+        (*iter)->objectReferenced(uid, o->kind(), refCount);
     }
 
     return refCount;
@@ -173,7 +173,7 @@ void Controller::deleteObject(ScicosID uid)
 
         for (view_set_t::iterator iter = m_instance.allViews.begin(); iter != m_instance.allViews.end(); ++iter)
         {
-            (*iter)->objectUnreferenced(uid, k);
+            (*iter)->objectUnreferenced(uid, k, refCount);
         }
         return;
     }
index c7e7077..18febac 100644 (file)
@@ -402,14 +402,18 @@ void LoggerView::objectCreated(const ScicosID& uid, kind_t k)
     log(LOG_DEBUG, ss);
 }
 
-void LoggerView::objectReferenced(const ScicosID& uid, kind_t k)
+void LoggerView::objectReferenced(const ScicosID& uid, kind_t k, unsigned refCount)
 {
-    // NOT LOGGED YET
+    std::stringstream ss;
+    ss << __FUNCTION__ << "( " << uid << " , " << k << " ) : " << refCount << std::endl;
+    log(LOG_DEBUG, ss);
 }
 
-void LoggerView::objectUnreferenced(const ScicosID& uid, kind_t k)
+void LoggerView::objectUnreferenced(const ScicosID& uid, kind_t k, unsigned refCount)
 {
-    // NOT LOGGED YET
+    std::stringstream ss;
+    ss << __FUNCTION__ << "( " << uid << " , " << k << " ) : " << refCount << std::endl;
+    log(LOG_DEBUG, ss);
 }
 
 void LoggerView::objectDeleted(const ScicosID& uid, kind_t k)
index 9467fbf..d719c0e 100644 (file)
@@ -67,8 +67,8 @@ public:
      */
 
     void objectCreated(const ScicosID& uid, kind_t k);
-    void objectReferenced(const ScicosID& uid, kind_t k);
-    void objectUnreferenced(const ScicosID& uid, kind_t k);
+    void objectReferenced(const ScicosID& uid, kind_t k, unsigned refCount);
+    void objectUnreferenced(const ScicosID& uid, kind_t k, unsigned refCount);
     void objectDeleted(const ScicosID& uid, kind_t k);
     void propertyUpdated(const ScicosID& uid, kind_t k, object_properties_t p, update_status_t u);
 
index 1428497..10507e7 100644 (file)
@@ -224,6 +224,9 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std
             case FONT_SIZE:
                 o->getFontSize(v);
                 return true;
+            case STYLE:
+                o->getStyle(v);
+                return true;
             default:
                 break;
         }
index da11d3a..8e07d4e 100644 (file)
@@ -292,6 +292,8 @@ update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properti
                 return o->setFont(v);
             case FONT_SIZE:
                 return o->setFontSize(v);
+            case STYLE:
+                return o->setStyle(v);
             default:
                 break;
         }
index 064bba1..967bb34 100644 (file)
@@ -29,7 +29,7 @@ class Annotation: public BaseObject
 {
 public:
     Annotation(): BaseObject(ANNOTATION), m_parentDiagram(ScicosID()), m_parentBlock(ScicosID()),
-        m_description(std::string("Text")), m_font(std::string("2")), m_font_size(std::string("1")), m_relatedTo(ScicosID())
+        m_description(std::string("Text")), m_font(std::string("2")), m_font_size(std::string("1")), m_style(""), m_relatedTo(ScicosID())
     {
         std::vector<double> geom (4, 0);
         geom[2] = 2;
@@ -37,7 +37,7 @@ public:
         m_geometry = Geometry(geom);
     };
     Annotation(const Annotation& o) : BaseObject(ANNOTATION), m_parentDiagram(o.m_parentDiagram), m_parentBlock(o.m_parentBlock), m_geometry(o.m_geometry),
-        m_description(o.m_description), m_font(o.m_font), m_font_size(o.m_font_size), m_relatedTo(o.m_relatedTo) {};
+        m_description(o.m_description), m_font(o.m_font), m_font_size(o.m_font_size), m_style(o.m_style), m_relatedTo(o.m_relatedTo) {};
     ~Annotation() = default;
 
 private:
@@ -91,6 +91,22 @@ private:
         return SUCCESS;
     }
 
+    void getStyle(std::string& data) const
+    {
+        data = m_style;
+    }
+
+    update_status_t setStyle(const std::string& data)
+    {
+        if (data == m_style)
+        {
+            return NO_CHANGES;
+        }
+
+        m_style = data;
+        return SUCCESS;
+    }
+
     void getGeometry(std::vector<double>& v) const
     {
         m_geometry.fill(v);
@@ -169,6 +185,7 @@ private:
     std::string m_description;
     std::string m_font;
     std::string m_font_size;
+    std::string m_style;
     ScicosID m_relatedTo;
 };
 
index cc0be50..5301467 100644 (file)
@@ -25,11 +25,6 @@ namespace org_scilab_modules_scicos
 namespace model
 {
 
-enum portKind
-{
-    PORT_UNDEF, PORT_IN, PORT_OUT, PORT_EIN, PORT_EOUT
-};
-
 class Port: public BaseObject
 {
 public:
index be7e3ec..40d7206 100644 (file)
@@ -359,7 +359,7 @@ link_t getLinkEnd(const LinkAdapter& adaptor, const Controller& controller, cons
         {
             int kind;
             controller.getObjectProperty(endID, PORT, PORT_KIND, kind);
-            if (kind == model::PORT_IN || kind == model::PORT_EIN)
+            if (kind == PORT_IN || kind == PORT_EIN)
             {
                 ret.kind = End;
             }
@@ -479,7 +479,7 @@ void setLinkEnd(const ScicosID id, Controller& controller, const object_properti
 
     std::vector<ScicosID> sourceBlockPorts;
     bool newPortIsImplicit = false;
-    enum model::portKind newPortKind = model::PORT_UNDEF;
+    enum portKind newPortKind = PORT_UNDEF;
     int linkType;
     controller.getObjectProperty(id, LINK, KIND, linkType);
     if (linkType == model::activation)
@@ -493,24 +493,24 @@ void setLinkEnd(const ScicosID id, Controller& controller, const object_properti
         {
             if (otherPort != 0)
             {
-                if (!checkConnectivity(model::PORT_EIN, otherPort, blkID, controller))
+                if (!checkConnectivity(PORT_EIN, otherPort, blkID, controller))
                 {
                     return;
                 }
             }
-            newPortKind = model::PORT_EOUT;
+            newPortKind = PORT_EOUT;
             sourceBlockPorts = evtout;
         }
         else
         {
             if (otherPort != 0)
             {
-                if (!checkConnectivity(model::PORT_EOUT, otherPort, blkID, controller))
+                if (!checkConnectivity(PORT_EOUT, otherPort, blkID, controller))
                 {
                     return;
                 }
             }
-            newPortKind = model::PORT_EIN;
+            newPortKind = PORT_EIN;
             sourceBlockPorts = evtin;
         }
 
@@ -528,24 +528,24 @@ void setLinkEnd(const ScicosID id, Controller& controller, const object_properti
             {
                 if (otherPort != 0)
                 {
-                    if (!checkConnectivity(model::PORT_IN, otherPort, blkID, controller))
+                    if (!checkConnectivity(PORT_IN, otherPort, blkID, controller))
                     {
                         return;
                     }
                 }
-                newPortKind = model::PORT_OUT;
+                newPortKind = PORT_OUT;
                 sourceBlockPorts = out;
             }
             else
             {
                 if (otherPort != 0)
                 {
-                    if (!checkConnectivity(model::PORT_OUT, otherPort, blkID, controller))
+                    if (!checkConnectivity(PORT_OUT, otherPort, blkID, controller))
                     {
                         return;
                     }
                 }
-                newPortKind = model::PORT_IN;
+                newPortKind = PORT_IN;
                 sourceBlockPorts = in;
             }
 
index 941b7c6..b50731b 100644 (file)
@@ -174,10 +174,10 @@ types::InternalType* get_ports_property(const Adaptor& adaptor, const object_pro
                 return new types::Double(1);
             }
             datatypeIndex++;
-            // no break
+        // no break
         case DATATYPE_COLS:
             datatypeIndex++;
-            // no break
+        // no break
         case DATATYPE_ROWS:
         {
             datatypeIndex++;
@@ -380,10 +380,10 @@ bool set_ports_property(const Adaptor& adaptor, const object_properties_t port_k
 
             case DATATYPE_TYPE:
                 datatypeIndex++;
-                // no break
+            // no break
             case DATATYPE_COLS:
                 datatypeIndex++;
-                // no break
+            // no break
             case DATATYPE_ROWS:
             {
                 datatypeIndex++;
@@ -549,10 +549,10 @@ inline bool updateNewPort(const ScicosID oldPort, int newPort, Controller& contr
         {
             case DATATYPE_TYPE:
                 datatypeIndex++;
-                // no break
+            // no break
             case DATATYPE_COLS:
                 datatypeIndex++;
-                // no break
+            // no break
             case DATATYPE_ROWS:
             {
                 datatypeIndex++;
@@ -599,10 +599,10 @@ inline bool addNewPort(const ScicosID newPortID, int newPort, const std::vector<
         {
             case DATATYPE_TYPE:
                 datatypeIndex++;
-                // no break
+            // no break
             case DATATYPE_COLS:
                 datatypeIndex++;
-                // no break
+            // no break
             case DATATYPE_ROWS:
             {
                 datatypeIndex++;
@@ -741,16 +741,16 @@ bool update_ports_property(const Adaptor& adaptor, const object_properties_t por
             switch (port_kind)
             {
                 case INPUTS:
-                    controller.setObjectProperty(id, PORT, PORT_KIND, model::PORT_IN);
+                    controller.setObjectProperty(id, PORT, PORT_KIND, PORT_IN);
                     break;
                 case OUTPUTS:
-                    controller.setObjectProperty(id, PORT, PORT_KIND, model::PORT_OUT);
+                    controller.setObjectProperty(id, PORT, PORT_KIND, PORT_OUT);
                     break;
                 case EVENT_INPUTS:
-                    controller.setObjectProperty(id, PORT, PORT_KIND, model::PORT_EIN);
+                    controller.setObjectProperty(id, PORT, PORT_KIND, PORT_EIN);
                     break;
                 case EVENT_OUTPUTS:
-                    controller.setObjectProperty(id, PORT, PORT_KIND, model::PORT_EOUT);
+                    controller.setObjectProperty(id, PORT, PORT_KIND, PORT_EOUT);
                     break;
                 default:
                     // should never happen
index afb7c63..ecdd7aa 100644 (file)
  */
 /*--------------------------------------------------------------------------*/
 
+#include <iostream>
+#include <string>
+#include <cwchar>
+
 #include "Xcos.hxx"
 #include "loadStatus.hxx"
 #include "view_scilab/Adapters.hxx"
 #include "types.hxx"
 #include "function.hxx"
 #include "string.hxx"
+#include "user.hxx"
+
 #include "gw_xcos.hxx"
 
-extern "C" 
-{
+extern "C" {
 #include "sci_malloc.h"
 #include "getFullFilename.h"
 #include "getScilabJavaVM.h"
@@ -149,10 +154,10 @@ types::Function::ReturnValue sci_Xcos(types::typed_list &in, int _iRetCount, typ
             FREE(file);
             return types::Function::Error;
         }
-
         FREE(file);
         return types::Function::OK;
     }
+
     /*
      * If not returned yet, display a generic error message.
      */
index bf215d8..6e8f493 100644 (file)
@@ -117,7 +117,7 @@ public class BrowserView extends View {
     }
 
     @Override
-    public void objectReferenced(final long uid, final Kind kind) {
+    public void objectReferenced(final long uid, final Kind kind, long refCount) {
         if (model == null) {
             return;
         }
@@ -128,12 +128,12 @@ public class BrowserView extends View {
         SwingUtilities.invokeLater(new Runnable() {
             @Override
             public void run() {
-                objectReferencedOnEDT(uid, kind);
+                objectReferencedOnEDT(uid, kind, refCount);
             }
         });
     }
 
-    public void objectUnreferenced(final long uid, final Kind kind) {
+    public void objectUnreferenced(final long uid, final Kind kind, long refCount) {
         if (model == null) {
             return;
         }
@@ -144,7 +144,7 @@ public class BrowserView extends View {
         SwingUtilities.invokeLater(new Runnable() {
             @Override
             public void run() {
-                objectUnreferencedOnEDT(uid, kind);
+                objectUnreferencedOnEDT(uid, kind, refCount);
             }
         });
     };
@@ -178,14 +178,14 @@ public class BrowserView extends View {
         model.insertNodeInto(node, root, position);
     }
 
-    public void objectReferencedOnEDT(final long uid, final Kind kind) {
+    public void objectReferencedOnEDT(final long uid, final Kind kind, long refCount) {
         DefaultMutableTreeNode node = lookupForUID(uid);
         BrowserTreeNodeData data = (BrowserTreeNodeData) node.getUserObject();
 
         data.incRefCount();
     }
 
-    public void objectUnreferencedOnEDT(final long uid, final Kind kind) {
+    public void objectUnreferencedOnEDT(final long uid, final Kind kind, long refCount) {
         DefaultMutableTreeNode node = lookupForUID(uid);
         if (node == null) {
             return;
index bf25b4d..87cad2e 100644 (file)
@@ -12,8 +12,8 @@ public class JavaControllerJNI {
   public final static native long new_View();
   public final static native void delete_View(long jarg1);
   public final static native void View_objectCreated(long jarg1, View jarg1_, long jarg2, int jarg3);
-  public final static native void View_objectReferenced(long jarg1, View jarg1_, long jarg2, int jarg3);
-  public final static native void View_objectUnreferenced(long jarg1, View jarg1_, long jarg2, int jarg3);
+  public final static native void View_objectReferenced(long jarg1, View jarg1_, long jarg2, int jarg3, long jarg4);
+  public final static native void View_objectUnreferenced(long jarg1, View jarg1_, long jarg2, int jarg3, long jarg4);
   public final static native void View_objectDeleted(long jarg1, View jarg1_, long jarg2, int jarg3);
   public final static native void View_propertyUpdated(long jarg1, View jarg1_, long jarg2, int jarg3, int jarg4, int jarg5);
   public final static native void View_director_connect(View obj, long cptr, boolean mem_own, boolean weak_global);
@@ -49,58 +49,73 @@ public class JavaControllerJNI {
   public final static native int Controller_setObjectProperty__SWIG_10(long jarg1, Controller jarg1_, long jarg2, int jarg3, int jarg4, long jarg5, VectorOfScicosID jarg5_);
   public final static native long new_VectorOfInt__SWIG_0();
   public final static native long new_VectorOfInt__SWIG_1(long jarg1);
-  public final static native long VectorOfInt_size(long jarg1, VectorOfInt jarg1_);
-  public final static native long VectorOfInt_capacity(long jarg1, VectorOfInt jarg1_);
-  public final static native void VectorOfInt_reserve(long jarg1, VectorOfInt jarg1_, long jarg2);
+  public final static native void VectorOfInt_ensureCapacity(long jarg1, VectorOfInt jarg1_, long jarg2);
+  public final static native int VectorOfInt_size(long jarg1, VectorOfInt jarg1_);
   public final static native boolean VectorOfInt_isEmpty(long jarg1, VectorOfInt jarg1_);
   public final static native void VectorOfInt_clear(long jarg1, VectorOfInt jarg1_);
-  public final static native void VectorOfInt_add(long jarg1, VectorOfInt jarg1_, int jarg2);
+  public final static native void VectorOfInt_add__SWIG_0(long jarg1, VectorOfInt jarg1_, int jarg2);
+  public final static native boolean VectorOfInt_contains(long jarg1, VectorOfInt jarg1_, int jarg2);
+  public final static native int VectorOfInt_indexOf(long jarg1, VectorOfInt jarg1_, int jarg2);
   public final static native int VectorOfInt_get(long jarg1, VectorOfInt jarg1_, int jarg2);
   public final static native void VectorOfInt_set(long jarg1, VectorOfInt jarg1_, int jarg2, int jarg3);
+  public final static native void VectorOfInt_add__SWIG_1(long jarg1, VectorOfInt jarg1_, int jarg2, int jarg3);
+  public final static native boolean VectorOfInt_remove(long jarg1, VectorOfInt jarg1_, int jarg2);
   public final static native void delete_VectorOfInt(long jarg1);
   public final static native long new_VectorOfBool__SWIG_0();
   public final static native long new_VectorOfBool__SWIG_1(long jarg1);
   public final static native long VectorOfBool_size(long jarg1, VectorOfBool jarg1_);
   public final static native long VectorOfBool_capacity(long jarg1, VectorOfBool jarg1_);
-  public final static native void VectorOfBool_reserve(long jarg1, VectorOfBool jarg1_, long jarg2);
+  public final static native void VectorOfBool_ensureCapacity(long jarg1, VectorOfBool jarg1_, long jarg2);
+  public final static native void VectorOfBool_resize(long jarg1, VectorOfBool jarg1_, long jarg2);
   public final static native boolean VectorOfBool_isEmpty(long jarg1, VectorOfBool jarg1_);
   public final static native void VectorOfBool_clear(long jarg1, VectorOfBool jarg1_);
-  public final static native void VectorOfBool_add(long jarg1, VectorOfBool jarg1_, boolean jarg2);
+  public final static native void VectorOfBool_add__SWIG_0(long jarg1, VectorOfBool jarg1_, boolean jarg2);
   public final static native boolean VectorOfBool_get(long jarg1, VectorOfBool jarg1_, int jarg2);
   public final static native void VectorOfBool_set(long jarg1, VectorOfBool jarg1_, int jarg2, boolean jarg3);
+  public final static native void VectorOfBool_add__SWIG_1(long jarg1, VectorOfBool jarg1_, int jarg2, boolean jarg3);
+  public final static native boolean VectorOfBool_remove(long jarg1, VectorOfBool jarg1_, boolean jarg2);
   public final static native void delete_VectorOfBool(long jarg1);
   public final static native long new_VectorOfDouble__SWIG_0();
   public final static native long new_VectorOfDouble__SWIG_1(long jarg1);
-  public final static native long VectorOfDouble_size(long jarg1, VectorOfDouble jarg1_);
-  public final static native long VectorOfDouble_capacity(long jarg1, VectorOfDouble jarg1_);
-  public final static native void VectorOfDouble_reserve(long jarg1, VectorOfDouble jarg1_, long jarg2);
+  public final static native void VectorOfDouble_ensureCapacity(long jarg1, VectorOfDouble jarg1_, long jarg2);
+  public final static native int VectorOfDouble_size(long jarg1, VectorOfDouble jarg1_);
   public final static native boolean VectorOfDouble_isEmpty(long jarg1, VectorOfDouble jarg1_);
   public final static native void VectorOfDouble_clear(long jarg1, VectorOfDouble jarg1_);
-  public final static native void VectorOfDouble_add(long jarg1, VectorOfDouble jarg1_, double jarg2);
+  public final static native void VectorOfDouble_add__SWIG_0(long jarg1, VectorOfDouble jarg1_, double jarg2);
+  public final static native boolean VectorOfDouble_contains(long jarg1, VectorOfDouble jarg1_, double jarg2);
+  public final static native int VectorOfDouble_indexOf(long jarg1, VectorOfDouble jarg1_, double jarg2);
   public final static native double VectorOfDouble_get(long jarg1, VectorOfDouble jarg1_, int jarg2);
   public final static native void VectorOfDouble_set(long jarg1, VectorOfDouble jarg1_, int jarg2, double jarg3);
+  public final static native void VectorOfDouble_add__SWIG_1(long jarg1, VectorOfDouble jarg1_, int jarg2, double jarg3);
+  public final static native boolean VectorOfDouble_remove(long jarg1, VectorOfDouble jarg1_, double jarg2);
   public final static native void delete_VectorOfDouble(long jarg1);
   public final static native long new_VectorOfString__SWIG_0();
   public final static native long new_VectorOfString__SWIG_1(long jarg1);
-  public final static native long VectorOfString_size(long jarg1, VectorOfString jarg1_);
-  public final static native long VectorOfString_capacity(long jarg1, VectorOfString jarg1_);
-  public final static native void VectorOfString_reserve(long jarg1, VectorOfString jarg1_, long jarg2);
+  public final static native void VectorOfString_ensureCapacity(long jarg1, VectorOfString jarg1_, long jarg2);
+  public final static native int VectorOfString_size(long jarg1, VectorOfString jarg1_);
   public final static native boolean VectorOfString_isEmpty(long jarg1, VectorOfString jarg1_);
   public final static native void VectorOfString_clear(long jarg1, VectorOfString jarg1_);
-  public final static native void VectorOfString_add(long jarg1, VectorOfString jarg1_, String jarg2);
+  public final static native void VectorOfString_add__SWIG_0(long jarg1, VectorOfString jarg1_, String jarg2);
+  public final static native boolean VectorOfString_contains(long jarg1, VectorOfString jarg1_, String jarg2);
+  public final static native int VectorOfString_indexOf(long jarg1, VectorOfString jarg1_, String jarg2);
   public final static native String VectorOfString_get(long jarg1, VectorOfString jarg1_, int jarg2);
   public final static native void VectorOfString_set(long jarg1, VectorOfString jarg1_, int jarg2, String jarg3);
+  public final static native void VectorOfString_add__SWIG_1(long jarg1, VectorOfString jarg1_, int jarg2, String jarg3);
+  public final static native boolean VectorOfString_remove(long jarg1, VectorOfString jarg1_, String jarg2);
   public final static native void delete_VectorOfString(long jarg1);
   public final static native long new_VectorOfScicosID__SWIG_0();
   public final static native long new_VectorOfScicosID__SWIG_1(long jarg1);
-  public final static native long VectorOfScicosID_size(long jarg1, VectorOfScicosID jarg1_);
-  public final static native long VectorOfScicosID_capacity(long jarg1, VectorOfScicosID jarg1_);
-  public final static native void VectorOfScicosID_reserve(long jarg1, VectorOfScicosID jarg1_, long jarg2);
+  public final static native void VectorOfScicosID_ensureCapacity(long jarg1, VectorOfScicosID jarg1_, long jarg2);
+  public final static native int VectorOfScicosID_size(long jarg1, VectorOfScicosID jarg1_);
   public final static native boolean VectorOfScicosID_isEmpty(long jarg1, VectorOfScicosID jarg1_);
   public final static native void VectorOfScicosID_clear(long jarg1, VectorOfScicosID jarg1_);
-  public final static native void VectorOfScicosID_add(long jarg1, VectorOfScicosID jarg1_, long jarg2);
+  public final static native void VectorOfScicosID_add__SWIG_0(long jarg1, VectorOfScicosID jarg1_, long jarg2);
+  public final static native boolean VectorOfScicosID_contains(long jarg1, VectorOfScicosID jarg1_, long jarg2);
+  public final static native int VectorOfScicosID_indexOf(long jarg1, VectorOfScicosID jarg1_, long jarg2);
   public final static native long VectorOfScicosID_get(long jarg1, VectorOfScicosID jarg1_, int jarg2);
   public final static native void VectorOfScicosID_set(long jarg1, VectorOfScicosID jarg1_, int jarg2, long jarg3);
+  public final static native void VectorOfScicosID_add__SWIG_1(long jarg1, VectorOfScicosID jarg1_, int jarg2, long jarg3);
+  public final static native boolean VectorOfScicosID_remove(long jarg1, VectorOfScicosID jarg1_, long jarg2);
   public final static native void delete_VectorOfScicosID(long jarg1);
   public final static native void register_view(String jarg1, long jarg2, View jarg2_);
   public final static native void unregister_view(long jarg1, View jarg1_);
@@ -128,11 +143,11 @@ public class JavaControllerJNI {
   public static void SwigDirector_View_objectCreated(View jself, long uid, int kind) {
     jself.objectCreated(uid, Kind.class.getEnumConstants()[kind]);
   }
-  public static void SwigDirector_View_objectReferenced(View jself, long uid, int kind) {
-    jself.objectReferenced(uid, Kind.class.getEnumConstants()[kind]);
+  public static void SwigDirector_View_objectReferenced(View jself, long uid, int kind, long refCount) {
+    jself.objectReferenced(uid, Kind.class.getEnumConstants()[kind], refCount);
   }
-  public static void SwigDirector_View_objectUnreferenced(View jself, long uid, int kind) {
-    jself.objectUnreferenced(uid, Kind.class.getEnumConstants()[kind]);
+  public static void SwigDirector_View_objectUnreferenced(View jself, long uid, int kind, long refCount) {
+    jself.objectUnreferenced(uid, Kind.class.getEnumConstants()[kind], refCount);
   }
   public static void SwigDirector_View_objectDeleted(View jself, long uid, int kind) {
     jself.objectDeleted(uid, Kind.class.getEnumConstants()[kind]);
diff --git a/scilab/modules/xcos/src/java/org/scilab/modules/xcos/PortKind.java b/scilab/modules/xcos/src/java/org/scilab/modules/xcos/PortKind.java
new file mode 100644 (file)
index 0000000..8391c02
--- /dev/null
@@ -0,0 +1,18 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 3.0.7
+ *
+ * Do not make changes to this file unless you know what you are doing--modify
+ * the SWIG interface file instead.
+ * ----------------------------------------------------------------------------- */
+
+package org.scilab.modules.xcos;
+
+public enum PortKind {
+  PORT_UNDEF,
+  PORT_IN,
+  PORT_OUT,
+  PORT_EIN,
+  PORT_EOUT;
+}
+
index 2c1dfb2..8a67bb0 100644 (file)
@@ -51,8 +51,12 @@ public class VectorOfBool {
     return JavaControllerJNI.VectorOfBool_capacity(swigCPtr, this);
   }
 
-  public void reserve(long n) {
-    JavaControllerJNI.VectorOfBool_reserve(swigCPtr, this, n);
+  public void ensureCapacity(long n) {
+    JavaControllerJNI.VectorOfBool_ensureCapacity(swigCPtr, this, n);
+  }
+
+  public void resize(long n) {
+    JavaControllerJNI.VectorOfBool_resize(swigCPtr, this, n);
   }
 
   public boolean isEmpty() {
@@ -64,7 +68,7 @@ public class VectorOfBool {
   }
 
   public void add(boolean x) {
-    JavaControllerJNI.VectorOfBool_add(swigCPtr, this, x);
+    JavaControllerJNI.VectorOfBool_add__SWIG_0(swigCPtr, this, x);
   }
 
   public boolean get(int i) {
@@ -75,4 +79,12 @@ public class VectorOfBool {
     JavaControllerJNI.VectorOfBool_set(swigCPtr, this, i, val);
   }
 
+  public void add(int i, boolean val) {
+    JavaControllerJNI.VectorOfBool_add__SWIG_1(swigCPtr, this, i, val);
+  }
+
+  public boolean remove(boolean val) {
+    return JavaControllerJNI.VectorOfBool_remove(swigCPtr, this, val);
+  }
+
 }
index 3a373e4..f1f296a 100644 (file)
@@ -43,16 +43,12 @@ public class VectorOfDouble {
     this(JavaControllerJNI.new_VectorOfDouble__SWIG_1(n), true);
   }
 
-  public long size() {
-    return JavaControllerJNI.VectorOfDouble_size(swigCPtr, this);
-  }
-
-  public long capacity() {
-    return JavaControllerJNI.VectorOfDouble_capacity(swigCPtr, this);
+  public void ensureCapacity(long n) {
+    JavaControllerJNI.VectorOfDouble_ensureCapacity(swigCPtr, this, n);
   }
 
-  public void reserve(long n) {
-    JavaControllerJNI.VectorOfDouble_reserve(swigCPtr, this, n);
+  public int size() {
+    return JavaControllerJNI.VectorOfDouble_size(swigCPtr, this);
   }
 
   public boolean isEmpty() {
@@ -64,7 +60,15 @@ public class VectorOfDouble {
   }
 
   public void add(double x) {
-    JavaControllerJNI.VectorOfDouble_add(swigCPtr, this, x);
+    JavaControllerJNI.VectorOfDouble_add__SWIG_0(swigCPtr, this, x);
+  }
+
+  public boolean contains(double o) {
+    return JavaControllerJNI.VectorOfDouble_contains(swigCPtr, this, o);
+  }
+
+  public int indexOf(double o) {
+    return JavaControllerJNI.VectorOfDouble_indexOf(swigCPtr, this, o);
   }
 
   public double get(int i) {
@@ -75,4 +79,12 @@ public class VectorOfDouble {
     JavaControllerJNI.VectorOfDouble_set(swigCPtr, this, i, val);
   }
 
+  public void add(int i, double val) {
+    JavaControllerJNI.VectorOfDouble_add__SWIG_1(swigCPtr, this, i, val);
+  }
+
+  public boolean remove(double val) {
+    return JavaControllerJNI.VectorOfDouble_remove(swigCPtr, this, val);
+  }
+
 }
index 2b67442..016d0f4 100644 (file)
@@ -43,16 +43,12 @@ public class VectorOfInt {
     this(JavaControllerJNI.new_VectorOfInt__SWIG_1(n), true);
   }
 
-  public long size() {
-    return JavaControllerJNI.VectorOfInt_size(swigCPtr, this);
-  }
-
-  public long capacity() {
-    return JavaControllerJNI.VectorOfInt_capacity(swigCPtr, this);
+  public void ensureCapacity(long n) {
+    JavaControllerJNI.VectorOfInt_ensureCapacity(swigCPtr, this, n);
   }
 
-  public void reserve(long n) {
-    JavaControllerJNI.VectorOfInt_reserve(swigCPtr, this, n);
+  public int size() {
+    return JavaControllerJNI.VectorOfInt_size(swigCPtr, this);
   }
 
   public boolean isEmpty() {
@@ -64,7 +60,15 @@ public class VectorOfInt {
   }
 
   public void add(int x) {
-    JavaControllerJNI.VectorOfInt_add(swigCPtr, this, x);
+    JavaControllerJNI.VectorOfInt_add__SWIG_0(swigCPtr, this, x);
+  }
+
+  public boolean contains(int o) {
+    return JavaControllerJNI.VectorOfInt_contains(swigCPtr, this, o);
+  }
+
+  public int indexOf(int o) {
+    return JavaControllerJNI.VectorOfInt_indexOf(swigCPtr, this, o);
   }
 
   public int get(int i) {
@@ -75,4 +79,12 @@ public class VectorOfInt {
     JavaControllerJNI.VectorOfInt_set(swigCPtr, this, i, val);
   }
 
+  public void add(int i, int val) {
+    JavaControllerJNI.VectorOfInt_add__SWIG_1(swigCPtr, this, i, val);
+  }
+
+  public boolean remove(int val) {
+    return JavaControllerJNI.VectorOfInt_remove(swigCPtr, this, val);
+  }
+
 }
index 5da61bb..4b1ebdb 100644 (file)
@@ -43,16 +43,12 @@ public class VectorOfScicosID {
     this(JavaControllerJNI.new_VectorOfScicosID__SWIG_1(n), true);
   }
 
-  public long size() {
-    return JavaControllerJNI.VectorOfScicosID_size(swigCPtr, this);
-  }
-
-  public long capacity() {
-    return JavaControllerJNI.VectorOfScicosID_capacity(swigCPtr, this);
+  public void ensureCapacity(long n) {
+    JavaControllerJNI.VectorOfScicosID_ensureCapacity(swigCPtr, this, n);
   }
 
-  public void reserve(long n) {
-    JavaControllerJNI.VectorOfScicosID_reserve(swigCPtr, this, n);
+  public int size() {
+    return JavaControllerJNI.VectorOfScicosID_size(swigCPtr, this);
   }
 
   public boolean isEmpty() {
@@ -64,7 +60,15 @@ public class VectorOfScicosID {
   }
 
   public void add(long x) {
-    JavaControllerJNI.VectorOfScicosID_add(swigCPtr, this, x);
+    JavaControllerJNI.VectorOfScicosID_add__SWIG_0(swigCPtr, this, x);
+  }
+
+  public boolean contains(long o) {
+    return JavaControllerJNI.VectorOfScicosID_contains(swigCPtr, this, o);
+  }
+
+  public int indexOf(long o) {
+    return JavaControllerJNI.VectorOfScicosID_indexOf(swigCPtr, this, o);
   }
 
   public long get(int i) {
@@ -75,4 +79,12 @@ public class VectorOfScicosID {
     JavaControllerJNI.VectorOfScicosID_set(swigCPtr, this, i, val);
   }
 
+  public void add(int i, long val) {
+    JavaControllerJNI.VectorOfScicosID_add__SWIG_1(swigCPtr, this, i, val);
+  }
+
+  public boolean remove(long val) {
+    return JavaControllerJNI.VectorOfScicosID_remove(swigCPtr, this, val);
+  }
+
 }
index e59e367..6ba24a0 100644 (file)
@@ -43,16 +43,12 @@ public class VectorOfString {
     this(JavaControllerJNI.new_VectorOfString__SWIG_1(n), true);
   }
 
-  public long size() {
-    return JavaControllerJNI.VectorOfString_size(swigCPtr, this);
-  }
-
-  public long capacity() {
-    return JavaControllerJNI.VectorOfString_capacity(swigCPtr, this);
+  public void ensureCapacity(long n) {
+    JavaControllerJNI.VectorOfString_ensureCapacity(swigCPtr, this, n);
   }
 
-  public void reserve(long n) {
-    JavaControllerJNI.VectorOfString_reserve(swigCPtr, this, n);
+  public int size() {
+    return JavaControllerJNI.VectorOfString_size(swigCPtr, this);
   }
 
   public boolean isEmpty() {
@@ -64,7 +60,15 @@ public class VectorOfString {
   }
 
   public void add(String x) {
-    JavaControllerJNI.VectorOfString_add(swigCPtr, this, x);
+    JavaControllerJNI.VectorOfString_add__SWIG_0(swigCPtr, this, x);
+  }
+
+  public boolean contains(String o) {
+    return JavaControllerJNI.VectorOfString_contains(swigCPtr, this, o);
+  }
+
+  public int indexOf(String o) {
+    return JavaControllerJNI.VectorOfString_indexOf(swigCPtr, this, o);
   }
 
   public String get(int i) {
@@ -75,4 +79,12 @@ public class VectorOfString {
     JavaControllerJNI.VectorOfString_set(swigCPtr, this, i, val);
   }
 
+  public void add(int i, String val) {
+    JavaControllerJNI.VectorOfString_add__SWIG_1(swigCPtr, this, i, val);
+  }
+
+  public boolean remove(String val) {
+    return JavaControllerJNI.VectorOfString_remove(swigCPtr, this, val);
+  }
+
 }
index 65d9dc2..ff9a728 100644 (file)
@@ -59,12 +59,12 @@ public class View {
     JavaControllerJNI.View_objectCreated(swigCPtr, this, uid, kind.ordinal());
   }
 
-  public void objectReferenced(long uid, Kind kind) {
-    JavaControllerJNI.View_objectReferenced(swigCPtr, this, uid, kind.ordinal());
+  public void objectReferenced(long uid, Kind kind, long refCount) {
+    JavaControllerJNI.View_objectReferenced(swigCPtr, this, uid, kind.ordinal(), refCount);
   }
 
-  public void objectUnreferenced(long uid, Kind kind) {
-    JavaControllerJNI.View_objectUnreferenced(swigCPtr, this, uid, kind.ordinal());
+  public void objectUnreferenced(long uid, Kind kind, long refCount) {
+    JavaControllerJNI.View_objectUnreferenced(swigCPtr, this, uid, kind.ordinal(), refCount);
   }
 
   public void objectDeleted(long uid, Kind kind) {
index cd83fc3..b886467 100644 (file)
@@ -83,7 +83,7 @@ public final class Xcos {
     /**
      * The current Xcos tradename
      */
-    public static final String TRADENAME = "Xcos";
+    public static final String TRADENAME = Xcos.class.getSimpleName();
     public static final ImageIcon ICON = new ImageIcon(FindIconHelper.findIcon("utilities-system-monitor", "256x256"));
 
     private static final String LOAD_XCOS_LIBS_LOAD_SCICOS = "prot=funcprot(); funcprot(0); loadXcosLibs(); loadScicos(); funcprot(prot); clear prot";
@@ -462,7 +462,7 @@ public final class Xcos {
                     }
 
                     // return now, to avoid tab creation
-                    controller.deleteObject(diag.getUId());
+                    controller.deleteObject(diag.getUID());
                     return;
                 }
             }
@@ -480,7 +480,7 @@ public final class Xcos {
             diag.transformAndLoadFile(controller, file);
 
             if (diag != null) {
-                addDiagram(diag.getUId(), diag);
+                addDiagram(diag.getUID(), diag);
             }
         }
 
@@ -595,9 +595,9 @@ public final class Xcos {
 
         JavaController controller = new JavaController();
         long[] rootDiagram = new long[1];
-        controller.getObjectProperty(graph.getUId(), graph.getKind(), ObjectProperties.PARENT_DIAGRAM, rootDiagram);
+        controller.getObjectProperty(graph.getUID(), graph.getKind(), ObjectProperties.PARENT_DIAGRAM, rootDiagram);
         if (rootDiagram[0] == 0l) {
-            rootDiagram[0] = graph.getUId();
+            rootDiagram[0] = graph.getUID();
         }
 
         final boolean wasLastOpened = openedDiagrams(rootDiagram[0]).size() <= 1;
@@ -644,9 +644,9 @@ public final class Xcos {
     public void destroy(XcosDiagram graph) {
         JavaController controller = new JavaController();
         long[] rootDiagram = new long[1];
-        controller.getObjectProperty(graph.getUId(), graph.getKind(), ObjectProperties.PARENT_DIAGRAM, rootDiagram);
+        controller.getObjectProperty(graph.getUID(), graph.getKind(), ObjectProperties.PARENT_DIAGRAM, rootDiagram);
         if (rootDiagram[0] == 0l) {
-            rootDiagram[0] = graph.getUId();
+            rootDiagram[0] = graph.getUID();
         }
 
         final boolean wasLastOpenedForFile = openedDiagrams(rootDiagram[0]).size() <= 1;
index d4d5d1c..02d30e6 100644 (file)
@@ -314,7 +314,7 @@ public class XcosTab extends SwingScilabDockablePanel implements SimpleTab {
         final XcosTab tab = new XcosTab(graph, uuid);
         ScilabTabFactory.getInstance().addToCache(tab);
 
-        Xcos.getInstance().addDiagram(graph.getUId(), graph);
+        Xcos.getInstance().addDiagram(graph.getUID(), graph);
         graph.setOpened(true);
 
         if (visible) {
index 8787709..c563eeb 100644 (file)
@@ -80,7 +80,7 @@ public class XcosView extends View {
     }
 
     @Override
-    public final void objectReferenced(long uid, Kind kind) {
+    public final void objectReferenced(long uid, Kind kind, long refCount) {
         List<Entry> listeners = registeredListeners.get(kind);
         if (listeners == null) {
             return;
@@ -88,12 +88,12 @@ public class XcosView extends View {
 
         for (Entry e : listeners) {
             if (e.onCallerThread) {
-                e.listener.objectReferenced(uid, kind);
+                e.listener.objectReferenced(uid, kind, refCount);
             } else {
                 SwingUtilities.invokeLater(new Runnable() {
                     @Override
                     public void run() {
-                        e.listener.objectReferenced(uid, kind);
+                        e.listener.objectReferenced(uid, kind, refCount);
                     }
                 });
             }
@@ -101,7 +101,7 @@ public class XcosView extends View {
     }
 
     @Override
-    public final void objectUnreferenced(long uid, Kind kind) {
+    public final void objectUnreferenced(long uid, Kind kind, long refCount) {
         List<Entry> listeners = registeredListeners.get(kind);
         if (listeners == null) {
             return;
@@ -109,12 +109,12 @@ public class XcosView extends View {
 
         for (Entry e : listeners) {
             if (e.onCallerThread) {
-                e.listener.objectUnreferenced(uid, kind);
+                e.listener.objectUnreferenced(uid, kind, refCount);
             } else {
                 SwingUtilities.invokeLater(new Runnable() {
                     @Override
                     public void run() {
-                        e.listener.objectUnreferenced(uid, kind);
+                        e.listener.objectUnreferenced(uid, kind, refCount);
                     }
                 });
             }
@@ -172,44 +172,39 @@ public class XcosView extends View {
      */
 
     public void addXcosViewListener(final XcosViewListener listener) {
-        for (Kind kind : EnumSet.allOf(Kind.class)) {
-            ArrayList<Entry> l = registeredListeners.get(kind);
-            if (l == null) {
-                l = new ArrayList<>();
-                registeredListeners.put(kind, l);
-            }
+        addXcosViewListener(listener, EnumSet.allOf(Kind.class), false, EnumSet.allOf(ObjectProperties.class));
+    }
 
-            l.add(new Entry(false, EnumSet.allOf(ObjectProperties.class), listener));
-        }
+    public void addXcosViewListener(final XcosViewListener listener, final Kind kind) {
+        addXcosViewListener(listener, EnumSet.of(kind), false, EnumSet.allOf(ObjectProperties.class));
     }
 
-    public void addXcosViewListener(final Kind kind, final XcosViewListener listener) {
-        ArrayList<Entry> l = registeredListeners.get(kind);
-        if (l == null) {
-            l = new ArrayList<>();
-            registeredListeners.put(kind, l);
-        }
+    public void addXcosViewListener(final XcosViewListener listener, final Kind kind, final ObjectProperties property) {
+        addXcosViewListener(listener, EnumSet.of(kind), false, EnumSet.of(property));
+    }
 
-        l.add(new Entry(false, EnumSet.allOf(ObjectProperties.class), listener));
+    public void addXcosViewListener(final XcosViewListener listener, boolean onCallerThread) {
+        addXcosViewListener(listener, EnumSet.allOf(Kind.class), onCallerThread, EnumSet.allOf(ObjectProperties.class));
     }
 
-    public void addXcosViewListener(final Kind kind, final ObjectProperties property, final XcosViewListener listener) {
-        ArrayList<Entry> l = registeredListeners.get(kind);
-        if (l == null) {
-            l = new ArrayList<>();
-            registeredListeners.put(kind, l);
-        }
+    public void addXcosViewListener(final XcosViewListener listener, EnumSet<Kind> kinds, boolean onCallerThread, EnumSet<ObjectProperties> properties) {
+        for (Kind kind : kinds) {
+            ArrayList<Entry> l = registeredListeners.get(kind);
+            if (l == null) {
+                l = new ArrayList<>();
+                registeredListeners.put(kind, l);
+            }
 
-        l.add(new Entry(false, EnumSet.of(property), listener));
+            l.add(new Entry(onCallerThread, properties, listener));
+        }
     }
 
-    public void addXcosViewListener(final Kind kind, boolean onCallerThread, final EnumSet<ObjectProperties> properties, final XcosViewListener listener) {
-        ArrayList<Entry> l = registeredListeners.get(kind);
-        if (l == null) {
-            l = new ArrayList<>();
-            registeredListeners.put(kind, l);
+    public void removeXcosViewListener(final XcosViewListener listener) {
+        for (Kind kind : EnumSet.allOf(Kind.class)) {
+            ArrayList<Entry> l = registeredListeners.get(kind);
+            if (l != null) {
+                l.removeIf(e -> e.listener == listener);
+            }
         }
-
-        l.add(new Entry(onCallerThread, properties, listener));
     }
 }
index 1678fc0..dc7558c 100644 (file)
@@ -17,7 +17,7 @@ package org.scilab.modules.xcos;
 public abstract class XcosViewListener {
     public void objectCreated(long uid, Kind kind) {};
     public void objectDeleted(long uid, Kind kind) {};
-    public void objectReferenced(long uid, Kind kind) {};
-    public void objectUnreferenced(long uid, Kind kind) {};
+    public void objectReferenced(long uid, Kind kind, long refCount) {};
+    public void objectUnreferenced(long uid, Kind kind, long refCount) {};
     public void propertyUpdated(long uid, Kind kind, ObjectProperties property, UpdateStatus status) {};
 }
index 204cf58..4b9aead 100644 (file)
@@ -152,10 +152,10 @@ public final class ExportAllAction extends DefaultAction {
             diagrams.add(graph);
 
             // append the already allocated diagram
-            diagrams.addAll(Xcos.getInstance().getDiagrams(graph.getUId()));
+            diagrams.addAll(Xcos.getInstance().getDiagrams(graph.getUID()));
 
             ArrayList<Long> stash = new ArrayList<>();
-            allocateDiagrams(controller, diagrams, stash, graph.getUId(), Kind.DIAGRAM);
+            allocateDiagrams(controller, diagrams, stash, graph.getUID(), Kind.DIAGRAM);
             while (!stash.isEmpty()) {
                 final long uid = stash.remove(stash.size() - 1);
                 allocateDiagrams(controller, diagrams, stash, uid, Kind.BLOCK);
@@ -193,7 +193,7 @@ public final class ExportAllAction extends DefaultAction {
                 }
 
 
-                if (diagrams.stream().noneMatch(d -> d.getUId() == currentUID)) {
+                if (diagrams.stream().noneMatch(d -> d.getUID() == currentUID)) {
                     final XcosDiagram child = new XcosDiagram(currentUID, Kind.BLOCK);
                     diagrams.add(child);
                     stash.add(currentUID);
index a042550..27f27e3 100644 (file)
@@ -26,6 +26,7 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
 
+import org.apache.batik.css.engine.StyleMap;
 import org.scilab.modules.action_binding.InterpreterManagement;
 import org.scilab.modules.graph.ScilabGraph;
 import org.scilab.modules.graph.ScilabGraphUniqueObject;
@@ -66,6 +67,7 @@ import org.scilab.modules.xcos.block.actions.alignement.AlignBlockActionMiddle;
 import org.scilab.modules.xcos.block.actions.alignement.AlignBlockActionRight;
 import org.scilab.modules.xcos.block.actions.alignement.AlignBlockActionTop;
 import org.scilab.modules.xcos.graph.XcosDiagram;
+import org.scilab.modules.xcos.graph.model.XcosCell;
 import org.scilab.modules.xcos.io.scicos.BasicBlockInfo;
 import org.scilab.modules.xcos.port.BasicPort;
 import org.scilab.modules.xcos.port.command.CommandPort;
@@ -83,7 +85,7 @@ import com.mxgraph.model.mxICell;
  * A block on the diagram
  */
 @SuppressWarnings(value = { "serial" })
-public class BasicBlock extends ScilabGraphUniqueObject implements Serializable {
+public class BasicBlock extends XcosCell implements Serializable {
     /**
      * Sorted kind of input, useful to sort them by kind
      */
@@ -183,7 +185,6 @@ public class BasicBlock extends ScilabGraphUniqueObject implements Serializable
     }
 
     private boolean locked;
-    private final long uid;
 
     /**
      * Represent a simulation function type compatible with Scilab/Scicos
@@ -263,11 +264,15 @@ public class BasicBlock extends ScilabGraphUniqueObject implements Serializable
         }
     };
 
+    public BasicBlock(long uid) {
+        this(uid, Kind.BLOCK);
+    }
+
     /**
      * Default constructor.
      */
-    public BasicBlock(long uid) {
-        super();
+    public BasicBlock(long uid, Kind kind) {
+        super(uid, kind);
 
         /*
          * Default parameters for blocks
@@ -276,15 +281,6 @@ public class BasicBlock extends ScilabGraphUniqueObject implements Serializable
         this.vertex = true;
         this.connectable = false;
         this.geometry = new mxGeometry(DEFAULT_POSITION_X, DEFAULT_POSITION_Y, DEFAULT_WIDTH, DEFAULT_HEIGHT);
-
-        this.uid = uid;
-    }
-
-    /**
-     * @return associated MVC ID
-     */
-    public long getUID() {
-        return uid;
     }
 
     /**
@@ -315,7 +311,7 @@ public class BasicBlock extends ScilabGraphUniqueObject implements Serializable
          */
         XcosDiagram diagram;
         Collection<XcosDiagram> diagrams = Xcos.getInstance().getDiagrams(parentDiagram[0]);
-        Optional<XcosDiagram> optDiagram = diagrams.stream().filter(d -> d.getUId() == parent).findFirst();
+        Optional<XcosDiagram> optDiagram = diagrams.stream().filter(d -> d.getUID() == parent).findFirst();
         if (optDiagram.isPresent()) {
             diagram = optDiagram.get();
         } else {
@@ -880,23 +876,4 @@ public class BasicBlock extends ScilabGraphUniqueObject implements Serializable
 
         return super.insert(child, index);
     }
-
-    @Override
-    public String toString() {
-        final StringBuilder str = new StringBuilder();
-
-        JavaController controller = new JavaController();
-
-        String[] interfaceFunction = new String[1];
-        controller.getObjectProperty(uid, Kind.BLOCK, ObjectProperties.INTERFACE_FUNCTION, interfaceFunction);
-
-        str.append(interfaceFunction[0]);
-        str.append("\n");
-        for (Object c : children) {
-            str.append(c);
-            str.append("\n");
-        }
-
-        return str.toString();
-    }
 }
index 4833387..29aebec 100644 (file)
@@ -33,8 +33,9 @@ public final class TextBlock extends BasicBlock {
      * Default constructor
      */
     public TextBlock(long uid) {
-        super(uid);
+        super(uid, Kind.ANNOTATION);
 
+        setStyle("TEXT_f");
         setValue(XcosMessages.DOTS);
     }
 
@@ -51,12 +52,7 @@ public final class TextBlock extends BasicBlock {
     }
 
     @Override
-    public void setValue(Object value) {
-        if (value != null) {
-            JavaController controller = new JavaController();
-            controller.setObjectProperty(getUID(), Kind.ANNOTATION, ObjectProperties.DESCRIPTION, value.toString());
-        }
-
-        super.setValue(value);
+    public String getToolTipText() {
+        return String.valueOf(getValue());
     }
 }
index 9ff539f..7634fdb 100644 (file)
@@ -77,10 +77,10 @@ public class ShowParentAction extends DefaultAction {
             JavaController controller = new JavaController();
             long[] parent = new long[1];
             Kind kind = Kind.BLOCK;
-            controller.getObjectProperty(graph.getUId(), kind, ObjectProperties.PARENT_BLOCK, parent);
+            controller.getObjectProperty(graph.getUID(), kind, ObjectProperties.PARENT_BLOCK, parent);
             if (parent[0] == 0) {
                 kind = Kind.DIAGRAM;
-                controller.getObjectProperty(graph.getUId(), kind, ObjectProperties.PARENT_DIAGRAM, parent);
+                controller.getObjectProperty(graph.getUID(), kind, ObjectProperties.PARENT_DIAGRAM, parent);
             }
 
             XcosView view = (XcosView) JavaController.lookup_view(Xcos.class.getSimpleName());
index c2b1256..21d522e 100644 (file)
@@ -411,7 +411,7 @@ public final class ConfigurationManager {
                 filetype.load(filename, graph);
                 graph.postLoad(f);
             }
-            Xcos.getInstance().addDiagram(graph.getUId(), graph);
+            Xcos.getInstance().addDiagram(graph.getUID(), graph);
 
             graph = loadPath(doc, graph);
 
@@ -478,7 +478,7 @@ public final class ConfigurationManager {
         long[] parent = new long[1];
         String[] parentUID = new String[1];
 
-        controller.getObjectProperty(graph.getUId(), Kind.BLOCK, ObjectProperties.PARENT_BLOCK, parent);
+        controller.getObjectProperty(graph.getUID(), Kind.BLOCK, ObjectProperties.PARENT_BLOCK, parent);
         while (parent[0] != 0l) {
             controller.getObjectProperty(parent[0], Kind.BLOCK, ObjectProperties.UID, parentUID);
             elements.add(parentUID[0]);
index dccbd02..b9f9765 100644 (file)
@@ -45,8 +45,8 @@ public final class DiagramComparator implements Comparator<XcosDiagram> {
 
     @Override
     public int compare(final XcosDiagram o1, final XcosDiagram o2) {
-        long[] o1Parent = new long[] { o1.getUId() };
-        long[] o2Parent = new long[] { o2.getUId() };
+        long[] o1Parent = new long[] { o1.getUID() };
+        long[] o2Parent = new long[] { o2.getUID() };
         JavaController controller = new JavaController();
 
         int o1Relative = 0;
index 97f8923..864f1c5 100644 (file)
@@ -49,7 +49,8 @@ public class PaletteDiagram extends XcosDiagram {
     public PaletteDiagram(long uid) {
         super(uid, Kind.DIAGRAM);
         setComponent(new PaletteComponent(this));
-        installStylesheet();
+
+        setTitle(PaletteDiagram.class.getName());
 
         setCellsLocked(true);
         setGridVisible(false);
index 6cc6e44..6675f1a 100644 (file)
@@ -20,7 +20,6 @@ import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
 import java.io.File;
 import java.io.IOException;
-import java.rmi.server.UID;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -55,6 +54,7 @@ import org.scilab.modules.xcos.Kind;
 import org.scilab.modules.xcos.ObjectProperties;
 import org.scilab.modules.xcos.VectorOfDouble;
 import org.scilab.modules.xcos.VectorOfInt;
+import org.scilab.modules.xcos.VectorOfScicosID;
 import org.scilab.modules.xcos.Xcos;
 import org.scilab.modules.xcos.XcosTab;
 import org.scilab.modules.xcos.actions.SaveAsAction;
@@ -71,6 +71,7 @@ import org.scilab.modules.xcos.block.io.ExplicitOutBlock;
 import org.scilab.modules.xcos.block.io.ImplicitInBlock;
 import org.scilab.modules.xcos.block.io.ImplicitOutBlock;
 import org.scilab.modules.xcos.configuration.ConfigurationManager;
+import org.scilab.modules.xcos.graph.model.XcosCell;
 import org.scilab.modules.xcos.graph.swing.GraphComponent;
 import org.scilab.modules.xcos.io.XcosFileType;
 import org.scilab.modules.xcos.link.BasicLink;
@@ -105,7 +106,6 @@ import com.mxgraph.util.mxUndoableEdit;
 import com.mxgraph.util.mxUndoableEdit.mxUndoableChange;
 import com.mxgraph.view.mxGraphSelectionModel;
 import com.mxgraph.view.mxMultiplicity;
-import com.mxgraph.view.mxStylesheet;
 
 /**
  * The base class for a diagram. This class contains jgraphx + Scicos data.
@@ -149,7 +149,7 @@ public class XcosDiagram extends ScilabGraph {
      * @param withVisibleFeatures true if the visible features should be activated, false otherwise. Disable it on encode/decode leads to a huge performance gain.
      */
     public XcosDiagram(final long diagramId, final Kind kind) {
-        super();
+        super(new mxGraphModel(), Xcos.getInstance().getStyleSheet());
 
         this.uid = diagramId;
         this.kind = kind;
@@ -162,9 +162,11 @@ public class XcosDiagram extends ScilabGraph {
             scicosParameters = null;
         }
 
+        XcosCell parent = new XcosCell(this.uid, this.kind);
+        getModel().add(getModel().getRoot(), parent, 0);
+        setDefaultParent(parent);
         setComponent(new GraphComponent(this));
         initComponent();
-        installStylesheet();
 
         // Forbid disconnecting cells once it is connected.
         setCellsDisconnectable(false);
@@ -201,9 +203,6 @@ public class XcosDiagram extends ScilabGraph {
         setMultiplicities();
 
         setAutoOrigin(true);
-
-        ((mxCell) getDefaultParent()).setId((new UID()).toString());
-        ((mxCell) getModel().getRoot()).setId((new UID()).toString());
     }
 
     /*
@@ -643,12 +642,14 @@ public class XcosDiagram extends ScilabGraph {
             BasicPort src = (BasicPort) source;
             BasicLink link = null;
 
+            JavaController controller = new JavaController();
+            long uid = controller.createObject(Kind.LINK);
             if (src.getType() == Type.EXPLICIT) {
-                link = new ExplicitLink();
+                link = new ExplicitLink(uid);
             } else if (src.getType() == Type.IMPLICIT) {
-                link = new ImplicitLink();
+                link = new ImplicitLink(uid);
             } else {
-                link = new CommandControlLink();
+                link = new CommandControlLink(uid);
             }
 
             // allocate the associated geometry
@@ -994,14 +995,6 @@ public class XcosDiagram extends ScilabGraph {
     }
 
     /**
-     * Install the default style sheet and the user stylesheet on the diagram.
-     */
-    public void installStylesheet() {
-        final mxStylesheet styleSheet = Xcos.getInstance().getStyleSheet();
-        setStylesheet(styleSheet);
-    }
-
-    /**
      * Install the multiplicities (use for link checking)
      */
     private void setMultiplicities() {
@@ -1634,7 +1627,7 @@ public class XcosDiagram extends ScilabGraph {
     /**
      * @return the model ID
      */
-    public long getUId() {
+    public long getUID() {
         return uid;
     }
 
@@ -1814,6 +1807,9 @@ public class XcosDiagram extends ScilabGraph {
     public void setTitle(final String title) {
         super.setTitle(title);
         updateTabTitle();
+
+        JavaController controller = new JavaController();
+        controller.setObjectProperty(getUID(), getKind(), ObjectProperties.TITLE, title);
     }
 
     /**
@@ -1949,7 +1945,7 @@ public class XcosDiagram extends ScilabGraph {
         controller.getObjectProperty(uid, kind, ObjectProperties.PARENT_DIAGRAM, parent);
 
         Collection<XcosDiagram> diagrams = Xcos.getInstance().getDiagrams(parent[0]);
-        return diagrams.stream().filter(d -> d.getUId() == parent[0])
+        return diagrams.stream().filter(d -> d.getUID() == parent[0])
                .findFirst().get();
     }
 
diff --git a/scilab/modules/xcos/src/java/org/scilab/modules/xcos/graph/model/XcosCell.java b/scilab/modules/xcos/src/java/org/scilab/modules/xcos/graph/model/XcosCell.java
new file mode 100644 (file)
index 0000000..de4d55f
--- /dev/null
@@ -0,0 +1,384 @@
+package org.scilab.modules.xcos.graph.model;
+
+import org.scilab.modules.graph.ScilabGraphUniqueObject;
+import org.scilab.modules.xcos.JavaController;
+import org.scilab.modules.xcos.Kind;
+import org.scilab.modules.xcos.ObjectProperties;
+import org.scilab.modules.xcos.PortKind;
+import org.scilab.modules.xcos.VectorOfDouble;
+import org.scilab.modules.xcos.VectorOfScicosID;
+
+import com.mxgraph.model.mxGeometry;
+import com.mxgraph.model.mxICell;
+
+
+public class XcosCell extends ScilabGraphUniqueObject {
+    private static final long serialVersionUID = 1L;
+
+    private long uid;
+    private Kind kind;
+
+    /**
+     * Construct an Xcos graphical object.
+     *
+     * This Java object owns the corresponding MVC object and thus will unrefererence it on GC.
+     *
+     * @param uid the associated MVC identifier
+     * @param kind the associated MVC kind
+     */
+    public XcosCell(long uid, Kind kind) {
+        this.uid = uid;
+        this.kind = kind;
+    }
+
+    /**
+     * @return the MVC unique identifier
+     */
+    public long getUID() {
+        return uid;
+    }
+
+    /**
+     * @return the MVC kind of object
+     */
+    public Kind getKind() {
+        return kind;
+    }
+
+    /*
+     * Override setters and hierarchy modifiers to propagate changes to the model
+     */
+
+    /* (non-Javadoc)
+     * @see com.mxgraph.model.mxCell#setValue(java.lang.Object)
+     */
+    @Override
+    public void setValue(Object value) {
+        super.setValue(value);
+        if (getKind() == null) {
+            return;
+        }
+
+        JavaController controller = new JavaController();
+        switch (getKind()) {
+            case ANNOTATION:
+                controller.setObjectProperty(getUID(), getKind(), ObjectProperties.DESCRIPTION, String.valueOf(value));
+                break;
+            case BLOCK:
+            case LINK:
+            case PORT:
+                controller.setObjectProperty(getUID(), getKind(), ObjectProperties.LABEL, String.valueOf(value));
+                break;
+            default:
+                break;
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see com.mxgraph.model.mxCell#setId(java.lang.String)
+     */
+    @Override
+    public void setId(String id) {
+        super.setId(id);
+
+        JavaController controller = new JavaController();
+        switch (getKind()) {
+            case BLOCK:
+                controller.setObjectProperty(getUID(), getKind(), ObjectProperties.UID, id);
+                break;
+            default:
+                break;
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see com.mxgraph.model.mxCell#setGeometry(com.mxgraph.model.mxGeometry)
+     */
+    @Override
+    public void setGeometry(mxGeometry geometry) {
+        super.setGeometry(geometry);
+        if (getKind() == null) {
+            return;
+        }
+
+        JavaController controller = new JavaController();
+        switch (getKind()) {
+            case ANNOTATION:
+            case BLOCK: {
+                VectorOfDouble v = new VectorOfDouble(4);
+                v.set(0, geometry.getX());
+                v.set(1, geometry.getY());
+                v.set(2, geometry.getWidth());
+                v.set(3, geometry.getHeight());
+                controller.setObjectProperty(getUID(), getKind(), ObjectProperties.GEOMETRY, v);
+                break;
+            }
+            case LINK: {
+                VectorOfDouble v = new VectorOfDouble(4);
+                v.set(0, geometry.getX());
+                v.set(1, geometry.getY());
+                v.set(2, geometry.getWidth());
+                v.set(3, geometry.getHeight());
+                controller.setObjectProperty(getUID(), getKind(), ObjectProperties.GEOMETRY, v);
+                break;
+            }
+            default:
+                break;
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see com.mxgraph.model.mxCell#setStyle(java.lang.String)
+     */
+    @Override
+    public void setStyle(String style) {
+        super.setStyle(style);
+        if (getKind() == null) {
+            return;
+        }
+
+        JavaController controller = new JavaController();
+        switch (getKind()) {
+            case ANNOTATION:
+            case BLOCK:
+            case PORT:
+                controller.setObjectProperty(getUID(), getKind(), ObjectProperties.STYLE, String.valueOf(value));
+                break;
+            default:
+                break;
+        }
+
+    }
+
+    /* (non-Javadoc)
+     * @see com.mxgraph.model.mxCell#setParent(com.mxgraph.model.mxICell)
+     */
+    @Override
+    public void setParent(mxICell parent) {
+        super.setParent(parent);
+
+        if (parent instanceof XcosCell) {
+            XcosCell p = (XcosCell) parent;
+            JavaController controller = new JavaController();
+            switch (getKind()) {
+                case ANNOTATION:
+                case BLOCK:
+                case LINK:
+                    if (p.getKind() == Kind.DIAGRAM) {
+                        controller.setObjectProperty(getUID(), getKind(), ObjectProperties.PARENT_DIAGRAM, p.getUID());
+                    } else {
+                        controller.setObjectProperty(getUID(), getKind(), ObjectProperties.PARENT_BLOCK, p.getUID());
+
+                        long[] root = new long[1];
+                        controller.getObjectProperty(p.getUID(), p.getKind(), ObjectProperties.PARENT_DIAGRAM, root);
+                        controller.setObjectProperty(getUID(), getKind(), ObjectProperties.PARENT_DIAGRAM, root[0]);
+                    }
+                    break;
+                case PORT:
+                    controller.setObjectProperty(getUID(), getKind(), ObjectProperties.SOURCE_BLOCK, p.getUID());
+                    break;
+                default:
+                    break;
+            }
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see com.mxgraph.model.mxCell#setSource(com.mxgraph.model.mxICell)
+     */
+    @Override
+    public void setSource(mxICell source) {
+        super.setSource(source);
+
+        // a source of an XcosCell is always another XcosCell
+        XcosCell s = (XcosCell) source;
+        JavaController controller = new JavaController();
+        switch (getKind()) {
+            case LINK:
+                controller.setObjectProperty(getUID(), getKind(), ObjectProperties.SOURCE_PORT, s.getUID());
+                break;
+            default:
+                break;
+        }
+
+    }
+
+    /* (non-Javadoc)
+     * @see com.mxgraph.model.mxCell#setTarget(com.mxgraph.model.mxICell)
+     */
+    @Override
+    public void setTarget(mxICell target) {
+        super.setTarget(target);
+
+        // a target of an XcosCell is always another XcosCell
+        XcosCell t = (XcosCell) target;
+        JavaController controller = new JavaController();
+        switch (getKind()) {
+            case LINK:
+                controller.setObjectProperty(getUID(), getKind(), ObjectProperties.DESTINATION_PORT, t.getUID());
+                break;
+            default:
+                break;
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see com.mxgraph.model.mxCell#insert(com.mxgraph.model.mxICell, int)
+     */
+    @Override
+    public mxICell insert(mxICell child, int index) {
+        mxICell inserted = super.insert(child, index);
+
+        // the child might not be an XcosCell but just an mxCell label
+        if (child instanceof XcosCell) {
+            XcosCell c = (XcosCell) child;
+            switch (getKind()) {
+                case BLOCK:
+                    if (c.getKind() == Kind.PORT) {
+                        insertPort(c, index);
+                    } else {
+                        insertChild(c, index);
+                    }
+                    break;
+                case DIAGRAM:
+                    insertChild(c, index);
+                    break;
+                default:
+                    break;
+            }
+
+            JavaController controller = new JavaController();
+            controller.referenceObject(c.getUID());
+
+        }
+
+        return inserted;
+    }
+
+    private void insertPort(XcosCell c, int index) {
+        JavaController controller = new JavaController();
+        int[] v = new int[1];
+        controller.getObjectProperty(c.getUID(), c.getKind(), ObjectProperties.PORT_KIND, v);
+
+        VectorOfScicosID children = new VectorOfScicosID();
+        final ObjectProperties property;
+        switch (PortKind.values()[v[0]]) {
+            case PORT_IN:
+                property = ObjectProperties.INPUTS;
+                break;
+            case PORT_OUT:
+                property = ObjectProperties.OUTPUTS;
+                break;
+            case PORT_EIN:
+                property = ObjectProperties.EVENT_INPUTS;
+                break;
+            case PORT_EOUT:
+                property = ObjectProperties.EVENT_OUTPUTS;
+                break;
+            default:
+                property = null;
+                break;
+        }
+
+        // FIXME manage the index argument
+        if (property != null) {
+            controller.getObjectProperty(getUID(), getKind(), property, children);
+            children.add(c.getUID());
+            controller.setObjectProperty(getUID(), getKind(), property, children);
+        }
+    }
+
+    private void insertChild(XcosCell c, int index) {
+        JavaController controller = new JavaController();
+        VectorOfScicosID children = new VectorOfScicosID();
+
+        controller.getObjectProperty(getUID(), getKind(), ObjectProperties.CHILDREN, children);
+        children.add(index, c.getUID());
+        controller.setObjectProperty(getUID(), getKind(), ObjectProperties.CHILDREN, children);
+    }
+
+    /* (non-Javadoc)
+     * @see com.mxgraph.model.mxCell#remove(com.mxgraph.model.mxICell)
+     */
+    @Override
+    public mxICell remove(mxICell child) {
+        mxICell removed = super.remove(child);
+
+        // the child might not be an XcosCell but just an mxCell label
+        if (child instanceof XcosCell) {
+            XcosCell c = (XcosCell) child;
+            switch (getKind()) {
+                case BLOCK:
+                    if (c.getKind() == Kind.PORT) {
+                        removePort(c);
+                    } else {
+                        removeChild(c);
+                    }
+                    break;
+                case DIAGRAM:
+                    removeChild(c);
+                    break;
+                default:
+                    break;
+            }
+
+            JavaController controller = new JavaController();
+            controller.deleteObject(c.getUID());
+        }
+        return removed;
+    }
+
+    private void removePort(XcosCell c) {
+        JavaController controller = new JavaController();
+        int[] v = new int[1];
+        controller.getObjectProperty(c.getUID(), c.getKind(), ObjectProperties.PORT_KIND, v);
+
+        VectorOfScicosID children = new VectorOfScicosID();
+        final ObjectProperties property;
+        switch (PortKind.values()[v[0]]) {
+            case PORT_IN:
+                property = ObjectProperties.INPUTS;
+                break;
+            case PORT_OUT:
+                property = ObjectProperties.OUTPUTS;
+                break;
+            case PORT_EIN:
+                property = ObjectProperties.EVENT_INPUTS;
+                break;
+            case PORT_EOUT:
+                property = ObjectProperties.EVENT_OUTPUTS;
+                break;
+            default:
+                property = null;
+                break;
+        }
+
+        controller.getObjectProperty(getUID(), getKind(), property, children);
+        children.remove(c.getUID());
+        controller.setObjectProperty(getUID(), getKind(), property, children);
+    }
+
+    private void removeChild(XcosCell c) {
+        JavaController controller = new JavaController();
+        VectorOfScicosID children = new VectorOfScicosID();
+
+        controller.getObjectProperty(getUID(), getKind(), ObjectProperties.CHILDREN, children);
+        children.remove(c.getUID());
+        controller.setObjectProperty(getUID(), getKind(), ObjectProperties.CHILDREN, children);
+
+    }
+
+    @Override
+    public Object clone() throws CloneNotSupportedException {
+        JavaController controller = new JavaController();
+        XcosCell c = (XcosCell) super.clone();
+        c.uid = controller.cloneObject(getUID(), false);
+        c.kind = getKind();
+        return c;
+    }
+
+    protected void finalize() throws Throwable {
+        JavaController controller = new JavaController();
+        controller.deleteObject(getUID());
+    }
+}
index deb6022..7e05c20 100644 (file)
@@ -21,6 +21,8 @@ import java.util.logging.Logger;
 import javax.swing.SwingUtilities;
 
 import org.scilab.modules.graph.ScilabGraph;
+import org.scilab.modules.xcos.JavaController;
+import org.scilab.modules.xcos.Kind;
 import org.scilab.modules.xcos.block.BasicBlock;
 import org.scilab.modules.xcos.block.BlockFactory;
 import org.scilab.modules.xcos.block.BlockFactory.BlockInterFunction;
@@ -136,7 +138,8 @@ public class GraphHandler extends mxGraphHandler {
      */
     private void createTextBlock(MouseEvent e) {
         // allocate
-        final TextBlock textBlock = (TextBlock) BlockFactory.createBlock(BlockInterFunction.TEXT_f);
+        JavaController controller = new JavaController();
+        final TextBlock textBlock = (TextBlock) BlockFactory.createBlock(BlockInterFunction.TEXT_f, controller.createObject(Kind.ANNOTATION));
 
         // set the position of the block
         final mxPoint pt = graphComponent.getPointForEvent(e);
index 83cccf4..74b1746 100644 (file)
@@ -31,13 +31,13 @@ public class BasicLinkCodec extends XcosObjectCodec {
 
     public static void register() {
         BasicLinkCodec explicitlinkCodec = new BasicLinkCodec(
-            new ExplicitLink(), null, REFS, null);
+            new ExplicitLink(0l), null, REFS, null);
         mxCodecRegistry.register(explicitlinkCodec);
         BasicLinkCodec implicitlinkCodec = new BasicLinkCodec(
-            new ImplicitLink(), null, REFS, null);
+            new ImplicitLink(0l), null, REFS, null);
         mxCodecRegistry.register(implicitlinkCodec);
         BasicLinkCodec commandControllinkCodec = new BasicLinkCodec(
-            new CommandControlLink(), null, REFS, null);
+            new CommandControlLink(0l), null, REFS, null);
         mxCodecRegistry.register(commandControllinkCodec);
     }
 
index 94e5445..6d9d4c8 100644 (file)
@@ -19,23 +19,19 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.scilab.modules.graph.ScilabGraph;
-import org.scilab.modules.graph.ScilabGraphUniqueObject;
 import org.scilab.modules.graph.actions.DeleteAction;
 import org.scilab.modules.gui.bridge.contextmenu.SwingScilabContextMenu;
 import org.scilab.modules.gui.contextmenu.ContextMenu;
 import org.scilab.modules.gui.contextmenu.ScilabContextMenu;
 import org.scilab.modules.gui.menu.Menu;
 import org.scilab.modules.gui.menu.ScilabMenu;
+import org.scilab.modules.xcos.Kind;
 import org.scilab.modules.xcos.actions.EditFormatAction;
 import org.scilab.modules.xcos.block.actions.BorderColorAction;
+import org.scilab.modules.xcos.graph.model.XcosCell;
 import org.scilab.modules.xcos.link.actions.StyleHorizontalAction;
 import org.scilab.modules.xcos.link.actions.StyleStraightAction;
 import org.scilab.modules.xcos.link.actions.StyleVerticalAction;
-import org.scilab.modules.xcos.link.commandcontrol.CommandControlLink;
-import org.scilab.modules.xcos.link.explicit.ExplicitLink;
-import org.scilab.modules.xcos.link.implicit.ImplicitLink;
-import org.scilab.modules.xcos.port.BasicPort;
-import org.scilab.modules.xcos.port.BasicPort.Type;
 import org.scilab.modules.xcos.preferences.XcosOptions;
 import org.scilab.modules.xcos.utils.XcosMessages;
 
@@ -50,7 +46,7 @@ import com.mxgraph.util.mxRectangle;
  * A link is always oriented from Input to Output or from Command to Control.
  */
 // CSOFF: ClassDataAbstractionCoupling
-public abstract class BasicLink extends ScilabGraphUniqueObject {
+public abstract class BasicLink extends XcosCell {
     private static final mxGeometry DEFAULT_GEOMETRY = new mxGeometry(0, 0, 80, 80);
     private static final int DETECTION_RECTANGLE_DIMENSION = 10;
     private transient int ordering;
@@ -61,8 +57,8 @@ public abstract class BasicLink extends ScilabGraphUniqueObject {
      * @param style
      *            The style to use for this link
      */
-    public BasicLink(String style) {
-        super();
+    public BasicLink(long uid, String style) {
+        super(uid, Kind.LINK);
         setVertex(false);
         setEdge(true);
         setStyle(style + XcosOptions.getEdition().getEdgeStyle());
@@ -295,43 +291,6 @@ public abstract class BasicLink extends ScilabGraphUniqueObject {
         menu.setVisible(true);
     }
 
-    /**
-     * Create a typed link
-     *
-     * @param from
-     *            The source
-     * @param to
-     *            The target
-     * @return The new link
-     * @deprecated Prefer using
-     *             {@link org.scilab.modules.xcos.graph.XcosDiagram#createEdge(Object, String, Object, Object, Object, String)}
-     */
-    @Deprecated
-    public static BasicLink createLinkFromPorts(BasicPort from, BasicPort to) {
-        // Pre-conditions
-        if (to == null || from == null) {
-            throw new NullPointerException();
-        }
-
-        BasicLink instance;
-
-        boolean isFromImplicit = (from.getType() == Type.IMPLICIT);
-        boolean isToImplicit = (to.getType() == Type.IMPLICIT);
-
-        boolean isFromExplicit = (from.getType() == Type.EXPLICIT);
-        boolean isToExplicit = (to.getType() == Type.EXPLICIT);
-
-        if (isFromImplicit && isToImplicit) {
-            instance = new ImplicitLink();
-        } else if (isFromExplicit && isToExplicit) {
-            instance = new ExplicitLink();
-        } else {
-            instance = new CommandControlLink();
-        }
-
-        return instance;
-    }
-
     /** Invert the source and target of the link */
     public void invertDirection() {
         // invert source and destination and all points.
index 009fb22..1a39eda 100644 (file)
@@ -27,8 +27,8 @@ public class CommandControlLink extends BasicLink {
     private static final double[][] COLOR_AND_TYPE = { { 5.0, -1.0 } };
 
     /** Default constructor */
-    public CommandControlLink() {
-        super("CommandControlLink");
+    public CommandControlLink(long uid) {
+        super(uid, "CommandControlLink");
     }
 
     /** @return A red colored activation link identifier */
index 2fa1592..b969ffb 100644 (file)
@@ -27,8 +27,8 @@ public class ExplicitLink extends BasicLink {
     private static final double[][] COLOR_AND_TYPE = { { 1.0, 1.0 } };
 
     /** Default constructor */
-    public ExplicitLink() {
-        super("ExplicitLink");
+    public ExplicitLink(long uid) {
+        super(uid, "ExplicitLink");
     }
 
     /** @return A black colored explicit link identifier */
index fe21e6d..b200430 100644 (file)
@@ -27,8 +27,8 @@ public class ImplicitLink extends BasicLink {
     private static final double[][] COLOR_AND_TYPE = { { 1.0, 2.0 } };
 
     /** Default constructor */
-    public ImplicitLink() {
-        super("ImplicitLink");
+    public ImplicitLink(long uid) {
+        super(uid, "ImplicitLink");
     }
 
     /** @return A red colored implicit link identifier */
index 21e1455..fd67321 100644 (file)
@@ -556,6 +556,6 @@ public final class Palette {
         ImageIO.write(image, extension, new File(iconPath));
 
 
-        controller.deleteObject(graph.getUId());
+        controller.deleteObject(graph.getUID());
     }
 }
index 1f0e6f1..c9ce84f 100644 (file)
@@ -12,7 +12,6 @@
 
 package org.scilab.modules.xcos.port;
 
-import org.scilab.modules.graph.ScilabGraphUniqueObject;
 import org.scilab.modules.graph.utils.ScilabGraphConstants;
 import org.scilab.modules.graph.utils.StyleMap;
 import org.scilab.modules.types.ScilabType;
@@ -20,6 +19,7 @@ import org.scilab.modules.xcos.JavaController;
 import org.scilab.modules.xcos.Kind;
 import org.scilab.modules.xcos.ObjectProperties;
 import org.scilab.modules.xcos.block.BasicBlock;
+import org.scilab.modules.xcos.graph.model.XcosCell;
 import org.scilab.modules.xcos.utils.XcosConstants;
 import org.scilab.modules.xcos.utils.XcosMessages;
 
@@ -30,14 +30,13 @@ import com.mxgraph.util.mxConstants;
 /**
  * Common implementation of any Port.
  */
-public abstract class BasicPort extends ScilabGraphUniqueObject {
+public abstract class BasicPort extends XcosCell {
 
     /**
      * The side-size of any port. All ports must have the same size.
      */
     public static final double DEFAULT_PORTSIZE = 8;
 
-    private final long uid;
     private int ordering;
     private Orientation orientation;
 
@@ -122,20 +121,12 @@ public abstract class BasicPort extends ScilabGraphUniqueObject {
      *            Value to be set as a Style and as TypeName
      */
     public BasicPort(long uid) {
-        super();
-        this.uid = uid;
+        super(uid, Kind.PORT);
         setVertex(true);
         setGeometry(new mxGeometry(0, 0, DEFAULT_PORTSIZE, DEFAULT_PORTSIZE));
     }
 
     /**
-     * @return the port uid
-     */
-    public long getUID() {
-        return uid;
-    }
-
-    /**
      * @param ordering
      *            a unique order number per instance
      */
index 6f1f446..f7f766c 100644 (file)
@@ -471,6 +471,10 @@ public final class BlockPositioning {
      *            The block to work on
      */
     public static void updateBlockView(BasicBlock block) {
+        if (block.getKind() != Kind.BLOCK) {
+            return;
+        }
+
         beginUpdate(block);
         updatePortsPosition(block);
         rotateAllPorts(block);
index 837f010..6220bb9 100644 (file)
@@ -62,6 +62,6 @@ public class XcosDelegates {
         final BufferedImage image = new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB);
         ImageIO.write(image, "png", imageFile);
 
-        controller.deleteObject(diag.getUId());
+        controller.deleteObject(diag.getUID());
     }
 }
index f77f1b5..d8e96a0 100644 (file)
@@ -18,6 +18,8 @@
 %module(director="1") JavaController;
 
 %{
+#include <iterator>
+#include <algorithm>
 #include <vector>
 #include <string>
 
 %}
 
 %include <enums.swg>
+%include <std_common.i>
 %include <typemaps.i>
-%include <std_vector.i>
 %include <std_string.i>
 
 /*
+ * Inline std_vector.i and add insert and remove methods
+ */
+namespace std {
+    
+    template<class T> class vector {
+      public:
+        typedef size_t size_type;
+        typedef T value_type;
+        typedef const value_type& const_reference;
+        vector();
+        vector(size_type n);
+        %rename(ensureCapacity) reserve;
+        void reserve(size_type n);
+        int size() const;
+        %rename(isEmpty) empty;
+        bool empty() const;
+        void clear();
+        %rename(add) push_back;
+        void push_back(const value_type& x);
+        %extend {
+            bool contains(const T& o) {
+               return std::find(self->begin(), self->end(), o) != self->end();
+            }
+            int indexOf(const T& o) {
+               auto it = std::find(self->begin(), self->end(), o);
+               if (it != self->end())
+                   return std::distance(self->begin(), it);
+               else
+                   return -1;
+            }
+            const_reference get(int i) throw (std::out_of_range) {
+                int size = int(self->size());
+                if (i>=0 && i<size)
+                    return (*self)[i];
+                else
+                    throw std::out_of_range("vector index out of range");
+            }
+            void set(int i, const value_type& val) throw (std::out_of_range) {
+                int size = int(self->size());
+                if (i>=0 && i<size)
+                    (*self)[i] = val;
+                else
+                    throw std::out_of_range("vector index out of range");
+            }
+            void add(int i, const value_type& val) throw (std::out_of_range) {
+                int size = int(self->size());
+                if (i>=0 && i<=size)
+                    self->insert(self->begin() + i, val);
+                else
+                    throw std::out_of_range("vector index out of range");
+            }
+            bool remove(const value_type& val) {
+                auto it = std::find(self->begin(), self->end(), val);
+                if (it == self->end())
+                    return false;
+                else
+                    self->erase(it);
+                return true;
+            }
+        }
+    };
+
+    // bool specialization
+    template<> class vector<bool> {
+      public:
+        typedef size_t size_type;
+        typedef bool value_type;
+        typedef bool const_reference;
+        vector();
+        vector(size_type n);
+        size_type size() const;
+        size_type capacity() const;
+        void reserve(size_type n);
+        void resize(size_type n);
+        %rename(isEmpty) empty;
+        bool empty() const;
+        void clear();
+        %rename(add) push_back;
+        void push_back(const value_type& x);
+        %extend {
+            bool get(int i) throw (std::out_of_range) {
+                int size = int(self->size());
+                if (i>=0 && i<size)
+                    return (*self)[i];
+                else
+                    throw std::out_of_range("vector index out of range");
+            }
+            void set(int i, const value_type& val) throw (std::out_of_range) {
+                int size = int(self->size());
+                if (i>=0 && i<size)
+                    (*self)[i] = val;
+                else
+                    throw std::out_of_range("vector index out of range");
+            }
+            void add(int i, const value_type& val) throw (std::out_of_range) {
+                int size = int(self->size());
+                if (i>=0 && i<=size)
+                    self->insert(self->begin() + i, val);
+                else
+                    throw std::out_of_range("vector index out of range");
+            }
+            bool remove(const value_type& val) {
+                auto it = std::find(self->begin(), self->end(), val);
+                if (it == self->end())
+                    return false;
+                else
+                    self->erase(it);
+                return true;
+            }
+        }
+
+    };
+}
+
+/*
  * Map as simple Java enum, see "25.10.1 Simpler Java enums"
  */
 %typemap(javain) enum SWIGTYPE "$javainput.ordinal()"
 %rename(Kind) kind_t;
 %rename(ObjectProperties) object_properties_t;
 %rename(UpdateStatus) update_status_t;
+%rename(PortKind) portKind;
 
 %include "../scicos/includes/utilities.hxx";
 
 /*
  * Template instanciation
  */
-
 %template(VectorOfInt)      std::vector<int>;
 %template(VectorOfBool)     std::vector<bool>;
 %template(VectorOfDouble)   std::vector<double>;
index 3ae7cd4..78169aa 100644 (file)
@@ -659,6 +659,8 @@ namespace Swig {
   }
 }
 
+#include <iterator>
+#include <algorithm>
 #include <vector>
 #include <string>
 
@@ -670,12 +672,18 @@ namespace Swig {
 #include <stdexcept>
 
 
-#include <vector>
-#include <stdexcept>
-
-
 #include <string>
 
+SWIGINTERN bool std_vector_Sl_int_Sg__contains(std::vector< int > *self,int const &o){
+               return std::find(self->begin(), self->end(), o) != self->end();
+            }
+SWIGINTERN int std_vector_Sl_int_Sg__indexOf(std::vector< int > *self,int const &o){
+               auto it = std::find(self->begin(), self->end(), o);
+               if (it != self->end())
+                   return std::distance(self->begin(), it);
+               else
+                   return -1;
+            }
 SWIGINTERN std::vector< int >::const_reference std_vector_Sl_int_Sg__get(std::vector< int > *self,int i){
                 int size = int(self->size());
                 if (i>=0 && i<size)
@@ -690,6 +698,21 @@ SWIGINTERN void std_vector_Sl_int_Sg__set(std::vector< int > *self,int i,std::ve
                 else
                     throw std::out_of_range("vector index out of range");
             }
+SWIGINTERN void std_vector_Sl_int_Sg__add__SWIG_1(std::vector< int > *self,int i,std::vector< int >::value_type const &val){
+                int size = int(self->size());
+                if (i>=0 && i<=size)
+                    self->insert(self->begin() + i, val);
+                else
+                    throw std::out_of_range("vector index out of range");
+            }
+SWIGINTERN bool std_vector_Sl_int_Sg__remove(std::vector< int > *self,std::vector< int >::value_type const &val){
+                auto it = std::find(self->begin(), self->end(), val);
+                if (it == self->end())
+                    return false;
+                else
+                    self->erase(it);
+                return true;
+            }
 SWIGINTERN bool std_vector_Sl_bool_Sg__get(std::vector< bool > *self,int i){
                 int size = int(self->size());
                 if (i>=0 && i<size)
@@ -704,6 +727,31 @@ SWIGINTERN void std_vector_Sl_bool_Sg__set(std::vector< bool > *self,int i,std::
                 else
                     throw std::out_of_range("vector index out of range");
             }
+SWIGINTERN void std_vector_Sl_bool_Sg__add__SWIG_1(std::vector< bool > *self,int i,std::vector< bool >::value_type const &val){
+                int size = int(self->size());
+                if (i>=0 && i<=size)
+                    self->insert(self->begin() + i, val);
+                else
+                    throw std::out_of_range("vector index out of range");
+            }
+SWIGINTERN bool std_vector_Sl_bool_Sg__remove(std::vector< bool > *self,std::vector< bool >::value_type const &val){
+                auto it = std::find(self->begin(), self->end(), val);
+                if (it == self->end())
+                    return false;
+                else
+                    self->erase(it);
+                return true;
+            }
+SWIGINTERN bool std_vector_Sl_double_Sg__contains(std::vector< double > *self,double const &o){
+               return std::find(self->begin(), self->end(), o) != self->end();
+            }
+SWIGINTERN int std_vector_Sl_double_Sg__indexOf(std::vector< double > *self,double const &o){
+               auto it = std::find(self->begin(), self->end(), o);
+               if (it != self->end())
+                   return std::distance(self->begin(), it);
+               else
+                   return -1;
+            }
 SWIGINTERN std::vector< double >::const_reference std_vector_Sl_double_Sg__get(std::vector< double > *self,int i){
                 int size = int(self->size());
                 if (i>=0 && i<size)
@@ -718,6 +766,31 @@ SWIGINTERN void std_vector_Sl_double_Sg__set(std::vector< double > *self,int i,s
                 else
                     throw std::out_of_range("vector index out of range");
             }
+SWIGINTERN void std_vector_Sl_double_Sg__add__SWIG_1(std::vector< double > *self,int i,std::vector< double >::value_type const &val){
+                int size = int(self->size());
+                if (i>=0 && i<=size)
+                    self->insert(self->begin() + i, val);
+                else
+                    throw std::out_of_range("vector index out of range");
+            }
+SWIGINTERN bool std_vector_Sl_double_Sg__remove(std::vector< double > *self,std::vector< double >::value_type const &val){
+                auto it = std::find(self->begin(), self->end(), val);
+                if (it == self->end())
+                    return false;
+                else
+                    self->erase(it);
+                return true;
+            }
+SWIGINTERN bool std_vector_Sl_std_string_Sg__contains(std::vector< std::string > *self,std::string const &o){
+               return std::find(self->begin(), self->end(), o) != self->end();
+            }
+SWIGINTERN int std_vector_Sl_std_string_Sg__indexOf(std::vector< std::string > *self,std::string const &o){
+               auto it = std::find(self->begin(), self->end(), o);
+               if (it != self->end())
+                   return std::distance(self->begin(), it);
+               else
+                   return -1;
+            }
 SWIGINTERN std::vector< std::string >::const_reference std_vector_Sl_std_string_Sg__get(std::vector< std::string > *self,int i){
                 int size = int(self->size());
                 if (i>=0 && i<size)
@@ -732,6 +805,31 @@ SWIGINTERN void std_vector_Sl_std_string_Sg__set(std::vector< std::string > *sel
                 else
                     throw std::out_of_range("vector index out of range");
             }
+SWIGINTERN void std_vector_Sl_std_string_Sg__add__SWIG_1(std::vector< std::string > *self,int i,std::vector< std::string >::value_type const &val){
+                int size = int(self->size());
+                if (i>=0 && i<=size)
+                    self->insert(self->begin() + i, val);
+                else
+                    throw std::out_of_range("vector index out of range");
+            }
+SWIGINTERN bool std_vector_Sl_std_string_Sg__remove(std::vector< std::string > *self,std::vector< std::string >::value_type const &val){
+                auto it = std::find(self->begin(), self->end(), val);
+                if (it == self->end())
+                    return false;
+                else
+                    self->erase(it);
+                return true;
+            }
+SWIGINTERN bool std_vector_Sl_ScicosID_Sg__contains(std::vector< ScicosID > *self,long long const &o){
+               return std::find(self->begin(), self->end(), o) != self->end();
+            }
+SWIGINTERN int std_vector_Sl_ScicosID_Sg__indexOf(std::vector< ScicosID > *self,long long const &o){
+               auto it = std::find(self->begin(), self->end(), o);
+               if (it != self->end())
+                   return std::distance(self->begin(), it);
+               else
+                   return -1;
+            }
 SWIGINTERN std::vector< long long >::const_reference std_vector_Sl_ScicosID_Sg__get(std::vector< ScicosID > *self,int i){
                 int size = int(self->size());
                 if (i>=0 && i<size)
@@ -746,6 +844,21 @@ SWIGINTERN void std_vector_Sl_ScicosID_Sg__set(std::vector< ScicosID > *self,int
                 else
                     throw std::out_of_range("vector index out of range");
             }
+SWIGINTERN void std_vector_Sl_ScicosID_Sg__add__SWIG_1(std::vector< ScicosID > *self,int i,std::vector< long long >::value_type const &val){
+                int size = int(self->size());
+                if (i>=0 && i<=size)
+                    self->insert(self->begin() + i, val);
+                else
+                    throw std::out_of_range("vector index out of range");
+            }
+SWIGINTERN bool std_vector_Sl_ScicosID_Sg__remove(std::vector< ScicosID > *self,std::vector< long long >::value_type const &val){
+                auto it = std::find(self->begin(), self->end(), val);
+                if (it == self->end())
+                    return false;
+                else
+                    self->erase(it);
+                return true;
+            }
 
 static void register_view(const std::string& name, org_scilab_modules_scicos::View* view) {
   org_scilab_modules_scicos::Controller::register_view(name, view);
@@ -798,12 +911,13 @@ void SwigDirector_View::objectCreated(ScicosID const &uid, kind_t kind) {
   if (swigjobj) jenv->DeleteLocalRef(swigjobj);
 }
 
-void SwigDirector_View::objectReferenced(ScicosID const &uid, kind_t kind) {
+void SwigDirector_View::objectReferenced(ScicosID const &uid, kind_t kind, unsigned int refCount) {
   JNIEnvWrapper swigjnienv(this) ;
   JNIEnv * jenv = swigjnienv.getJNIEnv() ;
   jobject swigjobj = (jobject) NULL ;
   jlong juid = 0 ;
   jint jkind  ;
+  jlong jrefCount  ;
   
   if (!swig_override[1]) {
     SWIG_JavaThrowException(JNIEnvWrapper(this).getJNIEnv(), SWIG_JavaDirectorPureVirtual, "Attempted to invoke pure virtual method org_scilab_modules_scicos::View::objectReferenced.");
@@ -813,7 +927,8 @@ void SwigDirector_View::objectReferenced(ScicosID const &uid, kind_t kind) {
   if (swigjobj && jenv->IsSameObject(swigjobj, NULL) == JNI_FALSE) {
     juid = (jlong)uid;
     jkind = (jint) kind;
-    jenv->CallStaticVoidMethod(Swig::jclass_JavaControllerJNI, Swig::director_method_ids[1], swigjobj, juid, jkind);
+    jrefCount = (jlong) refCount;
+    jenv->CallStaticVoidMethod(Swig::jclass_JavaControllerJNI, Swig::director_method_ids[1], swigjobj, juid, jkind, jrefCount);
     jthrowable swigerror = jenv->ExceptionOccurred();
     if (swigerror) {
       jenv->ExceptionClear();
@@ -826,12 +941,13 @@ void SwigDirector_View::objectReferenced(ScicosID const &uid, kind_t kind) {
   if (swigjobj) jenv->DeleteLocalRef(swigjobj);
 }
 
-void SwigDirector_View::objectUnreferenced(ScicosID const &uid, kind_t kind) {
+void SwigDirector_View::objectUnreferenced(ScicosID const &uid, kind_t kind, unsigned int refCount) {
   JNIEnvWrapper swigjnienv(this) ;
   JNIEnv * jenv = swigjnienv.getJNIEnv() ;
   jobject swigjobj = (jobject) NULL ;
   jlong juid = 0 ;
   jint jkind  ;
+  jlong jrefCount  ;
   
   if (!swig_override[2]) {
     SWIG_JavaThrowException(JNIEnvWrapper(this).getJNIEnv(), SWIG_JavaDirectorPureVirtual, "Attempted to invoke pure virtual method org_scilab_modules_scicos::View::objectUnreferenced.");
@@ -841,7 +957,8 @@ void SwigDirector_View::objectUnreferenced(ScicosID const &uid, kind_t kind) {
   if (swigjobj && jenv->IsSameObject(swigjobj, NULL) == JNI_FALSE) {
     juid = (jlong)uid;
     jkind = (jint) kind;
-    jenv->CallStaticVoidMethod(Swig::jclass_JavaControllerJNI, Swig::director_method_ids[2], swigjobj, juid, jkind);
+    jrefCount = (jlong) refCount;
+    jenv->CallStaticVoidMethod(Swig::jclass_JavaControllerJNI, Swig::director_method_ids[2], swigjobj, juid, jkind, jrefCount);
     jthrowable swigerror = jenv->ExceptionOccurred();
     if (swigerror) {
       jenv->ExceptionClear();
@@ -924,10 +1041,10 @@ void SwigDirector_View::swig_connect_director(JNIEnv *jenv, jobject jself, jclas
       "objectCreated", "(JLorg/scilab/modules/xcos/Kind;)V", NULL 
     },
     {
-      "objectReferenced", "(JLorg/scilab/modules/xcos/Kind;)V", NULL 
+      "objectReferenced", "(JLorg/scilab/modules/xcos/Kind;J)V", NULL 
     },
     {
-      "objectUnreferenced", "(JLorg/scilab/modules/xcos/Kind;)V", NULL 
+      "objectUnreferenced", "(JLorg/scilab/modules/xcos/Kind;J)V", NULL 
     },
     {
       "objectDeleted", "(JLorg/scilab/modules/xcos/Kind;)V", NULL 
@@ -1006,10 +1123,11 @@ SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_View_1obj
 }
 
 
-SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_View_1objectReferenced(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jint jarg3) {
+SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_View_1objectReferenced(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jint jarg3, jlong jarg4) {
   org_scilab_modules_scicos::View *arg1 = (org_scilab_modules_scicos::View *) 0 ;
   ScicosID *arg2 = 0 ;
   kind_t arg3 ;
+  unsigned int arg4 ;
   ScicosID temp2 ;
   
   (void)jenv;
@@ -1019,14 +1137,16 @@ SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_View_1obj
   temp2 = (ScicosID)jarg2; 
   arg2 = &temp2; 
   arg3 = (kind_t)jarg3; 
-  (arg1)->objectReferenced((ScicosID const &)*arg2,arg3);
+  arg4 = (unsigned int)jarg4; 
+  (arg1)->objectReferenced((ScicosID const &)*arg2,arg3,arg4);
 }
 
 
-SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_View_1objectUnreferenced(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jint jarg3) {
+SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_View_1objectUnreferenced(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jint jarg3, jlong jarg4) {
   org_scilab_modules_scicos::View *arg1 = (org_scilab_modules_scicos::View *) 0 ;
   ScicosID *arg2 = 0 ;
   kind_t arg3 ;
+  unsigned int arg4 ;
   ScicosID temp2 ;
   
   (void)jenv;
@@ -1036,7 +1156,8 @@ SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_View_1obj
   temp2 = (ScicosID)jarg2; 
   arg2 = &temp2; 
   arg3 = (kind_t)jarg3; 
-  (arg1)->objectUnreferenced((ScicosID const &)*arg2,arg3);
+  arg4 = (unsigned int)jarg4; 
+  (arg1)->objectUnreferenced((ScicosID const &)*arg2,arg3,arg4);
 }
 
 
@@ -1902,49 +2023,34 @@ SWIGEXPORT jlong JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_new_1Vec
 }
 
 
-SWIGEXPORT jlong JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfInt_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
-  jlong jresult = 0 ;
+SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfInt_1ensureCapacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) {
   std::vector< int > *arg1 = (std::vector< int > *) 0 ;
-  std::vector< int >::size_type result;
+  std::vector< int >::size_type arg2 ;
   
   (void)jenv;
   (void)jcls;
   (void)jarg1_;
   arg1 = *(std::vector< int > **)&jarg1; 
-  result = ((std::vector< int > const *)arg1)->size();
-  jresult = (jlong)result; 
-  return jresult;
+  arg2 = (std::vector< int >::size_type)jarg2; 
+  (arg1)->reserve(arg2);
 }
 
 
-SWIGEXPORT jlong JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfInt_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
-  jlong jresult = 0 ;
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfInt_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
+  jint jresult = 0 ;
   std::vector< int > *arg1 = (std::vector< int > *) 0 ;
-  std::vector< int >::size_type result;
+  int result;
   
   (void)jenv;
   (void)jcls;
   (void)jarg1_;
   arg1 = *(std::vector< int > **)&jarg1; 
-  result = ((std::vector< int > const *)arg1)->capacity();
-  jresult = (jlong)result; 
+  result = (int)((std::vector< int > const *)arg1)->size();
+  jresult = (jint)result; 
   return jresult;
 }
 
 
-SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfInt_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) {
-  std::vector< int > *arg1 = (std::vector< int > *) 0 ;
-  std::vector< int >::size_type arg2 ;
-  
-  (void)jenv;
-  (void)jcls;
-  (void)jarg1_;
-  arg1 = *(std::vector< int > **)&jarg1; 
-  arg2 = (std::vector< int >::size_type)jarg2; 
-  (arg1)->reserve(arg2);
-}
-
-
 SWIGEXPORT jboolean JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfInt_1isEmpty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
   jboolean jresult = 0 ;
   std::vector< int > *arg1 = (std::vector< int > *) 0 ;
@@ -1971,7 +2077,7 @@ SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfI
 }
 
 
-SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfInt_1add(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) {
+SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfInt_1add_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) {
   std::vector< int > *arg1 = (std::vector< int > *) 0 ;
   std::vector< int >::value_type *arg2 = 0 ;
   std::vector< int >::value_type temp2 ;
@@ -1986,6 +2092,44 @@ SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfI
 }
 
 
+SWIGEXPORT jboolean JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfInt_1contains(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) {
+  jboolean jresult = 0 ;
+  std::vector< int > *arg1 = (std::vector< int > *) 0 ;
+  int *arg2 = 0 ;
+  int temp2 ;
+  bool result;
+  
+  (void)jenv;
+  (void)jcls;
+  (void)jarg1_;
+  arg1 = *(std::vector< int > **)&jarg1; 
+  temp2 = (int)jarg2; 
+  arg2 = &temp2; 
+  result = (bool)std_vector_Sl_int_Sg__contains(arg1,(int const &)*arg2);
+  jresult = (jboolean)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfInt_1indexOf(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) {
+  jint jresult = 0 ;
+  std::vector< int > *arg1 = (std::vector< int > *) 0 ;
+  int *arg2 = 0 ;
+  int temp2 ;
+  int result;
+  
+  (void)jenv;
+  (void)jcls;
+  (void)jarg1_;
+  arg1 = *(std::vector< int > **)&jarg1; 
+  temp2 = (int)jarg2; 
+  arg2 = &temp2; 
+  result = (int)std_vector_Sl_int_Sg__indexOf(arg1,(int const &)*arg2);
+  jresult = (jint)result; 
+  return jresult;
+}
+
+
 SWIGEXPORT jint JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfInt_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) {
   jint jresult = 0 ;
   std::vector< int > *arg1 = (std::vector< int > *) 0 ;
@@ -2034,6 +2178,49 @@ SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfI
 }
 
 
+SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfInt_1add_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jint jarg3) {
+  std::vector< int > *arg1 = (std::vector< int > *) 0 ;
+  int arg2 ;
+  std::vector< int >::value_type *arg3 = 0 ;
+  std::vector< int >::value_type temp3 ;
+  
+  (void)jenv;
+  (void)jcls;
+  (void)jarg1_;
+  arg1 = *(std::vector< int > **)&jarg1; 
+  arg2 = (int)jarg2; 
+  temp3 = (std::vector< int >::value_type)jarg3; 
+  arg3 = &temp3; 
+  try {
+    std_vector_Sl_int_Sg__add__SWIG_1(arg1,arg2,(int const &)*arg3);
+  }
+  catch(std::out_of_range &_e) {
+    SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what());
+    return ;
+  }
+  
+}
+
+
+SWIGEXPORT jboolean JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfInt_1remove(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) {
+  jboolean jresult = 0 ;
+  std::vector< int > *arg1 = (std::vector< int > *) 0 ;
+  std::vector< int >::value_type *arg2 = 0 ;
+  std::vector< int >::value_type temp2 ;
+  bool result;
+  
+  (void)jenv;
+  (void)jcls;
+  (void)jarg1_;
+  arg1 = *(std::vector< int > **)&jarg1; 
+  temp2 = (std::vector< int >::value_type)jarg2; 
+  arg2 = &temp2; 
+  result = (bool)std_vector_Sl_int_Sg__remove(arg1,(int const &)*arg2);
+  jresult = (jboolean)result; 
+  return jresult;
+}
+
+
 SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_delete_1VectorOfInt(JNIEnv *jenv, jclass jcls, jlong jarg1) {
   std::vector< int > *arg1 = (std::vector< int > *) 0 ;
   
@@ -2100,7 +2287,7 @@ SWIGEXPORT jlong JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOf
 }
 
 
-SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfBool_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) {
+SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfBool_1ensureCapacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) {
   std::vector< bool > *arg1 = (std::vector< bool > *) 0 ;
   std::vector< bool >::size_type arg2 ;
   
@@ -2113,6 +2300,19 @@ SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfB
 }
 
 
+SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfBool_1resize(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) {
+  std::vector< bool > *arg1 = (std::vector< bool > *) 0 ;
+  std::vector< bool >::size_type arg2 ;
+  
+  (void)jenv;
+  (void)jcls;
+  (void)jarg1_;
+  arg1 = *(std::vector< bool > **)&jarg1; 
+  arg2 = (std::vector< bool >::size_type)jarg2; 
+  (arg1)->resize(arg2);
+}
+
+
 SWIGEXPORT jboolean JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfBool_1isEmpty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
   jboolean jresult = 0 ;
   std::vector< bool > *arg1 = (std::vector< bool > *) 0 ;
@@ -2139,7 +2339,7 @@ SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfB
 }
 
 
-SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfBool_1add(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jboolean jarg2) {
+SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfBool_1add_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jboolean jarg2) {
   std::vector< bool > *arg1 = (std::vector< bool > *) 0 ;
   std::vector< bool >::value_type *arg2 = 0 ;
   std::vector< bool >::value_type temp2 ;
@@ -2202,6 +2402,49 @@ SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfB
 }
 
 
+SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfBool_1add_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jboolean jarg3) {
+  std::vector< bool > *arg1 = (std::vector< bool > *) 0 ;
+  int arg2 ;
+  std::vector< bool >::value_type *arg3 = 0 ;
+  std::vector< bool >::value_type temp3 ;
+  
+  (void)jenv;
+  (void)jcls;
+  (void)jarg1_;
+  arg1 = *(std::vector< bool > **)&jarg1; 
+  arg2 = (int)jarg2; 
+  temp3 = jarg3 ? true : false; 
+  arg3 = &temp3; 
+  try {
+    std_vector_Sl_bool_Sg__add__SWIG_1(arg1,arg2,(bool const &)*arg3);
+  }
+  catch(std::out_of_range &_e) {
+    SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what());
+    return ;
+  }
+  
+}
+
+
+SWIGEXPORT jboolean JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfBool_1remove(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jboolean jarg2) {
+  jboolean jresult = 0 ;
+  std::vector< bool > *arg1 = (std::vector< bool > *) 0 ;
+  std::vector< bool >::value_type *arg2 = 0 ;
+  std::vector< bool >::value_type temp2 ;
+  bool result;
+  
+  (void)jenv;
+  (void)jcls;
+  (void)jarg1_;
+  arg1 = *(std::vector< bool > **)&jarg1; 
+  temp2 = jarg2 ? true : false; 
+  arg2 = &temp2; 
+  result = (bool)std_vector_Sl_bool_Sg__remove(arg1,(bool const &)*arg2);
+  jresult = (jboolean)result; 
+  return jresult;
+}
+
+
 SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_delete_1VectorOfBool(JNIEnv *jenv, jclass jcls, jlong jarg1) {
   std::vector< bool > *arg1 = (std::vector< bool > *) 0 ;
   
@@ -2238,49 +2481,34 @@ SWIGEXPORT jlong JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_new_1Vec
 }
 
 
-SWIGEXPORT jlong JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfDouble_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
-  jlong jresult = 0 ;
+SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfDouble_1ensureCapacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) {
   std::vector< double > *arg1 = (std::vector< double > *) 0 ;
-  std::vector< double >::size_type result;
+  std::vector< double >::size_type arg2 ;
   
   (void)jenv;
   (void)jcls;
   (void)jarg1_;
   arg1 = *(std::vector< double > **)&jarg1; 
-  result = ((std::vector< double > const *)arg1)->size();
-  jresult = (jlong)result; 
-  return jresult;
+  arg2 = (std::vector< double >::size_type)jarg2; 
+  (arg1)->reserve(arg2);
 }
 
 
-SWIGEXPORT jlong JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfDouble_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
-  jlong jresult = 0 ;
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfDouble_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
+  jint jresult = 0 ;
   std::vector< double > *arg1 = (std::vector< double > *) 0 ;
-  std::vector< double >::size_type result;
+  int result;
   
   (void)jenv;
   (void)jcls;
   (void)jarg1_;
   arg1 = *(std::vector< double > **)&jarg1; 
-  result = ((std::vector< double > const *)arg1)->capacity();
-  jresult = (jlong)result; 
+  result = (int)((std::vector< double > const *)arg1)->size();
+  jresult = (jint)result; 
   return jresult;
 }
 
 
-SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfDouble_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) {
-  std::vector< double > *arg1 = (std::vector< double > *) 0 ;
-  std::vector< double >::size_type arg2 ;
-  
-  (void)jenv;
-  (void)jcls;
-  (void)jarg1_;
-  arg1 = *(std::vector< double > **)&jarg1; 
-  arg2 = (std::vector< double >::size_type)jarg2; 
-  (arg1)->reserve(arg2);
-}
-
-
 SWIGEXPORT jboolean JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfDouble_1isEmpty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
   jboolean jresult = 0 ;
   std::vector< double > *arg1 = (std::vector< double > *) 0 ;
@@ -2307,7 +2535,7 @@ SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfD
 }
 
 
-SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfDouble_1add(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jdouble jarg2) {
+SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfDouble_1add_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jdouble jarg2) {
   std::vector< double > *arg1 = (std::vector< double > *) 0 ;
   std::vector< double >::value_type *arg2 = 0 ;
   std::vector< double >::value_type temp2 ;
@@ -2322,6 +2550,44 @@ SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfD
 }
 
 
+SWIGEXPORT jboolean JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfDouble_1contains(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jdouble jarg2) {
+  jboolean jresult = 0 ;
+  std::vector< double > *arg1 = (std::vector< double > *) 0 ;
+  double *arg2 = 0 ;
+  double temp2 ;
+  bool result;
+  
+  (void)jenv;
+  (void)jcls;
+  (void)jarg1_;
+  arg1 = *(std::vector< double > **)&jarg1; 
+  temp2 = (double)jarg2; 
+  arg2 = &temp2; 
+  result = (bool)std_vector_Sl_double_Sg__contains(arg1,(double const &)*arg2);
+  jresult = (jboolean)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfDouble_1indexOf(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jdouble jarg2) {
+  jint jresult = 0 ;
+  std::vector< double > *arg1 = (std::vector< double > *) 0 ;
+  double *arg2 = 0 ;
+  double temp2 ;
+  int result;
+  
+  (void)jenv;
+  (void)jcls;
+  (void)jarg1_;
+  arg1 = *(std::vector< double > **)&jarg1; 
+  temp2 = (double)jarg2; 
+  arg2 = &temp2; 
+  result = (int)std_vector_Sl_double_Sg__indexOf(arg1,(double const &)*arg2);
+  jresult = (jint)result; 
+  return jresult;
+}
+
+
 SWIGEXPORT jdouble JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfDouble_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) {
   jdouble jresult = 0 ;
   std::vector< double > *arg1 = (std::vector< double > *) 0 ;
@@ -2370,6 +2636,49 @@ SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfD
 }
 
 
+SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfDouble_1add_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jdouble jarg3) {
+  std::vector< double > *arg1 = (std::vector< double > *) 0 ;
+  int arg2 ;
+  std::vector< double >::value_type *arg3 = 0 ;
+  std::vector< double >::value_type temp3 ;
+  
+  (void)jenv;
+  (void)jcls;
+  (void)jarg1_;
+  arg1 = *(std::vector< double > **)&jarg1; 
+  arg2 = (int)jarg2; 
+  temp3 = (std::vector< double >::value_type)jarg3; 
+  arg3 = &temp3; 
+  try {
+    std_vector_Sl_double_Sg__add__SWIG_1(arg1,arg2,(double const &)*arg3);
+  }
+  catch(std::out_of_range &_e) {
+    SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what());
+    return ;
+  }
+  
+}
+
+
+SWIGEXPORT jboolean JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfDouble_1remove(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jdouble jarg2) {
+  jboolean jresult = 0 ;
+  std::vector< double > *arg1 = (std::vector< double > *) 0 ;
+  std::vector< double >::value_type *arg2 = 0 ;
+  std::vector< double >::value_type temp2 ;
+  bool result;
+  
+  (void)jenv;
+  (void)jcls;
+  (void)jarg1_;
+  arg1 = *(std::vector< double > **)&jarg1; 
+  temp2 = (std::vector< double >::value_type)jarg2; 
+  arg2 = &temp2; 
+  result = (bool)std_vector_Sl_double_Sg__remove(arg1,(double const &)*arg2);
+  jresult = (jboolean)result; 
+  return jresult;
+}
+
+
 SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_delete_1VectorOfDouble(JNIEnv *jenv, jclass jcls, jlong jarg1) {
   std::vector< double > *arg1 = (std::vector< double > *) 0 ;
   
@@ -2406,49 +2715,34 @@ SWIGEXPORT jlong JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_new_1Vec
 }
 
 
-SWIGEXPORT jlong JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfString_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
-  jlong jresult = 0 ;
+SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfString_1ensureCapacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) {
   std::vector< std::string > *arg1 = (std::vector< std::string > *) 0 ;
-  std::vector< std::string >::size_type result;
+  std::vector< std::string >::size_type arg2 ;
   
   (void)jenv;
   (void)jcls;
   (void)jarg1_;
   arg1 = *(std::vector< std::string > **)&jarg1; 
-  result = ((std::vector< std::string > const *)arg1)->size();
-  jresult = (jlong)result; 
-  return jresult;
+  arg2 = (std::vector< std::string >::size_type)jarg2; 
+  (arg1)->reserve(arg2);
 }
 
 
-SWIGEXPORT jlong JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfString_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
-  jlong jresult = 0 ;
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfString_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
+  jint jresult = 0 ;
   std::vector< std::string > *arg1 = (std::vector< std::string > *) 0 ;
-  std::vector< std::string >::size_type result;
+  int result;
   
   (void)jenv;
   (void)jcls;
   (void)jarg1_;
   arg1 = *(std::vector< std::string > **)&jarg1; 
-  result = ((std::vector< std::string > const *)arg1)->capacity();
-  jresult = (jlong)result; 
+  result = (int)((std::vector< std::string > const *)arg1)->size();
+  jresult = (jint)result; 
   return jresult;
 }
 
 
-SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfString_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) {
-  std::vector< std::string > *arg1 = (std::vector< std::string > *) 0 ;
-  std::vector< std::string >::size_type arg2 ;
-  
-  (void)jenv;
-  (void)jcls;
-  (void)jarg1_;
-  arg1 = *(std::vector< std::string > **)&jarg1; 
-  arg2 = (std::vector< std::string >::size_type)jarg2; 
-  (arg1)->reserve(arg2);
-}
-
-
 SWIGEXPORT jboolean JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfString_1isEmpty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
   jboolean jresult = 0 ;
   std::vector< std::string > *arg1 = (std::vector< std::string > *) 0 ;
@@ -2475,7 +2769,7 @@ SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfS
 }
 
 
-SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfString_1add(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) {
+SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfString_1add_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) {
   std::vector< std::string > *arg1 = (std::vector< std::string > *) 0 ;
   std::vector< std::string >::value_type *arg2 = 0 ;
   
@@ -2496,6 +2790,56 @@ SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfS
 }
 
 
+SWIGEXPORT jboolean JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfString_1contains(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) {
+  jboolean jresult = 0 ;
+  std::vector< std::string > *arg1 = (std::vector< std::string > *) 0 ;
+  std::string *arg2 = 0 ;
+  bool result;
+  
+  (void)jenv;
+  (void)jcls;
+  (void)jarg1_;
+  arg1 = *(std::vector< std::string > **)&jarg1; 
+  if(!jarg2) {
+    SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string");
+    return 0;
+  }
+  const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); 
+  if (!arg2_pstr) return 0;
+  std::string arg2_str(arg2_pstr);
+  arg2 = &arg2_str;
+  jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); 
+  result = (bool)std_vector_Sl_std_string_Sg__contains(arg1,(std::string const &)*arg2);
+  jresult = (jboolean)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfString_1indexOf(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) {
+  jint jresult = 0 ;
+  std::vector< std::string > *arg1 = (std::vector< std::string > *) 0 ;
+  std::string *arg2 = 0 ;
+  int result;
+  
+  (void)jenv;
+  (void)jcls;
+  (void)jarg1_;
+  arg1 = *(std::vector< std::string > **)&jarg1; 
+  if(!jarg2) {
+    SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string");
+    return 0;
+  }
+  const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); 
+  if (!arg2_pstr) return 0;
+  std::string arg2_str(arg2_pstr);
+  arg2 = &arg2_str;
+  jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); 
+  result = (int)std_vector_Sl_std_string_Sg__indexOf(arg1,(std::string const &)*arg2);
+  jresult = (jint)result; 
+  return jresult;
+}
+
+
 SWIGEXPORT jstring JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfString_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) {
   jstring jresult = 0 ;
   std::vector< std::string > *arg1 = (std::vector< std::string > *) 0 ;
@@ -2550,6 +2894,61 @@ SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfS
 }
 
 
+SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfString_1add_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jstring jarg3) {
+  std::vector< std::string > *arg1 = (std::vector< std::string > *) 0 ;
+  int arg2 ;
+  std::vector< std::string >::value_type *arg3 = 0 ;
+  
+  (void)jenv;
+  (void)jcls;
+  (void)jarg1_;
+  arg1 = *(std::vector< std::string > **)&jarg1; 
+  arg2 = (int)jarg2; 
+  if(!jarg3) {
+    SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string");
+    return ;
+  }
+  const char *arg3_pstr = (const char *)jenv->GetStringUTFChars(jarg3, 0); 
+  if (!arg3_pstr) return ;
+  std::vector< std::string >::value_type arg3_str(arg3_pstr);
+  arg3 = &arg3_str;
+  jenv->ReleaseStringUTFChars(jarg3, arg3_pstr); 
+  try {
+    std_vector_Sl_std_string_Sg__add__SWIG_1(arg1,arg2,(std::string const &)*arg3);
+  }
+  catch(std::out_of_range &_e) {
+    SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what());
+    return ;
+  }
+  
+}
+
+
+SWIGEXPORT jboolean JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfString_1remove(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) {
+  jboolean jresult = 0 ;
+  std::vector< std::string > *arg1 = (std::vector< std::string > *) 0 ;
+  std::vector< std::string >::value_type *arg2 = 0 ;
+  bool result;
+  
+  (void)jenv;
+  (void)jcls;
+  (void)jarg1_;
+  arg1 = *(std::vector< std::string > **)&jarg1; 
+  if(!jarg2) {
+    SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string");
+    return 0;
+  }
+  const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); 
+  if (!arg2_pstr) return 0;
+  std::vector< std::string >::value_type arg2_str(arg2_pstr);
+  arg2 = &arg2_str;
+  jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); 
+  result = (bool)std_vector_Sl_std_string_Sg__remove(arg1,(std::string const &)*arg2);
+  jresult = (jboolean)result; 
+  return jresult;
+}
+
+
 SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_delete_1VectorOfString(JNIEnv *jenv, jclass jcls, jlong jarg1) {
   std::vector< std::string > *arg1 = (std::vector< std::string > *) 0 ;
   
@@ -2586,49 +2985,34 @@ SWIGEXPORT jlong JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_new_1Vec
 }
 
 
-SWIGEXPORT jlong JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfScicosID_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
-  jlong jresult = 0 ;
+SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfScicosID_1ensureCapacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) {
   std::vector< ScicosID > *arg1 = (std::vector< ScicosID > *) 0 ;
-  std::vector< long long >::size_type result;
+  std::vector< long long >::size_type arg2 ;
   
   (void)jenv;
   (void)jcls;
   (void)jarg1_;
   arg1 = *(std::vector< ScicosID > **)&jarg1; 
-  result = ((std::vector< ScicosID > const *)arg1)->size();
-  jresult = (jlong)result; 
-  return jresult;
+  arg2 = (std::vector< long long >::size_type)jarg2; 
+  (arg1)->reserve(arg2);
 }
 
 
-SWIGEXPORT jlong JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfScicosID_1capacity(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
-  jlong jresult = 0 ;
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfScicosID_1size(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
+  jint jresult = 0 ;
   std::vector< ScicosID > *arg1 = (std::vector< ScicosID > *) 0 ;
-  std::vector< long long >::size_type result;
+  int result;
   
   (void)jenv;
   (void)jcls;
   (void)jarg1_;
   arg1 = *(std::vector< ScicosID > **)&jarg1; 
-  result = ((std::vector< ScicosID > const *)arg1)->capacity();
-  jresult = (jlong)result; 
+  result = (int)((std::vector< ScicosID > const *)arg1)->size();
+  jresult = (jint)result; 
   return jresult;
 }
 
 
-SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfScicosID_1reserve(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) {
-  std::vector< ScicosID > *arg1 = (std::vector< ScicosID > *) 0 ;
-  std::vector< long long >::size_type arg2 ;
-  
-  (void)jenv;
-  (void)jcls;
-  (void)jarg1_;
-  arg1 = *(std::vector< ScicosID > **)&jarg1; 
-  arg2 = (std::vector< long long >::size_type)jarg2; 
-  (arg1)->reserve(arg2);
-}
-
-
 SWIGEXPORT jboolean JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfScicosID_1isEmpty(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
   jboolean jresult = 0 ;
   std::vector< ScicosID > *arg1 = (std::vector< ScicosID > *) 0 ;
@@ -2655,7 +3039,7 @@ SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfS
 }
 
 
-SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfScicosID_1add(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) {
+SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfScicosID_1add_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) {
   std::vector< ScicosID > *arg1 = (std::vector< ScicosID > *) 0 ;
   std::vector< long long >::value_type *arg2 = 0 ;
   std::vector< long long >::value_type temp2 ;
@@ -2670,6 +3054,44 @@ SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfS
 }
 
 
+SWIGEXPORT jboolean JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfScicosID_1contains(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) {
+  jboolean jresult = 0 ;
+  std::vector< ScicosID > *arg1 = (std::vector< ScicosID > *) 0 ;
+  long long *arg2 = 0 ;
+  long long temp2 ;
+  bool result;
+  
+  (void)jenv;
+  (void)jcls;
+  (void)jarg1_;
+  arg1 = *(std::vector< ScicosID > **)&jarg1; 
+  temp2 = (long long)jarg2; 
+  arg2 = &temp2; 
+  result = (bool)std_vector_Sl_ScicosID_Sg__contains(arg1,(long long const &)*arg2);
+  jresult = (jboolean)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfScicosID_1indexOf(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) {
+  jint jresult = 0 ;
+  std::vector< ScicosID > *arg1 = (std::vector< ScicosID > *) 0 ;
+  long long *arg2 = 0 ;
+  long long temp2 ;
+  int result;
+  
+  (void)jenv;
+  (void)jcls;
+  (void)jarg1_;
+  arg1 = *(std::vector< ScicosID > **)&jarg1; 
+  temp2 = (long long)jarg2; 
+  arg2 = &temp2; 
+  result = (int)std_vector_Sl_ScicosID_Sg__indexOf(arg1,(long long const &)*arg2);
+  jresult = (jint)result; 
+  return jresult;
+}
+
+
 SWIGEXPORT jlong JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfScicosID_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) {
   jlong jresult = 0 ;
   std::vector< ScicosID > *arg1 = (std::vector< ScicosID > *) 0 ;
@@ -2718,6 +3140,49 @@ SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfS
 }
 
 
+SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfScicosID_1add_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jlong jarg3) {
+  std::vector< ScicosID > *arg1 = (std::vector< ScicosID > *) 0 ;
+  int arg2 ;
+  std::vector< long long >::value_type *arg3 = 0 ;
+  std::vector< long long >::value_type temp3 ;
+  
+  (void)jenv;
+  (void)jcls;
+  (void)jarg1_;
+  arg1 = *(std::vector< ScicosID > **)&jarg1; 
+  arg2 = (int)jarg2; 
+  temp3 = (std::vector< long long >::value_type)jarg3; 
+  arg3 = &temp3; 
+  try {
+    std_vector_Sl_ScicosID_Sg__add__SWIG_1(arg1,arg2,(long long const &)*arg3);
+  }
+  catch(std::out_of_range &_e) {
+    SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, (&_e)->what());
+    return ;
+  }
+  
+}
+
+
+SWIGEXPORT jboolean JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_VectorOfScicosID_1remove(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) {
+  jboolean jresult = 0 ;
+  std::vector< ScicosID > *arg1 = (std::vector< ScicosID > *) 0 ;
+  std::vector< long long >::value_type *arg2 = 0 ;
+  std::vector< long long >::value_type temp2 ;
+  bool result;
+  
+  (void)jenv;
+  (void)jcls;
+  (void)jarg1_;
+  arg1 = *(std::vector< ScicosID > **)&jarg1; 
+  temp2 = (std::vector< long long >::value_type)jarg2; 
+  arg2 = &temp2; 
+  result = (bool)std_vector_Sl_ScicosID_Sg__remove(arg1,(long long const &)*arg2);
+  jresult = (jboolean)result; 
+  return jresult;
+}
+
+
 SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_delete_1VectorOfScicosID(JNIEnv *jenv, jclass jcls, jlong jarg1) {
   std::vector< ScicosID > *arg1 = (std::vector< ScicosID > *) 0 ;
   
@@ -2771,10 +3236,10 @@ SWIGEXPORT void JNICALL Java_org_scilab_modules_xcos_JavaControllerJNI_swig_1mod
       "SwigDirector_View_objectCreated", "(Lorg/scilab/modules/xcos/View;JI)V" 
     },
     {
-      "SwigDirector_View_objectReferenced", "(Lorg/scilab/modules/xcos/View;JI)V" 
+      "SwigDirector_View_objectReferenced", "(Lorg/scilab/modules/xcos/View;JIJ)V" 
     },
     {
-      "SwigDirector_View_objectUnreferenced", "(Lorg/scilab/modules/xcos/View;JI)V" 
+      "SwigDirector_View_objectUnreferenced", "(Lorg/scilab/modules/xcos/View;JIJ)V" 
     },
     {
       "SwigDirector_View_objectDeleted", "(Lorg/scilab/modules/xcos/View;JI)V" 
index df0294d..e355fe9 100644 (file)
@@ -18,8 +18,8 @@ public:
     SwigDirector_View(JNIEnv *jenv);
     virtual ~SwigDirector_View();
     virtual void objectCreated(ScicosID const &uid, kind_t kind);
-    virtual void objectReferenced(ScicosID const &uid, kind_t kind);
-    virtual void objectUnreferenced(ScicosID const &uid, kind_t kind);
+    virtual void objectReferenced(ScicosID const &uid, kind_t kind, unsigned int refCount);
+    virtual void objectUnreferenced(ScicosID const &uid, kind_t kind, unsigned int refCount);
     virtual void objectDeleted(ScicosID const &uid, kind_t kind);
     virtual void propertyUpdated(ScicosID const &uid, kind_t kind, object_properties_t property, update_status_t status);
 public: