2008-11-10 14 views
9

В Eclipse RCP способ делать вещи, где я должен хранить объекты модели? И когда они загружаются или меняются, как они должны разговаривать с представлениями?Eclipse RCP: Где я должен хранить объекты модели и как они общаются с представлениями?

Я пытаюсь перенести существующее приложение на Eclipse RCP. Его можно рассматривать как приложение, подобное IDE. Я открываю файл, содержащий ссылки на исходные файлы. Исходные файлы отображаются в виде дерева. Я могу отредактировать источник и построить источники в некоторый вывод ...

Например, когда я обрабатываю команду Open, где бы я создал объект модели, чтобы мои представления могли их видеть? Я бы предпочел избегать использования класса менеджеров singleton, но это, возможно, самый простой способ.

Интересный код Я нашел браузер Исходный код JDT: JavaCore, JavaModel, JavaModelManager. и JavaProject.


IProject[] projects= ResourcesPlugin.getWorkspace().getRoot().getProjects(); 

public static IJavaProject create(IProject project) { 
    if (project == null) { 
     return null; 
    } 
    JavaModel javaModel = JavaModelManager.getJavaModelManager().getJavaModel(); 
    return javaModel.getJavaProject(project); 
} 

Похожие:

ответ

5

Я считаю, что это лучше всего достигается с помощью Listeners.

Ваши данные (модель) находятся в закрытом пакете, и только интерфейсы этих данных отображаются в общедоступном пакете.

alt text

Вы найдете в этом wiki section принцип, но и concrete examples here.


Что касается модели, OSGi, как Approch будет использовать хост-плагин в качестве доступного объекта. i.e:

MyPlugin.getDefault().getModel() 

Это позволит вам установить/удалить модель вместе с жизненным циклом плагина.

Если модель находится в одном плагине, она может определять точки расширения для слушателей. Вид может расширять эти точки расширения, которые затем автоматически регистрируются при загрузке плагина Model. Представления могут запрашивать модель для требуемой информации, как только они получают первое сообщение от модели.

Хороший пример связывания данных можно найти в this article.

+3

Я понимаю, что MVC.Мне было интересно, существует ли обычная практика размещения объектов модели, а не развертывания моего собственного менеджера с использованием Singleton. – 2008-11-10 10:34:32

2

Мы стараемся использовать IEditorPart s для хранения копии копии модели (производной от IEditorInput).

Если представление должно знать о модели, то используйте структуру ISelection и сфокусируйтесь, чтобы перемещать модель вокруг из редактора в представление.

 Смежные вопросы

  • Нет связанных вопросов^_^