Сброс перспективы программно в чистом приложении е4 - PullRequest
0 голосов
/ 22 января 2019

Мы бы хотели программно сбросить перспективу в приложении Eclipse RCP 4. Я искал примеры того, как это можно сделать, но кажется, что нет аккуратного способа сделать это.

Вот несколько примеров, которые мы рассмотрели:

1 https://www.eclipse.org/forums/index.php/t/210165/
Копирование всех перспектив в Snippets. Это означает сохранение дубликатов в Perspective Stack и Snippets, что не подходит для больших приложений RCP.

2 Как программно сбросить перспективу в Eclipse RCP E4, а не E3
Звонок resetPerspectiveModel. Похоже, это ничего не делает. Другой пользователь прокомментировал упоминание об этом тоже.

3 Как сбросить перспективу для приложения Eclipse e4 RCP?
В первом ответе упоминается код RCP 3.
Второй ответ удаляет текущую перспективу, добавляет ее, а затем вызывает, чтобы переключиться на текущую перспективу. Это ничего не делает.

Мы пробовали варианты каждого из этих методов, и мы не можем его сбросить.

Как правильно сбросить перспективы в чистом приложении e4?

1 Ответ

0 голосов
/ 01 февраля 2019

Установка предпочтения, перезапуск приложения, определение предпочтения при запуске и добавление системного свойства clearPersistedState - единственный способ сделать это хитрым способом. Работает, но хотелось бы сбросить без перезагрузки. Плохо то, что он сбросит всю модель.

Используйте этот код в обработчике сброса перспективы:

@Execute
public void restart(IWorkbench application, @Preference IEclipsePreferences preferences) {
    preferences.putBoolean("PLEASE_RESET_ON_STARTUP", true);
    preferences.flush();
    application.restart();
}

и что-то подобное в вашем классе менеджера жизненного цикла:

@PostContextCreate
public void doTheTrick(@Preference IEclipsePreferences preferences) {
    if (preferences.get("PLEASE_RESET_ON_STARTUP", "false").equals("true") {
        System.setProperty(IWorkbench.CLEAR_PERSISTED_STATE, "true");
        preferences.remove("PLEASE_RESET_ON_STARTUP");
        preferences.flush();
    }
}

Может быть, вам нужно добавить также обработку исключений.

...