自个儿开发的eclipse插件-生成java pojo字段名称
自己开发的eclipse插件-生成java pojo字段名称
自己开发的eclipse插件-生成java pojo字段名称
需要在每个pojo里加上类似这样的代码:
当然,已经定义过这些字段了:
字段少的话,自己是可以一个一个复制的,可对象很多,复制很累,还不如自己写个插件方便使用:
于是便开始动手,现在完成了,已经可以在右键弹出的菜单里,在source菜单里出菜单项,但是alt+shift+s弹出的菜单里怎么也添加不进去,
很是烦人!主要是不知道如何把菜单项添加到快捷键弹出的菜单里。
在eclipse开发群里问,也没有人知道,泪流满面啊!先不管了,就这样凑活用吧,比没有好!
下面分享一下开发过程:
1.配置plugin.xml文件
2.开发逻辑处理部分
1.
2.逻辑处理不长。
获取当前正在被编辑的java代码,获取起所有字段,然后生成名称,如果已经生成过则忽略掉。
代码如下:
附件是最后的插件,供参考
自己开发的eclipse插件-生成java pojo字段名称
需要在每个pojo里加上类似这样的代码:
@Transient public static String ID = "id";
当然,已经定义过这些字段了:
private int id;
字段少的话,自己是可以一个一个复制的,可对象很多,复制很累,还不如自己写个插件方便使用:
于是便开始动手,现在完成了,已经可以在右键弹出的菜单里,在source菜单里出菜单项,但是alt+shift+s弹出的菜单里怎么也添加不进去,
很是烦人!主要是不知道如何把菜单项添加到快捷键弹出的菜单里。
在eclipse开发群里问,也没有人知道,泪流满面啊!先不管了,就这样凑活用吧,比没有好!
下面分享一下开发过程:
1.配置plugin.xml文件
2.开发逻辑处理部分
1.
<!-- 添加到主菜单 --> <extension point="org.eclipse.ui.actionSets"> <actionSet label="生成字段名称(&D)" visible="true" id="genfieldname.popup.actions.TestAction.1"> <action label="生成字段名称(&D)" class="genfieldname.popup.actions.TestAction" menubarPath="org.eclipse.jdt.ui.source.menu/generateGroup" id="genfieldname.popup.actions.TestAction.1"> </action> </actionSet> </extension> <!--添加到编辑器的右键source菜单里--> <viewerContribution id="org.gsoc.eclipse.tostringgenerator.popupMenu" targetID="#CompilationUnitEditorContext"> <action label="生成字段名称(&D)" menubarPath="org.eclipse.jdt.ui.source.menu/generateGroup" class="genfieldname.popup.actions.TestAction2" id="genfieldname.popup.actions.TestAction2"> </action> </viewerContribution> <!--选中java文件右键弹出的source菜单里--> <objectContribution adaptable="false" id="genfieldname.popup.actions.NewAction" objectClass="org.eclipse.jdt.core.ICompilationUnit"> <action label="生成字段名称(&D)" menubarPath="org.eclipse.jdt.ui.source.menu/generateGroup" class="genfieldname.popup.actions.NewAction" id="genfieldname.popup.actions.NewAction" > </action> </objectContribution>
2.逻辑处理不长。
获取当前正在被编辑的java代码,获取起所有字段,然后生成名称,如果已经生成过则忽略掉。
代码如下:
InputDialog ind = new InputDialog(window.getShell(), "请输入注解", "在声明前面的注解,可以为空...", "@Transient", null); String annocation = ""; if(InputDialog.CANCEL == ind.open()){ annocation = ""; }else{ annocation = ind.getValue() +" "; } IEditorPart editor = window.getActivePage().getActiveEditor(); IEditorInput input = editor.getEditorInput(); if(input instanceof FileEditorInput){ FileEditorInput finput = (FileEditorInput) input; IFile f = finput.getFile(); IJavaElement ije = JavaCore.create(f); ICompilationUnit icu = (ICompilationUnit) ije; try { IType[] type = icu.getAllTypes(); for(IType t:type){ IField[] fields = t.getFields(); HashSet<String> set = new HashSet<String>(); for(IField field : fields){ String name = field.getElementName(); if(name.equals(name.toUpperCase())) set.add(field.getElementName()); } for(IField field : fields){ String name = field.getElementName(); if(name.equals(name.toUpperCase()))continue; if(set.contains(name.toUpperCase()))continue; t.createField(annocation+"public static String "+field.getElementName().toUpperCase()+ " = \""+ field.getElementName() +"\";", null, true, null); } } ; } catch (JavaModelException e) { e.printStackTrace(); } }
附件是最后的插件,供参考
1 楼
wangwanttt
2011-08-15
插件咋用啊?