效果图
左边为工程文件。右边为插件平台。任意项目下新建后缀名为.Javabean的编辑器。打开,编辑属性命跟选择类型,点击菜单栏的生存javabean按钮。弹出路径保存对话框。选择当前项目下,则在当前项目下生成对应文件。
编辑器类
package tabletojavabean.editors;
import java.io.File;
import java.io.IOException;
import javax.swing.JOptionPane;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.ComboBoxCellEditor;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TextCellEditor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.part.EditorPart;
import tabletojavabean.*;
import tabletojavabean.control.MyContentProvider;
import tabletojavabean.control.MyLabelProvider;
import tabletojavabean.control.TableCellModifier;
import tabletojavabean.util.TableConfigure;
import tabletojavabean.util.UtilTable;
public class JavaBeanEditor extends EditorPart {
private TableViewer viewer;
private Table table;
@Override
public void doSave(IProgressMonitor monitor) {
// TODO Auto-generated method stub
}
@Override
public void doSaveAs() {
}
@Override
public void init(IEditorSite site, IEditorInput input)
throws PartInitException {
// TODO Auto-generated method stub
setInput(input);
setSite(site);
}
@Override
public boolean isDirty() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isSaveAsAllowed() {
// TODO Auto-generated method stub
return false;
}
//
@Override
public void createPartControl(Composite parent) {
// TODO Auto-ge
// 初始化表格
viewer = new TableViewer(parent, SWT.MULTI | SWT.FULL_SELECTION
| SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
table = viewer.getTable();
for (int i = 0; i < TableConfigure.COLUMN_NAME.length; i++) {
new TableColumn(viewer.getTable(), SWT.LEFT)
.setText(TableConfigure.COLUMN_NAME[i]);
viewer.getTable().getColumn(i).pack();
// 设置宽度
viewer.getTable().getColumn(i).setWidth(100);
}
viewer.getTable().setHeaderVisible(true);
viewer.getTable().setLinesVisible(true);
// 注册内容器
viewer.setContentProvider(new MyContentProvider());
// 注册标签器
viewer.setLabelProvider(new MyLabelProvider());
// 添加数据集
viewer.setInput(Person.getPerson());
UtilTable.tableinfo = viewer.getTable();
// // 表格编辑器
editor();
}
@Override
public void setFocus() {
// TODO Auto-generated method stub
}
/****
*
* 实现表格可编辑操作
*
*/
private void editor() {
viewer.setColumnProperties(TableConfigure.COLUMN_NAME);
CellEditor[] editors = new CellEditor[4];
editors[0] = new TextCellEditor(viewer.getTable());
editors[1] = new TextCellEditor(viewer.getTable());
// 性别下拉框
editors[2] = new ComboBoxCellEditor(viewer.getTable(),
TableCellModifier.SEX, SWT.READ_ONLY);
editors[3] = new TextCellEditor(viewer.getTable());
viewer.setCellEditors(editors);
// 注册编辑器
viewer.setCellModifier(new TableCellModifier(viewer));
}
/**
* 内部类 自定义的CellEditor类,避免了设置value时造成的空指针异常。
*
* @author Administrator
*
*/
protected class CustomizedTextCellEditor extends TextCellEditor {
public CustomizedTextCellEditor(Composite parent) {
super(parent);
}
protected void doSetValue(Object value) {
if (value == null)
return;
super.doSetValue(value);
}
}
}
JAVABEAN自动生成类
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;
/**
* javabean生成工具类
*
*
* @author 王敏
*
*/
public class AutoCreateBeanFileTool {
/**** 文件保存路径,默认运行空间根路径 **/
private String srcSaveDir = Platform.getInstanceLocation().getURL()
.getPath();
private final String MODIFIER_PRIVATE = "private";
private final String MODIFIER_PUBLIC = "public";
private final String MODIFIER_SPACE = " ";
private final String MODIFIER_ENTER = "\n";
private final String MODIFIER_TAB = "\t";
private final String MODIFIER_NAME = "TableBean";
/**** 文件绝对路径 **/
private String javaFileName;
private String MODIFIER_SEMICOLON = ";";
private Table table = UtilTable.tableinfo;// 获取表格对象
private List<String> javaFiles = new ArrayList<String>();;
StringBuffer buffer = new StringBuffer();
/**
* 构造方法
*
*
* @param srcSaveDir
* 保存路径
*/
public AutoCreateBeanFileTool(String srcSaveDir) {
super();
this.srcSaveDir = srcSaveDir;
}
/**
* 根据表信息自动创建javaBean
*
*
* @throws IOException
* @throws Exception
*/
public void autoCreateBean() throws IOException {
if (table == null || srcSaveDir == null || srcSaveDir.equals("")) {
return;
}
File file = new File(srcSaveDir);
if (!file.exists()) {// 如果路径不存在
MessageDialog.openInformation(null, "保存失败", "保存路径不存在");
return;
}
// 声明类
buffer.append("public class ").append(MODIFIER_NAME)
.append(" implements java.io.Serializable ")
// 实现序列化接口
.append("{").append(MODIFIER_ENTER).append(MODIFIER_TAB)
.append(MODIFIER_ENTER);// 生成序列号
// / 获取工具类表格存储对象
TableItem[] items = table.getItems();
List<String> columnTypes = new ArrayList<String>();
List<String> columnNames = new ArrayList<String>();
for (int i = 0; i < items.length; i++) {
// java命名规范,属性首字母小写
columnNames.add(Character
.toLowerCase(items[i].getText(1).charAt(0))
+ items[i].getText(1).substring(1,
items[i].getText(1).length()));
columnTypes.add(items[i].getText(2));
}
// 声明私有属性
for (int index = 0; index < columnTypes.size(); index++) {
buffer.append(MODIFIER_TAB).append(MODIFIER_PRIVATE)
.append(MODIFIER_SPACE).append(columnTypes.get(index))
.append(MODIFIER_SPACE).append(columnNames.get(index))
.append(MODIFIER_SEMICOLON).append(MODIFIER_ENTER);
}
// 生成get/set方法
for (int index = 0; index < columnTypes.size(); index++) {
// get;
buffer.append(MODIFIER_TAB)
.append(MODIFIER_PUBLIC)
.append(MODIFIER_SPACE)
.append(columnTypes.get(index))
.append(MODIFIER_SPACE)
.append("get")
.append(Character.toUpperCase(columnNames.get(index)
.charAt(0)))
.append(columnNames.get(index).substring(1)).append("()")
.append("{").append(MODIFIER_ENTER).append(MODIFIER_TAB)
.append(MODIFIER_TAB).append("return this.")
.append(columnNames.get(index)).append(MODIFIER_SEMICOLON)
.append(MODIFIER_ENTER);
buffer.append(MODIFIER_TAB).append("}").append(MODIFIER_SEMICOLON)
.append(MODIFIER_ENTER).append(MODIFIER_ENTER);
// set;
buffer.append(MODIFIER_TAB)
.append(MODIFIER_PUBLIC)
.append(MODIFIER_SPACE)
.append("void")
.append(MODIFIER_SPACE)
.append("set")
.append(Character.toUpperCase(columnNames.get(index)
.charAt(0)))
.append(columnNames.get(index).substring(1)).append("(")
.append(columnTypes.get(index)).append(MODIFIER_SPACE)
.append(columnNames.get(index)).append(")").append("{")
.append(MODIFIER_ENTER).append(MODIFIER_TAB)
.append(MODIFIER_TAB).append("this.")
.append(columnNames.get(index)).append("=")
.append(columnNames.get(index)).append(MODIFIER_SEMICOLON)
.append(MODIFIER_ENTER);
buffer.append(MODIFIER_TAB).append("}").append(MODIFIER_SEMICOLON)
.append(MODIFIER_ENTER).append(MODIFIER_ENTER);
}
buffer.append("}");
javaFileName = srcSaveDir + "/" + MODIFIER_NAME + ".java";
javaFiles.add(javaFileName);
// 生成java文件
BufferedWriter writer = new BufferedWriter(new FileWriter(javaFileName));
writer.write(buffer.toString());
writer.flush();
// 关闭资源
writer.close();
// 提示信息
MessageDialog.openInformation(null, "保存成功", "文件路径:" + javaFileName);
}
}
javabean生成器
package tabletojavabean.util;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;
/**
* javabean生成工具类
*
*
* @author 王敏
*
*/
public class AutoCreateBeanFileTool {
/**** 文件保存路径,默认运行空间根路径 **/
private String srcSaveDir = Platform.getInstanceLocation().getURL()
.getPath();
private final String MODIFIER_PRIVATE = "private";
private final String MODIFIER_PUBLIC = "public";
private final String MODIFIER_SPACE = " ";
private final String MODIFIER_ENTER = "\n";
private final String MODIFIER_TAB = "\t";
private final String MODIFIER_NAME = "TableBean";
/**** 文件绝对路径 **/
private String javaFileName;
private String MODIFIER_SEMICOLON = ";";
private Table table = UtilTable.tableinfo;// 获取表格对象
private List<String> javaFiles = new ArrayList<String>();;
StringBuffer buffer = new StringBuffer();
/**
* 构造方法
*
*
* @param srcSaveDir
* 保存路径
*/
public AutoCreateBeanFileTool(String srcSaveDir) {
super();
this.srcSaveDir = srcSaveDir;
}
/**
* 根据表信息自动创建javaBean
*
*
* @throws IOException
* @throws Exception
*/
public void autoCreateBean() throws IOException {
if (table == null || srcSaveDir == null || srcSaveDir.equals("")) {
return;
}
File file = new File(srcSaveDir);
if (!file.exists()) {// 如果路径不存在
MessageDialog.openInformation(null, "保存失败", "保存路径不存在");
return;
}
// 声明类
buffer.append("public class ").append(MODIFIER_NAME)
.append(" implements java.io.Serializable ")
// 实现序列化接口
.append("{").append(MODIFIER_ENTER).append(MODIFIER_TAB)
.append(MODIFIER_ENTER);// 生成序列号
// / 获取工具类表格存储对象
TableItem[] items = table.getItems();
List<String> columnTypes = new ArrayList<String>();
List<String> columnNames = new ArrayList<String>();
for (int i = 0; i < items.length; i++) {
// java命名规范,属性首字母小写
columnNames.add(Character
.toLowerCase(items[i].getText(1).charAt(0))
+ items[i].getText(1).substring(1,
items[i].getText(1).length()));
columnTypes.add(items[i].getText(2));
}
// 声明私有属性
for (int index = 0; index < columnTypes.size(); index++) {
buffer.append(MODIFIER_TAB).append(MODIFIER_PRIVATE)
.append(MODIFIER_SPACE).append(columnTypes.get(index))
.append(MODIFIER_SPACE).append(columnNames.get(index))
.append(MODIFIER_SEMICOLON).append(MODIFIER_ENTER);
}
// 生成get/set方法
for (int index = 0; index < columnTypes.size(); index++) {
// get;
buffer.append(MODIFIER_TAB)
.append(MODIFIER_PUBLIC)
.append(MODIFIER_SPACE)
.append(columnTypes.get(index))
.append(MODIFIER_SPACE)
.append("get")
.append(Character.toUpperCase(columnNames.get(index)
.charAt(0)))
.append(columnNames.get(index).substring(1)).append("()")
.append("{").append(MODIFIER_ENTER).append(MODIFIER_TAB)
.append(MODIFIER_TAB).append("return this.")
.append(columnNames.get(index)).append(MODIFIER_SEMICOLON)
.append(MODIFIER_ENTER);
buffer.append(MODIFIER_TAB).append("}").append(MODIFIER_SEMICOLON)
.append(MODIFIER_ENTER).append(MODIFIER_ENTER);
// set;
buffer.append(MODIFIER_TAB)
.append(MODIFIER_PUBLIC)
.append(MODIFIER_SPACE)
.append("void")
.append(MODIFIER_SPACE)
.append("set")
.append(Character.toUpperCase(columnNames.get(index)
.charAt(0)))
.append(columnNames.get(index).substring(1)).append("(")
.append(columnTypes.get(index)).append(MODIFIER_SPACE)
.append(columnNames.get(index)).append(")").append("{")
.append(MODIFIER_ENTER).append(MODIFIER_TAB)
.append(MODIFIER_TAB).append("this.")
.append(columnNames.get(index)).append("=")
.append(columnNames.get(index)).append(MODIFIER_SEMICOLON)
.append(MODIFIER_ENTER);
buffer.append(MODIFIER_TAB).append("}").append(MODIFIER_SEMICOLON)
.append(MODIFIER_ENTER).append(MODIFIER_ENTER);
}
buffer.append("}");
javaFileName = srcSaveDir + "/" + MODIFIER_NAME + ".java";
javaFiles.add(javaFileName);
// 生成java文件
BufferedWriter writer = new BufferedWriter(new FileWriter(javaFileName));
writer.write(buffer.toString());
writer.flush();
// 关闭资源
writer.close();
// 提示信息
MessageDialog.openInformation(null, "保存成功", "文件路径:" + javaFileName);
}
}
下载地址
http://download.csdn.net/detail/wm198966/5802135