123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005 |
- /*
- Ext JS 4.1 - JavaScript Library
- Copyright (c) 2006-2012, Sencha Inc.
- All rights reserved.
- licensing@sencha.com
- http://www.sencha.com/license
- Open Source License
- ------------------------------------------------------------------------------------------
- This version of Ext JS is licensed under the terms of the Open Source GPL 3.0 license.
- http://www.gnu.org/licenses/gpl.html
- There are several FLOSS exceptions available for use with this release for
- open source applications that are distributed under a license other than GPL.
- * Open Source License Exception for Applications
- http://www.sencha.com/products/floss-exception.php
- * Open Source License Exception for Development
- http://www.sencha.com/products/ux-exception.php
- Alternate Licensing
- ------------------------------------------------------------------------------------------
- Commercial and OEM Licenses are available for an alternate download of Ext JS.
- This is the appropriate option if you are creating proprietary applications and you are
- not prepared to distribute and share the source code of your application under the
- GPL v3 license. Please visit http://www.sencha.com/license for more details.
- --
- This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT OF THIRD-PARTY INTELLECTUAL PROPERTY RIGHTS. See the GNU General Public License for more details.
- */
- /*
- Ext JS 4.1 - JavaScript Library
- Copyright (c) 2006-2012, Sencha Inc.
- All rights reserved.
- licensing@sencha.com
- http://www.sencha.com/license
- Open Source License
- ------------------------------------------------------------------------------------------
- This version of Ext JS is licensed under the terms of the Open Source GPL 3.0 license.
- http://www.gnu.org/licenses/gpl.html
- There are several FLOSS exceptions available for use with this release for
- open source applications that are distributed under a license other than GPL.
- * Open Source License Exception for Applications
- http://www.sencha.com/products/floss-exception.php
- * Open Source License Exception for Development
- http://www.sencha.com/products/ux-exception.php
- Alternate Licensing
- ------------------------------------------------------------------------------------------
- Commercial and OEM Licenses are available for an alternate download of Ext JS.
- This is the appropriate option if you are creating proprietary applications and you are
- not prepared to distribute and share the source code of your application under the
- GPL v3 license. Please visit http://www.sencha.com/license for more details.
- --
- This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT OF THIRD-PARTY INTELLECTUAL PROPERTY RIGHTS. See the GNU General Public License for more details.
- */
- /*
- Ext JS 4.1 - JavaScript Library
- Copyright (c) 2006-2012, Sencha Inc.
- All rights reserved.
- licensing@sencha.com
- http://www.sencha.com/license
- Open Source License
- ------------------------------------------------------------------------------------------
- This version of Ext JS is licensed under the terms of the Open Source GPL 3.0 license.
- http://www.gnu.org/licenses/gpl.html
- There are several FLOSS exceptions available for use with this release for
- open source applications that are distributed under a license other than GPL.
- * Open Source License Exception for Applications
- http://www.sencha.com/products/floss-exception.php
- * Open Source License Exception for Development
- http://www.sencha.com/products/ux-exception.php
- Alternate Licensing
- ------------------------------------------------------------------------------------------
- Commercial and OEM Licenses are available for an alternate download of Ext JS.
- This is the appropriate option if you are creating proprietary applications and you are
- not prepared to distribute and share the source code of your application under the
- GPL v3 license. Please visit http://www.sencha.com/license for more details.
- --
- This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT OF THIRD-PARTY INTELLECTUAL PROPERTY RIGHTS. See the GNU General Public License for more details.
- */
- /*
- This file is part of Ext JS 4.1
- Copyright (c) 2011-2012 Sencha Inc
- Contact: http://www.sencha.com/contact
- GNU General Public License Usage
- This file may be used under the terms of the GNU General Public License version 3.0 as
- published by the Free Software Foundation and appearing in the file LICENSE included in the
- packaging of this file.
- Please review the following information to ensure the GNU General Public License version 3.0
- requirements will be met: http://www.gnu.org/copyleft/gpl.html.
- If you are unsure which license is appropriate for your use, please contact the sales department
- at http://www.sencha.com/contact.
- Build date: 2012-07-04 21:11:01 (65ff594cd80b9bad45df640c22cc0adb52c95a7b)
- */
- /**
- * Ext.Neptune.*
- * Various overrides so the new Neptune theme is supported. This **must** be included for neptune to work.
- */
- Ext.define('Ext.Neptune.button.Button', {
- override: 'Ext.button.Button',
-
- setScale: function(scale) {
- this.callParent(arguments);
- this.removeCls(this.allowedScales);
- this.addCls(scale);
- }
- });
- Ext.define('Ext.Neptune.tab.Bar', {
- override: 'Ext.tab.Bar',
-
- onAdd: function(tab) {
- tab.position = this.dock;
- tab.ui = this.ui;
- this.callParent(arguments);
- }
- });
- Ext.define('Ext.Neptune.container.ButtonGroup', {
- override: 'Ext.container.ButtonGroup',
-
- beforeRender: function() {
- var me = this;
- me.callParent();
- //we need to add an addition item in here so the ButtonGroup title is centered
- if (me.header) {
- // Header text cannot flex, but must be natural size if it's being centered
- delete me.header.items.items[0].flex;
- }
- me.callParent(arguments);
- }
- });
- Ext.define('Ext.Neptune.layout.component.field.Trigger', {
- override: 'Ext.layout.component.field.Trigger',
-
- sizeBodyContents: function(width, height, ownerContext) {
- var me = this,
- owner = me.owner,
- triggerWidth = owner.getTriggerWidth();
- // If we or our ancestor is hidden, we can get a triggerWidth calculation
- // of 0. We don't want to resize in this case.
- if (owner.hideTrigger || owner.readOnly || triggerWidth > 0) {
- ownerContext.inputContext.setProp('width', width, true);
- }
- }
- });
- Ext.define('Ext.Neptune.menu.Menu', {
- override: 'Ext.menu.Menu',
-
- baseCls: Ext.baseCSSPrefix + 'menu',
- initComponent: function() {
- var me = this;
- me.addEvents(
- /**
- * @event click
- * Fires when this menu is clicked
- * @param {Ext.menu.Menu} menu The menu which has been clicked
- * @param {Ext.Component} item The menu item that was clicked. `undefined` if not applicable.
- * @param {Ext.EventObject} e The underlying {@link Ext.EventObject}.
- */
- 'click',
- /**
- * @event mouseenter
- * Fires when the mouse enters this menu
- * @param {Ext.menu.Menu} menu The menu
- * @param {Ext.EventObject} e The underlying {@link Ext.EventObject}
- */
- 'mouseenter',
- /**
- * @event mouseleave
- * Fires when the mouse leaves this menu
- * @param {Ext.menu.Menu} menu The menu
- * @param {Ext.EventObject} e The underlying {@link Ext.EventObject}
- */
- 'mouseleave',
- /**
- * @event mouseover
- * Fires when the mouse is hovering over this menu
- * @param {Ext.menu.Menu} menu The menu
- * @param {Ext.Component} item The menu item that the mouse is over. `undefined` if not applicable.
- * @param {Ext.EventObject} e The underlying {@link Ext.EventObject}
- */
- 'mouseover'
- );
- Ext.menu.Manager.register(me);
- // Menu classes
- if (me.plain) {
- me.cls = Ext.baseCSSPrefix + 'menu-plain';
- }
- // Internal vbox layout, with scrolling overflow
- // Placed in initComponent (rather than prototype) in order to support dynamic layout/scroller
- // options if we wish to allow for such configurations on the Menu.
- // e.g., scrolling speed, vbox align stretch, etc.
- if (!me.layout) {
- me.layout = {
- type: 'vbox',
- align: 'stretchmax',
- overflowHandler: 'Scroller'
- };
-
- if (!me.floating) {
- me.layout.align = 'stretch';
- }
- }
- // hidden defaults to false if floating is configured as false
- if (me.floating === false && me.initialConfig.hidden !== true) {
- me.hidden = false;
- }
- me.callParent(arguments);
- me.on('beforeshow', function() {
- var hasItems = !!me.items.length;
- // FIXME: When a menu has its show cancelled because of no items, it
- // gets a visibility: hidden applied to it (instead of the default display: none)
- // Not sure why, but we remove this style when we want to show again.
- if (hasItems && me.rendered) {
- me.el.setStyle('visibility', null);
- }
- return hasItems;
- });
- }
- });
- Ext.define('Ext.Neptune.panel.Tool', {
- override: 'Ext.panel.Tool',
-
- renderTpl: ['<div id="{id}-toolEl" class="{baseCls}-{type}" role="presentation"></div>']
- });
- Ext.define('Ext.Neptune.window.MessageBox', {
- override: 'Ext.window.MessageBox',
-
- initComponent: function() {
- var me = this,
- i, button;
- me.title = ' ';
- me.topContainer = new Ext.container.Container({
- anchor: '100%',
- style: {
- padding: '10px',
- overflow: 'hidden'
- },
- items: [
- me.iconComponent = new Ext.Component({
- cls: me.baseCls + '-icon',
- width: 50,
- height: me.iconHeight,
- style: {
- 'float': 'left'
- }
- }),
- me.promptContainer = new Ext.container.Container({
- layout: {
- type: 'anchor'
- },
- items: [
- me.msg = new Ext.Component({
- autoEl: { tag: 'span' },
- cls: me.baseCls + '-text'
- }),
- me.textField = new Ext.form.field.Text({
- anchor: '100%',
- enableKeyEvents: true,
- listeners: {
- keydown: me.onPromptKey,
- scope: me
- }
- }),
- me.textArea = new Ext.form.field.TextArea({
- anchor: '100%',
- height: 75
- })
- ]
- })
- ]
- });
- me.progressBar = new Ext.ProgressBar({
- anchor: '-10',
- style: 'margin-left:10px'
- });
- me.items = [me.topContainer, me.progressBar];
- // Create the buttons based upon passed bitwise config
- me.msgButtons = [];
- for (i = 0; i < 4; i++) {
- button = me.makeButton(i);
- me.msgButtons[button.itemId] = button;
- me.msgButtons.push(button);
- }
- me.bottomTb = new Ext.toolbar.Toolbar({
- ui: 'footer',
- dock: 'bottom',
- layout: {
- pack: 'end'
- },
- items: [
- me.msgButtons[0],
- me.msgButtons[1],
- me.msgButtons[2],
- me.msgButtons[3]
- ]
- });
- me.dockedItems = [me.bottomTb];
- me.callParent();
- }
- });
- Ext.define('Ext.Neptune.grid.column.Column', {
- override: 'Ext.grid.column.Column',
- initComponent: function() {
- var me = this,
- i,
- len,
- item;
- if (Ext.isDefined(me.header)) {
- me.text = me.header;
- delete me.header;
- }
- // Flexed Headers need to have a minWidth defined so that they can never be squeezed out of existence by the
- // HeaderContainer's specialized Box layout, the ColumnLayout. The ColumnLayout's overridden calculateChildboxes
- // method extends the available layout space to accommodate the "desiredWidth" of all the columns.
- if (me.flex) {
- me.minWidth = me.minWidth || Ext.grid.plugin.HeaderResizer.prototype.minColWidth;
- }
- if (!me.triStateSort) {
- me.possibleSortStates.length = 2;
- }
- // A group header; It contains items which are themselves Headers
- if (Ext.isDefined(me.columns)) {
- me.isGroupHeader = true;
- //<debug>
- if (me.dataIndex) {
- Ext.Error.raise('Ext.grid.column.Column: Group header may not accept a dataIndex');
- }
- if ((me.width && me.width !== Ext.grid.header.Container.prototype.defaultWidth) || me.flex) {
- Ext.Error.raise('Ext.grid.column.Column: Group header does not support setting explicit widths or flexs. The group header width is calculated by the sum of its children.');
- }
- //</debug>
- // The headers become child items
- me.items = me.columns;
- delete me.columns;
- delete me.flex;
- delete me.width;
- me.cls = (me.cls||'') + ' ' + Ext.baseCSSPrefix + 'group-header';
- me.sortable = false;
- me.resizable = false;
- me.align = 'center';
- } else {
- // If we are not a group header, then this is not to be used as a container, and must not have a container layout executed, and it must
- // acquire layout height from DOM content, not from child items.
- me.isContainer = false;
- }
- me.addCls(Ext.baseCSSPrefix + 'column-header-align-' + me.align);
- if (me.sortable) {
- me.addCls(Ext.baseCSSPrefix + 'column-header-sortable');
- }
- // Initialize as a HeaderContainer
- Ext.grid.column.Column.superclass.initComponent.call(this, arguments);
- me.on({
- element: 'el',
- click: me.onElClick,
- dblclick: me.onElDblClick,
- scope: me
- });
- me.on({
- element: 'titleEl',
- mouseenter: me.onTitleMouseOver,
- mouseleave: me.onTitleMouseOut,
- scope: me
- });
- }
- });
- Ext.define('Ext.Neptune.Shadow', {
- override: 'Ext.Shadow',
- offset: 3
- });
- Ext.define('Ext.Neptune.layout.container.Accordion', {
- override: 'Ext.layout.container.Accordion',
- targetCls: Ext.baseCSSPrefix + 'box-layout-ct ' + Ext.baseCSSPrefix + 'accordion-body',
- collapseFirst : true,
- beforeRenderItems: function (items) {
- var me = this,
- ln = items.length,
- i, comp;
- for (i = 0; i < ln; i++) {
- comp = items[i];
- if (!comp.rendered) {
- // Add class to the Panel's header before render
- comp.on({
- beforerender: me.onChildPanelRender,
- single: true
- });
- // Set up initial properties for Panels in an accordion.
- if (me.collapseFirst) {
- comp.collapseFirst = me.collapseFirst;
- }
- if (me.hideCollapseTool) {
- comp.hideCollapseTool = me.hideCollapseTool;
- comp.titleCollapse = true;
- }
- else if (me.titleCollapse) {
- comp.titleCollapse = me.titleCollapse;
- }
- delete comp.hideHeader;
- delete comp.width;
- comp.collapsible = true;
- comp.title = comp.title || ' ';
- comp.toolsFirst = true;
- comp.addBodyCls(Ext.baseCSSPrefix + 'accordion-body');
- // Set initial sizes
- if (me.fill) {
- // If there is an expanded item, all others must be rendered collapsed.
- if (me.expandedItem !== undefined) {
- comp.collapsed = true;
- }
- // Otherwise expand the first item with collapsed explicitly configured as false
- else if (comp.hasOwnProperty('collapsed') && comp.collapsed === false) {
- me.expandedItem = i;
- } else {
- comp.collapsed = true;
- }
- // If we are fitting, then intercept expand/collapse requests.
- me.owner.mon(comp, {
- show: me.onComponentShow,
- beforeexpand: me.onComponentExpand,
- beforecollapse: me.onComponentCollapse,
- scope: me
- });
- } else {
- comp.animCollapse = me.initialAnimate;
- comp.autoScroll = false;
- }
- comp.border = comp.collapsed;
- }
- }
- // If no collapsed:false Panels found, make the first one expanded.
- if (ln && me.expandedItem === undefined) {
- me.expandedItem = 0;
- comp = items[0];
- comp.collapsed = comp.border = false;
- }
- }
- });
- //
- Ext.define('Ext.Neptune.panel.Header', {
- override: 'Ext.panel.Header',
- toolsFirst: false,
- initComponent: function() {
- var me = this,
- ruleStyle,
- rule,
- style,
- ui,
- tempEl;
- me.indicateDragCls = me.baseCls + '-draggable';
- me.title = me.title || ' ';
- me.tools = me.tools || [];
- me.items = me.items || [];
- me.orientation = me.orientation || 'horizontal';
- me.dock = (me.dock) ? me.dock : (me.orientation == 'horizontal') ? 'top' : 'left';
- //add the dock as a ui
- //this is so we support top/right/left/bottom headers
- me.addClsWithUI([me.orientation, me.dock]);
- if (me.indicateDrag) {
- me.addCls(me.indicateDragCls);
- }
- // Add Icon
- if (!Ext.isEmpty(me.iconCls)) {
- me.initIconCmp();
- me.items.push(me.iconCmp);
- }
- // Add Title
- if (me.orientation == 'vertical') {
- me.layout = {
- type : 'vbox',
- align: 'center'
- };
- me.textConfig = {
- width: 15,
- cls: me.baseCls + '-text',
- type: 'text',
- text: me.title,
- rotate: {
- degrees: 90
- }
- };
- ui = me.ui;
- if (Ext.isArray(ui)) {
- ui = ui[0];
- }
- ruleStyle = '.' + me.baseCls + '-text-' + ui;
- if (Ext.scopeResetCSS) {
- ruleStyle = '.' + Ext.baseCSSPrefix + 'reset ' + ruleStyle;
- }
- rule = Ext.util.CSS.getRule(ruleStyle);
- if (rule) {
- style = rule.style;
- }else {
- // We might have been disallowed access to the stylesheet: https://sencha.jira.com/browse/EXTJSIV-5084
- style = (tempEl = Ext.getBody().createChild({style: 'position:absolute', cls: me.baseCls + '-text-' + ui})).getStyles('fontFamily', 'fontWeight', 'fontSize', 'color');
- tempEl.remove();
- }
- if (style) {
- Ext.apply(me.textConfig, {
- 'font-family': style.fontFamily,
- 'font-weight': style.fontWeight,
- 'font-size': style.fontSize,
- fill: style.color
- });
- }
- me.titleCmp = new Ext.draw.Component({
- // width : 15,
- ariaRole : 'heading',
- focusable : false,
- viewBox : false,
- flex : 1,
- id : me.id + '_hd',
- autoSize : true,
- margins : '5 0 0 0',
- items : [ me.textConfig ],
- xhooks: {
- setSize: function (width) {
- // don't pass 2nd arg (height) on to setSize or we break 'flex:1'
- this.callParent([width]);
- }
- },
- // this is a bit of a cheat: we are not selecting an element of titleCmp
- // but rather of titleCmp.items[0] (so we cannot use childEls)
- childEls : [
- { name: 'textEl', select: '.' + me.baseCls + '-text' }
- ]
- });
- } else {
- me.layout = {
- type : 'hbox',
- align: 'middle'
- };
- me.titleCmp = new Ext.Component({
- // height : 15,
- xtype : 'component',
- ariaRole : 'heading',
- focusable : false,
- noWrap : true,
- flex : 1,
- id : me.id + '_hd',
- cls : me.baseCls + '-text-container',
- renderTpl : me.getTpl('headingTpl'),
- renderData: {
- title: me.title,
- cls : me.baseCls,
- ui : me.ui
- },
- childEls : ['textEl']
- });
- }
- // Add tools
- if (me.toolsFirst) {
- me.addCls(me.baseCls + '-tools-first');
- me.items = me.items.concat(me.tools);
- me.items.push(me.titleCmp);
- } else {
- me.items.push(me.titleCmp);
- me.items = me.items.concat(me.tools);
- }
-
- Ext.panel.Header.superclass.initComponent.call(this, arguments);
-
- me.on({
- click: me.onClick,
- mouseover: me.onMouseOver,
- mouseout : me.onMouseOut,
- mousedown: me.onMouseDown,
- mouseup: me.onMouseUp,
- element: 'el',
- scope: me
- });
- },
- // private
- onRender: function() {
- var me = this;
- me.doc = Ext.getDoc();
- me.callParent(arguments);
- },
- // private
- onMouseOver: function() {
- this.addCls(this.baseCls + '-over');
- },
- // private
- onMouseOut: function() {
- this.removeCls(this.baseCls + '-over');
- this.removeCls(this.baseCls + '-pressed');
- },
- // private
- onMouseDown: function() {
- this.addCls(this.baseCls + '-pressed');
- },
- // private
- onMouseUp: function(e) {
- this.removeCls(this.baseCls + '-pressed');
- }
- });
- Ext.define('Ext.Neptune.panel.Panel', {
- override: 'Ext.panel.Panel',
- /**
- * True to makes the tools of this panels header go to the left of the panel header title. Used for accordions
- * @cfg {Boolean} toolsFirst
- * @private
- */
- toolsFirst: false,
- updateHeader: function(force) {
- var me = this,
- header = me.header,
- title = me.title,
- tools = me.tools;
- if (!me.preventHeader && (force || title || (tools && tools.length))) {
- if (header) {
- header.show();
- } else {
- header = me.header = new Ext.panel.Header({
- title : title,
- orientation : (me.headerPosition == 'left' || me.headerPosition == 'right') ? 'vertical' : 'horizontal',
- dock : me.headerPosition || 'top',
- textCls : me.headerTextCls,
- iconCls : me.iconCls,
- baseCls : me.baseCls + '-header',
- tools : tools,
- ui : me.ui,
- id : me.id + '_header',
- indicateDrag: me.draggable,
- toolsFirst : me.toolsFirst,
- border : me.border,
- frame : me.frame && me.frameHeader,
- ignoreParentFrame : me.frame || me.overlapHeader,
- ignoreBorderManagement: me.frame || me.ignoreHeaderBorderManagement,
- listeners : me.collapsible && me.titleCollapse ? {
- click: me.toggleCollapse,
- scope: me
- } : null
- });
- me.addDocked(header, 0);
- // Reference the Header's tool array.
- // Header injects named references.
- me.tools = header.tools;
- }
- me.initHeaderAria();
- me.addCls(me.baseCls + '-hasheader-' + me.headerPosition);
- } else if (header) {
- header.hide();
-
- me.removeCls(me.baseCls + '-hasheader-' + me.headerPosition);
- }
- }
- });
- Ext.define('Ext.Neptune.resizer.Splitter', {
- override: 'Ext.resizer.Splitter',
- onRender: function() {
- var me = this;
- me.callParent(arguments);
- // Add listeners on the mini-collapse tool unless performCollapse is set to false
- if (me.performCollapse !== false) {
- if (me.renderData.collapsible) {
- me.mon(me.collapseEl, 'click', me.toggleTargetCmp, me);
- }
- if (me.collapseOnDblClick) {
- me.mon(me.el, 'dblclick', me.toggleTargetCmp, me);
- }
- }
- // Ensure the mini collapse icon is set to the correct direction when the target is collapsed/expanded by any means
- me.mon(me.getCollapseTarget(), {
- collapse: me.onTargetCollapse,
- expand: me.onTargetExpand,
- scope: me
- });
- me.mon(me.el, 'mouseover', me.onMouseOver, me);
- me.mon(me.el, 'mouseout', me.onMouseOut, me);
- me.el.unselectable();
- me.tracker = Ext.create(me.getTrackerConfig());
- // Relay the most important events to our owner (could open wider later):
- me.relayEvents(me.tracker, [ 'beforedragstart', 'dragstart', 'dragend' ]);
- },
- onMouseOver: function() {
- this.el.addCls(this.baseCls + '-over');
- },
- onMouseOut: function() {
- this.el.removeCls(this.baseCls + '-over');
- }
- });
- Ext.define('Ext.Neptune.tree.Panel', {
- override: 'Ext.tree.Panel',
- initComponent: function() {
- var me = this,
- cls = [me.treeCls],
- view;
- if (me.useArrows) {
- cls.push(Ext.baseCSSPrefix + 'tree-arrows');
- } else {
- cls.push(Ext.baseCSSPrefix + 'tree-no-arrows');
- }
- if (me.lines) {
- cls.push(Ext.baseCSSPrefix + 'tree-lines');
- } else {
- cls.push(Ext.baseCSSPrefix + 'tree-no-lines');
- }
- if (Ext.isString(me.store)) {
- me.store = Ext.StoreMgr.lookup(me.store);
- } else if (!me.store || Ext.isObject(me.store) && !me.store.isStore) {
- me.store = new Ext.data.TreeStore(Ext.apply({}, me.store || {}, {
- root: me.root,
- fields: me.fields,
- model: me.model,
- folderSort: me.folderSort
- }));
- } else if (me.root) {
- me.store = Ext.data.StoreManager.lookup(me.store);
- me.store.setRootNode(me.root);
- if (me.folderSort !== undefined) {
- me.store.folderSort = me.folderSort;
- me.store.sort();
- }
- }
- // I'm not sure if we want to this. It might be confusing
- // if (me.initialConfig.rootVisible === undefined && !me.getRootNode()) {
- // me.rootVisible = false;
- // }
- me.viewConfig = Ext.applyIf(me.viewConfig || {}, {
- rootVisible: me.rootVisible,
- animate: me.enableAnimations,
- singleExpand: me.singleExpand,
- node: me.store.getRootNode(),
- hideHeaders: me.hideHeaders
- });
- me.mon(me.store, {
- scope: me,
- rootchange: me.onRootChange,
- clear: me.onClear
- });
- me.relayEvents(me.store, [
- /**
- * @event beforeload
- * @alias Ext.data.Store#beforeload
- */
- 'beforeload',
- /**
- * @event load
- * @alias Ext.data.Store#load
- */
- 'load'
- ]);
- me.store.on({
- /**
- * @event itemappend
- * @alias Ext.data.TreeStore#append
- */
- append: me.createRelayer('itemappend'),
- /**
- * @event itemremove
- * @alias Ext.data.TreeStore#remove
- */
- remove: me.createRelayer('itemremove'),
- /**
- * @event itemmove
- * @alias Ext.data.TreeStore#move
- */
- move: me.createRelayer('itemmove'),
- /**
- * @event iteminsert
- * @alias Ext.data.TreeStore#insert
- */
- insert: me.createRelayer('iteminsert'),
- /**
- * @event beforeitemappend
- * @alias Ext.data.TreeStore#beforeappend
- */
- beforeappend: me.createRelayer('beforeitemappend'),
- /**
- * @event beforeitemremove
- * @alias Ext.data.TreeStore#beforeremove
- */
- beforeremove: me.createRelayer('beforeitemremove'),
- /**
- * @event beforeitemmove
- * @alias Ext.data.TreeStore#beforemove
- */
- beforemove: me.createRelayer('beforeitemmove'),
- /**
- * @event beforeiteminsert
- * @alias Ext.data.TreeStore#beforeinsert
- */
- beforeinsert: me.createRelayer('beforeiteminsert'),
- /**
- * @event itemexpand
- * @alias Ext.data.TreeStore#expand
- */
- expand: me.createRelayer('itemexpand'),
- /**
- * @event itemcollapse
- * @alias Ext.data.TreeStore#collapse
- */
- collapse: me.createRelayer('itemcollapse'),
- /**
- * @event beforeitemexpand
- * @alias Ext.data.TreeStore#beforeexpand
- */
- beforeexpand: me.createRelayer('beforeitemexpand'),
- /**
- * @event beforeitemcollapse
- * @alias Ext.data.TreeStore#beforecollapse
- */
- beforecollapse: me.createRelayer('beforeitemcollapse')
- });
- // If the user specifies the headers collection manually then dont inject our own
- if (!me.columns) {
- if (me.initialConfig.hideHeaders === undefined) {
- me.hideHeaders = true;
- }
- me.autoWidth = true;
- me.addCls(Ext.baseCSSPrefix + 'autowidth-table');
- me.columns = [{
- xtype : 'treecolumn',
- text : 'Name',
- width : Ext.isIE6 ? null : 10000,
- dataIndex: me.displayField
- }];
- }
- if (me.cls) {
- cls.push(me.cls);
- }
-
- me.cls = cls.join(' ');
- Ext.tree.Panel.superclass.initComponent.apply(me, arguments);
-
- view = me.getView();
- // Only IE6 requires manual minimum sizing with a stretcher.
- // All other browsers allow the 1000px wide header to impose a minimum size.
- if (Ext.isIE6 && me.autoWidth) {
- view.afterRender = Ext.Function.createSequence(view.afterRender, function() {
- this.stretcher = view.el.down('th').createChild({style:"height:0px;width:" + (this.getWidth() - Ext.getScrollbarSize().width) + "px"});
- });
- view.afterComponentLayout = Ext.Function.createSequence(view.afterComponentLayout, function() {
- this.stretcher.setWidth((this.getWidth() - Ext.getScrollbarSize().width));
- });
- }
- me.relayEvents(view, [
- /**
- * @event checkchange
- * Fires when a node with a checkbox's checked property changes
- * @param {Ext.data.Model} node The node who's checked property was changed
- * @param {Boolean} checked The node's new checked state
- */
- 'checkchange',
- /**
- * @event afteritemexpand
- * @alias Ext.tree.View#afteritemexpand
- */
- 'afteritemexpand',
- /**
- * @event afteritemcollapse
- * @alias Ext.tree.View#afteritemcollapse
- */
- 'afteritemcollapse'
- ]);
- // If the root is not visible and there is no rootnode defined, then just lets load the store
- if (!view.rootVisible && !me.getRootNode()) {
- me.setRootNode({
- expanded: true
- });
- }
- }
- });
|