天天看點

GEF常見問題6:使用對話框

除了利用Eclipse提供的屬性視圖以外,GEF應用程式裡當然也可以通過彈出對話框修改模型資訊。

要實作輕按兩下一個節點打開對話框,在NodePart裡要增加的代碼如下:

public void performRequest(Request req) {

    if(req.getType().equals(RequestConstants.REQ_OPEN)){

        MessageDialog.openInformation(getViewer().getControl().getShell(),"Gef Practice","A Dialog");

    }

}

作為例子,上面這段代碼隻打開一個顯示資訊的對話框,你可以替換成自己實作的對話框顯示/修改節點資訊。

在CreateNodeCommand裡增加下面的代碼,可以在每次建立一個節點時通過對話框指定節點的名稱:

public void execute() {

    InputDialog dlg = new InputDialog(shell, "Gef Practice", "New node's name:", "Node", null);

    if (Window.OK == dlg.open()) {

        this.node.setName(dlg.getValue());

    this.diagram.addNode(this.node);

因為打開對話框時需要用到Shell,是以要在CreateNodeCommand裡增加一個Shell類型的成員變量,并在DiagramLayoutEditPolicy裡建立CreateNodeCommand時把一個shell執行個體傳遞給它。

建立節點時先彈出對話框