把rcp最小化到系统托盘

1. 在WorkbenchWindowAdvisor实现类中初始化trayitem

public   void  postWindowOpen()  {
        initStatusLine();
        
final IWorkbenchWindow window = getWindowConfigurer().getWindow();
        trayItem 
= initTaskItem(window);
        
if (trayItem != null{
            hookPopupMenu(window);
            hookMinimize(window);
        }


}


// 初始化trayitem
private  TrayItem initTaskItem(IWorkbenchWindow window)  {
        
final Tray tray = window.getShell().getDisplay().getSystemTray();
        
if (tray == null)
            
return null;
        TrayItem trayItem 
= new TrayItem(tray, SWT.NONE);
        trayImage 
= Activator.getImageDescriptor(IImageKeys.ONLINE)
                .createImage();
        trayItem.setImage(trayImage);
        trayItem.setToolTipText(
"test");
        
return trayItem;
}


// 初始化trayItem上的context menu
private   void  hookPopupMenu( final  IWorkbenchWindow window)  {
        trayItem.addListener(SWT.MenuDetect, 
new Listener() {
            
public void handleEvent(Event event) {
                MenuManager trayMenu 
= new MenuManager();
                Menu menu 
= trayMenu.createContextMenu(window.getShell());
                actionBarAdvisor.fillTrayItem(trayMenu);
                menu.setVisible(
true);
            }

        }
);
}

// 自定义minimize到系统托盘和恢复的行为
private   void  hookMinimize( final  IWorkbenchWindow window)  {
        window.getShell().addShellListener(
new ShellAdapter() {
            
public void shellIconified(ShellEvent e) {
                window.getShell().setVisible(
false);
            }

        }
);
       
        trayItem.addListener(SWT.DefaultSelection, 
new Listener() {
            
public void handleEvent(Event event) {
                Shell shell 
= window.getShell();
                
if (!shell.isVisible()) {
                    shell.setVisible(
true);
                    window.getShell().setMinimized(
false);
                }

            }

        }
);
}


2. fillTrayItem可以写在ActionBarAdvisor的实现类中
protected   void  fillTrayItem(IMenuManager trayItem)  {
     trayItem.add(aboutAction);
     trayItem.add(exitAction);
}
 

转自http://www.ceclipse.org/bbs/read-cec-tid-12193.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值