`
chenweionline
  • 浏览: 20948 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用TopComponent群组

阅读更多

TopComponent 群组的作用是在打开一个 TopComponent 组件的同时,打开其他相关的 TopComponent 组件。例如,当打开或者激活 GUI 编辑器的时候,“组件面板”、“属性”窗口和“检查器”窗口都会出现。当需要一个组件同时伴随着很多其他类似于组件面板窗口的时候,利用 TopComponent 群组可以轻松实现一个组件的激活引发其他组件被打开或者被选中。

定义群组涉及到 2 XML 文件。首先是 wsgrp ,它代表“窗口系统群组( Window System Group )”。它定义了“窗口系统”的群组,系统根据它的定义查找对应的目录,它也定义了群组是否应该在启动时打开。另一个文件是 wstcgrp ,它代表“窗口系统 TopComponent 群组( Window System TopComponent Group )”,这个文件通过 ID 识别单态的 TopComponent 组件,同时还定义了一些群组的打开和关闭属性。

 

TopComponent 群组编程实例

 

首先 创建 一个模块项目 TopComponentGroup 然后 新建 2 个窗口组件( TopComponent ),命名为 EditorTopComponent SatelliteTopComponent ,就像窗口的名字所表示的那样, SatelliteTopComponent 将会随着 EditorTopComponent 的打开和关闭一同打开和关闭。

首先新建一个名为 EditorGroupWsgrp xml 文件 ,这个文件里定义了名为EditorGroup的编辑器窗口群组。

< group  version ="2.0" >
    
< module  name ="org.jqueen.nb.topcomponentgroup"  spec ="1.0"   />
    
< name  unique ="EditorGroup"   />
    
< state  opened ="false"   />
</ group >


再新建一个名为SatelliteTopComponentWstcgrp的xml文件,在这个文件里可以通过ID识别出 SatelliteTopComponent 组件

< tc-group  version ="2.0" >
    
< tc-id  id ="SatelliteTopComponent"   />
    
< open-close-behavior  open ="true"  close ="true"   />
</ tc-group >


编辑模块的 layer.xml 文件,在系统文件系统中的 Windows2 目录添加一个 Group 文件夹,将名为"EditorGroup"的群组添加进Group。

< folder  name ="Groups" >
    
< file  name ="EditorGroup.wsgrp"  url ="EditorGroupWsgrp.xml" />
    
< folder  name ="EditorGroup" >
        
< file  name ="SatelliteTopComponent.wstcgrp"  url ="SatelliteTopComponentWstcgrp.xml" />
    
</ folder >
</ folder >


编辑EditorTopComponent 内容,重写TopComponent类的componentOpened()和componentClosed()方法,在 EditorTopComponent 被打开和关闭时打开和关闭名为"EditorGroup"的群组。

    @Override
    
protected   void  componentOpened() {
        TopComponentGroup group 
=  WindowManager.getDefault().findTopComponentGroup( " EditorGroup " );
        
if  (group  !=   null ) {
            group.open();
        }
    }

    @Override
    
public   void  componentClosed() {
        TopComponentGroup group 
=  WindowManager.getDefault().findTopComponentGroup( " EditorGroup " );
        
if  (group  !=   null ) {
            group.close();
        }
    }


至此,就完成了一个TopComponent群组的编辑。执行模块项目,当从窗口菜单中打开EditorTopComponent时 SatelliteTopComponent 会自动打开, EditorTopComponent被关闭时 SatelliteTopComponent 也会自动关闭。

样例程序下载

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics