eroself

          關于人生的程式,在這里譜寫......
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理

          轉自:http://blog.csdn.net/windy444/archive/2007/12/31/2006309.aspx

           由windy444翻譯,轉載請注明

          原文名:Building a Common Navigator Framework (CNF) Viewer Part III: Configuring Menus,作者:MICHAEL ELDER,出處:http://scribbledideas.blogspot.com/(本人從未能打開過,呵呵)。

          先上Copyright

          The opinions and ideas expressed herin are my own and do not represent the intent, opinion, or official statement of any company or organization.
          All postings by me to this site are copyrighted (C) by Michael D. Elder, 2006 and made available under the terms of the Eclipse Public License 1.0 with the constraint that any reuse of the content must contain this copyright statement.

              在前面的文章中,我們通覽了如何構件一個通用導航器架構視圖,以及提供了一個基礎擴展來展示屬性文件。現在,我們將要學習如何為CNF配置菜單,以及如何為我們的視圖添加操作來操作我們的內容。

          概覽

              這邊有兩個基本選擇來為CNF視圖增加操作:

              • 使用org.eclipse.ui.popupMenus作為objectContributions或viewerContributions來提供操作。...popupMenus擴展點能讓你在整個Eclipse工作臺上提供操作代理。CNF視圖能被配置成接受這些操作代理(缺省情況下),或者忽略他們。在平臺提供的Project Explorer視圖中,對象或視圖操作是被接受的(在第四部分中會詳細介紹)。

              • 使用org.eclipse.ui.navigator.navigatorContent作為actionProviders來提供操作。有時候,客戶需要更加有計劃的控制下面這些內容:對于特定上下文環境中給定的菜單,要提供怎樣的操作;基于當前的選擇項,需要提供什么可重定向操作。

              CNF的操作提供者,只被CNF視圖所接受。(將在第五部分給出詳細信息)

          配置菜單結構

              在第一部分,我們定義了示例<viewer />元素,彈出菜單被簡要的提到了。

              回憶一下,這里有兩種方法來配置彈出菜單。第一種可能就是簡單的為org.eclipse.ui.navigator.viewer中<viewer />元素下的popupMenuId指定一個值,第二種可能就是采取一種更主動的方法來配置菜單支持的插入點。

              提示:popupMenuId和popupMenu元素同時被指定將導致錯誤。

              如果我們想要設置popupMenuId,將如同下面看到的一樣:

           

              該標識符能被org.eclipse.ui.popupMenus的擴展者所使用,來為視圖增加一個特定的viewerContributions;然而objectContributions不需要任何的標識符。

              當只有popupMenuId屬性被指定,缺省的插入點(insertion points)集合會自動的配置到彈出菜單中。在org.eclipse.ui.navigator.viewer的schema參考中,列出了缺省配置。為方便起見,這里也列出了:

          "group.new" separator="true"
          "group.goto"
          "group.open" separator="true"
          "group.openWith"
          "group.edit" separator="true"
          "group.show" separator="true"
          "group.reorganize"
          "group.port"
          "group.generate" separator="true"
          "group.search" separator="true"
          "group.build" separator="true"
          "additions" separator="true"
          "group.properties" separator="true"

              這些值能被org.eclipse.ui.popupMenus中的menubarPath屬性元素所使用。

              當有計劃的使用和搜索菜單項時,這些值也能被使用(參考org.eclipse.jface.action.IContributionManager,特別是insertAfter(),insertBefore(), 和appendToGroup())。

              所有字符常量("group.*")都沒定義在org.eclipse.ui.navigator.ICommonMenuConstants中,以便有計劃的使用。

              作為替換,我們可以選擇定義<viewer/>的子元素<popupMenu />,這里我們可以定義自己的插入點(insertion points)。(譯者注:略過一個基本操作)。

              在我們的例子中,我們可以使用同Project Explorer一樣的菜單配置。

                  每個<insertionPoint />元素暗示這一個GroupMarker能通過IContributionMenu API被訪問到。當separator屬性被設置成true時,菜單將會展現一條水平線。Eclipse中的菜單有足夠的智能,只顯示必要的線,兩條背靠背的線將只被顯示成一條。

                 讓我們注意一下<popupMenu />下的allowsPlatformContributions="true"屬性。缺省情況下,CNF接受..popupMenus提供的操作。若把該屬性設置成false,將會限制菜單只接受操作提供者(Action Providers)。

              上面的例子并沒有做什么神奇的事,在你自己的CNF視圖中,你可以根據需要定義自己的插入點("group.example")。推薦的命名規約為"group.*",除了additions group之外,上面的那些group都遵循了。

              對于擴展或操作CNF菜單插入點集合的一些評論。對于一個已經配置好的視圖,是沒有可能來聲明性操作或擴展他的插入點集合的。有可能的是,通過Action Providers,來增加新的GroupMarkers 或Separators,但這里需要當心。在第五部分,我們將詳細介紹這個是如何完成的,現在只是提醒一下,需要當心,并且當只有需要用到<actionProvider />中dependsOn屬性時。該dependsOn的值指明為菜單提供額外插入點集合的Action Provider的標識符。永遠不要programmatically(譯者注:不知道該怎么翻)刪除插入點,因為其它擴展可能會依賴與他們。如果你自己定義的視圖不需要使用某個插入點,則在定義你自己的<popupMenu />元素時,不要定義他就好了。

          總結

              在這篇文章中,我們討論了如何為CNF視圖配置菜單,下面的文章將討論如何使用org.eclipse.ui.popupMenus 和org.eclipse.ui.navigator.navigatorContent/actionProvider來增加菜單。



          主站蜘蛛池模板: 麦盖提县| 惠水县| 玛多县| 霍邱县| 正蓝旗| 汽车| 桐梓县| 万荣县| 永州市| 内丘县| 固阳县| 江永县| 黑水县| 普宁市| 黔南| 鹿泉市| 若羌县| 延庆县| 湟中县| 曲周县| 武宣县| 饶平县| 富川| 无极县| 洪洞县| 沙湾县| 平武县| 松江区| 江油市| 兴化市| 镇宁| 莱州市| 柏乡县| 宁乡县| 同仁县| 湖州市| 连平县| 潼南县| 称多县| 天水市| 永修县|