除了利用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執行個體傳遞給它。
建立節點時先彈出對話框