⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 abstractbindedtablemodel.java

📁 Eclipse RCP下编写的工作管理软件代码
💻 JAVA
字号:
package net.sf.component.table;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

import net.sf.component.table.orderable.OrderAbleModel;

import org.eclipse.jface.viewers.IBaseLabelProvider;
import org.eclipse.swt.widgets.Listener;


/**
 * 自动做绑定的 Table Model 的 Adaptor 
 * $Id: AbstractBindedTableModel.java 850 2005-09-12 05:19:25Z yflei $
 * Created Date: 2005-9-9
 * @author SimonLei
 */
public abstract class AbstractBindedTableModel 
	extends OrderAbleModel implements IBindedTableModel {
	
	protected List datas = null;
	protected List<String> propertyNames;

	private List<String> columnOrders = new ArrayList<String>();
	/**
	 * Property and it's show name mapping
	 */
	private TreeMap<String, BindedTableColumn> columns = null; 
		
	private boolean editable=true;
	private boolean dirty=false;
	private String chunkId;
	
	public AbstractBindedTableModel( List datas ) {
		super(datas);
		this.datas = datas;
		columns = new TreeMap<String, BindedTableColumn>( 
				new ListBasedComparator( columnOrders));
	}

	public void addColumn( BindedTableColumn column) {
		addColumn( columnOrders.size(), column);
	}
	
	public synchronized void addColumn( int index, BindedTableColumn column) {
		if ( columnOrders.contains( column.getName())) 
			throw new IllegalArgumentException( "列名不能重复"); 
		columnOrders.add( index, column.getName());
		columns.put( column.getName(), column);
	}
	
	public void addRow(Object object) {
		datas.add( object);
	}

	public void removeRow(int index) {
		datas.remove( index);
	}

	public List getRows() {
		return datas;
	}

	public BindedTableColumn getColumn(String name) {
		return columns.get( name);
	}

	public BindedTableColumn getColumn(int index) {		
		return columns.get( columnOrders.get(index));
	}

	public int getColumnCount() {
		return columnOrders.size();
	}

	public void setColumns(List<Map> columnLists) {
		// 先将原来的 TreeMap 里面的内容全部拷贝到一个缓存
		Map<String,BindedTableColumn> tmpMap = new HashMap<String,BindedTableColumn>();
		tmpMap.putAll( columns);
		
		columnOrders.clear();
		for (Map map: columnLists) {
			columnOrders.add( (String)map.get( "name"));
		}
		columns.clear();
		for (Map map : columnLists) {
			String name = (String)map.get( "name");
			BindedTableColumn column = tmpMap.get( name);
			column.setEditable( (Boolean)map.get( "editable"));
			column.setVisible( (Boolean)map.get( "visible"));
			
			columns.put( name, column);
		}
	}
	
	public IBaseLabelProvider getLabelProvider(List<String> propertyNames) {
		this.propertyNames = propertyNames;
		return new BindedTableLabelProvider( this);
	}

	public Listener getSortedListener(BindedTableViewer viewer) {
		return null;
	}

	public boolean isEditable() {
		return editable;
	}

	public void setEditable(boolean editable) {
		this.editable = editable;
	}

	public boolean isDirty() {
		return dirty;
	}

	public void setDirty(boolean dirty) {
		this.dirty = dirty;
	}

	public String getChunkId() {
		return chunkId;
	}

	public void setChunkId(String chunkId) {
		this.chunkId = chunkId;
	}

}

⌨️ 快捷键说明

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