Spaces:
Sleeping
Sleeping
| Ext.namespace('Ext.ux.Wiz'); | |
| /** | |
| * Licensed under GNU LESSER GENERAL PUBLIC LICENSE Version 3 | |
| * | |
| * @author Thorsten Suckow-Homberg <ts@siteartwork.de> | |
| * @url http://www.siteartwork.de/wizardcomponent | |
| */ | |
| /** | |
| * @class Ext.ux.Wiz.Card | |
| * @extends Ext.FormPanel | |
| * | |
| * A specific {@link Ext.FormPanel} that can be used as a card in a | |
| * {@link Ext.ux.Wiz}-component. An instance of this card does only work properly | |
| * if used in a panel that uses a {@see Ext.layout.CardLayout}-layout. | |
| * | |
| * @constructor | |
| * @param {Object} config The config object | |
| */ | |
| Ext.ux.Wiz.Card = Ext.extend(Ext.FormPanel, { | |
| /** | |
| * @cfg {Boolean} header "True" to create the header element. Defaults to | |
| * "false". See {@link Ext.form.FormPanel#header} | |
| */ | |
| header : false, | |
| /** | |
| * @cfg {Strting} hideMode Hidemode of this component. Defaults to "offsets". | |
| * See {@link Ext.form.FormPanel#hideMode} | |
| */ | |
| hideMode : 'display', | |
| initComponent : function() | |
| { | |
| this.addEvents( | |
| /** | |
| * @event beforecardhide | |
| * If you want to add additional checks to your card which cannot be easily done | |
| * using default validators of input-fields (or using the monitorValid-config option), | |
| * add your specific listeners to this event. | |
| * This event gets only fired if the activeItem of the ownerCt-component equals to | |
| * this instance of {@see Ext.ux.Wiz.Card}. This is needed since a card layout usually | |
| * hides it's items right after rendering them, involving the beforehide-event. | |
| * If those checks would be attached to the normal beforehide-event, the card-layout | |
| * would never be able to hide this component after rendering it, depending on the | |
| * listeners return value. | |
| * | |
| * @param {Ext.ux.Wiz.Card} card The card that triggered the event | |
| */ | |
| 'beforecardhide' | |
| ); | |
| Ext.ux.Wiz.Card.superclass.initComponent.call(this); | |
| }, | |
| // -------- helper | |
| isValid : function() | |
| { | |
| if (this.monitorValid) { | |
| return this.bindHandler(); | |
| } | |
| return true; | |
| }, | |
| // -------- overrides | |
| /** | |
| * Overrides parent implementation since we allow to add any element | |
| * in this component which must not be neccessarily be a form-element. | |
| * So before a call to "isValid()" is about to be made, this implementation | |
| * checks first if the specific item sitting in this component has a method "isValid" - if it | |
| * does not exists, it will be added on the fly. | |
| */ | |
| bindHandler : function() | |
| { | |
| this.form.items.each(function(f){ | |
| if(!f.isValid){ | |
| f.isValid = Ext.emptyFn; | |
| } | |
| }); | |
| Ext.ux.Wiz.Card.superclass.bindHandler.call(this); | |
| }, | |
| /** | |
| * Overrides parent implementation. This is needed because in case | |
| * this method uses "monitorValid=true", the method "startMonitoring" must | |
| * not be called, until the "show"-event of this card fires. | |
| */ | |
| initEvents : function() | |
| { | |
| var old = this.monitorValid; | |
| this.monitorValid = false; | |
| Ext.ux.Wiz.Card.superclass.initEvents.call(this); | |
| this.monitorValid = old; | |
| this.on('beforehide', this.bubbleBeforeHideEvent, this); | |
| this.on('beforecardhide', this.isValid, this); | |
| this.on('show', this.onCardShow, this); | |
| this.on('hide', this.onCardHide, this); | |
| }, | |
| // -------- listener | |
| /** | |
| * Checks wether the beforecardhide-event may be triggered. | |
| */ | |
| bubbleBeforeHideEvent : function() | |
| { | |
| var ly = this.ownerCt.layout; | |
| var activeItem = ly.activeItem; | |
| if (activeItem && activeItem.id === this.id) { | |
| return this.fireEvent('beforecardhide', this); | |
| } | |
| return true; | |
| }, | |
| /** | |
| * Stops monitoring the form elements in this component when the | |
| * 'hide'-event gets fired. | |
| */ | |
| onCardHide : function() | |
| { | |
| if (this.monitorValid) { | |
| this.stopMonitoring(); | |
| } | |
| }, | |
| /** | |
| * Starts monitoring the form elements in this component when the | |
| * 'show'-event gets fired. | |
| */ | |
| onCardShow : function() | |
| { | |
| if (this.monitorValid) { | |
| this.startMonitoring(); | |
| } | |
| } | |
| }); |