Atualizando GEF Modelo de uma discussão de fundo
-
07-07-2019 - |
Pergunta
eu estou tentando atualizar um modelo para GEF e ter as mudanças mostradas na visão que eu criei. Atualmente nenhuma mudança I make está sendo refletida na visão, eu estou usando a seguinte abordagem para atualizar o modelo e estou querendo saber se a sua a abordagem certa para tomar:
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();
}
}
});
Solução
É a sua audição EditPart para mudanças do modelo?
1 - Você precisa se registrar como um ouvinte para o seu modelo. Usamos mecanismo de notificar do 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 - Você precisa agir quando algo muda.
public void notifyChanged(Notification notification) {
...
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow