我正在尝试为GEF更新模型,并在我创建的视图中显示更改。目前我没有做出任何改变反映在视图中,我使用以下方法更新模型,我想知道它是否采取正确的方法:
Display.getDefault().asyncExec(new Runnable() {
public void run() {
String viewId = "beat.views.BeatView";
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow mainWindow = workbench
.getActiveWorkbenchWindow();
try {
BeatView view = (BeatView) mainWindow.getActivePage()
.showView(viewId);
BeatEditPart beatEditPart = (BeatEditPart)view.getGraphicalViewer().getContents();
BeatModel beatModel = (BeatModel)beatEditPart.getModel();
beatModel.setObjects(model);
} catch (PartInitException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
答案 0 :(得分:1)
您的EditPart是否正在侦听模型更改?
1 - 您需要注册为模型的监听者。我们使用EMF的通知机制。
public void activate() {
if (!isActive())
((EObject) getModel()).eAdapters().add(this);
super.activate();
}
public void deactivate() {
if (isActive())
((EObject) getModel()).eAdapters().remove(this);
super.deactivate();
}
2 - 你需要在事情发生变化时采取行动。
public void notifyChanged(Notification notification) {
...
}