分类: Java
2010-08-06 17:21:47
Hist:
20100806, draft
配置的范围(the scope of a preference)描述的是preference的作用范围. scope也决定了preference的存储位置.
1. instance, 每个workspace或instance有一份
2. configuration, 一个安装就一份, 也就是说这个安装后, 所有的instance, workspace都将一样, 共同使用这个configuration.
3. default, 默认值, 用户一般不能变动, default存于plugin或feature中. 也就是说, 写死的固定值.
所以, 对于Instance和configuration, 都需要与作用的对象相关, 一般是plug-in的id.
主要package, interface和class:
IPreferencesService, Preferences
eclipse按照 OSGi Application Admin service specification实现了app container. app container负责发现app, 并为每一个app注册一个ApplicationDescriptor.
default application是eclipse启动后app container运行的默认app, 可配置.
主要package, interface和class:
org.osgi.service.application, org.eclipse.core.runtime.applications
Content type(内容类型)描述的是数据流如何解读, 例如使用的字符集(charset), 字节序(byte order), 以及其它定制的特性. IContentTypeManager提供了方法侦测数据流的content type. 如果提供文件名信息, 采用文件名后缀判定的方法, 是一个效率较好的方法.
定义一个content type的例子, 一个txt, 一个派生自txt的xml, 一个alaise占位.
priority="high" file-extensions="txt"> base-type="org.eclipse.core.runtime.text" priority="high" file-extensions="xml"> base-type="org.eclipse.core.runtime.text" alias-for="org.eclipse.jdt.core.javaProperties" file-extensions="properties"> |
主要package, interface和class:
IContentTypeManager, IContentType, IContentDescription
主要的extension point:
org.eclipse.core.runtime.contentTypes
eclipse中的job相当于java的thread, job family相当与java的thread group.
Job是eclipse中可以异步工作的最小单位, plugin 创建job, job被放到eclipse platform管理的job queue中进行调度, 完成生命周期.
状态图 state machine 如下:
state NONE 1. ----ableToRun-----> state RUN ; 2. ---------scheduled------> state WAITING
state RUN 1. ------done-------> state NONE; 2. ------scheduled-----> state WAITING
state WAITING 1.-----done------>state WAITING; 2. -------ableToRun---->state RUNNING; 3. -------sleeping------> state SLEEPING
state SLEEPING 1. -----awake------> state WAITING
Jobs的集中管理可以借助job manager, IJobManager.
IJobManager jobMan = Platform.getJobManager();
主要package,interface和class:
org.eclipse.core.runtime.jobs
IJobChangeListener, IJobManager, IJobStatus, Job
主要extension point: n/a
1. Eclipse Platform plug-in Developer Guide