Upgrade to ExtJS 4.0.0 - Released 04/26/2011
[extjs.git] / src / grid / column / Boolean.js
diff --git a/src/grid/column/Boolean.js b/src/grid/column/Boolean.js
new file mode 100644 (file)
index 0000000..728e7ef
--- /dev/null
@@ -0,0 +1,90 @@
+/**
+ * @class Ext.grid.column.Boolean
+ * @extends Ext.grid.column.Column
+ * <p>A Column definition class which renders boolean data fields.  See the {@link Ext.grid.column.Column#xtype xtype}
+ * config option of {@link Ext.grid.column.Column} for more details.</p>
+ *
+ * {@img Ext.grid.column.Boolean/Ext.grid.column.Boolean.png Ext.grid.column.Boolean grid column}
+ *
+ *  ## Code
+ *     Ext.create('Ext.data.Store', {
+ *        storeId:'sampleStore',
+ *        fields:[
+ *            {name: 'framework', type: 'string'},
+ *            {name: 'rocks', type: 'boolean'}
+ *        ],
+ *        data:{'items':[
+ *            {"framework":"Ext JS 4", "rocks":true},
+ *            {"framework":"Sencha Touch", "rocks":true},
+ *            {"framework":"Ext GWT", "rocks":true},            
+ *            {"framework":"Other Guys", "rocks":false}            
+ *        ]},
+ *        proxy: {
+ *            type: 'memory',
+ *            reader: {
+ *                type: 'json',
+ *                root: 'items'
+ *            }
+ *        }
+ *    });
+ *    
+ *    Ext.create('Ext.grid.Panel', {
+ *        title: 'Boolean Column Demo',
+ *        store: Ext.data.StoreManager.lookup('sampleStore'),
+ *        columns: [
+ *            {text: 'Framework',  dataIndex: 'framework', flex: 1},
+ *            {
+ *                xtype: 'booleancolumn', 
+ *                text: 'Rocks',
+ *                trueText: 'Yes',
+ *                falseText: 'No', 
+ *                dataIndex: 'rocks'}
+ *        ],
+ *        height: 200,
+ *        width: 400,
+ *        renderTo: Ext.getBody()
+ *    });
+ * 
+ * @xtype booleancolumn
+ */
+Ext.define('Ext.grid.column.Boolean', {
+    extend: 'Ext.grid.column.Column',
+    alias: ['widget.booleancolumn'],
+    alternateClassName: 'Ext.grid.BooleanColumn',
+
+    /**
+     * @cfg {String} trueText
+     * The string returned by the renderer when the column value is not falsey (defaults to <tt>'true'</tt>).
+     */
+    trueText: 'true',
+
+    /**
+     * @cfg {String} falseText
+     * The string returned by the renderer when the column value is falsey (but not undefined) (defaults to
+     * <tt>'false'</tt>).
+     */
+    falseText: 'false',
+
+    /**
+     * @cfg {String} undefinedText
+     * The string returned by the renderer when the column value is undefined (defaults to <tt>'&#160;'</tt>).
+     */
+    undefinedText: '&#160;',
+
+    constructor: function(cfg){
+        this.callParent(arguments);
+        var trueText      = this.trueText,
+            falseText     = this.falseText,
+            undefinedText = this.undefinedText;
+
+        this.renderer = function(value){
+            if(value === undefined){
+                return undefinedText;
+            }
+            if(!value || value === 'false'){
+                return falseText;
+            }
+            return trueText;
+        };
+    }
+});
\ No newline at end of file