eclipse插件开发笔记-javabean自动生成编辑器

效果图

左边为工程文件。右边为插件平台。任意项目下新建后缀名为.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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值