`
yianpuodiaotu
  • 浏览: 241694 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Folder/Package/class路径选择

阅读更多
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.OperationCanceledException;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.search.IJavaSearchConstants;
import org.eclipse.jdt.core.search.SearchEngine;
import org.eclipse.jdt.internal.ui.IJavaHelpContextIds;
import org.eclipse.jdt.internal.ui.JavaPlugin;
import org.eclipse.jdt.internal.ui.JavaPluginImages;
import org.eclipse.jdt.internal.ui.JavaUIMessages;
import org.eclipse.jdt.internal.ui.actions.OpenTypeAction;
import org.eclipse.jdt.internal.ui.dialogs.OpenTypeSelectionDialog2;
import org.eclipse.jdt.internal.ui.javaeditor.EditorUtility;
import org.eclipse.jdt.internal.ui.util.ExceptionHandler;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.help.WorkbenchHelp;

public class OpenJavaAction extends OpenTypeAction {
	private OpenTypeSelectionDialog2 dialog;

	private Shell parent;
	
	private boolean bool = true;
	public OpenJavaAction() {
		super();
		setText(JavaUIMessages.OpenTypeAction_label); //$NON-NLS-1$
		setDescription(JavaUIMessages.OpenTypeAction_description); //$NON-NLS-1$
		setToolTipText(JavaUIMessages.OpenTypeAction_tooltip); //$NON-NLS-1$
		setImageDescriptor(JavaPluginImages.DESC_TOOL_OPENTYPE);
		WorkbenchHelp.setHelp(this, IJavaHelpContextIds.OPEN_TYPE_ACTION);
		parent = JavaPlugin.getActiveWorkbenchShell();
		try {
			dialog = new OpenTypeSelectionDialog2(parent,true, PlatformUI
					.getWorkbench().getProgressService(),
					 SearchEngine
							.createWorkspaceScope(),IJavaSearchConstants.TYPE);
		} catch (OperationCanceledException e) {
			return;
		}
	}

	public OpenTypeSelectionDialog2 getDialog() {
		return dialog;
	}
	
	public Object[] getType(){
		return dialog.getResult();
	}
	
	public void setBool(boolean bool){
		this.bool = bool;
	}

	public void run() {

//		dialog.setMatchEmptyString(true);
		dialog.setTitle(JavaUIMessages.OpenTypeAction_dialogTitle); //$NON-NLS-1$
		dialog.setMessage(JavaUIMessages.OpenTypeAction_dialogMessage); //$NON-NLS-1$ //$NON-NLS-1$		
		int result = dialog.open();
		if (result != IDialogConstants.OK_ID)
			return;

		Object[] types = dialog.getResult();
		if (types != null && types.length > 0) {
			IType type = (IType) types[0];
			if(bool){
				try {
					IEditorPart part = EditorUtility.openInEditor(type, true);
					EditorUtility.revealInEditor(part, type);
				} catch (CoreException x) {
					String title= JavaUIMessages.OpenTypeAction_errorTitle; //$NON-NLS-1$
					String message= JavaUIMessages.OpenTypeAction_errorMessage; //$NON-NLS-1$ //$NON-NLS-1$
					ExceptionHandler.handle(x, title, message);
				}
			}
			
		}
	}

	public void run(IAction action) {
		run();
	}

}
import org.eclipse.core.runtime.OperationCanceledException;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.search.IJavaSearchConstants;
import org.eclipse.jdt.core.search.SearchEngine;
import org.eclipse.jdt.internal.ui.IJavaHelpContextIds;
import org.eclipse.jdt.internal.ui.JavaPlugin;
import org.eclipse.jdt.internal.ui.JavaPluginImages;
import org.eclipse.jdt.internal.ui.JavaUIMessages;
import org.eclipse.jdt.internal.ui.actions.OpenTypeAction;
import org.eclipse.jdt.internal.ui.dialogs.OpenTypeSelectionDialog2;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.help.WorkbenchHelp;
public class SelectionClassAction extends OpenTypeAction {
	private OpenTypeSelectionDialog2 dialog;

	private Shell parent;

	private Text classValue;

	public SelectionClassAction() {
		super();
		setText(JavaUIMessages.OpenTypeAction_label); //$NON-NLS-1$
		setDescription(JavaUIMessages.OpenTypeAction_description); //$NON-NLS-1$
		setToolTipText(JavaUIMessages.OpenTypeAction_tooltip); //$NON-NLS-1$
		setImageDescriptor(JavaPluginImages.DESC_TOOL_OPENTYPE);
		WorkbenchHelp.setHelp(this, IJavaHelpContextIds.OPEN_TYPE_ACTION);
		parent = JavaPlugin.getActiveWorkbenchShell();
		try {
			dialog = new OpenTypeSelectionDialog2(parent, true, PlatformUI
					.getWorkbench().getProgressService(), SearchEngine
					.createWorkspaceScope(), IJavaSearchConstants.TYPE);
		} catch (OperationCanceledException e) {
			return;
		}
	}

	public OpenTypeSelectionDialog2 getDialog() {
		return dialog;
	}

	public void run() {
		// dialog.setMatchEmptyString(true);
		dialog.setTitle(JavaUIMessages.OpenTypeAction_dialogTitle); //$NON-NLS-1$
		dialog.setMessage(JavaUIMessages.OpenTypeAction_dialogMessage); //$NON-NLS-1$//$NON-NLS-1$		
		int result = dialog.open();
		if (result != IDialogConstants.OK_ID)
			return;

		Object[] types = dialog.getResult();
		if (types != null && types.length > 0) {
			IType type = (IType) types[0];
			type.getPackageFragment().getElementName();
			classValue.setText(type.getPackageFragment().getElementName() + "."
					+ type.getElementName());
		}
	}

	public void run(IAction action) {
		run();
	}

	public void run(Text classValue) {
		this.classValue = classValue;
		run();
	}
}

对于Floder:

源码如下:帮助刚学习的同学一起进步
IJavaProject currProject = ActionUtil.findSelectedJavaProject(this.selection);
        ContainerSelectionDialog dialog = new ContainerSelectionDialog(getShell(), currProject.getProject().getWorkspace().getRoot(), false,"Select Mapping Folder");
        if (dialog.open() == ContainerSelectionDialog.OK) {
            Object[] result = dialog.getResult();
            if (result.length == 1) {javascript:;






                mappingPath.setText(((Path) result[0]).toString());
            }
        }


其中
public static IJavaProject findSelectedJavaProject(ISelection selection) {
        IJavaProject currentProject = null;
        if (selection != null) {
            if (selection instanceof IStructuredSelection) {
                IStructuredSelection ss = (IStructuredSelection)selection;
                Object obj = ss.getFirstElement();
                if (obj instanceof IJavaProject) {
                    currentProject = (IJavaProject)obj;
                }
            }
        }
        return currentProject;
    }

例子:
ContainerSelectionDialog= new ContainerSelectionDialog(...);
	if(dialog.open == ContainerSelectionDialog.OK){
		Object[] result = dialog.getResult();
		String containerFullName  = ((Path)reslut[0]).toString();
		createFile();
	}
	public createFile(){
		....
	}
 TypeSelectionDialog
    TypeSelectionDialog是JDT内核中的一个UI显示部件,是不鼓励使用的,不过我觉得很好用,拿来与大家分享,呵呵:)
    TypeSelectionDialog提供一个在给定的搜索域内搜索Java Type的选择对话框。比如我们在新建Class时选择Super Class时那样。选择后得到了一个或多个Eclipse平台提供的针对Java Type的对象:IType。
    所以在使用时,需要以下几步工作:
    1、利用SearchEngine创建搜索域
    2、指定搜索内容为Class还是Interface还是其它的什么
    3、创建Dialog:
  try{
        TypeSelectionDialog2 dialog = new TypeSelectionDialog2(...);
        dialog.setFilter(...);
        dialog.setTitle(...);
        dialog.setMessage(...);
        
        if (dialog.open() == IDialogConstants.CANCEL_ID) 
          return;

        Object[] types= dialog.getResult();
        if (types == null || types.length == 0) 
          return;
        
        IType type = (IType)types[0];
        IResource res = type.getResource();
    }catch(Exception e){
        ...
    }




 

ElementTreeSelectionDialog
   ElementTreeSelectionDialog不属于JDT内核UI,但是我们构造了合适的validator和filter之后,ElementTreeSelectionDialog就可以提供出一个选择Java源文件容器的对话框,在Eclipse JDT 的概念中,Java程序中的每一个Package叫做IPackageFragment,那么这个Java源文件容器叫做IPackageFragmentRoot。
   示例代码:
     ElementTreeSelectionDialog dialog= new ElementTreeSelectionDialog(...);
     dialog.setValidator(validator);//校验所选中的是否是合法的
    dialog.setSorter(new JavaElementSorter());
     dialog.setTitle("Select Java Source Container");
     dialog.setMessage("Select one of java source containers from workspace.");
     dialog.addFilter(filter);//对于选择操作的过滤
     dialog.setInput(IJavaModel)//将工作区的Java模型传入
     dialog.setInitialSelection(fWorkspaceRoot.getProject());//初始选择
  ... ...


ElementListSelectionDialog
  ElementListSelectionDialog也不是JDT核心UI,但是我们通过构造这个Dialog中的元素列表,让其提供出一个Java 程序中Package选择列表对话框。
  ElementListSelectionDialog dialog= new ElementListSelectionDialog(...));
  dialog.setIgnoreCase(false);
  dialog.setTitle("Select Packages From Java Project ");
  dialog.setMessage("Select packages from java project which you pre-selected.");
  dialog.setEmptyListMessage("There is no package in selected project.");
  dialog.setElements(packages);//列表中的元素




  • 描述: TypeSelectionDialog
  • 大小: 20.2 KB
  • 描述: ElementTreeSelectionDialog
  • 大小: 17.1 KB
  • 描述: ElementListSelectionDialog
  • 大小: 16.7 KB
分享到:
评论

相关推荐

    eclipse插件(查看java、class文件)

    选中.java文件,然后右键选择"Properties",在弹出的对话框中,可以看到"Java Source Path"下的"Source Folder",点击后可以查看到对应的.class文件位置。当然,如果想在编辑器中直接看到,可以使用"JClassFinder...

    使用Eclipse构建Maven的Web项目用jetty启动.docx

    * 更改class路径,右键项目,Java Build Path -> Source,双击每个文件夹的Output folder,选择路径。 * 更改JDK版本,在Libraries双击JRE System Library,要选择1.6版本。 * 更改文件夹显示的顺序,点击Order and ...

    使用Eclipse构建Maven的SpringMVC项目

    6. 更改 class 路径,右键项目,Java Build Path -> Source,双击每个文件夹的 Output folder,选择路径。 7. 把项目变成 Dynamic Web 项目,右键项目,选择 Project Facets,点击 Convert to faceted from。 使用 ...

    开发多媒体播放器

    package com.demo.pr5; import java.io.File; import java.util.Vector; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.KeyEvent; import android...

    antiguard:修复Android逆向工程师smali项目的类和包冲突

    它会在Java代码上显示错误,因为a / a / a / a包中的package a与a / a / a / a中的class a冲突。 您可以使用antiguard工具避免上述错误。 它将自动检测冲突并重命名程序包。 最后,它将根据重命名的软件包修复...

    前端学习路线推荐+自己做的一个前端项目(旅游线路推广)+通过购买腾讯云服务器上传的个人经历(附带部分关键源码)

    子目录中图片路径为`<img src="folder/image.jpg">`;父目录中图片路径为`<img src="../image.jpg">`。 - **大小调整**: 可以设置`width`和`height`属性来调整图像大小,仅设置其中之一时,浏览器会自动保持比例缩放...

    eclipse 创建maven 项目 动态web工程完整示例

    2. **更改 Class 路径**: - 右键项目 -> **Properties** -> **Java Build Path** -> **Source** - 对于 `src/main/java` 和 `src/main/resources`, 设置 Output folder 为 `target/classes` - 对于 `src/test/...

    liferay 使用struts2 开发portlet

    命名为“Struts2Study”,并在“Configuration”部分指定之前解压的Liferay Plugins SDK路径,Runtime会自动识别。 **开发Liferay Portlet** 1. **新建Portlet**: - 在已创建的“Struts2Study”项目下,选择...

    MyEclipse的基本使用技巧

    - 对于继承抽象类的情况,例如 `public class Test extends List`,可以在抽象类名称上右键选择 `Source` -> `Override/Implement Methods` 来选择需要覆盖或实现的方法。 - 自动生成 `set` 和 `get` 方法:在定义了...

    搭建SSH框架步骤.doc

    - 选择Struts 1.2,设置Base package for new classes为dal包路径。 - 不勾选Install Struts TLDs,完成配置。 ###### 3.2 添加Spring - 选中Web工程,右击 -> MyEclipse -> Add Spring Capabilities... - 勾选...

    Java 编程思想源代码使用导入eclipse流程

    解压后的文件夹结构应包含多个子文件夹,比如`innerclass`、`initialization`等,这些都是源代码的组织方式。 2. **新建工程**:确保Java的开发环境已经配置好。在JAVASE 8及以上版本,需要配置JDK和JRE的环境变量...

    java持久层API[参照].pdf

    在项目上点击右键,选择`New -> Entity Class from Database`,选择数据源`entity2`,然后添加表`userinfo`。 生成的Java实体类示例代码如下: ```java package com.example.entity; import javax.persistence.*; ...

    SenchaCmd-3.1.0.192-windows.exe

    命令如下: sencha -sdk /这里是你的sdk路径/ generate app MyApp 你的App的路径。如 sencha -sdk c:sencha5.0.0 generate app OASystem d:\oasys 执行完成之后可以看到如下的文件夹路径: [plain] view plaincopy在...

    伪静态URLRewrite实例解析

    在创建项目时选择勾选“Add JSTL libraries to WEB-INF/lib folder”,以确保项目能使用JSTL核心标签库。 - **依赖导入**:接着导入`urlrewrite-2.6.0.jar`至项目的Build Path路径下,并引入Struts框架。 **2. web....

    IBM FileNet P8 Content Engine Java API 程序设计指导手册

    - 右键点击之前创建的包,选择“New”>“Class”。 - 输入类名,例如“DemoMain”,并勾选“public static void main(String[] args)”选项,点击“Finish”。 7. **设置 JVM 参数** - 为了确保应用程序能够访问...

Global site tag (gtag.js) - Google Analytics