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

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

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

    雙桅漁船  
    漂泊,沒有終點
    日歷
    <2025年7月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789
    統計
    • 隨筆 - 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的一些現成組件的時候,當focus轉移到這些組件上會產生相應的菜單,而這些是你不想要的,可以這樣處理,將那個組件類繼承一下,使用你新生成的類,就可以去除不需要的菜單。
     在jdt的blugin里面給組件定義了viewAction的擴展,所以直接使用這些組件的時候會自動顯示定義的菜單,通過繼承就可以消除那些擴展點的影響。
    posted @ 2006-01-08 15:12 USTCEric 閱讀(689) | 評論 (0)編輯 收藏
     
         摘要:  自己遇到了這方面問題,在瀚海星云上咨詢了一下,解決后總結了一下。現在收錄到自己的空間里:)前段時間為了使用jdt中的package explorer進行一個rcp程序的開發。在版面上進行了 提問,得到了simon lei,pandawang 的熱情幫助,在此表示感謝。經過一番學習,在幾個論 壇上問了一下,當時仍沒有找到解決方法(主要是使用package...  閱讀全文
    posted @ 2006-01-08 14:47 USTCEric 閱讀(1129) | 評論 (0)編輯 收藏
     

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

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

    step 2:動作觸發后要有editPart接收相應的request,然后轉交給某個editPolicy進行處理。在刪除過程中,是被刪除組件的editPart接收刪除request。在這個editPart中注冊一個繼承于ComponentEditPolicy的policy,editpart將把request轉交給這個policy處理。在policy中需要重寫createDeleteCommand(GroupRequest deleteRequest)方法來生成對刪除動作進行處理的command對象,并對該對象的屬性進行一些設置,然后返回。
    代碼如下:
    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:實現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);   
     }


    }


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

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

    posted @ 2006-01-08 12:33 USTCEric 閱讀(497) | 評論 (0)編輯 收藏

    2006年1月7日

     ResizableEditPolicy中的getAlignCommand方法是到組件的父(也就是承載組件的容器)editpolicy中調用 getCommand()方法,而這時容器的editpolicy必須是ConstrainedLayoutEditPolicy
    或者是繼承于它的editpolicy(如XYLayoutEditPolicy)才能支持align動作返回alignCommand。
    因此容器類繼承于ConstrainedLayoutEditPolicy或者XYLayoutEditPolicy才能實現align功能。
     
    這個在八進制的blog曾作為回復發過,為了以后自己看方便,就在這里再記錄一下。
    posted @ 2006-01-07 16:58 USTCEric 閱讀(378) | 評論 (0)編輯 收藏
     
    學習gef和rcp有一小段時間了,參照例子,寫了個簡易rcp平臺,寫了個簡單演示的gef界面。花了不少時間,學到不少東西。回頭看看自己的收獲,又都變得模糊,技術的東西是需要總結的。前面的記起來就寫寫,后面的,學到什么新東西要趕緊記下來了,自己這殘疾的記憶太讓人失望。
    posted @ 2006-01-07 16:51 USTCEric 閱讀(364) | 評論 (3)編輯 收藏
     
    Copyright © USTCEric Powered by: 博客園 模板提供:滬江博客
    主站蜘蛛池模板: 亚洲视频中文字幕在线| 国产一级淫片免费播放电影| 亚洲成av人在线视| 成人自慰女黄网站免费大全| 亚洲视频在线一区二区| 一级特黄录像视频免费| 成人午夜亚洲精品无码网站| 亚洲一区二区三区免费| 亚洲线精品一区二区三区影音先锋| kk4kk免费视频毛片| 亚洲精品乱码久久久久久蜜桃不卡 | 国产亚洲午夜精品| 免费人成无码大片在线观看| 色屁屁www影院免费观看视频 | 亚洲日韩乱码中文无码蜜桃臀网站 | 在线日本高清免费不卡| 亚洲乱码卡一卡二卡三| 免费观看毛片视频| 人成电影网在线观看免费| 亚洲国产另类久久久精品黑人 | 凹凸精品视频分类国产品免费| 国产亚洲福利精品一区二区| 国产精品亚洲产品一区二区三区| 成人免费一区二区三区| 久久精品国产亚洲av日韩| 欧洲精品成人免费视频在线观看| 亚洲AⅤ男人的天堂在线观看| 久久精品国产亚洲Aⅴ蜜臀色欲| 免费无码又爽又刺激网站直播| 亚洲男女性高爱潮网站| 国产免费爽爽视频免费可以看| 污污免费在线观看| 色播亚洲视频在线观看| 成人片黄网站色大片免费| 亚洲免费无码在线| 亚洲国产综合自在线另类| 免费一级毛片在级播放| 性色午夜视频免费男人的天堂| 亚洲欧洲免费无码| 久久亚洲国产中v天仙www| 国产精品成人免费视频网站京东|