Пусть MPart прослушивает событие eventBroker - PullRequest
0 голосов
/ 07 июня 2019

У меня есть приложение Eclipse E4.Приложение в настоящее время активирует все MParts, которые связаны с определенным персективом при его открытии.Теперь я узнаю, что открытие новой перспективы занимает годы (около 20 лет).Поэтому я рефакторинг кода для ускорения открытия перспективы.

Я активировал их, потому что в противном случае mParts не прослушивает события EventBroker.Мой код для активации частей выглядит следующим образом:

public void makeAllActive(MPerspective perspective) {
        List<MPart> part = service.findElements(application, null, MPart.class, null);
        List<MPartStack> mainPartStack = service.findElements(application, "partstack.shared", MPartStack.class, null);

        if (!mainPartStack.isEmpty()) {
            for (int i = part.size() - 1; i >= 0; i--) {

                List<MPart> children = service.findElements(mainPartStack.get(0), part.get(i).getElementId(),
                        MPart.class, null);

                if (!children.contains(part.get(i))) {
                    this.partService.activate(part.get(i));
                }
            }
        }
    }

Также с кодом, когда пользователи переключают несколько ракурсов и возвращаются к первой, выбранная часть не будет располагаться поверх всех других частей.Это также не очень удобно для пользователя.

Есть ли способ активировать все детали, которые находятся в перспективе, чтобы детали могли прослушивать события eventBroker?

1 Ответ

0 голосов
/ 10 июня 2019

Представьте, что вы хотите открыть все диалоговые окна при запуске приложения. Это возможно в теории, но приведет к очень неожиданным вещам с точки зрения пользователя. На самом деле, ваш запрос очень похож, так как вы хотите активировать все MParts.

Все данные должны быть загружены таким образом, чтобы, если пользователь выберет вкладку, он действительно показывал свои данные (без повторного вызова внутреннего сервера)

Итак, вы хотите, чтобы все данные были предварительно извлечены. Эта проблема не связана с активацией MPart. Вам необходимо создать некоторые службы, которые будут выполнять все внутренние вызовы для вас. И тогда каждый MPart будет просто отображать доступные результаты.

...