<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
    統計
    • 隨筆 - 5
    • 文章 - 0
    • 評論 - 3
    • 引用 - 0

    導航

    常用鏈接

    留言簿(1)

    隨筆檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

     

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

    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 on 2006-01-08 12:33 USTCEric 閱讀(499) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
     
    Copyright © USTCEric Powered by: 博客園 模板提供:滬江博客
    主站蜘蛛池模板: 日韩人妻无码免费视频一区二区三区 | 亚洲欧洲国产精品久久| 热99RE久久精品这里都是精品免费| 免费一级毛片在线播放| 国产亚洲福利精品一区二区| 日日AV拍夜夜添久久免费| 亚洲欧美熟妇综合久久久久| 国产无遮挡裸体免费视频| 理论秋霞在线看免费| 国产精品亚洲产品一区二区三区| 国产成人无码精品久久久免费| 国产性爱在线观看亚洲黄色一级片| fc2免费人成为视频| 亚洲AV无码一区二区乱子伦| 最近中文字幕国语免费完整| 亚洲国色天香视频| 国产乱码免费卡1卡二卡3卡| 又色又污又黄无遮挡的免费视| 免费精品视频在线| 国国内清清草原免费视频99| 亚洲日韩国产欧美一区二区三区 | 曰批全过程免费视频在线观看无码 | 免费看香港一级毛片| 久久亚洲精品AB无码播放| 最近中文字幕高清免费中文字幕mv| 在线综合亚洲中文精品| 亚洲AV成人精品日韩一区18p| 99久久国产精品免费一区二区 | 亚洲欧洲国产综合AV无码久久| 亚洲AV无码不卡在线观看下载| 亚洲一级片在线观看| 国产精品免费一级在线观看| 亚洲五月午夜免费在线视频| 亚洲精品自拍视频| 一个人免费日韩不卡视频| 亚洲一级毛片中文字幕| 亚洲精品老司机在线观看| 88xx成人永久免费观看| 国产区图片区小说区亚洲区| 亚洲AV电影院在线观看| 国产精品99久久免费|