隨筆 - 6  文章 - 129  trackbacks - 0
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(14)

          隨筆檔案(6)

          文章分類(467)

          文章檔案(423)

          相冊

          收藏夾(18)

          JAVA

          搜索

          •  

          積分與排名

          • 積分 - 827779
          • 排名 - 49

          最新評論

          閱讀排行榜

          評論排行榜

          package testrcp.app;

          import org.eclipse.jface.action.MenuManager;
          import org.eclipse.swt.SWT;
          import org.eclipse.swt.graphics.Image;
          import org.eclipse.swt.graphics.Point;
          import org.eclipse.swt.graphics.Rectangle;
          import org.eclipse.swt.widgets.Display;
          import org.eclipse.swt.widgets.Event;
          import org.eclipse.swt.widgets.Listener;
          import org.eclipse.swt.widgets.Menu;
          import org.eclipse.swt.widgets.Shell;
          import org.eclipse.swt.widgets.Tray;
          import org.eclipse.swt.widgets.TrayItem;
          import org.eclipse.ui.IWorkbenchWindow;
          import org.eclipse.ui.application.ActionBarAdvisor;
          import org.eclipse.ui.application.IActionBarConfigurer;
          import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
          import org.eclipse.ui.application.WorkbenchWindowAdvisor;

          public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor {

           private TrayItem trayItem;//系統托盤對象
           private Image trayImage;//系統托盤圖標對象
           /** 程序的菜單條 */
           private ApplicationActionBarAdvisor actionBarAdvisor;
           
              public ApplicationWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) {
                  super(configurer);
              }
              /** 創建菜單條對象 */
              public ActionBarAdvisor createActionBarAdvisor(IActionBarConfigurer configurer) {
                  actionBarAdvisor = new ApplicationActionBarAdvisor(configurer);
               return actionBarAdvisor;
              }
             
              /** 打開窗口前調用該方法,對窗口初始化設置 */
              public void preWindowOpen() {
                  IWorkbenchWindowConfigurer configurer = getWindowConfigurer();
                  configurer.setInitialSize(new Point(600, 400));
                  configurer.setShowCoolBar(true);//工具欄
                  configurer.setShowStatusLine(false);//狀態欄
                 
                  configurer.setShowPerspectiveBar(true);//透視圖
                  configurer.setShowProgressIndicator(true);//進度條
                 
                  final IWorkbenchWindow window = super.getWindowConfigurer().getWindow();
                  /** 創建系統托盤 */
                  trayItem = initTrayItem(window);
                  /** 如果支持系統托盤,則創建托盤的菜單 */
                  if(trayItem != null) {
                   createPopupMenu(window);
                  }
              }
             
              /**
            * 創建系統托盤菜單
            *
            * @param window
            *            工作臺窗口對象
            */
              private void createPopupMenu(final IWorkbenchWindow window) {
            trayItem.addListener(SWT.MenuDetect, new Listener() {

             @Override
             public void handleEvent(Event event) {
              MenuManager trayMenu = new MenuManager();
              Menu menu = trayMenu.createContextMenu(window.getShell());
              /**
               * 調用fillTrayItem方法創建系統托盤對象,可以直接利用菜單欄中的操作 而不需要,重新創建操作
               */
              actionBarAdvisor.fillTrayItem(trayMenu);
              menu.setVisible(true);
             }
             
            });
            
           }

           /**
            * 初始化系統托盤對象
            *
            * @param window
            *            工作臺窗口對象
            * @return 該程序所對應的系統托盤對象
            */
           private TrayItem initTrayItem(IWorkbenchWindow window) {
            final Tray tray = Display.getCurrent().getSystemTray();
            if(tray == null)
             return null;
            TrayItem trayItem = new TrayItem(tray, SWT.NONE);
            trayImage = Activator.getImageDescriptor("icons/logo.gif").createImage();
            trayItem.setImage(trayImage);
            trayItem.setToolTipText("System Tray");
            
            return trayItem;
           }

           @Override
           public void postWindowOpen() {
            //窗口居中顯示
            Shell shell = getWindowConfigurer().getWindow().getShell();
            Rectangle screenSize = Display.getDefault().getClientArea();
            Rectangle frameSize = shell.getBounds();
            shell.setLocation((screenSize.width - frameSize.width)/2, (screenSize.height - frameSize.height)/2);
           }
             
           /** 釋放窗口,釋放系統托盤 */
           public void dispose() {
            if (trayImage != null) {
             trayImage.dispose();
             trayItem.dispose();
            }
           }

          }



          posted on 2008-12-05 23:42 Ke 閱讀(916) 評論(0)  編輯  收藏 所屬分類: eclipse RCP
          主站蜘蛛池模板: 富锦市| 济阳县| 塘沽区| 肇东市| 措勤县| 华容县| 西青区| 拉萨市| 泉州市| 浪卡子县| 镇赉县| 九龙县| 旬邑县| 辽宁省| 兴国县| 灵璧县| 加查县| 巩留县| 旅游| 尼勒克县| 隆尧县| 黄陵县| 河南省| 桐城市| 香河县| 建水县| 紫金县| 商都县| 开鲁县| 陆丰市| 高淳县| 定边县| 鸡泽县| 寻乌县| 普安县| 定兴县| 苏尼特左旗| 祁连县| 土默特左旗| 义马市| 琼海市|