- 浏览: 401847 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
zyu67:
这个类运行不起来呀 这类如何导出数据呀
一个数据库连接Java工具类和数据迁移类 -
kobe7777:
你好,请问我想写个excelToExcel 另存一个excel ...
Jacob 另存为Word、Excel -
di1984HIT:
记录一下学习。
Eclipse 平台架构 -
di1984HIT:
鞋的不错啊。呵呵额
一个数据库连接Java工具类和数据迁移类 -
Jameslyy:
确认jacob dll是否已经放入系统路径,jacob版本不同 ...
Jacob 另存为Word、Excel
内容类型(Content Type)
org.eclipse.core.runtime.content 提供了对数据流内容类型检测的支持。Eclipse 中对内容敏感的几个功能部件使用到了内容类型的概念,例如自动检测编码,编辑器和菜单扩展部分。Eclipse 运行时提供了一个集中的内容注册表,插件可以检测内容类型,发现可用的内容类型,以及和内容类型之间的关联关系,内容类型注册表是可扩展的,插件可以扩展新的内容类型。
1. 使用内容类型
注:为了方便讨论,在谈到 内容 时,我们没有使用 文件 这个词语。运行时内容引擎不假设内容是包含在文件中的,但是运行时提供了能够把内容类型和文件命名模式关联起来的方法。事实上,文件名称代表着系统中的文件,但是并能够通过内容类型确定内容数据来源于文件系统。 File encoding and content types 讨论了平台资源插件提供的面向文件的内容类型支持,如果开发者需要在这种环境下使用内容类型 API,推荐阅读这篇文章。
1.1 发现内容类型
内容类型由接口 IContentType 表示,这个接口定义如何读取数据流和获取特定内容类型信息的方法。内容类型本质上是分层的,例如,表示XML 数据的内容类型可以看作文本内容类型的子类型,这使得新的内容类型可以利用更为通用的内容类型的属性和行为。
IContentTypeManager 是访问平台运行时提供的大多数内容类型相关API的入口,客户程序可以通过Platform API 获得平台IContentTypeManager 对象的引用:
IContentTypeManager contentTypeManager = Platform.getContentTypeManager();
通过平台IContentTypeManager 对象可以获得系统中的内容类型。
- getAllContentTypes 获取系统中全部的内容类型
- getContentType 通过唯一标识获取一个内容类型
InputStream stream = ...; IContentType contentType = contentTypeManager.findContentTypeFor(stream, "file.xml"); stream.close();
InputStream stream = ...; IContentDescription description = contentTypeManager.getDescriptionFor(stream, "file.xml"); stream.close();
2. 扩展内容类型
2.1 创建新的内容类型
Eclipse 平台定义了一些基本的内容类型,例如普通文本和XML。这些内容类型的实现方式和其他任何插件实现方式是相同的,我们先看看Eclise 平台是怎样定义自己的内容类型的,以更好地理解内容框架。
插件是通过创建扩展点org.eclipse.core.runtime.contentTypes 的扩展的方式定义内容类型的。插件在扩展中为内容类型指定了一个简单的id 和名称(完整的id是当前命名空间作为前缀的id)。下面是org.eclipse.core.runtime.text 内容类型扩展的部分代码:
<extension point="org.eclipse.core.runtime.contentTypes"> <content-type id="text" name="%textContentTypeName"> file-extensions="txt"> <describer class="org.eclipse.core.internal.content.TextContentDescriber"/> </content-type> ...
file-extensions 属性定义和内容类型关联的文件扩展名(在这个例子中,是".txt"),file-names
(在这个例子没有用到)定义相关联的完整文件名。在执行内容类型检测和描述时,这两种属性都会被Eclipse 平台使用到(如果客户程序提供了文件名称)。
2.2 检测和描述内容
如果存在能够实现内容类型自动检测的可辨认的特性,或者属于内容类型的任何有用数据属性,都应该提供一个内容描述对象。例如 org.eclipse.core.runtime.text, 仅仅看文本内容,是不可能区分内容类型的。但是,可以在文本数据流的前面添加一个字节顺序标记,客户程序可能需要这个标记以实现所需的功能,所以,这里就需要用到内容描述对象了。
内容描述对象是 IContentDescriber or ITextContentDescriber 的实现,后者是前者的一个特例,文本内容类型的内容描述对象需要实现后面这个接口。不管内容类型的形式如何,描述对象都实现两个功能:帮助检测内容类型是否对应于一个给定数据流,和从属于特定内容类型的数据流中抽取需要的属性数据。
只要平台试图检测特定数据流的内容类型,或者描述它的数据内容,就会调用到方法 describe(stream, description) 。如果仅仅是检测内容类型,则描述将会为null 。否则,数据描述对象应该把通过读取数据流得到的任何属性存入到内容描述中,并且,内容描述应该仅包含这些属性数据。内容类型标记应该仅用于声明具有默认值的属性(例如,org.eclipse.core.runtime.xml 声明 UTF-8 作为默认的字符集)。
执行内容描述对象的功能应该尽可能快,读取的数据流越少越好。并且,内容描述对象应该声明于一个不会激活插件的包中。所有的内容描述对象是在内容类型框架初始化时创建的,不遵循此要求将会引起插件过早激活,应该避免这种情况的发生。如果这样做会引起对于插件的激活,平台的错误实现将不会初始化内容描述对象。
2.3 扩展一个存在的内容类型
内容类型在本上是分层的,这是的新的内容类型可以利用更为通用的内容类型的属性和行为,例如,XML 内容类型可以看作文本内容类型的子类型:
<content-type id="xml" name="%xmlContentTypeName" base-type="org.eclipse.core.runtime.text" file-extensions="xml"> <describer class="org.eclipse.core.internal.content.XMLContentDescriber"/> <property name="charset" default="UTF-8"/> </content-type>
XML 文件可以看作是文本文件,所以任何适用于后者的属性也适用于前者。
请注意,XML 内容类型覆盖了原来定义在文本内容类型中的属性,例如文件关联和内容描述对象。并且这个内容类型为charset 属性声明了一个默认的属性值。这意味着在描述属于XML内容类型的数据流是,如果描述对象没有提供一个字符集属性,平台会把它设置为“UTF-8” 。
再举一个例子,org.eclipse.ant.core.antBuildFile 内容类型扩展了XML 内容类型:
<content-type id="antBuildFile" name="%antBuildFileContentType.name" base-type="org.eclipse.core.runtime.xml" file-names="build.xml" file-extensions="macrodef,ent,xml"> <describer class="org.eclipse.ant.internal.core.contentDescriber.AntBuildfileContentDescriber"> </describer> </content-type>
注意字符集属性默认值是继承的, 通过声明为空的字符串值,可以取消继承的默认属性或描述对象。
2.4 添加文件关联
新的文件关联可以添加到已存在内容类型,例如,Resources 插件把org.eclipse.core.runtime.xml
关联到 ".project" 文件:
<extension point="org.eclipse.core.runtime.contentTypes"> <file-association content-type="org.eclipse.core.runtime.xml" file-names=".project"/> ...
2.5 内容类型别名
由于Eclipse 的可扩展特性,在一个给定的产品配置中,有可能多不到插件所依赖的内容类型,这个问题可以通过使用内容类型别名机制绕过。内容类型别名是另外一个无法确保能够获取的内容类型的占位符,例如,Runtime 在Java开发工具 JDT 中为Java 属性内容类型声明了一个别名(org.eclipse.core.runtime.properties
) :
<!-- a placeholder for setups where JDT's official type is not available --> <content-type id="properties" name="%propertiesContentTypeName" base-type="org.eclipse.core.runtime.text" alias-for="org.eclipse.jdt.core.javaProperties" file-extensions="properties"> <property name="charset" default="ISO-8859-1"/> </content-type>
这种方法向插件提供了一个能够参照的占位符,不管需要的内容类型是不是存在。如果是存在的,内容类型分类目录会隐藏别名内容类型,任何的引用都会解析为对目标内容类型的引用。如果不存在,别名用作原始内容类型。
发表评论
-
插件开发——基于Action的基本平台扩展点 二 : viewActions
2011-01-12 16:35 1896org.eclipse.ui.viewActions 通过插 ... -
插件开发——基于Action的基本平台扩展点
2011-01-12 15:31 1334工作台定义了一定数量的扩展点,帮助插件向已经存 ... -
插件开发—— 通过插件扩展工作台
2011-01-12 01:15 1479现在,你应该对工作台的操作和怎样使用视图和编辑 ... -
Eclipse 运行时概述 Part 3 —— 并行框架
2011-01-10 18:11 1362并行框架(Concurrency infras ... -
Eclipse 运行时概述
2011-01-05 17:45 2416Eclipse 运行时(Runtime)概述 ... -
Eclipse 平台架构
2011-01-05 00:25 28481. Eclipse 平台架构 Eclips ... -
SWT Part 7 —— Graphics (绘图)
2010-12-29 17:04 2834Graphics SWT 提供了一个图形引擎 ... -
SWT Part 6 —— Error Handling (错误处理)
2010-12-29 13:52 1392Error handling SWT 可以抛 ... -
SWT Part 5 —— 多线程
2010-12-22 23:22 2068在使用SWT构建应用程序时,理解系统底层读取和 ... -
SWT part 3 —— Event(事件)
2010-12-22 16:47 3060创建了一个display对象和一些用户界面部件 ... -
SWT Part 2 —— Controls(控件)
2010-12-22 09:26 1930Control (控件)就是我们能够在用户界面上看到的 ... -
SWT —— Standard Widget Toolkit
2010-12-21 16:24 19121.1 SWT— Standard Widget Toolki ... -
Project Builders and Natures In Eclipse
2010-10-29 18:24 2398Project natures allow a plug-in ... -
Web Facet Installation Delegate in WTP
2010-08-25 16:00 1140plugin: org.eclipse.jst.j2ee.we ... -
SWT 日期时间选择控件
2008-12-26 16:18 8082Eclipse 3.3 及 更新的版本 // DateTi ... -
OSGI 资源
2008-03-03 11:25 1891OSGi Alliance | Main / OSGi All ... -
eRCP 嵌入式富客户端平台
2008-01-08 15:55 1810嵌入式富客户端平台,embedded Rich Client ... -
GEF (二) -- 创建模型的可视化视图(Graphical View)
2008-01-04 18:35 2892创建了模型和显示 ... -
GEF (一) -- GEF简介及控制器EditPart
2008-01-04 11:19 3667一 GEF简介 GEF ... -
GEF EMF GMF 资源
2007-12-14 11:16 3895alphaWorks Eclipse technology. ...
相关推荐
eclipse上最好的js插件——aptana,已经支持到eclipse3.6,myeclipse尚未测试 已经帮懒人写好了links文件 同时写了份说明文档 1.关闭eclipse 2.将aptana文件夹拷贝到磁盘的一个地方 3.修改links文件夹的aptana.link...
[Eclipse全程指南:基础知识·Web开发·SWT/JFace开发·Eclipse插件].扫描版.共两部分,这是第二部分
详情请参阅 在Eclipse中编译运行Android4.3应用源码——Launcher2和Gallery2 http://blog.csdn.net/klpchan/article/details/11843295
基于eclipse的国产MCU——GD32F4xx实例工程
"Java工程脱离Eclipse运行" Java工程脱离Eclipse运行是指将Java工程从Eclipse中独立出来,生成一个可以独立运行的JAR包。下面是实现这一过程的详细步骤: 1. 选择要导出的项目,右键点击选择“导出” 2. 在弹出的...
[Eclipse全程指南:基础知识·Web开发·SWT/JFace开发·Eclipse插件].扫描版.共两部分,这是第一部分
模块0——eclipse环境搭建.ppt模块0——eclipse环境搭建.ppt模块0——eclipse环境搭建.ppt模块0——eclipse环境搭建.ppt模块0——eclipse环境搭建.ppt模块0——eclipse环境搭建.ppt模块0——eclipse环境搭建.ppt模块...
9. **Eclipse运行时**:Eclipse不仅是一个开发环境,还包括了运行时环境,比如OSGi(Open Services Gateway Initiative)框架,使得开发者可以构建模块化的应用程序。 10. **持续集成与自动化**:"none 3 part4...
eclipse 4.2 juno版 part2/3
精通Eclipse整合Web开发——Struts,Spring,Hibernate,JBPM 图书馆下载的,很不容易。 不是很清晰,如果介意的,请不要下载,不要拍砖。 总共有三部分。
m2eclipse+subeclipse.part2.rar 解压后拷贝到eclipse对应文件夹即可
本篇将详细介绍Eclipse中的代码注释模板——code templates,并基于提供的文件`convertion.xml`和`codetemplates.xml`进行解析。 **Eclipse代码注释模板** Eclipse的代码注释模板允许用户自定义不同类型的注释模板...
**m2e——Maven到Eclipse插件1.5最新离线安装版** M2E,全称为m2eclipse,是Eclipse IDE中一个非常重要的插件,它为Eclipse提供了对Apache Maven项目的集成支持。Maven是一个强大的项目管理和构建工具,广泛应用于...
1.打开eclipse——Preferences——Maven——installations——Add 2.选择你的Maven文件夹 3.如图: 4.apply 5.改maven中conf文件夹下setting文件(编辑器打开) 6.修改仓库 7.此处添加自己的仓库路径(切记全程...
eclipse-4.2.part2
eclipse-jee-oxygen.part2 eclipse-jee-oxygen.part2 eclipse-jee-oxygen.part2 eclipse-jee-oxygen.part2
《Eclipse IDE深度解析——第三部分第五篇》 在编程世界中,Eclipse IDE作为一款强大的开源集成开发环境,深受广大开发者喜爱。本篇将深入探讨"Eclipse none 3 part5"这一主题,旨在帮助读者进一步理解并掌握...
eclipse-J2EE(3.4.1)_eclipse-J2EE.part1.rar eclipse-J2EE(3.4.1)_eclipse-J2EE.part2.rar eclipse-J2EE(3.4.1)_eclipse-J2EE.part3.rar eclipse-J2EE(3.4.1)_eclipse-J2EE.part4.rar
eclipse插件aptana安装包part2
eclipse 4.6.3 part2