Eclipse开发经验点滴
1. ui.viewAction、ui.editorAction扩展点仅用于向其它部件添加action
2. popUpmenu扩展也是向其它插件的上下文菜单添加扩展
3. Ui.perspectiveExtentions是扩展已有的透视图,比如添加actionSet等
4. popUpmenu扩展时,有两种,viewerContribution和objectContribution。viewerContribution的action(比如为java编辑器右键菜单添加子菜单)
5. 现在所有的action(出现在工作台各种地方的)绑定快捷键(通过配置文件的形式)都是通过扩展ui.commands和ui.bindings实现的。Action的difinitionid指定为command的id
6. org.eclipse.ui.ide插件里定义了Navigator等常见视图
7. 一个IAdapterManager中管理着很多IAdapterFactory。可能为一个IAdaptable注册了很多个IAdapterFactory。每个IAdapterFactory为IAdaptable提供了一些扩展,使其可以转换成为一个或多个Adapter。
8. 添加了IResourceChangeEvent.POST_CHANGE类型的资源监听后,在监听器类里不能再创建资源,因为这时资源树已被lock。典型的场景是创建了一个资源,然后触发监听,监听处理过程中又调用了创建资源的语句,这时资源不能被创建,会有异常。
You're attempting to modify the resource tree (Resource.deleteMarkers(...)) during a POST_CHANGE notification. This is not allowed. If you want to modify the resource tree, this need to be done either in a PRE_AUTO_BUILD or POST_AUTO_BUILD notification. Note these 2 events are sent even if you're not in auto-build mode
9. 导入工程时,指定包含工程的目录,但向导中不显示此工程,是因为当前工作空间中已有同名工程.
10. Eclipse中显示的工程名是由工程的.project文件中name决定的,而不是工程文件
夹名。最简单的工程只包含一个.project文件。
11. SWT 要求对 UI 的操作在新的线程中进行。SWT单独有一个线程(主线程)处理界面显示,数据显示等,如果要在其他线程中操作界面元素,就必须使用Display的syncExec和asyncExec两个方法执行,即将另外线程的操作交给主线程处理
12. 界面开发时,有时在composite A上建一个composite B,然后在composite B上再建控件,可能看不到。这一般是因为composite B上没设置Layout
13. 对导入工程的这个事件的监听,有些特别,它不同于一般的资源变化。它会触发两到三个IresourceChangeEvent,事件的类型都是IresourceChangeEvent.POST_CHANGE