X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/0494b8d9b9bb03ab6c22b34dae81261e3cd7e3e6..7a654f8d43fdb43d78b63d90528bed6e86b608cc:/docs/resources/docs.js diff --git a/docs/resources/docs.js b/docs/resources/docs.js deleted file mode 100644 index bcc913cb..00000000 --- a/docs/resources/docs.js +++ /dev/null @@ -1,672 +0,0 @@ -Ext.BLANK_IMAGE_URL = 'resources/s.gif'; - -Docs = {}; - -ApiPanel = function() { - ApiPanel.superclass.constructor.call(this, { - id:'api-tree', - region:'west', - split:true, - header: false, - width: 280, - minSize: 175, - maxSize: 500, - collapsible: true, - margins:'0 0 5 5', - cmargins:'0 0 0 0', - rootVisible:false, - lines:false, - autoScroll:true, - animCollapse:false, - animate: false, - collapseMode:'mini', - loader: new Ext.tree.TreeLoader({ - preloadChildren: true, - clearOnLoad: false - }), - root: new Ext.tree.AsyncTreeNode({ - text:'Ext JS', - id:'root', - expanded:true, - children:[Docs.classData] - }), - collapseFirst:false - }); - // no longer needed! - //new Ext.tree.TreeSorter(this, {folderSort:true,leafAttr:'isClass'}); - - this.getSelectionModel().on('beforeselect', function(sm, node){ - return node.isLeaf(); - }); -}; - -Ext.extend(ApiPanel, Ext.tree.TreePanel, { - initComponent: function(){ - this.hiddenPkgs = []; - Ext.apply(this, { - tbar:[ ' ', - new Ext.form.TextField({ - width: 200, - emptyText:'Find a Class', - enableKeyEvents: true, - listeners:{ - render: function(f){ - this.filter = new Ext.tree.TreeFilter(this, { - clearBlank: true, - autoClear: true - }); - }, - keydown: { - fn: this.filterTree, - buffer: 350, - scope: this - }, - scope: this - } - }), ' ', ' ', - { - iconCls: 'icon-expand-all', - tooltip: 'Expand All', - handler: function(){ this.root.expand(true); }, - scope: this - }, '-', { - iconCls: 'icon-collapse-all', - tooltip: 'Collapse All', - handler: function(){ this.root.collapse(true); }, - scope: this - }] - }) - ApiPanel.superclass.initComponent.call(this); - }, - filterTree: function(t, e){ - var text = t.getValue(); - Ext.each(this.hiddenPkgs, function(n){ - n.ui.show(); - }); - if(!text){ - this.filter.clear(); - return; - } - this.expandAll(); - - var re = new RegExp('^' + Ext.escapeRe(text), 'i'); - this.filter.filterBy(function(n){ - return !n.attributes.isClass || re.test(n.text); - }); - - // hide empty packages that weren't filtered - this.hiddenPkgs = []; - var me = this; - this.root.cascade(function(n){ - if(!n.attributes.isClass && n.ui.ctNode.offsetHeight < 3){ - n.ui.hide(); - me.hiddenPkgs.push(n); - } - }); - }, - selectClass : function(cls){ - if(cls){ - var parts = cls.split('.'); - var last = parts.length-1; - var res = []; - var pkg = []; - for(var i = 0; i < last; i++){ // things get nasty - static classes can have . - var p = parts[i]; - var fc = p.charAt(0); - var staticCls = fc.toUpperCase() == fc; - if(p == 'Ext' || !staticCls){ - pkg.push(p); - res[i] = 'pkg-'+pkg.join('.'); - }else if(staticCls){ - --last; - res.splice(i, 1); - } - } - res[last] = cls; - - this.selectPath('/root/apidocs/'+res.join('/')); - } - } -}); - - -DocPanel = Ext.extend(Ext.Panel, { - closable: true, - autoScroll:true, - - initComponent : function(){ - var ps = this.cclass.split('.'); - this.title = ps[ps.length-1]; - Ext.apply(this,{ - tbar: ['->',{ - text: 'Config Options', - handler: this.scrollToMember.createDelegate(this, ['configs']), - iconCls: 'icon-config' - },'-',{ - text: 'Properties', - handler: this.scrollToMember.createDelegate(this, ['props']), - iconCls: 'icon-prop' - }, '-',{ - text: 'Methods', - handler: this.scrollToMember.createDelegate(this, ['methods']), - iconCls: 'icon-method' - }, '-',{ - text: 'Events', - handler: this.scrollToMember.createDelegate(this, ['events']), - iconCls: 'icon-event' - }, '-',{ - text: 'Direct Link', - handler: this.directLink, - scope: this, - iconCls: 'icon-fav' - }, '-',{ - tooltip:'Hide Inherited Members', - iconCls: 'icon-hide-inherited', - enableToggle: true, - scope: this, - toggleHandler : function(b, pressed){ - this.body[pressed ? 'addClass' : 'removeClass']('hide-inherited'); - } - }, '-', { - tooltip:'Expand All Members', - iconCls: 'icon-expand-members', - enableToggle: true, - scope: this, - toggleHandler : function(b, pressed){ - this.body[pressed ? 'addClass' : 'removeClass']('full-details'); - } - }] - }); - DocPanel.superclass.initComponent.call(this); - }, - - directLink : function(){ - var link = String.format( - "{0}", - document.location.href+'?class='+this.cclass - ); - Ext.Msg.alert('Direct Link to ' + this.cclass,link); - }, - - scrollToMember : function(member){ - var el = Ext.fly(this.cclass + '-' + member); - if(el){ - var top = (el.getOffsetsTo(this.body)[1]) + this.body.dom.scrollTop; - this.body.scrollTo('top', top-25, {duration:0.75, callback: this.hlMember.createDelegate(this, [member])}); - } - }, - - scrollToSection : function(id){ - var el = Ext.getDom(id); - if(el){ - var top = (Ext.fly(el).getOffsetsTo(this.body)[1]) + this.body.dom.scrollTop; - this.body.scrollTo('top', top-25, {duration:0.5, callback: function(){ - Ext.fly(el).next('h2').pause(0.2).highlight('#8DB2E3', {attr:'color'}); - }}); - } - }, - - hlMember : function(member){ - var el = Ext.fly(this.cclass + '-' + member); - if(el){ - if (tr = el.up('tr')) { - tr.highlight('#cadaf9'); - } - } - } -}); - - -MainPanel = function(){ - - this.searchStore = new Ext.data.Store({ - proxy: new Ext.data.ScriptTagProxy({ - url: 'http://extjs.com/playpen/api.php' - }), - reader: new Ext.data.JsonReader({ - root: 'data' - }, - ['cls', 'member', 'type', 'doc'] - ), - baseParams: {}, - listeners: { - 'beforeload' : function(){ - this.baseParams.qt = Ext.getCmp('search-type').getValue(); - } - } - }); - - MainPanel.superclass.constructor.call(this, { - id:'doc-body', - region:'center', - margins:'0 5 5 0', - resizeTabs: true, - minTabWidth: 135, - tabWidth: 135, - plugins: new Ext.ux.TabCloseMenu(), - enableTabScroll: true, - activeTab: 0, - - items: { - id:'welcome-panel', - title: 'API Home', - autoLoad: {url: 'welcome.html', callback: this.initSearch, scope: this}, - iconCls:'icon-docs', - autoScroll: true, - tbar: [ - 'Search: ', ' ', - new Ext.ux.SelectBox({ - listClass:'x-combo-list-small', - width:90, - value:'Starts with', - id:'search-type', - store: new Ext.data.SimpleStore({ - fields: ['text'], - expandData: true, - data : ['Starts with', 'Ends with', 'Any match'] - }), - displayField: 'text' - }), ' ', - new Ext.app.SearchField({ - width:240, - store: this.searchStore, - paramName: 'q' - }) - ] - } - }); -}; - -Ext.extend(MainPanel, Ext.TabPanel, { - - initEvents : function(){ - MainPanel.superclass.initEvents.call(this); - this.body.on('click', this.onClick, this); - }, - - onClick: function(e, target){ - if(target = e.getTarget('a:not(.exi)', 3)){ - var cls = Ext.fly(target).getAttributeNS('ext', 'cls'); - e.stopEvent(); - if(cls){ - var member = Ext.fly(target).getAttributeNS('ext', 'member'); - this.loadClass(target.href, cls, member); - }else if(target.className == 'inner-link'){ - this.getActiveTab().scrollToSection(target.href.split('#')[1]); - }else{ - window.open(target.href); - } - }else if(target = e.getTarget('.micon', 2)){ - e.stopEvent(); - var tr = Ext.fly(target.parentNode); - if(tr.hasClass('expandable')){ - tr.toggleClass('expanded'); - } - } - }, - - loadClass : function(href, cls, member){ - var id = 'docs-' + cls; - var tab = this.getComponent(id); - if(tab){ - this.setActiveTab(tab); - if(member){ - tab.scrollToMember(member); - } - }else{ - var autoLoad = {url: href}; - if(member){ - autoLoad.callback = function(){ - Ext.getCmp(id).scrollToMember(member); - } - } - var p = this.add(new DocPanel({ - id: id, - cclass : cls, - autoLoad: autoLoad, - iconCls: Docs.icons[cls] - })); - this.setActiveTab(p); - } - }, - - initSearch : function(){ - // Custom rendering Template for the View - var resultTpl = new Ext.XTemplate( - '', - '
', - '', - '{member}', - ' ', - '{cls}', - '

{doc}

', - '
' - ); - - var p = new Ext.DataView({ - applyTo: 'search', - tpl: resultTpl, - loadingText:'Searching...', - store: this.searchStore, - itemSelector: 'div.search-item', - emptyText: '

Use the search field above to search the Ext API for classes, properties, config options, methods and events.

' - }); - }, - - doSearch : function(e){ - var k = e.getKey(); - if(!e.isSpecialKey()){ - var text = e.target.value; - if(!text){ - this.searchStore.baseParams.q = ''; - this.searchStore.removeAll(); - }else{ - this.searchStore.baseParams.q = text; - this.searchStore.reload(); - } - } - } -}); - - -Ext.onReady(function(){ - - Ext.QuickTips.init(); - - var api = new ApiPanel(); - var mainPanel = new MainPanel(); - - api.on('click', function(node, e){ - if(node.isLeaf()){ - e.stopEvent(); - mainPanel.loadClass(node.attributes.href, node.id); - } - }); - - mainPanel.on('tabchange', function(tp, tab){ - api.selectClass(tab.cclass); - }); - - var viewport = new Ext.Viewport({ - layout:'border', - items:[ { - cls: 'docs-header', - height: 44, - region:'north', - xtype:'box', - el:'header', - border:false, - margins: '0 0 5 0' - }, api, mainPanel ] - }); - - api.expandPath('/root/apidocs'); - - // allow for link in - var page = window.location.href.split('?')[1]; - if(page){ - var ps = Ext.urlDecode(page); - var cls = ps['class']; - mainPanel.loadClass('output/' + cls + '.html', cls, ps.member); - } - - viewport.doLayout(); - - setTimeout(function(){ - Ext.get('loading').remove(); - Ext.get('loading-mask').fadeOut({remove:true}); - }, 250); - -}); - - -Ext.app.SearchField = Ext.extend(Ext.form.TwinTriggerField, { - initComponent : function(){ - if(!this.store.baseParams){ - this.store.baseParams = {}; - } - Ext.app.SearchField.superclass.initComponent.call(this); - this.on('specialkey', function(f, e){ - if(e.getKey() == e.ENTER){ - this.onTrigger2Click(); - } - }, this); - }, - - validationEvent:false, - validateOnBlur:false, - trigger1Class:'x-form-clear-trigger', - trigger2Class:'x-form-search-trigger', - hideTrigger1:true, - width:180, - hasSearch : false, - paramName : 'query', - - onTrigger1Click : function(){ - if(this.hasSearch){ - this.store.baseParams[this.paramName] = ''; - this.store.removeAll(); - this.el.dom.value = ''; - this.triggers[0].hide(); - this.hasSearch = false; - this.focus(); - } - }, - - onTrigger2Click : function(){ - var v = this.getRawValue(); - if(v.length < 1){ - this.onTrigger1Click(); - return; - } - if(v.length < 2){ - Ext.Msg.alert('Invalid Search', 'You must enter a minimum of 2 characters to search the API'); - return; - } - this.store.baseParams[this.paramName] = v; - var o = {start: 0}; - this.store.reload({params:o}); - this.hasSearch = true; - this.triggers[0].show(); - this.focus(); - } -}); - - -/** - * Makes a ComboBox more closely mimic an HTML SELECT. Supports clicking and dragging - * through the list, with item selection occurring when the mouse button is released. - * When used will automatically set {@link #editable} to false and call {@link Ext.Element#unselectable} - * on inner elements. Re-enabling editable after calling this will NOT work. - * - * @author Corey Gilmore - * http://extjs.com/forum/showthread.php?t=6392 - * - * @history 2007-07-08 jvs - * Slight mods for Ext 2.0 - */ -Ext.ux.SelectBox = function(config){ - this.searchResetDelay = 1000; - config = config || {}; - config = Ext.apply(config || {}, { - editable: false, - forceSelection: true, - rowHeight: false, - lastSearchTerm: false, - triggerAction: 'all', - mode: 'local' - }); - - Ext.ux.SelectBox.superclass.constructor.apply(this, arguments); - - this.lastSelectedIndex = this.selectedIndex || 0; -}; - -Ext.extend(Ext.ux.SelectBox, Ext.form.ComboBox, { - lazyInit: false, - initEvents : function(){ - Ext.ux.SelectBox.superclass.initEvents.apply(this, arguments); - // you need to use keypress to capture upper/lower case and shift+key, but it doesn't work in IE - this.el.on('keydown', this.keySearch, this, true); - this.cshTask = new Ext.util.DelayedTask(this.clearSearchHistory, this); - }, - - keySearch : function(e, target, options) { - var raw = e.getKey(); - var key = String.fromCharCode(raw); - var startIndex = 0; - - if( !this.store.getCount() ) { - return; - } - - switch(raw) { - case Ext.EventObject.HOME: - e.stopEvent(); - this.selectFirst(); - return; - - case Ext.EventObject.END: - e.stopEvent(); - this.selectLast(); - return; - - case Ext.EventObject.PAGEDOWN: - this.selectNextPage(); - e.stopEvent(); - return; - - case Ext.EventObject.PAGEUP: - this.selectPrevPage(); - e.stopEvent(); - return; - } - - // skip special keys other than the shift key - if( (e.hasModifier() && !e.shiftKey) || e.isNavKeyPress() || e.isSpecialKey() ) { - return; - } - if( this.lastSearchTerm == key ) { - startIndex = this.lastSelectedIndex; - } - this.search(this.displayField, key, startIndex); - this.cshTask.delay(this.searchResetDelay); - }, - - onRender : function(ct, position) { - this.store.on('load', this.calcRowsPerPage, this); - Ext.ux.SelectBox.superclass.onRender.apply(this, arguments); - if( this.mode == 'local' ) { - this.calcRowsPerPage(); - } - }, - - onSelect : function(record, index, skipCollapse){ - if(this.fireEvent('beforeselect', this, record, index) !== false){ - this.setValue(record.data[this.valueField || this.displayField]); - if( !skipCollapse ) { - this.collapse(); - } - this.lastSelectedIndex = index + 1; - this.fireEvent('select', this, record, index); - } - }, - - render : function(ct) { - Ext.ux.SelectBox.superclass.render.apply(this, arguments); - if( Ext.isSafari ) { - this.el.swallowEvent('mousedown', true); - } - this.el.unselectable(); - this.innerList.unselectable(); - this.trigger.unselectable(); - this.innerList.on('mouseup', function(e, target, options) { - if( target.id && target.id == this.innerList.id ) { - return; - } - this.onViewClick(); - }, this); - - this.innerList.on('mouseover', function(e, target, options) { - if( target.id && target.id == this.innerList.id ) { - return; - } - this.lastSelectedIndex = this.view.getSelectedIndexes()[0] + 1; - this.cshTask.delay(this.searchResetDelay); - }, this); - - this.trigger.un('click', this.onTriggerClick, this); - this.trigger.on('mousedown', function(e, target, options) { - e.preventDefault(); - this.onTriggerClick(); - }, this); - - this.on('collapse', function(e, target, options) { - Ext.getDoc().un('mouseup', this.collapseIf, this); - }, this, true); - - this.on('expand', function(e, target, options) { - Ext.getDoc().on('mouseup', this.collapseIf, this); - }, this, true); - }, - - clearSearchHistory : function() { - this.lastSelectedIndex = 0; - this.lastSearchTerm = false; - }, - - selectFirst : function() { - this.focusAndSelect(this.store.data.first()); - }, - - selectLast : function() { - this.focusAndSelect(this.store.data.last()); - }, - - selectPrevPage : function() { - if( !this.rowHeight ) { - return; - } - var index = Math.max(this.selectedIndex-this.rowsPerPage, 0); - this.focusAndSelect(this.store.getAt(index)); - }, - - selectNextPage : function() { - if( !this.rowHeight ) { - return; - } - var index = Math.min(this.selectedIndex+this.rowsPerPage, this.store.getCount() - 1); - this.focusAndSelect(this.store.getAt(index)); - }, - - search : function(field, value, startIndex) { - field = field || this.displayField; - this.lastSearchTerm = value; - var index = this.store.find.apply(this.store, arguments); - if( index !== -1 ) { - this.focusAndSelect(index); - } - }, - - focusAndSelect : function(record) { - var index = typeof record === 'number' ? record : this.store.indexOf(record); - this.select(index, this.isExpanded()); - this.onSelect(this.store.getAt(record), index, this.isExpanded()); - }, - - calcRowsPerPage : function() { - if( this.store.getCount() ) { - this.rowHeight = Ext.fly(this.view.getNode(0)).getHeight(); - this.rowsPerPage = this.maxHeight / this.rowHeight; - } else { - this.rowHeight = false; - } - } - -}); - -Ext.Ajax.on('requestcomplete', function(ajax, xhr, o){ - if(typeof urchinTracker == 'function' && o && o.url){ - urchinTracker(o.url); - } -});