Upgrade to ExtJS 3.0.0 - Released 07/06/2009
[extjs.git] / air / samples / tasks / js / TreeSelector.js
diff --git a/air/samples/tasks/js/TreeSelector.js b/air/samples/tasks/js/TreeSelector.js
deleted file mode 100644 (file)
index f04f774..0000000
+++ /dev/null
@@ -1,290 +0,0 @@
-/*\r
- * Ext JS Library 0.30\r
- * Copyright(c) 2006-2009, Ext JS, LLC.\r
- * licensing@extjs.com\r
- * \r
- * http://extjs.com/license\r
- */\r
-\r
-// custom menu item to contain Ext trees\r
-Ext.menu.TreeItem = Ext.extend(Ext.menu.Adapter, {\r
-       constructor : function(config){\r
-        Ext.menu.TreeItem.superclass.constructor.call(this, config.tree, config);\r
-        this.tree = this.component;\r
-        this.addEvents('selectionchange');\r
-\r
-        this.tree.on("render", function(tree){\r
-            tree.body.swallowEvent(['click','keydown', 'keypress', 'keyup']);\r
-        });\r
-\r
-        this.tree.getSelectionModel().on("selectionchange", this.onSelect, this);\r
-    },\r
-\r
-    onSelect : function(tree, sel){\r
-        this.fireEvent("select", this, sel, tree);\r
-    }\r
-});\r
-\r
-\r
-// custom menu containing a single tree\r
-Ext.menu.TreeMenu = Ext.extend(Ext.menu.Menu, {\r
-    cls:'x-tree-menu',\r
-       keyNav: true,\r
-       hideOnClick:false,\r
-    plain: true,\r
-\r
-    constructor : function(config){\r
-        Ext.menu.TreeMenu.superclass.constructor.call(this, config);\r
-        this.treeItem = new Ext.menu.TreeItem(config);\r
-        this.add(this.treeItem);\r
-\r
-        this.tree = this.treeItem.tree;\r
-        this.tree.on('click', this.onNodeClick, this);\r
-        this.relayEvents(this.treeItem, ["selectionchange"]);\r
-    },\r
-\r
-    // private\r
-    beforeDestroy : function() {\r
-        this.tree.destroy();\r
-    },\r
-       \r
-       onNodeClick : function(node, e){\r
-               if(!node.attributes.isFolder){\r
-                       this.treeItem.handleClick(e);\r
-               }\r
-       }\r
-});\r
-\r
-\r
-// custom form field for displaying a tree, similar to select or combo\r
-Ext.ux.TreeSelector = Ext.extend(Ext.form.TriggerField, {\r
-       initComponent : function(){\r
-               Ext.ux.TreeSelector.superclass.initComponent.call(this);\r
-               this.addEvents('selectionchange');\r
-\r
-               this.tree.getSelectionModel().on('selectionchange', this.onSelection, this);\r
-               this.tree.on({\r
-                       'expandnode': this.sync,\r
-                       'collapsenode' : this.sync,\r
-                       'append' : this.sync,\r
-                       'remove' : this.sync,\r
-                       'insert' : this.sync,\r
-                       scope: this\r
-               });\r
-               this.on('focus', this.onTriggerClick, this);\r
-    },\r
-\r
-       sync : function(){\r
-               if(this.menu && this.menu.isVisible()){\r
-                       if(this.tree.body.getHeight() > this.maxHeight){\r
-                               this.tree.body.setHeight(this.maxHeight);\r
-                               this.restricted = true;\r
-                       }else if(this.restricted && this.tree.body.dom.firstChild.offsetHeight < this.maxHeight){\r
-                               this.tree.body.setHeight('');\r
-                               this.restricted = false;\r
-                       }\r
-                       this.menu.el.sync();\r
-               }\r
-       },\r
-\r
-       onSelection : function(tree, node){\r
-               if(!node){\r
-                       this.setRawValue('');\r
-               }else{\r
-                       this.setRawValue(node.text);\r
-               }\r
-       },\r
-\r
-       initEvents : function(){\r
-               Ext.ux.TreeSelector.superclass.initEvents.call(this);\r
-               this.el.on('mousedown', this.onTriggerClick, this);\r
-               this.el.on("keydown", this.onKeyDown,  this);\r
-       },\r
-\r
-       onKeyDown : function(e){\r
-               if(e.getKey() == e.DOWN){\r
-                       this.onTriggerClick();\r
-               }\r
-       },\r
-\r
-    validateBlur : function(){\r
-        return !this.menu || !this.menu.isVisible();\r
-    },\r
-\r
-    getValue : function(){\r
-               var sm = this.tree.getSelectionModel();\r
-               var s = sm.getSelectedNode();\r
-        return s ? s.id : '';\r
-    },\r
-\r
-    setValue : function(id){\r
-               var n = this.tree.getNodeById(id);\r
-               if(n){\r
-                       n.select();\r
-               }else{\r
-                       this.tree.getSelectionModel().clearSelections();\r
-               }\r
-    },\r
-\r
-    // private\r
-    onDestroy : function(){\r
-        if(this.menu) {\r
-            this.menu.destroy();\r
-        }\r
-        if(this.wrap){\r
-            this.wrap.remove();\r
-        }\r
-        Ext.ux.TreeSelector.superclass.onDestroy.call(this);\r
-    },\r
-\r
-       // private\r
-    menuListeners : {\r
-        show : function(){ // retain focus styling\r
-            this.onFocus();\r
-        },\r
-        hide : function(){\r
-            this.focus.defer(10, this);\r
-            var ml = this.menuListeners;\r
-            this.menu.un("show", ml.show,  this);\r
-            this.menu.un("hide", ml.hide,  this);\r
-        }\r
-    },\r
-\r
-    onTriggerClick : function(){\r
-               if(this.disabled){\r
-            return;\r
-        }\r
-        this.menu.on(Ext.apply({}, this.menuListeners, {\r
-            scope:this\r
-        }));\r
-\r
-        this.menu.show(this.el, "tl-bl?");\r
-               this.sync();\r
-               var sm = this.tree.getSelectionModel();\r
-               var selected = sm.getSelectedNode();\r
-               if(selected){\r
-                       selected.ensureVisible();\r
-                       sm.activate.defer(250, sm, [selected]);\r
-               }\r
-    },\r
-\r
-    beforeBlur : function(){\r
-        //\r
-    },\r
-\r
-       onRender : function(){\r
-               Ext.ux.TreeSelector.superclass.onRender.apply(this, arguments);\r
-               this.menu = new Ext.menu.TreeMenu(Ext.apply(this.menuConfig || {}, {tree: this.tree}));\r
-               this.menu.render();\r
-\r
-               this.tree.body.addClass('x-tree-selector');\r
-       },\r
-\r
-       readOnly: true\r
-});\r
-\r
-/*\r
- * Custom tree keyboard navigation that supports node navigation without selection\r
- */\r
-Ext.tree.ActivationModel = Ext.extend(Ext.tree.DefaultSelectionModel, {\r
-       select : function(node){\r
-        return this.activate(Ext.tree.ActivationModel.superclass.select.call(this, node));\r
-    },\r
-    \r
-    activate : function(node){\r
-               if(!node){\r
-                       return;\r
-               }\r
-               if(this.activated != node) {\r
-                       if(this.activated){\r
-                               this.activated.ui.removeClass('x-tree-activated');\r
-                       }\r
-                       this.activated = node;\r
-                       node.ui.addClass('x-tree-activated');\r
-               }\r
-               node.ui.focus();\r
-               return node;    \r
-       },\r
-       \r
-       activatePrevious : function(){\r
-        var s = this.activated;\r
-        if(!s){\r
-            return null;\r
-        }\r
-        var ps = s.previousSibling;\r
-        if(ps){\r
-            if(!ps.isExpanded() || ps.childNodes.length < 1){\r
-                return this.activate(ps);\r
-            } else{\r
-                var lc = ps.lastChild;\r
-                while(lc && lc.isExpanded() && lc.childNodes.length > 0){\r
-                    lc = lc.lastChild;\r
-                }\r
-                return this.activate(lc);\r
-            }\r
-        } else if(s.parentNode && (this.tree.rootVisible || !s.parentNode.isRoot)){\r
-            return this.activate(s.parentNode);\r
-        }\r
-        return null;\r
-    },\r
-\r
-    activateNext : function(){\r
-        var s = this.activated;\r
-        if(!s){\r
-            return null;\r
-        }\r
-        if(s.firstChild && s.isExpanded()){\r
-             return this.activate(s.firstChild);\r
-         }else if(s.nextSibling){\r
-             return this.activate(s.nextSibling);\r
-         }else if(s.parentNode){\r
-            var newS = null;\r
-            s.parentNode.bubble(function(){\r
-                if(this.nextSibling){\r
-                    newS = this.getOwnerTree().selModel.activate(this.nextSibling);\r
-                    return false;\r
-                }\r
-            });\r
-            return newS;\r
-         }\r
-        return null;\r
-    },\r
-\r
-    onKeyDown : function(e){\r
-        var s = this.activated;\r
-        // undesirable, but required\r
-        var sm = this;\r
-        if(!s){\r
-            return;\r
-        }\r
-        var k = e.getKey();\r
-        switch(k){\r
-             case e.DOWN:\r
-                 e.stopEvent();\r
-                 this.activateNext();\r
-             break;\r
-             case e.UP:\r
-                 e.stopEvent();\r
-                 this.activatePrevious();\r
-             break;\r
-             case e.RIGHT:\r
-                 e.preventDefault();\r
-                 if(s.hasChildNodes()){\r
-                     if(!s.isExpanded()){\r
-                         s.expand();\r
-                     }else if(s.firstChild){\r
-                         this.activate(s.firstChild, e);\r
-                     }\r
-                 }\r
-             break;\r
-             case e.LEFT:\r
-                 e.preventDefault();\r
-                 if(s.hasChildNodes() && s.isExpanded()){\r
-                     s.collapse();\r
-                 }else if(s.parentNode && (this.tree.rootVisible || s.parentNode != this.tree.getRootNode())){\r
-                     this.activate(s.parentNode, e);\r
-                 }\r
-             break;\r
-        };\r
-    }\r
-});
\ No newline at end of file