<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    嘟嘟

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      26 Posts :: 0 Stories :: 6 Comments :: 0 Trackbacks

    1、 Application:這個類是程序的入口,雖然沒有Main函數(shù),但是這個類實現(xiàn)了IPlatformRunnable接口,當JVM完畢,初始化RCP框架以后會調(diào)用這個類的run函數(shù)來完成UI設(shè)置和開始執(zhí)行我們指定的程序功能。在絕大多數(shù)RCP程序中,這個類不用更改。
    public class Application implements IPlatformRunnable {

     /* (non-Javadoc)
      * @see org.eclipse.core.runtime.IPlatformRunnable#run(java.lang.Object)
      */
     public Object run(Object args) throws Exception {
      Display display = PlatformUI.createDisplay();
      try {
       //將創(chuàng)建用戶界面的工作交給了ApplicationWorkbenchAdvisor類
       int returnCode = PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor());   
       if (returnCode == PlatformUI.RETURN_RESTART) {
        return IPlatformRunnable.EXIT_RESTART;
       }
       return IPlatformRunnable.EXIT_OK;
      } finally {
       display.dispose();
      }
     }
    }

    2、 ApplicationWorkbenchAdvisor:這個類是RCP程序的Workbench,RCP是Eclipse的簡化,但是所有的組件都是和Eclipse一樣的。一個RCP程序也只能有一個Workbench。
    public class ApplicationWorkbenchAdvisor extends WorkbenchAdvisor {

     private static final String PERSPECTIVE_ID = "RCPDemo.perspective";

        /**
         * 把創(chuàng)建窗口的工作交給了ApplicationWorkbenchWindowAdvisor類
         */
        public WorkbenchWindowAdvisor createWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) {
            return new ApplicationWorkbenchWindowAdvisor(configurer);
        }

        /**
         * 指定默認的透視圖
         */
     public String getInitialWindowPerspectiveId() {
      return PERSPECTIVE_ID;
     }
    }

    3、 ApplicationWorkbenchWindowAdvisor:這個類是RCP的WorkbenchWindow,隸屬于當前的Workbench。可以有多個WorkbenchWindow。這個類的功能很強大,我們可以重載它的preWindowCreatepostWindowCreatepreWindowOpenpostWindowOpen等方法,以便修改我們窗口的外觀。
    public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor {

        public ApplicationWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) {
            super(configurer);
        }

        /**
         * 把創(chuàng)建菜單和工具欄的任務交給了ApplicationActionBarAdvisor類
         */
        public ActionBarAdvisor createActionBarAdvisor(IActionBarConfigurer configurer) {
            return new ApplicationActionBarAdvisor(configurer);
        }
       
        public void preWindowOpen() {
            IWorkbenchWindowConfigurer configurer = getWindowConfigurer();
            configurer.setInitialSize(new Point(500, 600));
            configurer.setShowCoolBar(true);
            configurer.setShowStatusLine(false);
            configurer.setTitle("Hello RCP");
        }
    }


    4、 ApplicationActionBarAdvisor這個類是用來配置程序的菜單欄和工具欄的。
    public class ApplicationActionBarAdvisor extends ActionBarAdvisor {
        private Action1 action1;
        private Action2 action2;

     public ApplicationActionBarAdvisor(IActionBarConfigurer configurer) {
         super(configurer);
     }

     //初始化所有actions
     protected void makeActions(IWorkbenchWindow window) {
         action1 = new Action1(window);
         action2 = new Action2(window);
     }

     //設(shè)置菜單欄
     protected void fillMenuBar(IMenuManager menuBar) {
         //MenuManager實例相當于一個下拉菜單, 參數(shù)是text(菜單名)和id(唯一就可以了)
         MenuManager newMenu1 = new MenuManager("menu1", "rcpdemo.menu1");
         //加入菜單項action1
         newMenu1.add(action1);
         //加入一個分隔線
         Separator separator = new Separator();
         newMenu1.add(separator);
         //加入菜單項action2
         newMenu1.add(action2);
      
         //加入第2個下拉菜單,有下拉子菜單
         MenuManager newMenu2 = new MenuManager("menu2", "rcpdemo.menu2");
         //加入菜單項action1
         newMenu2.add(action1);
         //子菜單
         MenuManager newMenu3 = new MenuManager("menu3", "rcpdemo.menu3");
         //加入菜單項action1
         newMenu3.add(action2);
         //子菜單
         newMenu2.add(newMenu3);
      
         //把下拉菜單加到菜單bar中
         menuBar.add(newMenu1);
         menuBar.add(newMenu2);
      
      /**
       * note
       *  一個MenuManager實例就是如果已經(jīng)被加到menuBar下,同時加到newMenu1下,是顯示不出來的
       *  newMenu2.add(newMenu1);
       *  menuBar.add(newMenu1);
       */
     }

     //設(shè)置工具欄
     protected void fillCoolBar(ICoolBarManager coolBar) {
         //toolbar1 (group1)
         IToolBarManager toolbar1 = new ToolBarManager(SWT.FLAT | SWT.RIGHT);
         //加入工具項action1
         toolbar1.add(action1);
         //加入一個分隔線
         Separator separator = new Separator();
         toolbar1.add(separator);
         //加入工具項action2
         toolbar1.add(action2);
      
         //toolbar2 (group2)
         IToolBarManager toolbar2 = new ToolBarManager(SWT.FLAT | SWT.RIGHT);
         //加入工具項action1
         toolbar2.add(action1);
      
         //加入到bar中
         coolBar.add(new ToolBarContributionItem(toolbar1, "toolbar1"));
         coolBar.add(new ToolBarContributionItem(toolbar2, "toolbar2"));
     }
    }

    5、 DemoPlugin:這個類代表了我們的插件,因為RCP程序也是一個插件,Eclipse中所有的插件都必須繼承AbstractUIPlugin。這個類為我們提供了很多和插件相關(guān)的信息,比如插件的資源,配置等等。
    6、 Perspective:是我們新建的RCP的默認透視圖。可以在這個類中指定View和Editor的排布。
    7、 plugin.xml:這個文件是我們插件的配置文件,包括我們的插件用了哪些其他的插件,具體是怎么配置這些插件的等等。
    8、 build.properties:這個文件是用來配置我們插件的編譯信息的,用來指定如何編譯我們的插件。
    9、 MANIFEST.MF:這個文件用來指定我們插件的元數(shù)據(jù),比如插件的版本信息。一般來說,這個文件不用手動的去更改。

    posted on 2007-06-13 15:44 fyp1210 閱讀(937) 評論(0)  編輯  收藏 所屬分類: RCP&SWT&JFACE
    主站蜘蛛池模板: 亚洲午夜久久久久久久久久| 18女人水真多免费高清毛片| 日韩成全视频观看免费观看高清| 亚洲色图黄色小说| 无码成A毛片免费| 亚洲激情视频在线观看| 四虎www免费人成| 亚洲色偷偷色噜噜狠狠99| 免费观看成人毛片a片2008| 国产成人亚洲综合网站不卡| 毛片免费观看的视频在线| 亚洲欧美黑人猛交群| 日本高清免费中文字幕不卡| 蜜臀亚洲AV无码精品国产午夜.| 日韩一区二区免费视频| 精品免费AV一区二区三区| ww在线观视频免费观看w| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 亚洲黄色在线观看| 99久久99这里只有免费费精品| 亚洲日本人成中文字幕| 久久久久免费看黄a级试看| 久久久久亚洲精品日久生情 | 精品无码专区亚洲| 亚洲精品国产自在久久| a级成人毛片免费图片| 18gay台湾男同亚洲男同| 毛片a级三毛片免费播放| 色婷婷六月亚洲综合香蕉| 久久精品亚洲乱码伦伦中文| 亚洲AV无码成人网站在线观看| 免费人成年激情视频在线观看 | 亚洲欧洲国产日韩精品| 在线a级毛片免费视频| 男男gay做爽爽免费视频| 亚洲国产精品无码久久久蜜芽| 在线看免费观看AV深夜影院| 香港特级三A毛片免费观看| 亚洲国产日韩一区高清在线| 在线免费不卡视频| 色播在线永久免费视频网站|