serversortandpagedbean.java

来自「OperaMasks是一种基于J2EE的Web开发技术」· Java 代码 · 共 85 行

JAVA
85
字号
package demo.grid.dynamic;

import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;

import org.operamasks.faces.annotation.Bind;
import org.operamasks.faces.annotation.ComponentAttributes;
import org.operamasks.faces.annotation.ManagedBean;
import org.operamasks.faces.annotation.ManagedBeanScope;
import org.operamasks.faces.component.grid.CheckboxSelectionModel;
import org.operamasks.faces.component.grid.GridColumn;
import org.operamasks.faces.component.grid.GridColumnModel;
import org.operamasks.faces.component.grid.GridHeaderModel;
import org.operamasks.faces.component.grid.GridSelectionModel;
import org.operamasks.faces.component.grid.SortDirection;
import org.operamasks.faces.component.grid.provider.ArrayProviderAdapter;
import org.operamasks.faces.component.grid.provider.GridDataProvider;
import org.operamasks.faces.component.grid.provider.GridViewProvider;

import demo.StockBean.Quote;
import demo.grid.GridBeanHelper;

@ManagedBean(scope = ManagedBeanScope.REQUEST)
@SuppressWarnings( { "unused", "serial" })
public class ServerSortAndPagedBean {
	private Quote[] data = GridBeanHelper.stockData;

	@Bind(id = "grid", attribute = "dataProvider")
	private GridDataProvider dataProvider = new ArrayGridDataProvider(data);

	@ComponentAttributes(id = "grid")
	public Map<String, Object> getGridConfig() {
		Map<String, Object> config = new HashMap<String, Object>();
		config.put("paged", Boolean.TRUE);
		config.put("rows", new Integer(10));
		config.put("var", "gridDataItem");
		config.put("remoteSort", Boolean.TRUE);
		return config;
	}

	@Bind(id = "grid", attribute = "viewProvider")
	private GridViewProvider provider = new GridViewProvider() {
		public GridColumnModel getColumnModel(Object input) {
			GridColumnModel model = GridBeanHelper.createStockColumnModel();
			GridColumn column = model.getColumn("change_percent");
			column.setValue("#{gridDataItem.change}");
			column = model.getColumn("lastupdate");
			column.setValue("#{gridDataItem.lastUpdated}");
			return model;
		}

		public GridHeaderModel getHeaderModel(Object input) {
			return GridBeanHelper.createStandardStockHeader();
		}

		public GridSelectionModel getSelectionModel(Object input) {
			return new CheckboxSelectionModel();
		}
	};

	private class ArrayGridDataProvider extends ArrayProviderAdapter {
		private static final long serialVersionUID = 1L;
		private Object[] objs;

		public ArrayGridDataProvider(Object[] objs) {
			super(objs);
			this.objs = objs;
		}

		@SuppressWarnings("unchecked")
		public void sort(final GridColumn column, final SortDirection direction) {
			if ("company".equals(column.getId()))
				Arrays.sort((Quote[]) objs, new Comparator<Quote>() {
					public int compare(Quote o1, Quote o2) {
						int result = o1.getCompany().compareTo(o2.getCompany());
						return (direction == SortDirection.ASC) ? result : Math
								.abs(result);
					}
				});
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?