Eclipse: изменение настроек при запуске - PullRequest
2 голосов
/ 09 января 2011

Я работаю над плагином Eclipse, у которого есть страница настроек, метод performOk() которого изменяет настройки нескольких других плагинов, чтобы учесть изменения.Пока работает хорошо.

Однако, если пользователь изменяет файл prefs моего плагина вручную или обновляет плагин, он должен перейти на страницу настроек и вручную нажать «ОК», иначе настройки другого плагина будутбыть устаревшим.

Я бы хотел избежать этой проблемы, настраивая параметры других плагинов при каждом запуске Eclipse.Я заставил свой класс плагина реализовать интерфейс IStartup и его метод earlyStartup() для изменения настроек, но у меня есть две проблемы с этим:

  1. Мне нужно прочитатьустановка из моего собственного плагина перед изменением предпочтений других, но метод getPreferenceStore() не работает в методе earlyStartup().Я смог обойти эту проблему, реализовав earlyStartup() пустой и делая то, что я хочу в методе start() плагина. Надежно ли это поведение?получить доступ к исключениям при действительном изменении настроек в методе start().Я читал, что start() выполняется своей собственной работой, могут ли задания изменять предпочтения?

Если есть альтернативный способ добиться того, чего я хочу, я, естественно, тоже хотел бызнать.

Ответы [ 2 ]

3 голосов
/ 16 января 2011

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

Я никогда не слышал, чтобы кто-то вручную редактировал свои файлы предпочтений за пределами затмения (это единственная ситуация, которую слушатель, изменивший предпочтения, не поймет). И если кто-то это делает, он не должен ожидать надежного поведения.

Однако, если вы действительно хотите использовать IEarlyStartup, вы можете, но вы должны использовать Display.synchExec (), чтобы выполнить код, изменяющий предпочтения. Смотри: http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/runtime/preferences/AbstractPreferenceInitializer.html

0 голосов
/ 10 января 2011

Существует точка расширения org.eclipse.core.runtime.preferences. Вы можете использовать это, чтобы установить значения по умолчанию для любого предпочтения в хранилище предпочтений вашего плагина. Возможно, вы сможете использовать эту точку расширения для установки предпочтений в других плагинах, и это может быть некоторым способом обойти проблему, с которой вы столкнулись.

...