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

自己开发的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="生成字段名称(&amp;D)"  visible="true"
            id="genfieldname.popup.actions.TestAction.1">
          <action
               label="生成字段名称(&amp;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="生成字段名称(&amp;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="生成字段名称(&amp;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  
插件咋用啊?