<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 閱讀(500) 評論(0)  編輯  收藏

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


    網站導航:
     
     
    Copyright © USTCEric Powered by: 博客園 模板提供:滬江博客
    主站蜘蛛池模板: 亚洲免费无码在线| 亚洲免费电影网站| h在线观看视频免费网站| 亚洲1234区乱码| 中文字幕人成人乱码亚洲电影 | 国产人成网在线播放VA免费| 日本亚洲成高清一区二区三区| 美女网站免费福利视频| 一级特黄aaa大片免费看| 久久久久亚洲精品无码蜜桃| 婷婷亚洲天堂影院| 男女免费观看在线爽爽爽视频 | 亚洲中文字幕无码爆乳AV| 免费视频专区一国产盗摄| j8又粗又长又硬又爽免费视频| 亚洲美女视频一区二区三区| 免费女人18毛片a级毛片视频| 97视频免费观看2区| 九九免费精品视频在这里| 亚洲一卡2卡3卡4卡乱码 在线| 国产AV无码专区亚洲AV手机麻豆| 男人的好看免费观看在线视频| a级片在线免费看| 亚洲欧美在线x视频| 亚洲日韩国产精品无码av| 亚洲人成伊人成综合网久久久 | 亚洲国产精品yw在线观看| 久久影视国产亚洲| 日韩成人免费在线| ww4545四虎永久免费地址| 国产婷婷成人久久Av免费高清| 黄色免费在线网址| 亚洲熟妇无码八V在线播放 | 热99RE久久精品这里都是精品免费| 亚洲综合一区二区三区四区五区| 亚洲精品私拍国产福利在线| 亚洲福利精品一区二区三区| 啦啦啦手机完整免费高清观看| 免费视频爱爱太爽了| 野花香在线视频免费观看大全| 性生大片视频免费观看一级|