Upgrade to ExtJS 4.0.0 - Released 04/26/2011
[extjs.git] / docs / source / Feature.html
diff --git a/docs/source/Feature.html b/docs/source/Feature.html
new file mode 100644 (file)
index 0000000..f79226a
--- /dev/null
@@ -0,0 +1,147 @@
+<!DOCTYPE html><html><head><title>Sencha Documentation Project</title><link rel="stylesheet" href="../reset.css" type="text/css"><link rel="stylesheet" href="../prettify.css" type="text/css"><link rel="stylesheet" href="../prettify_sa.css" type="text/css"><script type="text/javascript" src="../prettify.js"></script></head><body onload="prettyPrint()"><pre class="prettyprint"><pre><span id='Ext-grid.feature.Feature'>/**
+</span> * @class Ext.grid.feature.Feature
+ * @extends Ext.util.Observable
+ * 
+ * A feature is a type of plugin that is specific to the {@link Ext.grid.Panel}. It provides several
+ * hooks that allows the developer to inject additional functionality at certain points throughout the 
+ * grid creation cycle. This class provides the base template methods that are available to the developer,
+ * it should be extended.
+ * 
+ * There are several built in features that extend this class, for example:
+ *
+ *  - {@link Ext.grid.feature.Grouping} - Shows grid rows in groups as specified by the {@link Ext.data.Store}
+ *  - {@link Ext.grid.feature.RowBody} - Adds a body section for each grid row that can contain markup.
+ *  - {@link Ext.grid.feature.Summary} - Adds a summary row at the bottom of the grid with aggregate totals for a column.
+ * 
+ * ## Using Features
+ * A feature is added to the grid by specifying it an array of features in the configuration:
+ * 
+ *     var groupingFeature = Ext.create('Ext.grid.feature.Grouping');
+ *     Ext.create('Ext.grid.Panel', {
+ *         // other options
+ *         features: [groupingFeature]
+ *     });
+ * 
+ * @abstract
+ */
+Ext.define('Ext.grid.feature.Feature', {
+    extend: 'Ext.util.Observable',
+    alias: 'feature.feature',
+    
+    isFeature: true,
+    disabled: false,
+    
+<span id='Ext-grid.feature.Feature-property-hasFeatureEvent'>    /**
+</span>     * @property {Boolean}
+     * Most features will expose additional events, some may not and will
+     * need to change this to false.
+     */
+    hasFeatureEvent: true,
+    
+<span id='Ext-grid.feature.Feature-property-eventPrefix'>    /**
+</span>     * @property {String}
+     * Prefix to use when firing events on the view.
+     * For example a prefix of group would expose &quot;groupclick&quot;, &quot;groupcontextmenu&quot;, &quot;groupdblclick&quot;.
+     */
+    eventPrefix: null,
+    
+<span id='Ext-grid.feature.Feature-property-eventSelector'>    /**
+</span>     * @property {String}
+     * Selector used to determine when to fire the event with the eventPrefix.
+     */
+    eventSelector: null,
+    
+<span id='Ext-grid.feature.Feature-property-view'>    /**
+</span>     * @property {Ext.view.Table}
+     * Reference to the TableView.
+     */
+    view: null,
+    
+<span id='Ext-grid.feature.Feature-property-grid'>    /**
+</span>     * @property {Ext.grid.Panel}
+     * Reference to the grid panel
+     */
+    grid: null,
+    
+<span id='Ext-grid.feature.Feature-property-collectData'>    /**
+</span>     * Most features will not modify the data returned to the view.
+     * This is limited to one feature that manipulates the data per grid view.
+     */
+    collectData: false,
+        
+    getFeatureTpl: function() {
+        return '';
+    },
+    
+<span id='Ext-grid.feature.Feature-method-getFireEventArgs'>    /**
+</span>     * Abstract method to be overriden when a feature should add additional
+     * arguments to its event signature. By default the event will fire:
+     * - view - The underlying Ext.view.Table
+     * - featureTarget - The matched element by the defined {@link eventSelector}
+     *
+     * The method must also return the eventName as the first index of the array
+     * to be passed to fireEvent.
+     */
+    getFireEventArgs: function(eventName, view, featureTarget) {
+        return [eventName, view, featureTarget];
+    },
+    
+<span id='Ext-grid.feature.Feature-method-attachEvents'>    /**
+</span>     * Approriate place to attach events to the view, selectionmodel, headerCt, etc
+     */
+    attachEvents: function() {
+        
+    },
+    
+    getFragmentTpl: function() {
+        return;
+    },
+    
+<span id='Ext-grid.feature.Feature-method-mutateMetaRowTpl'>    /**
+</span>     * Allows a feature to mutate the metaRowTpl.
+     * The array received as a single argument can be manipulated to add things
+     * on the end/begining of a particular row.
+     */
+    mutateMetaRowTpl: function(metaRowTplArray) {
+        
+    },
+    
+<span id='Ext-grid.feature.Feature-method-getMetaRowTplFragments'>    /**
+</span>     * Allows a feature to inject member methods into the metaRowTpl. This is
+     * important for embedding functionality which will become part of the proper
+     * row tpl.
+     */
+    getMetaRowTplFragments: function() {
+        return {};
+    },
+
+    getTableFragments: function() {
+        return {};
+    },
+    
+<span id='Ext-grid.feature.Feature-method-getAdditionalData'>    /**
+</span>     * Provide additional data to the prepareData call within the grid view.
+     * @param {Object} data The data for this particular record.
+     * @param {Number} idx The row index for this record.
+     * @param {Ext.data.Model} record The record instance
+     * @param {Object} orig The original result from the prepareData call to massage.
+     */
+    getAdditionalData: function(data, idx, record, orig) {
+        return {};
+    },
+    
+<span id='Ext-grid.feature.Feature-method-enable'>    /**
+</span>     * Enable a feature
+     */
+    enable: function() {
+        this.disabled = false;
+    },
+    
+<span id='Ext-grid.feature.Feature-method-disable'>    /**
+</span>     * Disable a feature
+     */
+    disable: function() {
+        this.disabled = true;
+    }
+    
+});</pre></pre></body></html>
\ No newline at end of file