3 * Copyright(c) 2006-2009 Ext JS, LLC
5 * http://www.extjs.com/license
8 * @class Ext.ux.ProgressBarPager
10 * Plugin (ptype = 'tabclosemenu') for displaying a progressbar inside of a paging toolbar instead of plain text
12 * @ptype progressbarpager
14 * Create a new ItemSelector
15 * @param {Object} config Configuration options
18 Ext.ux.ProgressBarPager = Ext.extend(Object, {
20 * @cfg {Integer} progBarWidth
21 * <p>The default progress bar width. Default is 225.</p>
25 * @cfg {String} defaultText
26 * <p>The text to display while the store is loading. Default is 'Loading...'</p>
28 defaultText : 'Loading...',
30 * @cfg {Object} defaultAnimCfg
31 * <p>A {@link Ext.Fx Ext.Fx} configuration object. Default is { duration : 1, easing : 'bounceOut' }.</p>
37 constructor : function(config) {
39 Ext.apply(this, config);
43 init : function (parent) {
45 if(parent.displayInfo){
47 var ind = parent.items.indexOf(parent.displayItem);
48 parent.remove(parent.displayItem, true);
49 this.progressBar = new Ext.ProgressBar({
50 text : this.defaultText,
51 width : this.progBarWidth,
52 animate : this.defaultAnimCfg
55 parent.displayItem = this.progressBar;
57 parent.add(parent.displayItem);
59 Ext.apply(parent, this.parentOverrides);
61 this.progressBar.on('render', function(pb) {
62 pb.el.applyStyles('cursor:pointer');
64 pb.el.on('click', this.handleProgressBarClick, this);
68 // Remove the click handler from the
71 beforeDestroy : function() {
72 this.progressBar.el.un('click', this.handleProgressBarClick, this);
80 // This method handles the click for the progress bar
81 handleProgressBarClick : function(e){
82 var parent = this.parent;
83 var displayItem = parent.displayItem;
85 var box = this.progressBar.getBox();
87 var position = xy[0]-box.x;
88 var pages = Math.ceil(parent.store.getTotalCount()/parent.pageSize);
90 var newpage = Math.ceil(position/(displayItem.width/pages));
91 parent.changePage(newpage);
94 // private, overriddes
97 // This method updates the information via the progress bar.
98 updateInfo : function(){
100 var count = this.store.getCount();
101 var pgData = this.getPageData();
102 var pageNum = this.readPage(pgData);
104 var msg = count == 0 ?
108 this.cursor+1, this.cursor+count, this.store.getTotalCount()
111 pageNum = pgData.activePage; ;
113 var pct = pageNum / pgData.pages;
115 this.displayItem.updateProgress(pct, msg, this.animate || this.defaultAnimConfig);
120 Ext.preg('progressbarpager', Ext.ux.ProgressBarPager);