| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 | 
							- <!DOCTYPE html>
 
- <html>
 
- <head>
 
-   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
-   <title>The source code</title>
 
-   <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
 
-   <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
 
-   <style type="text/css">
 
-     .highlight { display: block; background-color: #ddd; }
 
-   </style>
 
-   <script type="text/javascript">
 
-     function highlight() {
 
-       document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
 
-     }
 
-   </script>
 
- </head>
 
- <body onload="prettyPrint(); highlight();">
 
-   <pre class="prettyprint lang-js"><span id='Ext-util-Memento'>/**
 
- </span> * @class Ext.util.Memento
 
-  * This class manages a set of captured properties from an object. These captured properties
 
-  * can later be restored to an object.
 
-  */
 
- Ext.define('Ext.util.Memento', (function () {
 
-     function captureOne (src, target, prop, prefix) {
 
-         src[prefix ? prefix + prop : prop] = target[prop];
 
-     }
 
-     function removeOne (src, target, prop) {
 
-         delete src[prop];
 
-     }
 
-     function restoreOne (src, target, prop, prefix) {
 
-         var name = prefix ? prefix + prop : prop,
 
-             value = src[name];
 
-         if (value || src.hasOwnProperty(name)) {
 
-             restoreValue(target, prop, value);
 
-         }
 
-     }
 
-     function restoreValue (target, prop, value) {
 
-         if (Ext.isDefined(value)) {
 
-             target[prop] = value;
 
-         } else {
 
-             delete target[prop];
 
-         }
 
-     }
 
-     function doMany (doOne, src, target, props, prefix) {
 
-         if (src) {
 
-             if (Ext.isArray(props)) {
 
-                 var p, pLen = props.length;
 
-                 for (p = 0; p < pLen; p++) {
 
-                     doOne(src, target, props[p], prefix);
 
-                 }
 
-             } else {
 
-                 doOne(src, target, props, prefix);
 
-             }
 
-         }
 
-     }
 
-     return {
 
- <span id='Ext-util-Memento-property-data'>        /**
 
- </span>         * @property data
 
-          * The collection of captured properties.
 
-          * @private
 
-          */
 
-         data: null,
 
- <span id='Ext-util-Memento-property-target'>        /**
 
- </span>         * @property target
 
-          * The default target object for capture/restore (passed to the constructor).
 
-          */
 
-         target: null,
 
- <span id='Ext-util-Memento-method-constructor'>        /**
 
- </span>         * Creates a new memento and optionally captures properties from the target object.
 
-          * @param {Object} target The target from which to capture properties. If specified in the
 
-          * constructor, this target becomes the default target for all other operations.
 
-          * @param {String/String[]} props The property or array of properties to capture.
 
-          */
 
-         constructor: function (target, props) {
 
-             if (target) {
 
-                 this.target = target;
 
-                 if (props) {
 
-                     this.capture(props);
 
-                 }
 
-             }
 
-         },
 
- <span id='Ext-util-Memento-method-capture'>        /**
 
- </span>         * Captures the specified properties from the target object in this memento.
 
-          * @param {String/String[]} props The property or array of properties to capture.
 
-          * @param {Object} target The object from which to capture properties.
 
-          */
 
-         capture: function (props, target, prefix) {
 
-             var me = this;
 
-             doMany(captureOne, me.data || (me.data = {}), target || me.target, props, prefix);
 
-         },
 
- <span id='Ext-util-Memento-method-remove'>        /**
 
- </span>         * Removes the specified properties from this memento. These properties will not be
 
-          * restored later without re-capturing their values.
 
-          * @param {String/String[]} props The property or array of properties to remove.
 
-          */
 
-         remove: function (props) {
 
-             doMany(removeOne, this.data, null, props);
 
-         },
 
- <span id='Ext-util-Memento-method-restore'>        /**
 
- </span>         * Restores the specified properties from this memento to the target object.
 
-          * @param {String/String[]} props The property or array of properties to restore.
 
-          * @param {Boolean} clear True to remove the restored properties from this memento or
 
-          * false to keep them (default is true).
 
-          * @param {Object} target The object to which to restore properties.
 
-          */
 
-         restore: function (props, clear, target, prefix) {
 
-             doMany(restoreOne, this.data, target || this.target, props, prefix);
 
-             if (clear !== false) {
 
-                 this.remove(props);
 
-             }
 
-         },
 
- <span id='Ext-util-Memento-method-restoreAll'>        /**
 
- </span>         * Restores all captured properties in this memento to the target object.
 
-          * @param {Boolean} clear True to remove the restored properties from this memento or
 
-          * false to keep them (default is true).
 
-          * @param {Object} target The object to which to restore properties.
 
-          */
 
-         restoreAll: function (clear, target) {
 
-             var me   = this,
 
-                 t    = target || this.target,
 
-                 data = me.data,
 
-                 prop;
 
-             for (prop in data) {
 
-                 if (data.hasOwnProperty(prop)) {
 
-                     restoreValue(t, prop, data[prop]);
 
-                 }
 
-             }
 
-             if (clear !== false) {
 
-                 delete me.data;
 
-             }
 
-         }
 
-     };
 
- }()));
 
- </pre>
 
- </body>
 
- </html>
 
 
  |