使用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 也会自动关闭。

样例程序下载

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值