]> git.wh0rd.org - tt-rss.git/blobdiff - lib/dojo/dnd/Avatar.js.uncompressed.js
update dojo to 1.7.3
[tt-rss.git] / lib / dojo / dnd / Avatar.js.uncompressed.js
diff --git a/lib/dojo/dnd/Avatar.js.uncompressed.js b/lib/dojo/dnd/Avatar.js.uncompressed.js
new file mode 100644 (file)
index 0000000..0cd1922
--- /dev/null
@@ -0,0 +1,111 @@
+define("dojo/dnd/Avatar", ["../main", "./common"], function(dojo) {
+       // module:
+       //              dojo/dnd/Avatar
+       // summary:
+       //              TODOC
+
+
+dojo.declare("dojo.dnd.Avatar", null, {
+       // summary:
+       //              Object that represents transferred DnD items visually
+       // manager: Object
+       //              a DnD manager object
+
+       constructor: function(manager){
+               this.manager = manager;
+               this.construct();
+       },
+
+       // methods
+       construct: function(){
+               // summary:
+               //              constructor function;
+               //              it is separate so it can be (dynamically) overwritten in case of need
+               this.isA11y = dojo.hasClass(dojo.body(),"dijit_a11y");
+               var a = dojo.create("table", {
+                               "class": "dojoDndAvatar",
+                               style: {
+                                       position: "absolute",
+                                       zIndex:   "1999",
+                                       margin:   "0px"
+                               }
+                       }),
+                       source = this.manager.source, node,
+                       b = dojo.create("tbody", null, a),
+                       tr = dojo.create("tr", null, b),
+                       td = dojo.create("td", null, tr),
+                       icon = this.isA11y ? dojo.create("span", {
+                                               id : "a11yIcon",
+                                               innerHTML : this.manager.copy ? '+' : "<"
+                                       }, td) : null,
+                       span = dojo.create("span", {
+                               innerHTML: source.generateText ? this._generateText() : ""
+                       }, td),
+                       k = Math.min(5, this.manager.nodes.length), i = 0;
+               // we have to set the opacity on IE only after the node is live
+               dojo.attr(tr, {
+                       "class": "dojoDndAvatarHeader",
+                       style: {opacity: 0.9}
+               });
+               for(; i < k; ++i){
+                       if(source.creator){
+                               // create an avatar representation of the node
+                               node = source._normalizedCreator(source.getItem(this.manager.nodes[i].id).data, "avatar").node;
+                       }else{
+                               // or just clone the node and hope it works
+                               node = this.manager.nodes[i].cloneNode(true);
+                               if(node.tagName.toLowerCase() == "tr"){
+                                       // insert extra table nodes
+                                       var table = dojo.create("table"),
+                                               tbody = dojo.create("tbody", null, table);
+                                       tbody.appendChild(node);
+                                       node = table;
+                               }
+                       }
+                       node.id = "";
+                       tr = dojo.create("tr", null, b);
+                       td = dojo.create("td", null, tr);
+                       td.appendChild(node);
+                       dojo.attr(tr, {
+                               "class": "dojoDndAvatarItem",
+                               style: {opacity: (9 - i) / 10}
+                       });
+               }
+               this.node = a;
+       },
+       destroy: function(){
+               // summary:
+               //              destructor for the avatar; called to remove all references so it can be garbage-collected
+               dojo.destroy(this.node);
+               this.node = false;
+       },
+       update: function(){
+               // summary:
+               //              updates the avatar to reflect the current DnD state
+               dojo[(this.manager.canDropFlag ? "add" : "remove") + "Class"](this.node, "dojoDndAvatarCanDrop");
+               if (this.isA11y){
+                       var icon = dojo.byId("a11yIcon");
+                       var text = '+';   // assume canDrop && copy
+                       if (this.manager.canDropFlag && !this.manager.copy) {
+                               text = '< '; // canDrop && move
+                       }else if (!this.manager.canDropFlag && !this.manager.copy) {
+                               text = "o"; //!canDrop && move
+                       }else if(!this.manager.canDropFlag){
+                               text = 'x';  // !canDrop && copy
+                       }
+                       icon.innerHTML=text;
+               }
+               // replace text
+               dojo.query(("tr.dojoDndAvatarHeader td span" +(this.isA11y ? " span" : "")), this.node).forEach(
+                       function(node){
+                               node.innerHTML = this._generateText();
+                       }, this);
+       },
+       _generateText: function(){
+               // summary: generates a proper text to reflect copying or moving of items
+               return this.manager.nodes.length.toString();
+       }
+});
+
+return dojo.dnd.Avatar;
+});