Netbeans平台的顶层组件:org.openide.windows.TopComponent是JComponent的子类. 顶层组件知道如何在Netbeans的窗口系统中工作. 如果你想想主窗口中添加组件, 通常的办法是你自己写一个类,继承顶层组件, 就像你开发普通的Swing程序, 继承一个JPanel一样.
顶层组件需要在模式Mode中生存, Mode是一种docking容器.
顶层组件有各种状态:
开/关 open/closed - 当一个顶层组件被打开时,一个Tab面板将会出现在主窗口代表这个顶层组件
可见的/不可见的 ...
数据对象是文件对象的包装器. 一个文件对象仅仅是一个数据容器,也许这个文件有一个MIME类型, 不过像java.io.File一样, 他一点也不知道也不关心它到底代表了何种文件或者是这个文件究竟是什么. 数据对象是Netbeans平台中装载器API的一部分.
一个数据对象代表一个或多个(通常都是只代表一个)文件对象. 一个数据对象知道它代表的文件是何种类型. 它能够代表一个例如java源文件的经过解析的内容.或者在一个InstanceDataObject的情况下, 文件名就可以提供所有的信息.
数据对象由数据装载器产生. 模块为特定的文件类型注册相应的数据装载器. 所有对于每个文件类型 ...
使用Netbeans IDE开发Java程序时, 你会发现如果你选择的是Java源文件,那么编译这个动作就是可以运行的, 如果你选择的是具有Main方法的Java类文件, 那么执行这个动作就是可以运行的. 这就是说Netbeans IDE根据用户的选择来确定那些动作可以运行,那些动作不可以运行. 那么使用Netbeans平台如何达到上述的效果呢. 基本上, 有三种方式:
使用CookieAction
使用NodeAction
自己开发
- 11:31
- 浏览 (456)
- 评论 (0)
Netbeans平台中, .shadow文件主要用于系统文件系统的配置数据上. .shadow文件在功能上和Unix的软连接很像. 实际上就是一个文件的指针. .shadow文件通常在只需要一个对象实例,但是必须在多个目录下存在的情况下使用. 例如, 一个动作通常在系统文件系统中Action目录下声明,但是这个动作也必须在菜单和工具栏中出现. 我们不能创建这个动作的多个实例来解决上面的问题. 一个.instance文件在模块的层文件layer.xml中的Actions目录中创建. 然后在其他需要这个对象的地方创建对应的.shadow文件指向这个.instance文件. 在系统文件系统中声明 ...
我们知道在Netbeans平台中有四种注册/安装方式:
在模块的JAR文件的META-INF/services目录下增加文件条目
在系统文件系统下的某目录下增加文件
在模块的manifest文件中增加manifest条目
实现org.openide.modules.ModuleInstall类并且在manifest文件中配置, 这种方式是在系统启动时执行Java代码
我们知道模块的注册和安装其实在Netbeans平台中是同一个概念. 那么我们究竟应该使用何种方式进行注册呢?
具体情况具体分析:
如果我们正在 ...
在很久很久以前, Netbeans中的大部分对象都是在启动的时候装载的. 当开发程序很小的时候,这个方式没有什么问题, 但是当你开发很大的应用的时候, 这种方式就是一场灾难. 每个系统的新的组件都让启动过长变得更加漫长,垃圾回收变得更加频繁,需要更多的内存支持.这种方式被称为程序式的安装.
不过,现在的Netbeans慢慢改变了这种方式. 大部分系统安装只涉及一个文本条目: 在XML层文件中添加一些东西,而不是运行Java代码. 理想情况下,一个模块在系统启动的时候应该不做任何事情,只有需要这个模块的时候,再做处理.这种方式被称为声明式的安装.
声明式的安装是通过在模块的JAR文件的M ...
Netbeans平台中的模块包含两个重要的内容,一个是配置数据,一个是对象. 模块有四种方式来在Netbeans平台中安装配置数据和对象, 其中三种方式是声明式的,这种机制使我们鼓励的.
Netbeans平台中窗口系统负责创建主应用窗口,能够在用户界面打开组件. 窗口系统位于org.openide.windows包内.实现类位于窗口模块org.netbeans.core.windows包.
窗口系统最著名的两个概念: 模式(Mode)和顶层组件(TopComponent).
什么是模式?
模式这个名词命名的非常令人困惑, 不过由于历史原因和兼容性只能继续使用这个名词. 这个名词其实仅仅指的是主窗口中Tab容器的位置. 例如在中间还是左侧,右侧还是底部等等.
顶层组件
我们开发的可视组件,例如一个面板通常都是继承自这个顶层组件. 这个组件是我们开发中最经常 ...
.settings files are similar to .instance files, with the distinction that they specify all the superclasses/interfaces of the object represented, so that some code can ask Lookup/whatever "Do you have one of these?" without needing to actually create an instance of the object. You could ca ...
Netbeans平台中有.instance文件这个概念. 实际上, .instance文件代表一个对象实例, 所以也称为实例文件
一个实例文件通过它的类名来表明它是哪个类的实例. 例如 com-foo-mymodule-MyObject.instance 实例文件表明它是MyObject类的实例. 实例文件可以代表任何Java类,只要它提供一个默认的构造器或者一个静态的创建方法.
在Netbeans的基础构建中, 一个实例文件产生InstanceDataObject,实例数据对象, 实例数据对象能够提供一个实例Cookie, InstanceCookie, 然后实例Cookie初始化这 ...
Netbeans平台中的文件对象(FileObject)是存在Netbeans文件系统(FileSystem)中的虚拟文件. 它可以是磁盘上的文件,也可以是任何类似文件的东西.例如远端FTP服务器上的文件,JAR包里的一个文件条目,甚至XML文件中的一个条目,等等.
Netbeans平台中的文件对象和java.io.File文件有很大不同:
你不能生成一个代表尚不存在的文件的文件对象, 就是说如果真正的文件不存在,你不能生成一个对应的Netbeans文件对象
你可以监听文件对象的变化.
文件对象可以拥有键值对形式的文件属性
很多应用程序通过用户界面来显示目录和文件, Netbeans用户界面是通过系统文件系统中的虚拟文件来创建的,很多Netbeans的用户界面其实是系统文件系统的一个视图.而系统文件系统其实是运行时根据解析所有模块的层次文件layer.xml构建的.
基本的机制是:特定的,已知的文件类型分别具有自己的图标,菜单选项和行为或者动作.
Netbeans如何知道这些文件的类型呢?
答案是:这些文件其实或者是FileObject包装起来的文件(java.io.File),或者是配置文件(通过包装模块的XML文件). 真正你看到的其实是节点. 节点提供文件相关的动作,名字等其他事情. 而在节点和文件 ...
Netbeans平台中有一个概念: System FileSystem, 系统文件系统, 又叫配置文件系统.
系统文件系统其实就是Netbeans的配置数据的中心仓库,也就是用来存储配置数据信息的.系统文件系统由Netbeans系统在运行时根据所有模块的XML层文件(XML Layer, layer.xml)文件组装配置形成. 各个模块使用系统文件系统的目录去定义扩展点(Extension Point).
扩展点: 每个模块可以定义一个目录或者文档来指定其他模块可以放置到此的文件或者对象(通常是实例文件, instance file),Netbeans系统在运行时扫描并且装载这些内 ...
一般来说,我们使用Apache VFS时,直接从VFS对象获得的文件管理器是StandardFileSystemManager,StandardFileSystemManager从DefaultFileSystemManager继承而来。而解析文件在DefaultFileSystemManager中完成。
绝大部分时候,你会提供一个URI来定位你的文件系统,例如:ftp://yourftp/rootdir或者http://yourweb/rootdir或者file://c:/rootdir
,然后你将这个字符串作为参数传给StandardFileSystemManger, 这时候Defau ...
理解Apache VFS的概念性接口很重要,因为Apache VFS例子太少,如果不仔细研究的话,根本农不清楚:
VfsComponent接口
这个接口号称是用来管理所有VFS组件的生命周期的。方法比较简单:
init 用来初始化组件
close 用来关闭组件
setContext(VfsComponentContext ctx) 设置组件上下文,注意它维护了一个组件上下文:VfsComponentContext
setLogger 设置日志
有一个抽象类实现了这个接口AbstractVfsComponent抽象类,这个抽象类加了一个 ...
使用Apache VFS比较简单,第一个面对的对象是org.apache.commons.vfs.VFS对象。它有三个静态的方法:
getManager 这个方法最重要,将返回一个默认的FileSystemManager接口
setUriStyle
isUriStyle 判断是否是URI形式
FileSystemManager接口,文件系统管理器接口
文件系统管理器负责一系列文件系统,通过文件系统使用名字来定位一个文件对象,定位方法是resolveFile()方法
文件系统管理器可以识别多种类型的文件名:
绝对的URI: 必 ...
Apache VFS的事件只有文件改变事件,这个事件模型比较特别:
org.apache.commons.vfs.FileChangeEvent类是顶层,也是具体类,只有一个方法:getFile(),返回触发事件的文件对象。
org.apache.commons.vfs.events.AbstractFileChangeEvent抽象类继承了上述的FileChangeEvent具体类,增加了一个抽象方法:notify(FileListener listener)来通知监听器
我们真正使用的有三个继承上述抽象类的具体类:
ChangedEvent
Cre ...
Apache VFS提供了FileFilter接口和FileSelector接口以及FileSelectInfo接口。这三个接口很容易让人摸不着头脑,都声称是
遍历文件层次结构中用来选择文件的。只不过FileFilter说是直接的子文件 (direct children of the base)
FileSelectInfo
只有三个方法:
getBaseFolder 返回遍历的根目录
getDepth 返回文件相对根目录(Base Folder)的深度
getFile 返回考虑的文件对象
FileFilter
F ...
Apache VFS有文件监听和监控功能。
FileListener接口监听三种事件:
fileChanged(FileChangeEvent eve): 文件变化,只有使用了FileMonitor才触发
fileCreated(FileChangeEvent eve): 文件创建
fileDeleted(FileChangeEvent eve): 文件删除
FileChangeEvent很简单,只有一个方法getFile(),返回触发事件的FileObject对象。
Apache VFS提供了一种虚拟文件系统,能够让你通过程序很方便的和位于本地文件系统,FTP文件系统,HTTP文件打交道。
在Apache VFS中核心是FileObject接口。它代表一个文件,和Java File不同,它具有更多延伸的功能和信息。实现FileObject接口的文件对象有很多:例如AbstractFileObjet抽象类提供了部分FileObject实现。大部分FileObject实现类都继承AbstractFileObject类:
LocalFile:(很奇怪为什么不是LocalFileObject)
FtpFileObject
Htt ...
Netbeans平台的数据系统是文件系统和面向文件操作之间的逻辑层,提供在文件对象(file object)之上的工作API,能够文件的逻辑处理:图标,名字,操作等等。例如Netbeans如何识别HTML文件,XML文件,Java源文件等,对于不同的文件/数据类型,Netbeans会以不同的方式处理,例如可以对Java源文件编译,可以对XML文件提供折叠显示等。Netbeans通过数据加载器DataLoader实现这个功能的, 基本流程是系统加载池 System Data Loader Pool负责扫描磁盘上的目录,过滤掉不相关的文件,然后依次询问在系统注册了的数据加载器是否对这个文件类型进行 ...
Netbeans使用Node将JavaBeans或者其他具备属性的容器以树状的结构展现。Netbeans中有专门的Node包负责使用和创建节点,同时提供Cookies(以后会讲到)和动作,能够被查看器以树状结构显示。
什么是节点?可以说节点是任何Netbeans中的数据对象的包装器,这些对象通过节点来显示和执行任务(通过节点的动作),一般来说这些数据对象由数据系统接口(Datasystem API)提供。当然数据对象也可以根据特定需要单独创建。你看到的查看器中的图标,对话框,组件窗口都是基于节点的,他们通过查看器API显示。节点本身不存储数据,这个任务是由数据对象完成,节点仅仅是 ...
Netbeans平台上开发富客户端需要仔细研究他的API,这里简单梳理一下:
Actions APIs - 最重要的也是开发者必须使用的API,负责处理象表单和工具栏等上面的动作, 想一下Swing的Action.
Ant -Ant的整合API.
Ant-Based Project S ...
看到几篇介绍LDAP的好文章,任何对于LDAP持有兴趣,却不是高手的人都需要看看(注意这里LDAP和Directory姑且算作一个意思,严格的说, Directory是目录服务,LDAP是访问这个目录服务的协议,看客自行理解就行了):
LDAP是什么东西,我需要它么?
我需要LDAP还是数据库?
LDAP精炼总结
本质上来说, LDAP适合层次结构,并且特别注重读取,查找速度,对写速度要求不是特别高的数据存储. 它有几个特征:
超快的读取速度
相对静态的数据, 这些数据的更新不能太频繁, 例如存储用户的电话号码(不能老改吧)
...
开发Netbeans RCP前需要一些基础知识:
原文
一个模块其实就是一个带有特定manifest条目的JAR文件,Netbeans支持创建模块,而其本身也是模块搭键起来的.
模块如何和Netbeans系统打交道呢?答案是通过模块内部的一个XML文件来和Netbeans系统交互,这个XML文件被称为层次文件(Layer file/Module Layer),通常是layer.xml. Netbeans系统将会读取这个文件.关于这个层次文件,我们以后详细介绍
通过模块,你可以改变主窗口或者工具栏等地方的菜单
通过继承 To ...
- 浏览: 54125 次

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
JSF中的事件类型
阶段事件没有弄明白,值改变事件和动作事件都用过
-- by lysmart_8 -
Roller分析(2): 商业逻辑
roller 不是开源的吗?怎么会还有商业的逻辑呢?
-- by bhlove -
转贴:Nutch爬虫工作流程及 ...
不错啊~~
-- by savage100 -
Jackrabbit的简单节点定义 ...
写得很清晰,很不错! 我想问一下,如果可以实现动态注册,那么用户在使用定义的新节 ...
-- by java9920 -
Apache Solr 剖析系列(1 ...
支持 支持 继续分析啊
-- by zhaoyongling721






评论排行榜