تحديث نموذج مرفق البيئة العالمية من ترابط خلفية

StackOverflow https://stackoverflow.com/questions/1425510

سؤال

وأنا أحاول لتحديث نموذج لمرفق البيئة العالمية ولديهم تغيرات في شاشة عرض لقد خلق. حاليا لا يوجد تغيير أقوم وتنعكس في طريقة العرض، أنا باستخدام الطريقة التالية لتحديث النموذج، وأنا أتساءل عما اذا كان لها النهج الصحيح لاتخاذ:

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();
            }
        }
    });
هل كانت مفيدة؟

المحلول

هل 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) {
...
} 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top