TableViewer(二)

2014-11-24 07:45:47 · 作者: · 浏览: 2
;
}


private void editorTableViewer() {
// 设置列属性
tableViewer.setColumnProperties(COLUMN_NAME);
// 设置单元格编辑器对象数组
CellEditor[] cellEditors = new CellEditor[4];
cellEditors[0] = null;
cellEditors[1] = new TextCellEditor(tableViewer.getTable());
cellEditors[2] = new TextCellEditor(tableViewer.getTable());
cellEditors[3] = new TextCellEditor(tableViewer.getTable());
//设置单元格编辑器
tableViewer.setCellEditors(cellEditors);

//设置单元格修改器
tableViewer.setCellModifier(new ICellModifier() {

@Override
public void modify(Object element, String property, Object value) {
if(element instanceof Item){
element=((Item)element).getData();
Person person=(Person)element;
if(property.equals(COLUMN_NAME[1])){
person.setName((String)value);
}else if(property.equals(COLUMN_NAME[2])){
person.setGender((String)value);
}else if(property.equals(COLUMN_NAME[3])){
person.setColor((String)value);
}
tableViewer.refresh();
}


}

//当处于编辑状态时所显示的值
public Object getValue(Object element, String property) {
Person person =(Person)element;
if(property.equals(COLUMN_NAME[1])){
return person.getName();
}else if(property.equals(COLUMN_NAME[2])){
return person.getGender();
}else if(property.equals(COLUMN_NAME[3])){
return person.getColor();
}
return null;
}

//如果是第一列,不能编辑
public boolean canModify(Object element, String property) {
if(property.equals(COLUMN_NAME[0])){
return false;
}
return true;
}
});
}


class TableContentProvider implements IStructuredContentProvider{


@Override
public Object[] getElements(Object inputElement) {
// TODO Auto-generated method stub
return ((List)inputElement).toArray();
}


@Override
public void dispose() {
// TODO Auto-generated method stub

}


@Override
public void inputChanged(Viewer arg0, Object arg1, Object arg2) {
// TODO Auto-generated method stub

}

}

class TableLableProvider implements ITableLabelProvider{


@Override
public Image getColumnImage(Object arg0, int arg1) {
// TODO Auto-generated method stub
return null;
}


@Override
public String getColumnText(Object element, int columnIndex) {
// TODO Auto-generated method stub
Person person =(Person)element;
if(columnIndex == ID){
return person.getID()+"";
}else if(columnIndex == NAME){
return person.getName();
}else if(columnIndex == GENDER){
return person.getGender();
}else if(columnIndex ==COLOR){
return person.getColor();
}
return "";
}


@Override
public void addListener(ILabelProviderListener arg0) {
// TODO Auto-generated method stub

}


@Override
public void dispose() {
// TODO Auto-generated method stub

}


@Override
public boolean isLabelProperty(Object arg0, String arg1) {
// TODO Auto-generated method stub
return false;
}


@Override
public void removeListener(ILabelProviderListener arg0) {
// TODO Auto-generated method stub

}

}

class AddAction extends Action{

public AddAction(){
setText("添加");
}

@Override
public void run() {
Person person = new Person();
person.setID(tableViewer.getTable().getItemCount()+1);
person.setName("蒙蒙");
person.setGender("女");
person.setColor("黄色");
tableViewer.add(person);
}
}

class DeleteAction extends Action{
public DeleteAction(){
setText("删除");
}

@Override
public void run() {
StructuredSelection selection = (StructuredSelection)tableViewer.getSelection();
Person person=(Person)selection.getFirstElement();
getStatusLineManager().setMessage(person.getName()+" "+pers