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

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

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

    隨筆 - 6  文章 - 129  trackbacks - 0
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(14)

    隨筆檔案(6)

    文章分類(467)

    文章檔案(423)

    相冊(cè)

    收藏夾(18)

    JAVA

    搜索

    •  

    積分與排名

    • 積分 - 825756
    • 排名 - 49

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    一、同時(shí)關(guān)閉所有打開的view 
     
    在view中,只有一個(gè)close,每次只能關(guān)閉當(dāng)前窗口
    在eclipse的編輯窗口的標(biāo)題上點(diǎn)右鍵,里面有 close All
    可以使用遍歷的方法,遍歷所有打開的View,然后將其隱藏:
    AsyncUtil.asyncExec(new Runnable()
    {
           public void run()
           {
                 IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
                 IViewReference[] iViewReferences = page.getViewReferences();
                 for (IViewReference iViewReference: iViewReferences)
                      if (!ID.equals(iViewReference.getId()))
                           page.hideView(iViewReference);
            }
    });   
      二、RCP中產(chǎn)生目標(biāo)區(qū)的Bar 
     
    產(chǎn)生紅線區(qū)域的Bar,實(shí)現(xiàn)方法如下:
    1、這個(gè)是perspective,要?jiǎng)?chuàng)建多個(gè)perspective,然后設(shè)置某個(gè)為active
    2、在WorkbenchWindowAdvisor中preWindowOpen內(nèi),加下面這段代碼
    public void preWindowOpen() { 
            IPreferenceStore apiStore = PrefUtil.getAPIPreferenceStore();
            apiStore.setValue(IWorkbenchPreferenceConstants.DOCK_PERSPECTIVE_BAR,
                    IWorkbenchPreferenceConstants.TOP_RIGHT);
            apiStore.setValue(
                    IWorkbenchPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS,
                    false);
     }
    3、需要加 config.setShowPespectivebar(true); 
    三、RCP項(xiàng)目--窗口關(guān)閉事件 
    在ApplicationWorkbenchWindowAdvisor中override
    public boolean preWindowShellClose() {
            // do nothing, but allow the close() to proceed
            MessageBox msgBox = new MessageBox(new Shell(), SWT.YES|SWT.NO|SWT.ICON_QUESTION);
            msgBox.setText("退出系統(tǒng)");
            msgBox.setMessage("確定退出系統(tǒng)?");
            if(msgBox.open()==SWT.YES){
                return true;
            }
            return false;
        }
    以后使用IWorkbenchWindow的getShell().close();都會(huì)調(diào)用該處代碼.  
    四、在RCP中設(shè)計(jì)界面適合桌面大小 
     
    final int screenWidth = Display.getCurrent().getBounds().width;
    final int screenHeight = Display.getCurrent().getBounds().height;
     
    五、Treeviewer中通過代碼,選中樹上的某個(gè)node節(jié)點(diǎn) 
    StructuredSelection sel=new StructuredSelection(node);
     tree.setSelected(sel); 
    六、TreeViewer實(shí)現(xiàn)雙擊展開、關(guān)閉 
    private class DoubleEventPro implements MouseListener {
            public void mouseDoubleClick(MouseEvent e) {
                TreeItem item = viewer.getTree().getItem(new Point(e.x, e.y));

                if (item != null && item.getItem(0).getText().trim().length() == 0) {
                    viewer.expandToLevel(item.getData(), 1);
                    return;
                }

                if (item != null && item.getItemCount() > 0
                        && item.getItem(0).getText().trim().length() > 0) {
                    item.setExpanded(!item.getExpanded());
                }
            }

            public void mouseDown(MouseEvent e) {
            }
            public void mouseUp(MouseEvent e) {

            }
        } 
    七、 如何屏蔽掉視圖窗口上的右鍵彈出菜單?


    方法一:在 postWindowOpen() 中執(zhí)行下面語句:
    PlatformUI.getWorkbench().getDisplay().addFilter(SWT.MouseUp, new Listener() {
        public void handleEvent(final Event event) {
            if(event.widget == your editor && event.button == 3) {
                int hwndCursor = OS.GetCapture ();
                OS.PostMessage(hwndCursor, OS.WM_LBUTTONDOWN, hwndCursor, OS.HTCLIENT | (OS.WM_MOUSEMOVE << 16));
            }
        }
    });

    其它:org.eclipse.ui.internal.presentations.util包中的StandardViewSystemMenu類控制著這些菜單,還沒來得急仔細(xì)研究,研究過后再補(bǔ)充

    八、在使用tableviewer的時(shí)候?qū)氪罅繑?shù)據(jù)的問題

    創(chuàng)建了一個(gè)tableviewer,然后使用setInput方法導(dǎo)入數(shù)據(jù),如果數(shù)據(jù)量很大的話根本就無效率可言了,以下是幾種解決的方法:

    方法一:通過移動(dòng)滾動(dòng)條來達(dá)到自動(dòng)加載的目的,在滾動(dòng)條的事件中加入翻頁的代碼,可以參考《Eclipse從入門到精通》第二版的P383

    方法二:分頁顯示(http://www.eclipseworld.org/bbs/read-cec-tid-11678-keyword-table.html

    方法三:使用 Virtual Tables,JFace3.2的Viewer已經(jīng)支持SWT.VIRTUAL樣式
    http://www.eclipse.org/articles/Article-SWT-Virtual/Virtual-in-SWT.html

    1 int COUNT = 10000;
    2 final String [] itemStrings = new String [COUNT];
    3 for (int i = 0; i < COUNT; i++) {
    4   itemStrings = "item " + i;
    5 }
    6 final Table table = new Table(parent, SWT.BORDER | SWT.VIRTUAL);
    7 table.addListener(SWT.SetData, new Listener() {
    8   public void handleEvent(Event event) {
    9     TableItem item = (TableItem)event.item;
    10     int index = event.index;
    11     item.setText(itemStrings [index]);
    12   }
    13 });
    14 table.setItemCount(COUNT);

    九、在透視圖快捷方式欄中同時(shí)顯示多個(gè)透視圖快捷方式

    如果在程序中做了多個(gè)個(gè)透視圖,默認(rèn)只顯示初始透視圖快捷方式,每次都要 打開透視圖——other,特麻煩,所以,一下提供兩種方法:

    1、在切換欄中顯示
    public class PIMWorkbenchAdvisor extends WorkbenchAdvisor {
        @Override
        public void postStartup() {
            super.postStartup();
            IWorkbenchWindow activeWorkbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
            //2007.01.11 設(shè)置同時(shí)顯示多個(gè)透視圖標(biāo)
            PerspectiveBarManager barManager=((WorkbenchWindow)activeWorkbenchWindow).getPerspectiveBar();
            if(barManager != null){
                IPerspectiveDescriptor mailPerspective = WorkbenchPlugin.getDefault().getPerspectiveRegistry   ().findPerspectiveWithId("MyWork_mail.perspective");
                PerspectiveBarContributionItem item=new PerspectiveBarContributionItem(mailPerspective,activeWorkbenchWindow.getActivePage());
                barManager.addItem(item);
            }
    }
    2、在下拉框中(shortcut)顯示
    public class UiPerspective implements IPerspectiveFactory
    {
        public void createInitialLayout(IPageLayout layout){
    ....
            //增加透視圖
            layout.addPerspectiveShortcut("net.sf.pim.plugin.UiPerspective");
            layout.addPerspectiveShortcut("MyWork_mail.perspective");
           }
    }
    十、控制“最近打開文檔”的個(gè)數(shù)
           RCP中在繼承ActionBarAdvisor的類中定義:
           private IContributionItem reOpenAction = ContributionItemFactory.REOPEN_EDITORS.create(window);
           然后在fillMenuBar(IMenuManager menuBar)方法中添加上面的aciton
           運(yùn)行時(shí)“最近打開的文檔”只有4個(gè),如果想自己控制“最近打開的文檔”的數(shù)量,則設(shè)置一下Workbench中的初始化首選項(xiàng)時(shí)RECENT_FILES的默認(rèn)參數(shù)值如:
    WorkbenchPlugin.getDefault().getPreferenceStore().setDefault(IPreferenceConstants.RECENT_FILES,10);

    十一、設(shè)置Eclipse RCP程序的外觀和首選項(xiàng)
           RCP應(yīng)用程序的缺省外觀是一個(gè)空白窗口,一般我們要通過一個(gè)WorkbenchAdvisor類對(duì)界面進(jìn)行定制。 WorkbenchAdvisor有很多回調(diào)方法,可以在preWindowOpen()方法里設(shè)置菜單、工具條、狀態(tài)欄、進(jìn)度欄、透視圖切換工具是否可 見,在fillActionBars()方法里添加菜單和工具條項(xiàng),在getInitialWindowPerspectiveId()方法里指定首選的 透視圖。

           缺省情況下,透視圖切換工具位于窗口左上角,在Eclipse里可以通過Window->Preferences-> Workbench->Appearance改變它的位置,那么怎樣用程序控制它呢?有兩個(gè)方法,第一個(gè)是使用如下代碼設(shè)置 IPreferenceStore中的變量:

    IPreferenceStore apiStore = PrefUtil.getAPIPreferenceStore();
    apiStore.setValue(IWorkbenchPreferenceConstants.DOCK_PERSPECTIVE_BAR, IWorkbenchPreferenceConstants.TOP_RIGHT);
    另一個(gè)方法是在plugin所在目錄建一個(gè)名為plugin_customization.ini的文件,里面寫如下內(nèi)容:

    your.plugin.id/DOCK_PERSPECTIVE_BAR=topRight
    其他與plugin相關(guān)的Preference值可以用同樣方法設(shè)置。

    Update:在最新的Eclipse 3.1M5a版本中,對(duì)RCP應(yīng)用程序菜單和工具條的定制方法有所改變,應(yīng)該使用新加入的ActionBarAdvisor類來完成此項(xiàng)工作。

    十二、獲得自己開發(fā)的plugin被安裝的目錄
      /** *//**
         * @return 本插件的安裝路徑
         */
        public String getInstallDir() ...{
            if (installPath == null) ...{
                URL localUrl = null;
                try ...{
                    localUrl = FileLocator.toFileURL(getDefault().getBundle()
                            .getEntry("/"));
                    installPath = localUrl.getFile().substring(1);
                } catch (Exception e) ...{
                    log(e);
                }
            }
            return installPath;
        }

    轉(zhuǎn)自http://duguanglong002.blog.163.com/blog/static/26955626200955415545/



    posted on 2009-07-27 13:46 Ke 閱讀(2288) 評(píng)論(0)  編輯  收藏 所屬分類: eclipse RCP
    主站蜘蛛池模板: 亚洲精品国产首次亮相| 午夜影视在线免费观看| 色费女人18女人毛片免费视频| 亚洲春黄在线观看| 亚洲午夜福利AV一区二区无码| 日本a级片免费看| 91精品国产免费久久久久久青草| 国产免费牲交视频免费播放| 亚洲精品无码国产片| 亚洲精品日韩中文字幕久久久| 国产V亚洲V天堂无码| 亚洲性日韩精品一区二区三区| 暖暖日本免费在线视频| 啦啦啦高清视频在线观看免费| 中国xxxxx高清免费看视频| 免费看一区二区三区四区| 一区在线免费观看| 直接进入免费看黄的网站| 亚洲中文字幕一二三四区苍井空 | 亚洲国产中文在线二区三区免| 国产亚洲综合久久系列| 国产成人精品日本亚洲专区| 婷婷亚洲天堂影院| 免费在线观看一级毛片| 小小影视日本动漫观看免费| 免费看无码自慰一区二区| 最新中文字幕电影免费观看| 黄页免费的网站勿入免费直接进入| 69视频在线观看高清免费| 亚洲视频在线免费观看| 久久永久免费人妻精品| 久久国产精品成人免费| 国产免费一区二区视频| 久热免费在线视频| 久久午夜伦鲁片免费无码| 91麻豆国产免费观看| 蜜臀98精品国产免费观看| 中文字幕无码免费久久99| 成年轻人网站色免费看| 国产麻豆免费观看91| 性做久久久久免费看|