]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.webapp/src/main/webapp/argeo-ria-src/class/org/argeo/ria/components/ViewSelection.js
move "source" to "argeo-ria-src"
[gpl/argeo-slc.git] / org.argeo.slc.webapp / src / main / webapp / argeo-ria-src / class / org / argeo / ria / components / ViewSelection.js
diff --git a/org.argeo.slc.webapp/src/main/webapp/argeo-ria-src/class/org/argeo/ria/components/ViewSelection.js b/org.argeo.slc.webapp/src/main/webapp/argeo-ria-src/class/org/argeo/ria/components/ViewSelection.js
new file mode 100644 (file)
index 0000000..6c3e873
--- /dev/null
@@ -0,0 +1,85 @@
+/**\r
+ * Generic selection model associated to an IView content opened in a given ViewPane.\r
+ * It contains in an array any row/data/node, and triggers changeSelection data events.\r
+ * @author Charles du Jeu\r
+ */\r
+qx.Class.define("org.argeo.ria.components.ViewSelection",\r
+{\r
+  extend : qx.core.Object,\r
+  \r
+  /**\r
+   * @param viewId {String} The ViewPane unique id\r
+   */\r
+  construct : function(viewId){\r
+       this.base(arguments);\r
+       this.nodes = [];\r
+       this.setViewId(viewId);\r
+  },\r
+\r
+  properties : {\r
+       /**\r
+        * The viewPane unique id \r
+        */\r
+       viewId : {\r
+       check : "String",\r
+       nullable: false\r
+       }\r
+  },\r
+  \r
+  events : {\r
+       /**\r
+        * Triggered each time the selection changes.\r
+        */\r
+       "changeSelection" : "qx.event.type.Data"\r
+  },\r
+  \r
+  /*\r
+  *****************************************************************************\r
+     MEMBERS\r
+  *****************************************************************************\r
+  */\r
+\r
+  members :\r
+  {\r
+       /**\r
+        * Empty the selection\r
+        */\r
+       clear : function(){\r
+               this.nodes = [];\r
+               this.triggerEvent();\r
+       },\r
+       \r
+       /**\r
+        * Add a row or xml node or whatever\r
+        * @param node {mixed} Data to add to the selection\r
+        */\r
+    addNode : function(node) {\r
+       this.nodes.push(node);\r
+       this.triggerEvent();\r
+    },\r
+    \r
+    /**\r
+     * The number of rows/nodes selected\r
+     * @return {Integer}\r
+     */\r
+    getCount : function() {\r
+       return this.nodes.length;\r
+    },\r
+    \r
+    /**\r
+     * Returns the content of the selection \r
+     * @return {Array}\r
+     */\r
+    getNodes : function(){\r
+       return this.nodes;\r
+    },\r
+    \r
+    /**\r
+     * Creates and fire a data event changeSelection\r
+     */\r
+    triggerEvent : function(){\r
+       this.fireDataEvent("changeSelection", this);\r
+    }\r
+    \r
+  }\r
+});
\ No newline at end of file