]> git.wh0rd.org Git - tt-rss.git/blob - lib/dijit/tree/_dndContainer.js.uncompressed.js
update dojo to 1.7.3
[tt-rss.git] / lib / dijit / tree / _dndContainer.js.uncompressed.js
1 define("dijit/tree/_dndContainer", [
2         "dojo/aspect",  // aspect.after
3         "dojo/_base/declare", // declare
4         "dojo/dom-class", // domClass.add domClass.remove domClass.replace
5         "dojo/_base/event",     // event.stop
6         "dojo/_base/lang", // lang.getObject lang.mixin lang.hitch
7         "dojo/mouse",   // mouse.enter, mouse.leave
8         "dojo/on"
9 ], function(aspect, declare, domClass, event, lang, mouse, on){
10
11         // module:
12         //              dijit/tree/_dndContainer
13         // summary:
14         //              This is a base class for `dijit.tree._dndSelector`, and isn't meant to be used directly.
15         //              It's modeled after `dojo.dnd.Container`.
16
17         return declare("dijit.tree._dndContainer", null, {
18
19                 // summary:
20                 //              This is a base class for `dijit.tree._dndSelector`, and isn't meant to be used directly.
21                 //              It's modeled after `dojo.dnd.Container`.
22                 // tags:
23                 //              protected
24
25                 /*=====
26                 // current: DomNode
27                 //              The currently hovered TreeNode.rowNode (which is the DOM node
28                 //              associated w/a given node in the tree, excluding it's descendants)
29                 current: null,
30                 =====*/
31
32                 constructor: function(tree, params){
33                         // summary:
34                         //              A constructor of the Container
35                         // tree: Node
36                         //              Node or node's id to build the container on
37                         // params: dijit.tree.__SourceArgs
38                         //              A dict of parameters, which gets mixed into the object
39                         // tags:
40                         //              private
41                         this.tree = tree;
42                         this.node = tree.domNode;       // TODO: rename; it's not a TreeNode but the whole Tree
43                         lang.mixin(this, params);
44
45                         // class-specific variables
46                         this.current = null;    // current TreeNode's DOM node
47
48                         // states
49                         this.containerState = "";
50                         domClass.add(this.node, "dojoDndContainer");
51
52                         // set up events
53                         this.events = [
54                                 // container level events
55                                 on(this.node, mouse.enter, lang.hitch(this, "onOverEvent")),
56                                 on(this.node, mouse.leave,      lang.hitch(this, "onOutEvent")),
57
58                                 // switching between TreeNodes
59                                 aspect.after(this.tree, "_onNodeMouseEnter", lang.hitch(this, "onMouseOver"), true),
60                                 aspect.after(this.tree, "_onNodeMouseLeave", lang.hitch(this, "onMouseOut"), true),
61
62                                 // cancel text selection and text dragging
63                                 on(this.node, "dragstart", lang.hitch(event, "stop")),
64                                 on(this.node, "selectstart", lang.hitch(event, "stop"))
65                         ];
66                 },
67
68                 destroy: function(){
69                         // summary:
70                         //              Prepares this object to be garbage-collected
71
72                         var h;
73                         while(h = this.events.pop()){ h.remove(); }
74
75                         // this.clearItems();
76                         this.node = this.parent = null;
77                 },
78
79                 // mouse events
80                 onMouseOver: function(widget /*===== , evt =====*/){
81                         // summary:
82                         //              Called when mouse is moved over a TreeNode
83                         // widget: TreeNode
84                         // evt: Event
85                         // tags:
86                         //              protected
87                         this.current = widget;
88                 },
89
90                 onMouseOut: function(/*===== widget, evt =====*/){
91                         // summary:
92                         //              Called when mouse is moved away from a TreeNode
93                         // widget: TreeNode
94                         // evt: Event
95                         // tags:
96                         //              protected
97                         this.current = null;
98                 },
99
100                 _changeState: function(type, newState){
101                         // summary:
102                         //              Changes a named state to new state value
103                         // type: String
104                         //              A name of the state to change
105                         // newState: String
106                         //              new state
107                         var prefix = "dojoDnd" + type;
108                         var state = type.toLowerCase() + "State";
109                         //domClass.replace(this.node, prefix + newState, prefix + this[state]);
110                         domClass.replace(this.node, prefix + newState, prefix + this[state]);
111                         this[state] = newState;
112                 },
113
114                 _addItemClass: function(node, type){
115                         // summary:
116                         //              Adds a class with prefix "dojoDndItem"
117                         // node: Node
118                         //              A node
119                         // type: String
120                         //              A variable suffix for a class name
121                         domClass.add(node, "dojoDndItem" + type);
122                 },
123
124                 _removeItemClass: function(node, type){
125                         // summary:
126                         //              Removes a class with prefix "dojoDndItem"
127                         // node: Node
128                         //              A node
129                         // type: String
130                         //              A variable suffix for a class name
131                         domClass.remove(node, "dojoDndItem" + type);
132                 },
133
134                 onOverEvent: function(){
135                         // summary:
136                         //              This function is called once, when mouse is over our container
137                         // tags:
138                         //              protected
139                         this._changeState("Container", "Over");
140                 },
141
142                 onOutEvent: function(){
143                         // summary:
144                         //              This function is called once, when mouse is out of our container
145                         // tags:
146                         //              protected
147                         this._changeState("Container", "");
148                 }
149         });
150 });