Frage

Ich versuche, ein Modell für die GEF zu aktualisieren und die Änderungen in der gezeigten Ansicht habe ich erstellt habe. Derzeit liegen keine Änderung Ich mache in der Ansicht reflektiert wird, ich bin den folgenden Ansatz mit dem Modell zu aktualisieren und frage mich, wenn ihr die richtige Ansatz:

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();
            }
        }
    });
War es hilfreich?

Lösung

Ist Ihre EditPart Hören Änderungen zu modellieren?

1 - Sie müssen als Zuhörer zu Ihrem Modell registrieren. Wir verwenden EMF-Mechanismus benachrichtigen.

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 - Sie müssen handeln, wenn sich etwas ändert.

public void notifyChanged(Notification notification) {
...
} 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top