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

📄 beanbindedtablecellmodifier.java

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

import java.lang.reflect.Field;
import java.lang.reflect.Method;

import org.eclipse.jface.viewers.ICellModifier;
import org.eclipse.swt.widgets.Item;

/**
 * 在 BeanBindedTableModel 里面,每一行代表一个 JavaBean,这里就是它的 Modifier
 * $Id: BeanBindedTableCellModifier.java 844 2005-09-12 03:18:14Z yflei $
 * Created Date: 2005-9-9
 * @author SimonLei
 */
public class BeanBindedTableCellModifier implements ICellModifier {

	private IBindedTableModel model;
	private IBindedTableViewer tableViewer;
	
	public BeanBindedTableCellModifier(IBindedTableModel model, IBindedTableViewer tableViewer) {
		this.model = model;
		this.tableViewer = tableViewer;
	}

	public boolean canModify(Object element, String property) {
		return model.getColumn( property).isEditable( element);
	}

	public Object getValue(Object element, String property) {
		try {
			return model.getColumn( property).getValue(
					BeanBindedTableModel.getPropertyByReflect( element, property));
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	public void modify(Object element, String property, Object value) {
		if (element instanceof Item) {
	         element = ((Item) element).getData();
	     }
		final BindedTableColumn column = model.getColumn( property);
		Object modifiedValue = column.getModifiedValue( value);
		try {
			Method method = element.getClass().getMethod( 
					"set" + property, new Class[]{
							column.getValueClass()});
			method.invoke( element, new Object[]{ modifiedValue});
		} catch (Exception e) {
			try {
				setProperty( element, property, modifiedValue);
			} catch (Exception e1) {
				e1.printStackTrace();
			} 
		}
		model.setDirty(true);
		tableViewer.refresh( true);
	}

	private static void setProperty(Object element, String propertyName, Object value) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException {
		final Field declaredField = element.getClass().getDeclaredField( propertyName);
		declaredField.set( element, value);
	}

}

⌨️ 快捷键说明

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