自己开发的eclipse插件-生成java pojo字段名称

自己开发的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();
}


}


附件是最后的插件,供参考
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值