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