Я разрабатываю несколько функций Eclipse (группы плагинов Eclipse, которые образуют устанавливаемый модуль), и мне было дано требование, чтобы каждая функция должна была иметь возможность деактивироваться или, другими словами, быть отключенной для запуска когда затмение запущено.
У меня есть плагин, который вносит вклад в пользовательский интерфейс (перспектива, мастера, пункты меню и т. Д.), И я попытался просто перехватить вызов метода запуска плагина следующим образом ...
Обратите внимание, что класс PluginVerification работает в другом плагине, который будет поставляться с установкой компонента, содержащего плагины, которые я хочу остановить. Другими словами, моя функция состоит из плагинов A, B и C. PluginVerification живет в C, и я хочу использовать ее для управления запуском плагинов A и B.
Вот плагин A и B, метод запуска класса Activator
/*
* (non-Javadoc)
* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
*/
public void start(BundleContext context) throws Exception {
if(PluginVerification.verify(this)) {
super.start(context);
plugin = this;
}
}
Если вызов PluginVerification.verify (this) возвращает false, то я не запускаю плагин. Это работает наполовину, потому что плагин действительно не запускается, но есть некоторые артефакты пользовательского интерфейса, которые были добавлены этим плагином, которые все еще отображаются. Например, мастера, которые добавляет этот плагин, по-прежнему доступны через пользовательский интерфейс. Но когда вы пытаетесь использовать один из них, генерируются исключения NullPointerException, потому что плагин никогда не запускался.
Я надеялся, что кто-нибудь поможет мне найти лучшее место, чтобы действительно остановить запуск плагина, чтобы он вообще не вносил свои артефакты пользовательского интерфейса. Я планирую предупредить пользователя, что его продукт не проверен и, следовательно, не может быть запущен. Я хочу, чтобы пользователь чувствовал себя так, будто функция просто исчезла из его среды Eclipse.
Спасибо за ваше внимание,
Трассировка