Netbeans平台的数据系统是
文件系统和面向文件操作之间的逻辑层,提供在
文件对象(file object)之上的工作API,能够文件的逻辑处理:图标,名字,操作等等。例如Netbeans如何识别HTML文件,XML文件,Java源文件等,对于不同的文件/数据类型,Netbeans会以不同的方式处理,例如可以对Java源文件编译,可以对XML文件提供折叠显示等。Netbeans通过
数据加载器DataLoader实现这个功能的, 基本流程是系统加载池 System Data Loader Pool负责扫描磁盘上的目录,过滤掉不相关的文件,然后依次询问在
系统注册了的数据加载器是否对这个文件类型进行处理。
第一个遇到的匹配的加载器负责处理该文件类型,它将为这个文件类型创建一个
匹配的数据对象Data Ob ject,这个数据对象在Netbeans中负责这个文件类型。通过数据加载器,你能够将一些不同类型的文件聚集在一起形成组。例如可视化Swing可以识别app1.java, app1.form, app1.class将他们视为一组文件,这组文件能够共享一个数据对象,并且共享一组动作。在查看器窗口中,为这个数据对象只创建一个主节点。对于用户来说,他们只看到一个节点,因此不会将这些相关的文件隔离开,分别对待。而不相关的文件,例如测试输出文件,备份文件等,将不被考虑,直接滤除。
注意,在Netbeans中,数据对象要比文件对象高一层次,而数据系统高于文件系统(这通常和我们的直觉相反)。因此,数据对象能够拥有一些文件对象没有的行为。这些行为是通过 Cookie提供的(这里的Cookie和Web中的Cookie概念不同)。这样,数据对象能够通过拥有一个Cookie,从而和一个打开的编辑器相关联,或者数据对象能够作为一个模版供别人使用等等,或者当更名或者移除时进行一系列特定操作。通过数据加载器能够实现特定的伪文件,例如DataShadows.
数据系统API包括三个包:
注意,在Netbeans中,数据对象要比文件对象高一层次,而数据系统高于文件系统(这通常和我们的直觉相反)。因此,数据对象能够拥有一些文件对象没有的行为。这些行为是通过 Cookie提供的(这里的Cookie和Web中的Cookie概念不同)。这样,数据对象能够通过拥有一个Cookie,从而和一个打开的编辑器相关联,或者数据对象能够作为一个模版供别人使用等等,或者当更名或者移除时进行一系列特定操作。通过数据加载器能够实现特定的伪文件,例如DataShadows.
数据系统API包括三个包:
- org.openide.loaders 负责处理文件,将他们关联到组,然后设置数据类型
- org.openide.cookies 提供了一种设计模式,能够对数据对象和节点提供附加的行为
- org.openide.util.datatransfer 实现了一些剪切版的扩展