⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eclipse入门使用指南及开发eclipse插件(1).doc

📁 Eclipse是开放源代码的项目
💻 DOC
📖 第 1 页 / 共 3 页
字号:

但是象前面提到的,PdePlugin.java对下面的例子并不是必需的,我们不用对它进行任何修改。在我们第一个例子中的Weclome插件,根本就没有生成AbstractUIPlugin的继承子类,此时系统会自动为Weclome插件生成一个缺省的主类(类似于Java类构造函数,如果没有声明,系统会指定一个默认的构造函数)。下面的代码是才真正实现了我们新插件的功能,假设这个插件名子是NoticeView: 

package com.nidapeng.eclipse.plugin.pde; 
import org.eclipse.core.resources.*; 
import org.eclipse.core.resources.IResourceChangeEvent; 
import org.eclipse.core.runtime.CoreException; 
import java.util.ResourceBundle; 
import org.eclipse.swt.widgets.Label; 
import org.eclipse.swt.widgets.Composite; 
import org.eclipse.ui.part.ViewPart; 
import org.eclipse.swt.SWT; 
import org.eclipse.swt.widgets.Display; 
public class NoticeView extends ViewPart implements  
Runnable,IResourceChangeListener ,IResourceDeltaVisitor{ 
private ResourceBundle resourceBundle; 
private Label label; 
private Display disp; 
private String dispTxt; 
public NoticeView() { 
ResourcesPlugin.getWorkspace().addResourceChangeListener(this, 
IResourceChangeEvent.PRE_CLOSE 
| IResourceChangeEvent.PRE_DELETE 
| IResourceChangeEvent.PRE_AUTO_BUILD 
| IResourceChangeEvent.POST_AUTO_BUILD 
| IResourceChangeEvent.POST_CHANGE); 
} 
public static IWorkspace getWorkspace() { 
//ResourcesPlugin插件的主类! 
return ResourcesPlugin.getWorkspace(); 
} 
public void createPartControl(Composite parent) { 
label = new Label(parent, SWT.WRAP); 
label.setText("change your project status..."); 
disp = Display.getDefault(); 
} 
public void setFocus() { 
} 
// 实现IResourceChangeListener接口中的resourceChanged方法 
public void resourceChanged(IResourceChangeEvent event) { 
IResource res = event.getResource(); 
switch (event.getType()) { 
case IResourceChangeEvent.PRE_CLOSE : 
dispTxt = res.getFullPath() + " is about to closed!"; 
break; 
case IResourceChangeEvent.PRE_DELETE : 
dispTxt = res.getFullPath() + " is about to be deleted!"; 
break; 
case IResourceChangeEvent.POST_CHANGE : 
try { 
event.getDelta().accept(this); 
} catch (CoreException e) { 
e.printStackTrace(); 
} 
break; 
case IResourceChangeEvent.PRE_AUTO_BUILD : 
try { 
event.getDelta().accept(this); 
} catch (CoreException e) { 
e.printStackTrace(); 
} 
break; 
case IResourceChangeEvent.POST_AUTO_BUILD : 
try { 
event.getDelta().accept(this); 
} catch (CoreException e) { 
e.printStackTrace(); 
} 
break; 
} 
disp.syncExec(this); 
} 
// 实现IResourceDeltaVisitor接口中的visit方法 
public boolean visit(IResourceDelta delta) { 
IResource res = delta.getResource(); 
switch (delta.getKind()) { 
case IResourceDelta.ADDED : 
dispTxt = "Resource "+res.getFullPath()+" was added."; 
break; 
case IResourceDelta.REMOVED: 
dispTxt = "Resource "+res.getFullPath()+" was removed."; 
break; 
case IResourceDelta.CHANGED : 
dispTxt = "Resource "+res.getFullPath()+" has changed."; 
break; 
} 
return true; // visit the children 
} 
// 实现Runnable接口中的run方法 
public void run() { 
try { 
label.setText(dispTxt); 
} catch (Exception e) { 
e.printStackTrace(); 
} 
} 
} 
(未完待续)


Eclipse入门使用指南及开发Eclipse插件(6)

象上面的第一个Welcome插件,这个新插件同样继承了ViewPart,不同的是实现了三个接口:Runnable,IResourceChangeListener ,IResourceDeltaVisitor。其中的Runnable大家应该很熟悉:多线程的接口。而IResourceChangeListener和IResourceDeltaVisitor是Eclipse系统中的资源接口,这里的资源是指Eclipse中的项目或文件等。在下面运行NoticeView插件的过程中你可以通过添加、打开、删除项目或文件来触发这两个接口中的事件,并在我们的观察窗口中显示相关信息。 

在程序中比较奇怪部分的是在resourceChanged()函数里面,并没有象大家想象的那样直接调用label.setText()方法来显示信息,而是调用了disp.syncExec(this),其中的disp是Display类型的对象。这是因为resourceChanged()方法运行的线程和lable所在插件运行的Eclipse主线程并不是同一个线程,如果直接调用label.setText()方法,会抛出一个异常。 

下面还需要对项目中的plugin.xml进行一些改动,主要就是加上扩展点声明,这个xml文件和Welcome插件的plugin.xml非常接近,这里就不做过多的说明了。要运行这个插件,可以直接用Eclipse中的运行按钮,因为这个项目是一个Plug-in Project,此时项目会自动以Run-time Workbench方式运行。运行后,会生成一个和当前Eclipse完全一致的平台,在这个平台上可以直接运行NoticeView插件,查看这个插件到底会执行什么功能,也可以用直接Run-time Workbench方式调试插件。这里省去了安装插件,重启动Eclipse等过程,可以看到用PDE开发插件的过程比直接用Java开发环境简洁了很多! 

Eclipse的开发不仅仅限于插件的开发,它还可以取代Java中的标准Swing,进行基于Java的独立应用程序GUI开发。它带来的好处是显而易见的:高速,资源占用低,跨平台,代码开放,有大公司的支持等等。 

由于Eclipse目前还在开发阶段,笔者在用它调试程序时发现有些性能还不是十分的稳定,一些地方会遇到奇怪的问题,要求使用者能想一些办法解决。不过,以现在Eclipse的开发速度,相信过不了多久,它的各种功能会逐步完善。目前Eclipse虽然有种种不足,但瑕不掩玉,笔者对Eclipse的总体印象还是非常不错的,运行速度,资源占用都要好于IVJ,操作起来也大多顺手,而且即使在现阶段也很少有意外退出等重大的Bug发生,希望未来的Eclipse能真正达到IVJ的功能,VisualCafe的速度,成为广大程序员开发软件的一大利器! (全文完)


 Eclipse快捷键指南
  本文档从Eclipse软件上整理,是列出了标准的快捷键,未列出Emacs快捷键。
 
编辑

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -