Upgrade to ExtJS 4.0.0 - Released 04/26/2011
[extjs.git] / docs / source / Feature.html
1 <!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'>/**
2 </span> * @class Ext.grid.feature.Feature
3  * @extends Ext.util.Observable
4  * 
5  * A feature is a type of plugin that is specific to the {@link Ext.grid.Panel}. It provides several
6  * hooks that allows the developer to inject additional functionality at certain points throughout the 
7  * grid creation cycle. This class provides the base template methods that are available to the developer,
8  * it should be extended.
9  * 
10  * There are several built in features that extend this class, for example:
11  *
12  *  - {@link Ext.grid.feature.Grouping} - Shows grid rows in groups as specified by the {@link Ext.data.Store}
13  *  - {@link Ext.grid.feature.RowBody} - Adds a body section for each grid row that can contain markup.
14  *  - {@link Ext.grid.feature.Summary} - Adds a summary row at the bottom of the grid with aggregate totals for a column.
15  * 
16  * ## Using Features
17  * A feature is added to the grid by specifying it an array of features in the configuration:
18  * 
19  *     var groupingFeature = Ext.create('Ext.grid.feature.Grouping');
20  *     Ext.create('Ext.grid.Panel', {
21  *         // other options
22  *         features: [groupingFeature]
23  *     });
24  * 
25  * @abstract
26  */
27 Ext.define('Ext.grid.feature.Feature', {
28     extend: 'Ext.util.Observable',
29     alias: 'feature.feature',
30     
31     isFeature: true,
32     disabled: false,
33     
34 <span id='Ext-grid.feature.Feature-property-hasFeatureEvent'>    /**
35 </span>     * @property {Boolean}
36      * Most features will expose additional events, some may not and will
37      * need to change this to false.
38      */
39     hasFeatureEvent: true,
40     
41 <span id='Ext-grid.feature.Feature-property-eventPrefix'>    /**
42 </span>     * @property {String}
43      * Prefix to use when firing events on the view.
44      * For example a prefix of group would expose &quot;groupclick&quot;, &quot;groupcontextmenu&quot;, &quot;groupdblclick&quot;.
45      */
46     eventPrefix: null,
47     
48 <span id='Ext-grid.feature.Feature-property-eventSelector'>    /**
49 </span>     * @property {String}
50      * Selector used to determine when to fire the event with the eventPrefix.
51      */
52     eventSelector: null,
53     
54 <span id='Ext-grid.feature.Feature-property-view'>    /**
55 </span>     * @property {Ext.view.Table}
56      * Reference to the TableView.
57      */
58     view: null,
59     
60 <span id='Ext-grid.feature.Feature-property-grid'>    /**
61 </span>     * @property {Ext.grid.Panel}
62      * Reference to the grid panel
63      */
64     grid: null,
65     
66 <span id='Ext-grid.feature.Feature-property-collectData'>    /**
67 </span>     * Most features will not modify the data returned to the view.
68      * This is limited to one feature that manipulates the data per grid view.
69      */
70     collectData: false,
71         
72     getFeatureTpl: function() {
73         return '';
74     },
75     
76 <span id='Ext-grid.feature.Feature-method-getFireEventArgs'>    /**
77 </span>     * Abstract method to be overriden when a feature should add additional
78      * arguments to its event signature. By default the event will fire:
79      * - view - The underlying Ext.view.Table
80      * - featureTarget - The matched element by the defined {@link eventSelector}
81      *
82      * The method must also return the eventName as the first index of the array
83      * to be passed to fireEvent.
84      */
85     getFireEventArgs: function(eventName, view, featureTarget) {
86         return [eventName, view, featureTarget];
87     },
88     
89 <span id='Ext-grid.feature.Feature-method-attachEvents'>    /**
90 </span>     * Approriate place to attach events to the view, selectionmodel, headerCt, etc
91      */
92     attachEvents: function() {
93         
94     },
95     
96     getFragmentTpl: function() {
97         return;
98     },
99     
100 <span id='Ext-grid.feature.Feature-method-mutateMetaRowTpl'>    /**
101 </span>     * Allows a feature to mutate the metaRowTpl.
102      * The array received as a single argument can be manipulated to add things
103      * on the end/begining of a particular row.
104      */
105     mutateMetaRowTpl: function(metaRowTplArray) {
106         
107     },
108     
109 <span id='Ext-grid.feature.Feature-method-getMetaRowTplFragments'>    /**
110 </span>     * Allows a feature to inject member methods into the metaRowTpl. This is
111      * important for embedding functionality which will become part of the proper
112      * row tpl.
113      */
114     getMetaRowTplFragments: function() {
115         return {};
116     },
117
118     getTableFragments: function() {
119         return {};
120     },
121     
122 <span id='Ext-grid.feature.Feature-method-getAdditionalData'>    /**
123 </span>     * Provide additional data to the prepareData call within the grid view.
124      * @param {Object} data The data for this particular record.
125      * @param {Number} idx The row index for this record.
126      * @param {Ext.data.Model} record The record instance
127      * @param {Object} orig The original result from the prepareData call to massage.
128      */
129     getAdditionalData: function(data, idx, record, orig) {
130         return {};
131     },
132     
133 <span id='Ext-grid.feature.Feature-method-enable'>    /**
134 </span>     * Enable a feature
135      */
136     enable: function() {
137         this.disabled = false;
138     },
139     
140 <span id='Ext-grid.feature.Feature-method-disable'>    /**
141 </span>     * Disable a feature
142      */
143     disable: function() {
144         this.disabled = true;
145     }
146     
147 });</pre></pre></body></html>