Изменить свойства/настройки другого плагина eclipse

Я работаю над плагином eclipse, который расширяет существующий плагин. Плагин, который я расширяю, определяет некоторые настройки по умолчанию, которые можно изменить во время выполнения через меню настроек. Я хочу изменить некоторые из этих свойств для пользователей моего плагина. Например: свойство в плагине, который я расширяю, существует, но не проверено (т. е. ложно). Я хочу, чтобы он проверялся для моего плагина по умолчанию. Как я могу это сделать?

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


person Malhelo    schedule 01.08.2011    source источник


Ответы (1)


Вам нужно знать идентификатор подключаемого модуля и имя предпочтения, но тогда следующий код должен помочь:

IPreferenceStore s = new ScopedPreferenceStore(new InstanceScope(), "org.eclipse.ui");

ss.setValue("SHOW_MEMORY_MONITOR", true);

Этот точный код включит монитор памяти в строке состояния...

person Tonny Madsen    schedule 01.08.2011
comment
На свой страх и риск. Это не очень хорошая практика. Один плагин не должен вмешиваться в личные данные других плагинов. Что, если ваш подключаемый модуль хоста удалит/изменит свои предпочтения, это сломает ваш подключаемый модуль. - person Ankur; 02.08.2011
comment
Я думаю, это может сработать, но а) где в моем плагине я мог бы использовать этот код? В активаторе? б) Когда я поместил этот код в активатор, настройки были применены (то есть был установлен соответствующий флажок в диалоге настроек), но они не стали эффективными, пока я не применил их вручную из диалога настроек. - person Malhelo; 02.08.2011
comment
@Анкур Я не согласен! Это общепринятый способ изменения опубликованных настроек. Конечно, вы не должны ничего менять в личном... - person Tonny Madsen; 02.08.2011
comment
@Malhelo В этом нет необходимости! Я сделал это в ряде клиентских проектов — обычно для приложений RCP в ApplicationWorkbenchAdvisor, но также и в назначенном плагине (только не забудьте добавить точку расширения startup, чтобы убедиться, что плагин запущен!). - person Tonny Madsen; 02.08.2011
comment
Итак, правильно ли я понимаю: одна из возможностей — создать некоторый класс PreferenceSetter extends WorkbenchAdvisor (для меня нет класса ApplicationWorkbenchAdvisor), который изменяет настройки для меня? Я создал такой класс, но как мне указать плагину активировать его? Я не мог найти точку расширения, которая звучала бы как то, что мне нужно... - person Malhelo; 02.08.2011
comment
Для каждого приложения на основе Eclipse существует ровно один подкласс WorkbenchAdvisor. Я думаю, вы работаете внутри IDE, поэтому вам понадобится новый подключаемый модуль, который будет делать именно это. - person Tonny Madsen; 02.08.2011
comment
Я до сих пор не очень понимаю... Сейчас я создал отдельный плагин только для настройки настроек и создал в нем PreferenceSetter extends WorkbenchAdvisor. В этом PreferenceSetter я реализовал метод initialize(). Я также добавил расширение запуска к указанному плагину. Но как PreferenceSetter становится активным? Я не должен вызывать указанный метод initialize(), не так ли? - person Malhelo; 03.08.2011
comment
Ооо.. WorkbenchAdvisor предназначен только для приложений RCP. Вы можете просто добавить приведенный выше фрагмент кода в Activator.start(...). - person Tonny Madsen; 03.08.2011
comment
Хорошо, все равно спасибо. Если я добавлю приведенный выше фрагмент кода в Activator.start(), настройки будут применены. Однако они не станут активными, пока я не перейду в диалоговое окно настроек и не нажму «Применить» или «ОК». Думаю, я смогу жить с этим... - person Malhelo; 03.08.2011