JDT
文章平均质量分 74
cuser_online
致力于软件开发。
展开
-
JDT学习之JavaCore
(1)JavaCore(定义在org.eclipse.jdt.core包下)JavaCore从Plugin继承,它是JDT插件的生命周期管理器。不过对于第三方插件开发人员来说,它的重要性更多地体现在它提供的一些工具类方法上。●IJavaElement create(IFile file) 从文件创建对应的Java元素●IJavaElement create(IFolder fo原创 2011-12-04 22:26:18 · 1014 阅读 · 0 评论 -
IBinding,IJavaElement,ASTNode等类的相互转化
How to go from one of IBinding, IJavaElement, ASTNode to another?标签:ast,jdt之间的相互转化From an IBinding to its declaring ASTNodeorg.eclipse.jdt.core.dom.CompilationUnit.findDeclaringNode(IBinding)翻译 2012-08-20 14:18:15 · 1308 阅读 · 0 评论 -
说说IResource.refreshLocal(int depth,, IProgressMonitor monitor)
refreshLocal的原型为:public void refreshLocal(int depth, IProgressMonitor monitor) throws CoreException; refreshLocal方法可以传递一个尝试参数,以指明刷新的对象仅仅是该资源,还是该资源及其成员,或者是该资源及其所有后代资源。所有由工作空间api引起的更改,例如向项目中添加文件夹或原创 2012-08-29 17:12:58 · 1585 阅读 · 1 评论 -
CompilationUnit包括了PackageDelration,ImportContainer,SourceType
纠正自己一个认识上的误区。IType createdType = ...;CompilationUnit cu =...;//并不包括package和import部分内容 ISourceRange range= createdType.getSourceRange();IBuffer buf= cu.getBuffer();String originalContent原创 2012-08-29 17:57:54 · 1110 阅读 · 0 评论 -
插件开发为Java透视图贡献新建向导时的一个bug(org.eclipse.ui.perspectiveExtensions)
有前同事问到,想在新建向导中添加一个右键菜单,可能是这样: 这种需求通过org.eclipse.ui.perspectiveExtensions扩展点就能办到。eg:step1:实现org.eclipse.ui.newWizards向导 <extension point="org.eclipse.ui.newWizards"> <cate原创 2012-08-30 17:50:55 · 1383 阅读 · 1 评论 -
Eclipse Workbench Structure分析
IWorkbenchpublic interface IWorkbenchextends IAdaptable, IServiceLocatorA workbench is the root object for the Eclipse Platform user interface.A workbench has one or more main windows which pr原创 2012-08-31 18:17:58 · 926 阅读 · 0 评论 -
Eclipse源码阅读:Add Interfaces
本文和Eclipse源码阅读:Choose Super Class类似, 废话不说,直接看代码吧: protected void chooseSuperInterfaces() { IJavaProject project= getJavaProject(); if (project == null) { return; } SuperIn原创 2012-09-02 18:21:55 · 548 阅读 · 0 评论 -
Eclipse源码阅读:Choose Super Class
下午睡了一觉,起来后阅读了New Java Class的部分的代码,对应的向导为org.eclipse.jdt.internal.ui.wizards.NewClassCreationWizard,从New Java Class的功能实现中,我们可以学习到诸如JDT,AST的很多巧妙实现,在后面的博文中,会将自己的阅读心得与大家进行分享,本文只关注于Choose Super Class,如下图用红原创 2012-09-02 18:13:52 · 800 阅读 · 3 评论 -
Eclipse源码阅读:GotoTypeAction
Go To Type是Eclipse的Navigate菜单下的一个子菜单的功能,如下所示:大部分内容和{Eclipse源码阅读:Go To Resource点击打开链接}一样.这里直接贴同分析的核心代码,重点部分添加了中文注释./*****************************************************************************原创 2012-09-02 17:59:38 · 759 阅读 · 1 评论 -
IResource.isSynchronized(int depth)_用法
通过isSynchronized方法,你既可以査询一个资源的同步信息,也可以查询该资源的成员及该资源的所有子资源的同步信息。eg:bool inSync = folder.isSynchronized(IResourse.DEPTH_ONE);其它的有关深度的选项是DEPTH_ZERO和DEPTH_INFINITE,这些选项在isSynchronized和refreshLocal等方法原创 2012-09-06 17:56:04 · 727 阅读 · 0 评论 -
JDT:Open Resource Action代码阅读
源码位于org.eclipse.ui.internal.ide.handlers.OpenResourceHandler类。//弹出打开资源对话框private final Object[] queryFileResource() { final IWorkbenchWindow window = PlatformUI.getWorkbench() .getActiveWorkb原创 2012-08-28 13:18:42 · 561 阅读 · 0 评论 -
choosePackage(选择package的功能)(ElementListSelectionDialog对话框)
在Eclipse中,新建Class,Interface等向导页(org.eclipse.jdt.ui.wizards.NewTypeWizardPage)中的browse package的功能即是通过下面代码实现的,此处可以注意一下ElementListSelectionDialog类。直接看一下代码吧。protected IPackageFragment choosePackage() {原创 2012-08-28 13:15:29 · 1013 阅读 · 0 评论 -
JDT:Choose Source Container Dialog(选择src目录的功能)
源码位于org.eclipse.jdt.ui.wizards.NewContainerWizardPage类中,注意一下ElementTreeSelectionDialog对话框的使用。// ------------- choose source container dialog /** * Opens a selection dialog that allows to select a原创 2012-08-28 13:22:14 · 625 阅读 · 0 评论 -
JDT:详解JavaUI.createTypeDialog方法
在eclipse中,诸如Open Type Choose Super Class Add Interfaces都是通过JavaUI.createTypeDialog方法来实现的,只是所传的参数不一样罢了。我们主要看这个方法中的一些 context,scope ,style, multipleSelection, filter参数。publ原创 2012-08-23 14:02:36 · 959 阅读 · 0 评论 -
JDT:类型对话框的使用(FilteredTypesSelectionDialog)
在UI上的展现可能是这样的:核心是JavaUI类的使用了,直接上代码: public IType selectType() throws JavaModelException { Shell parent = window.getShell(); SelectionDialog dialog= JavaUI.createTypeDialog(原创 2012-08-20 14:11:23 · 614 阅读 · 0 评论 -
JDT:在TreeViewer中呈现java元素
有时候,可能需要在自己定义的视图或对话框中展示workspace中的元素。UI效果可能如下:此对话框的核心UI代码为:@Override protected Control createDialogArea(Composite parent) { getShell().setText("在TreeViewer中展示Java元素"); Composite contain原创 2012-08-20 14:37:11 · 630 阅读 · 0 评论 -
JavaPreview类的使用(预览Java代码)
在ide开发中,我们经常可能会需要预览Java代码(可能自己提供的java代码模板),jdt中已经提供了这样的支持,支持语法高亮等,它本质上是对TextViewer的包装。截图可能如下:JavaPreview是抽象类,我们可以使用其子类 org.eclipse.jdt.internal.ui.preferences.formatter.CompilationUnitPreview.原创 2012-08-17 13:02:26 · 1191 阅读 · 0 评论 -
JDT学习之IPackageFragmentRoot
JDT学习之IPackageFragmentRootIPackageFragmentRoot是一组IPackageFragment的根,代表源文件夹,也可以是jar包或zip包。比如Java工程中建立的src文件夹,某个依赖的jar文件 (比如rt.jar文件)。eg:if(obj instanceof IPackageFragmentRoot){IPackageFragmen原创 2011-12-05 21:30:14 · 2074 阅读 · 0 评论 -
JDT学习之SourceType
SourceType代表源代码中的Class,Interface,Anonation,Enum等类型。直接看代码eg:SourceType sType = (SourceType) type; System.out.println("名称:" + sType.getElementName());if(sType.isClass()){sType.createMethod("原创 2011-12-06 22:10:39 · 1015 阅读 · 0 评论 -
JDT学习之ICompilationUnit
ICompilationUnit表示Java源(.java)文件。常用api1.getSource():获取.java文件内容1.生成编译单元通过程序来生成编译单元最简单的方法是使用IPackageFragment.createCompilationUnit。指定编译单元的名称和内容。于是在包中创建了编译单元,并返回新的ICompilationUnit。●copy.crea原创 2011-12-04 22:27:25 · 4084 阅读 · 0 评论 -
JDT学习之JavaProject
JavaProject代表Java工程。主要api:1.getAllPackageFragmentRoots();//获取所有PackageFragmentRootJavaProject javaProject = (JavaProject) obj;System.out.println("is open? " + javaProject.isOpen());//工程是否已打开原创 2011-12-06 22:08:05 · 776 阅读 · 0 评论 -
JDT学习之编译单元的类型
IType有两种类型,分别为源类型(SourceType),类文件中的二进制类型(BinaryType)类型中的一些元素IField:表示类型中的字段IMethod:表示类型中的方法或构造函数IInitializer:表示类型中的静态或实例初始化程序原创 2011-12-06 22:12:12 · 578 阅读 · 0 评论 -
JDT学习之PackageFragment
PackageFragment代表Java包(package)1.getElementName():获取名称2.getCompilationUnits():获取所有源文件(编译单元) 3.createCompilationUnit():创建编译单元文件(即.java文件)原创 2011-12-06 22:08:53 · 945 阅读 · 0 评论 -
JDT:判断某方法是否为public
有前同事问到此问题,索性看了一下源码,废话不说,直接贴代码:IMember member= ...;int memberType= member.getElementType();if (memberType == IJavaElement.METHOD) {//是否为方法 int flags= member.getFlags();boolean isPublicMeth原创 2012-07-20 16:25:27 · 929 阅读 · 0 评论 -
JDT:打开Java编辑器并显示特定成员
以下代码段显示可以如何使用 JavaUI来打开 Java 编辑器并显示 Java 编译单元的特定成员。 void showMethod(IMember member) { ICompilationUnit cu = member.getCompilationUnit(); IEditorPart javaEditor = JavaUI.openInEdit原创 2012-07-20 16:26:03 · 519 阅读 · 0 评论 -
JDT:获取Java类每个方法的注释
//step1:获取ICompilationUnit IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();IProject project = root.getProject("test");try {project.open(null /* IProgressMonitor */);} catch (C原创 2012-07-23 16:28:51 · 3525 阅读 · 0 评论 -
JDT:从JavaProject中获取编译单元(ICompilationUnit)
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();IProject project = root.getProject("test");try {project.open(null /* IProgressMonitor */);} catch (CoreException e) {// TODO Au原创 2012-07-23 16:28:10 · 1562 阅读 · 0 评论 -
AST的一些概念(待续)
Eclipse AST是Eclipse JDT的一个重要组成部分,定义在org.eclipse.jdt.core.dom中,用来表示java语言中的所有语法结构。下面是api中一些核心类的概念:1.ASTNode类及其派生类 用于描述各种AST节点的类,每个AST节点表示一个Java源程序中的一个语法结构,例如,类型、表达式、语句或声明等。2.AST类 创建AST节原创 2012-07-26 17:31:01 · 1215 阅读 · 0 评论 -
通过JDT修改(Modify)Java代码的流程步骤
1.ICompilationUnit originalUnit = ...;// Get original compilation unit获取ICompilationUnit实例的方式很简单,此处不再详述。2.originalUnit.becomeWorkingCopy(new SubProgressMonitor(monitor, 1));//得到编译单元的工作副本说明:将编译单元原创 2012-07-27 11:14:25 · 2158 阅读 · 0 评论 -
格式化Java文件
org.eclipse.jdt.core.formatter.CodeFormatter 用来格式化代码的类摘录自开源软件源码 private static CodeFormatter getCodeFormatter() { Map options = DefaultCodeFormatterConstants.getEclipseDefaultSettings()原创 2012-07-27 17:46:15 · 621 阅读 · 0 评论 -
通过代码重命名Java工程
在我看来,凡是当前eclipse能做的你都做到。有群友问到如何通过代码重命名Java工程。实际上,org.eclipse.jdt.internal.ui.viewsupport.BasicElementLabels.RenameJavaProjectChange 中就是eclipse的实现。重命名工程无非是修改工程IProjectDescription。涉及到两个方面:1.原创 2012-11-22 11:12:20 · 953 阅读 · 0 评论