123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- define("dijit/tree/_dndContainer", [
- "dojo/aspect", // aspect.after
- "dojo/_base/declare", // declare
- "dojo/dom-class", // domClass.add domClass.remove domClass.replace
- "dojo/_base/event", // event.stop
- "dojo/_base/lang", // lang.getObject lang.mixin lang.hitch
- "dojo/mouse", // mouse.enter, mouse.leave
- "dojo/on"
- ], function(aspect, declare, domClass, event, lang, mouse, on){
- // module:
- // dijit/tree/_dndContainer
- // summary:
- // This is a base class for `dijit.tree._dndSelector`, and isn't meant to be used directly.
- // It's modeled after `dojo.dnd.Container`.
- return declare("dijit.tree._dndContainer", null, {
- // summary:
- // This is a base class for `dijit.tree._dndSelector`, and isn't meant to be used directly.
- // It's modeled after `dojo.dnd.Container`.
- // tags:
- // protected
- /*=====
- // current: DomNode
- // The currently hovered TreeNode.rowNode (which is the DOM node
- // associated w/a given node in the tree, excluding it's descendants)
- current: null,
- =====*/
- constructor: function(tree, params){
- // summary:
- // A constructor of the Container
- // tree: Node
- // Node or node's id to build the container on
- // params: dijit.tree.__SourceArgs
- // A dict of parameters, which gets mixed into the object
- // tags:
- // private
- this.tree = tree;
- this.node = tree.domNode; // TODO: rename; it's not a TreeNode but the whole Tree
- lang.mixin(this, params);
- // class-specific variables
- this.current = null; // current TreeNode's DOM node
- // states
- this.containerState = "";
- domClass.add(this.node, "dojoDndContainer");
- // set up events
- this.events = [
- // container level events
- on(this.node, mouse.enter, lang.hitch(this, "onOverEvent")),
- on(this.node, mouse.leave, lang.hitch(this, "onOutEvent")),
- // switching between TreeNodes
- aspect.after(this.tree, "_onNodeMouseEnter", lang.hitch(this, "onMouseOver"), true),
- aspect.after(this.tree, "_onNodeMouseLeave", lang.hitch(this, "onMouseOut"), true),
- // cancel text selection and text dragging
- on(this.node, "dragstart", lang.hitch(event, "stop")),
- on(this.node, "selectstart", lang.hitch(event, "stop"))
- ];
- },
- destroy: function(){
- // summary:
- // Prepares this object to be garbage-collected
- var h;
- while(h = this.events.pop()){ h.remove(); }
- // this.clearItems();
- this.node = this.parent = null;
- },
- // mouse events
- onMouseOver: function(widget /*===== , evt =====*/){
- // summary:
- // Called when mouse is moved over a TreeNode
- // widget: TreeNode
- // evt: Event
- // tags:
- // protected
- this.current = widget;
- },
- onMouseOut: function(/*===== widget, evt =====*/){
- // summary:
- // Called when mouse is moved away from a TreeNode
- // widget: TreeNode
- // evt: Event
- // tags:
- // protected
- this.current = null;
- },
- _changeState: function(type, newState){
- // summary:
- // Changes a named state to new state value
- // type: String
- // A name of the state to change
- // newState: String
- // new state
- var prefix = "dojoDnd" + type;
- var state = type.toLowerCase() + "State";
- //domClass.replace(this.node, prefix + newState, prefix + this[state]);
- domClass.replace(this.node, prefix + newState, prefix + this[state]);
- this[state] = newState;
- },
- _addItemClass: function(node, type){
- // summary:
- // Adds a class with prefix "dojoDndItem"
- // node: Node
- // A node
- // type: String
- // A variable suffix for a class name
- domClass.add(node, "dojoDndItem" + type);
- },
- _removeItemClass: function(node, type){
- // summary:
- // Removes a class with prefix "dojoDndItem"
- // node: Node
- // A node
- // type: String
- // A variable suffix for a class name
- domClass.remove(node, "dojoDndItem" + type);
- },
- onOverEvent: function(){
- // summary:
- // This function is called once, when mouse is over our container
- // tags:
- // protected
- this._changeState("Container", "Over");
- },
- onOutEvent: function(){
- // summary:
- // This function is called once, when mouse is out of our container
- // tags:
- // protected
- this._changeState("Container", "");
- }
- });
- });
|