/*
* Copyright (C) 2000-2012 InfoChamp System Corporation
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.gk.ui.client.com.toolbar;
import org.gk.ui.client.com.i18n.Msg;
import com.extjs.gxt.ui.client.util.Util;
import com.extjs.gxt.ui.client.widget.Component;
import com.extjs.gxt.ui.client.widget.ComponentPlugin;
import com.extjs.gxt.ui.client.widget.WidgetComponent;
import com.extjs.gxt.ui.client.widget.toolbar.LabelToolItem;
import com.extjs.gxt.ui.client.widget.toolbar.PagingToolBar;
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.event.dom.client.KeyDownEvent;
import com.google.gwt.event.dom.client.KeyDownHandler;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.user.client.ui.TextBox;
public class gkPageSizePlugin extends Component implements ComponentPlugin {
/** Text to display after the comboBox */
private TextBox pageSizeText;
/** ToolBar item to add before the PageSize */
private String addBefore = "-";
/** ToolBar item to be added after the PageSizer */
private String addAfter = null;
/** The starting position inside the ToolBar */
private int position = 10;
// The host component
private PagingToolBar toolbar = null;
@Override
public void init(Component component) {
// Host component
toolbar = (PagingToolBar) component;
toolbar.remove(toolbar.getItem(3)); // 移除beforePage Label
this.toolbar.insert(new SeparatorToolItem(), position);
position++;
// 筆數欄位
pageSizeText = new TextBox();
pageSizeText.setTitle(Msg.get.pageSize());
pageSizeText.setText(toolbar.getPageSize() + "");
pageSizeText.addKeyDownHandler(new KeyDownHandler() {
@Override
public void onKeyDown(KeyDownEvent event) {
if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) {
onPageChange();
}
}
});
// 增加valueChangeHandle,当pageSizeText值改变时,重新设定pageSize的值
// 更新的动作在点击refresh按钮时才会执行
pageSizeText.addValueChangeHandler(new ValueChangeHandler() {
@Override
public void onValueChange(ValueChangeEvent event) {
setPageSize();
}
});
pageSizeText.setWidth("30px");
this.toolbar.insert(new WidgetComponent(pageSizeText), position);
position++;
if (this.addAfter != null) {
if ("-".equals(this.addBefore)) {
this.toolbar.insert(new SeparatorToolItem(), position);
} else {
this.toolbar.insert(new LabelToolItem(this.addAfter), position);
}
}
}
public int getPosition() {
return position;
}
public void setPosition(int position) {
this.position = position;
}
protected void onPageChange() {
setPageSize();
toolbar.refresh();
}
/**
* 設定pageSize
*/
protected void setPageSize() {
String value = pageSizeText.getText();
if (value.equals("") || !Util.isInteger(value)) {
return;
}
toolbar.setPageSize(Integer.parseInt(value));
}
}