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

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

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

    雙桅漁船  
    漂泊,沒有終點
    日歷
    <2006年1月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234
    統(tǒng)計
    • 隨筆 - 5
    • 文章 - 0
    • 評論 - 3
    • 引用 - 0

    導航

    常用鏈接

    留言簿(1)

    隨筆檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

     

    2006年1月8日

    這個好像有幾種情形,想到三個就先寫三個:
    第一個是rcp中有默認的主菜單,如果你什么菜都不加它不會顯示,但當你加的菜單和默認菜單有同名情況時,rcp會向這個名稱的菜單里加入一些默認的選項。比如你要寫自己的file菜單,那命名最好換成ifile或者其它,不然,命名成file,rcp不管你是否需要,都會往里面加入通常的file功能條(都是灰色的)。
    第二個是通過代碼里去除不用的菜單。

    WorkbenchWindow window = (WorkbenchWindow)Workbench.getInstance().getActiveWorkbenchWindow();

    MenuManager menuManager 
    = window.getMenuManager();
    IContributionItem[] items 
    = menuManager.getItems();
       
    ActionSetContributionItem element 
    = (ActionSetContributionItem)items[1];

    MenuManager fileMenuManager 
    = (MenuManager)element.getInnerItem();
       
    fileMenuManager.remove(
    "action1");
    第三個是用jdt的一些現(xiàn)成組件的時候,當focus轉(zhuǎn)移到這些組件上會產(chǎn)生相應(yīng)的菜單,而這些是你不想要的,可以這樣處理,將那個組件類繼承一下,使用你新生成的類,就可以去除不需要的菜單。
     在jdt的blugin里面給組件定義了viewAction的擴展,所以直接使用這些組件的時候會自動顯示定義的菜單,通過繼承就可以消除那些擴展點的影響。
    posted @ 2006-01-08 15:12 USTCEric 閱讀(691) | 評論 (0)編輯 收藏
     
         摘要:  自己遇到了這方面問題,在瀚海星云上咨詢了一下,解決后總結(jié)了一下。現(xiàn)在收錄到自己的空間里:)前段時間為了使用jdt中的package explorer進行一個rcp程序的開發(fā)。在版面上進行了 提問,得到了simon lei,pandawang 的熱情幫助,在此表示感謝。經(jīng)過一番學習,在幾個論 壇上問了一下,當時仍沒有找到解決方法(主要是使用package...  閱讀全文
    posted @ 2006-01-08 14:47 USTCEric 閱讀(1131) | 評論 (0)編輯 收藏
     

    跟著入門教程一步一步走下來,好歹有個可視化編輯器的樣子,看起來還像那么回事。
    回過頭,發(fā)現(xiàn)添加的組件還沒有刪除功能。現(xiàn)在介紹一下如何實現(xiàn)組件刪除的功能。

    step 1:要能刪除組件必須要有菜單、按鈕或者用del鍵,于是需要在你編輯器的ActionBarContributor中添加相關(guān)的代碼來獲得主工具條上的刪除按鈕,同時也將激活edit菜單中的delete選項。
    public void contributeToToolBar(IToolBarManager toolBarManager) {
      // TODO Auto-generated method stub
      ……  
      toolBarManager.add(getAction(ActionFactory.DELETE.getId()));
    ……
    }
    關(guān)于工具條菜單部分功能實現(xiàn)的詳細介紹,八進制的blog上有詳細介紹。

    step 2:動作觸發(fā)后要有editPart接收相應(yīng)的request,然后轉(zhuǎn)交給某個editPolicy進行處理。在刪除過程中,是被刪除組件的editPart接收刪除request。在這個editPart中注冊一個繼承于ComponentEditPolicy的policy,editpart將把request轉(zhuǎn)交給這個policy處理。在policy中需要重寫createDeleteCommand(GroupRequest deleteRequest)方法來生成對刪除動作進行處理的command對象,并對該對象的屬性進行一些設(shè)置,然后返回。
    代碼如下:
    NodeEditPart類中
    protected void createEditPolicies() {
      // TODO Auto-generated method stub
    ……
      installEditPolicy(EditPolicy.COMPONENT_ROLE, new NodeEditPolicy());

    ……
     }

    NodeEditPolicy類

    public class NodeEditPolicy extends ComponentEditPolicy {

     
    public NodeEditPolicy() {
      
    super();
      
    // TODO Auto-generated constructor stub
     }

     
    protected Command createDeleteCommand(GroupRequest deleteRequest) {
      
    // TODO Auto-generated method stub
      Object parent = getHost().getParent().getModel();  
      RemoveNodeCommand command 
    = new RemoveNodeCommand();
      command.setParent((BaseModel)parent);
      command.setChild((BaseModel)getHost().getModel());  
      
    return command;  
     }


    }




    step3:實現(xiàn)command類

    public class RemoveNodeCommand extends Command {
     
     
    //private List parent;
     private NodeModel parent;
     
    private NodeModel child;

     
    public NodeModel  getChild() {
      
    return child;
     }


     
    public void setChild(NodeModel child) {
      
    this.child = child;
     }


     
    public NodeModel getParent() {
      
    return parent;
     }


     
    public void setParent(NodeModel parent) {
      
    this.parent = parent;
     }


     
    public RemoveNodeCommand() {
      
    super();
      
    // TODO Auto-generated constructor stub
     }


     
    public RemoveNodeCommand(String label) {
      
    super(label);
      
    // TODO Auto-generated constructor stub
     }

     
     
    public void execute() {
      
    // TODO Auto-generated method stub
       Assert.isNotNull(parent);
      Assert.isNotNull(child);  
      parent.removeChild(child);   
     }


    }


    當然容器類的模型要實現(xiàn)removeChild方法才行
     public void removeChild(nodeModelchild){
         child.setParent(null);
         getChildren().remove(child);
         this.fireChildrenChange(child);
        }

    以上介紹的這些是我進行實現(xiàn)的一個過程,實際實現(xiàn)的時候應(yīng)該抽象出一個基類模型和對應(yīng)的editpart,這樣就不用重復在每個組件中編寫了。實現(xiàn)完成后工具條上的按鈕,主菜單中的刪除選項,鍵盤的del鍵都可以用來進行刪除操作。
    注意這里沒有寫command里的redo和undo操作。

    posted @ 2006-01-08 12:33 USTCEric 閱讀(499) | 評論 (0)編輯 收藏
     
    Copyright © USTCEric Powered by: 博客園 模板提供:滬江博客
    主站蜘蛛池模板: 国产精品免费_区二区三区观看| 乱淫片免费影院观看| 全免费a级毛片免费看| 亚洲一区二区女搞男| japanese色国产在线看免费| 国产大片91精品免费看3| 亚洲av成人一区二区三区观看在线| 久久精品免费一区二区喷潮| 亚洲中文字幕无码久久| 女人被男人桶得好爽免费视频| 亚洲精品天堂成人片AV在线播放| 手机在线毛片免费播放| 亚洲人成色4444在线观看| 国产小视频在线免费| 免费无遮挡无遮羞在线看| 亚洲人成电影在线播放| 日韩毛片免费一二三| 亚洲精品无码永久在线观看你懂的| 两个人日本WWW免费版| 亚洲黄色一级毛片| 99精品一区二区免费视频| 亚洲一区中文字幕在线电影网| 在线免费观看污网站| a级毛片免费高清视频| 亚洲AV成人片色在线观看高潮 | 亚洲人成网站在线播放vr| 精精国产www视频在线观看免费| 亚洲春色在线视频| 99在线观看视频免费| 狠狠色伊人亚洲综合网站色 | 亚洲av手机在线观看| 2022国内精品免费福利视频| 久久亚洲精精品中文字幕| 白白国产永久免费视频| 中国一级特黄高清免费的大片中国一级黄色片 | 亚洲视频在线不卡| 精品国产免费观看一区| 国产精品永久免费| 亚洲一区二区三区播放在线| 亚洲а∨天堂久久精品| 91人成网站色www免费下载|