java jface table_How: 使用JFace TableViewer编辑表格(单元格编辑)

package org.sean.fugao.client.ui.viewer.config;

import java.lang.reflect.Field;

import java.util.HashMap;

import java.util.Map;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import org.eclipse.jface.viewers.TableViewer;

import org.eclipse.jface.viewers.TableViewerColumn;

import org.eclipse.swt.SWT;

import org.eclipse.swt.widgets.Composite;

import org.eclipse.swt.widgets.Table;

import org.eclipse.swt.widgets.TableColumn;

import org.sean.fugao.client.util.ApplicationMessages;

import org.sean.fugao.util.table.domain.ColumnEntity;

import org.sean.fugao.util.table.domain.TableEntity;

public class TableViewerFactory{

private static Log logger = LogFactory.getLog(TableViewerFactory.class);

public static final String COLUMN_ATTRIBUTE_NAME = "attribute_name";

public static final String BOOLEAN_CONVERT_TYPE = "boolean_convert_type";

public static final String DATE_CONVERT_PATTERN = "date_convert_pattern";

public static final String DECIMAL_CONVERT_PATTERN = "decimal_convert_pattern";

public static final String TABLEVIEWER_ID = "table_viewer_id";

/*

Spring注入,格式如下

*/

private static Map tableDefinitions = new HashMap();

public static TableViewer getTableViewer(Composite parent, int style, Object layoutData, String className){

TableEntity tableEntity = tableDefinitions.get(className);

TableViewer tableViewer = null;

if (tableEntity != null) {

tableViewer = new TableViewer(parent, style);

tableViewer.setData(TABLEVIEWER_ID, tableViewer.toString());

Table table = tableViewer.getTable();

table.setLayoutData(layoutData);

table.setHeaderVisible(tableEntity.isHeaderVisible());

table.setLinesVisible(tableEntity.isLineVisible());

Field messageField = null;

int size = tableEntity.getColumns().size();

String[] columnProperties = new String[size];

for (int i = 0; i < size; i++){

ColumnEntity column = tableEntity.getColumns().get(i);

TableViewerColumn tableViewerColumn = new TableViewerColumn(tableViewer, SWT.NONE);

TableColumn tableColumn = tableViewerColumn.getColumn();

tableColumn.setWidth(column.getColumnWidth());

tableColumn.setText("");

String label = "";

String columnLabel = column.getColumnLabel();

try {

messageField = ApplicationMessages.class.getDeclaredField(columnLabel);

if (messageField != null){

label = (String) messageField.get(ApplicationMessages.class);

}

} catch (SecurityException e) {

logger.error("SecurityException", e);

} catch (NoSuchFieldException e) {

logger.error("Cannot found field [" + columnLabel + "] in ApplicationMessages", e);

} catch (IllegalArgumentException e) {

logger.error("IllegalArgumentException", e);

} catch (IllegalAccessException e) {

logger.error("IllegalAccessException", e);

}

if ("".equals(label)){

tableColumn.setText(columnLabel);

} else {

tableColumn.setText(label);

}

tableColumn.setData(COLUMN_ATTRIBUTE_NAME, column.getAttributeName());

columnProperties[i] = column.getAttributeName() == null ? "" : column.getAttributeName();

if (column.getBooleanConvertType() != null && !"".equals(column.getBooleanConvertType())){

tableColumn.setData(BOOLEAN_CONVERT_TYPE, column.getBooleanConvertType());

}

if (column.getDateConvertPattern() != null && !"".equals(column.getDateConvertPattern())){

tableColumn.setData(DATE_CONVERT_PATTERN, column.getDateConvertPattern());

}

if (column.getDecimalConvertPattern() != null && !"".equals(column.getDecimalConvertPattern())){

tableColumn.setData(DECIMAL_CONVERT_PATTERN, column.getDecimalConvertPattern());

}

}

tableViewer.setColumnProperties(columnProperties);

}

return tableViewer;

}

public void setTableDefinitions(Map tableDefinition) {

tableDefinitions = tableDefinition;

}

public Map getTableDefinitions() {

return tableDefinitions;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值