]> git.wh0rd.org - tt-rss.git/blob - lib/dijit/tree/_dndContainer.js.uncompressed.js
modify dojo rebuild script to remove uncompressed files
[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.mixin lang.hitch
7 "dojo/on",
8 "dojo/touch"
9 ], function(aspect, declare,domClass, event, lang, on, touch){
10
11 // module:
12 // dijit/tree/_dndContainer
13
14 /*=====
15 var __Args = {
16 // summary:
17 // A dict of parameters for Tree source configuration.
18 // isSource: Boolean?
19 // Can be used as a DnD source. Defaults to true.
20 // accept: String[]
21 // List of accepted types (text strings) for a target; defaults to
22 // ["text", "treeNode"]
23 // copyOnly: Boolean?
24 // Copy items, if true, use a state of Ctrl key otherwise,
25 // dragThreshold: Number
26 // The move delay in pixels before detecting a drag; 0 by default
27 // betweenThreshold: Integer
28 // Distance from upper/lower edge of node to allow drop to reorder nodes
29 };
30 =====*/
31
32 return declare("dijit.tree._dndContainer", null, {
33
34 // summary:
35 // This is a base class for `dijit/tree/_dndSelector`, and isn't meant to be used directly.
36 // It's modeled after `dojo/dnd/Container`.
37 // tags:
38 // protected
39
40 /*=====
41 // current: DomNode
42 // The currently hovered TreeNode.rowNode (which is the DOM node
43 // associated w/a given node in the tree, excluding it's descendants)
44 current: null,
45 =====*/
46
47 constructor: function(tree, params){
48 // summary:
49 // A constructor of the Container
50 // tree: Node
51 // Node or node's id to build the container on
52 // params: __Args
53 // A dict of parameters, which gets mixed into the object
54 // tags:
55 // private
56 this.tree = tree;
57 this.node = tree.domNode; // TODO: rename; it's not a TreeNode but the whole Tree
58 lang.mixin(this, params);
59
60 // class-specific variables
61 this.current = null; // current TreeNode's DOM node
62
63 // states
64 this.containerState = "";
65 domClass.add(this.node, "dojoDndContainer");
66
67 // set up events
68 this.events = [
69 // Mouse (or touch) enter/leave on Tree itself
70 on(this.node, touch.enter, lang.hitch(this, "onOverEvent")),
71 on(this.node, touch.leave, lang.hitch(this, "onOutEvent")),
72
73 // switching between TreeNodes
74 aspect.after(this.tree, "_onNodeMouseEnter", lang.hitch(this, "onMouseOver"), true),
75 aspect.after(this.tree, "_onNodeMouseLeave", lang.hitch(this, "onMouseOut"), true),
76
77 // cancel text selection and text dragging
78 on(this.node, "dragstart", lang.hitch(event, "stop")),
79 on(this.node, "selectstart", lang.hitch(event, "stop"))
80 ];
81 },
82
83 destroy: function(){
84 // summary:
85 // Prepares this object to be garbage-collected
86
87 var h;
88 while(h = this.events.pop()){ h.remove(); }
89
90 // this.clearItems();
91 this.node = this.parent = null;
92 },
93
94 // mouse events
95 onMouseOver: function(widget /*===== , evt =====*/){
96 // summary:
97 // Called when mouse is moved over a TreeNode
98 // widget: TreeNode
99 // evt: Event
100 // tags:
101 // protected
102 this.current = widget;
103 },
104
105 onMouseOut: function(/*===== widget, evt =====*/){
106 // summary:
107 // Called when mouse is moved away from a TreeNode
108 // widget: TreeNode
109 // evt: Event
110 // tags:
111 // protected
112 this.current = null;
113 },
114
115 _changeState: function(type, newState){
116 // summary:
117 // Changes a named state to new state value
118 // type: String
119 // A name of the state to change
120 // newState: String
121 // new state
122 var prefix = "dojoDnd" + type;
123 var state = type.toLowerCase() + "State";
124 //domClass.replace(this.node, prefix + newState, prefix + this[state]);
125 domClass.replace(this.node, prefix + newState, prefix + this[state]);
126 this[state] = newState;
127 },
128
129 _addItemClass: function(node, type){
130 // summary:
131 // Adds a class with prefix "dojoDndItem"
132 // node: Node
133 // A node
134 // type: String
135 // A variable suffix for a class name
136 domClass.add(node, "dojoDndItem" + type);
137 },
138
139 _removeItemClass: function(node, type){
140 // summary:
141 // Removes a class with prefix "dojoDndItem"
142 // node: Node
143 // A node
144 // type: String
145 // A variable suffix for a class name
146 domClass.remove(node, "dojoDndItem" + type);
147 },
148
149 onOverEvent: function(){
150 // summary:
151 // This function is called once, when mouse is over our container
152 // tags:
153 // protected
154 this._changeState("Container", "Over");
155 },
156
157 onOutEvent: function(){
158 // summary:
159 // This function is called once, when mouse is out of our container
160 // tags:
161 // protected
162 this._changeState("Container", "");
163 }
164 });
165 });