Как правильно включить проект Eclipse PlugIn в Eclipse Committers?

Вопрос или проблема

Я написал проект PlugIn в Eclipse, который должен разрешать переменные особым образом. Идея возникла для более быстрого внедрения методов getter/setter:

public ${type} get${varNameUpper}(${type}${varNameLower}) {
    return ${varNameLower};
}

Этот шаблон должен брать переменную “varNameUpper/Lower” и одновременно подстраивать её. Для этого я написал классы PlugIn:

public class Lower extends SimpleTemplateVariableResolver {
    
    public Lower() {
        super("varNameLower", "Преобразует первую букву в строчную");
    }
    
    @Override
    protected String resolve(TemplateContext context) {
        String variableName = context.getVariable("variableName");
        if (variableName != null && !variableName.isEmpty()) {
            return variableName.substring(0, 1).toLowerCase() + variableName.substring(1);
        }
        
        return "";
    }

И

public class Context extends TemplateContextType {

    public Context() {
        super("de.s231371.plugin.context");
        
        // Регистрация разрешителей переменных
        addResolver(new Lower());
        addResolver(new Upper());
    }
}

Проблема заключается в том, что я смог включить PlugIn в Eclipse, так что Eclipse перечисляет его под “Установленное ПО”, но в разделе Шаблонов, где я могу установить контекст для своего разрешителя шаблонов, он не указан.

Я экспортировал его как .jar файл и добавил в папку eclipse/dropins, что, по крайней мере, кажется, интегрирует его в eclipse.

Мой манифест и Plugin.xml:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Automatic-Module-Name: de.s231371.plugin
Bundle-Name: templateHandler
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-SymbolicName: de.s231371.plugin;singleton:=true
Bundle-Version: 1.1.1
Require-Bundle: org.eclipse.ui,
 org.eclipse.core.runtime,
 org.eclipse.jface.text;bundle-version="3.25.0"

<?xml version="1.0" encoding="UTF-8"?>
<plugin>
   <!-- Регистрация контекста шаблона -->
   <extension
         point="org.eclipse.ui.editors.templates">
      <contextType
            class="de.s231371.plugin.Context"
            id="de.s231371.plugin.context"
            name="Контекст шаблона пользовательского плагина">
      </contextType>
      <!-- Определение шаблона -->
      <template
         id="de.s231371.plugin.template"
         name="Пользовательский шаблон"
         contextTypeId="de.s231371.plugin.context"
         description="Пользовательский шаблон для демонстрационных целей">
         <pattern>
            <![CDATA[
            public ${type} get${varNameUpper}(${type} ${varNameLower}) {
               return ${varNameLower};
            }
            public void set${varNameUpper}(${type} ${varNameLower}) {
               this.${varNameLower} = ${varNameLower};
            }
            ]]>
         </pattern>
      </template>
   </extension>
</plugin>

Я также пытался запустить PlugIn напрямую в режиме отладки, что снова включает его в Eclipse, но не отображает в меню контекста шаблонов.

Ответ или решение

Вопрос о корректном включении проекта Eclipse PlugIn в Eclipse Committers требует внимательного анализа процесса регистрации шаблонов и контекстов в платформе Eclipse. Давайте рассмотрим шаги, которые необходимо выполнить, чтобы ваш плагин корректно отображался в разделе шаблонов.

1. Проверка структуры проекта

Убедитесь, что ваша структура проекта соответствует стандартам Eclipse Plug-In Development Environment ( PDE). Важно, чтобы ваш плагин был правильно организован и содержал все необходимые файлы.

2. Регистрация контекста шаблона

Для того чтобы ваш контекст шаблона появился в меню Eclipse, необходимо убедиться, что он правильно зарегистрирован в файле plugin.xml. У вас уже есть следующая запись:

<extension
      point="org.eclipse.ui.editors.templates">
   <contextType
         class="de.s231371.plugin.Context"
         id="de.s231371.plugin.context"
         name="Custom Plugin Template Context">
   </contextType>
   ...
</extension>

Убедитесь, что:

  • Вы правильно указываете класс контекста (de.s231371.plugin.Context).
  • Контекст действительно создаёт экземпляры своих переменных и их резолверов.

3. Проверка шапки манифеста

В вашем файле MANIFEST.MF вы перечисляете необходимые зависимости. Убедитесь, что вы включили все нужные точки расширения:

Require-Bundle: org.eclipse.ui,
 org.eclipse.core.runtime,
 org.eclipse.jface.text;bundle-version="3.25.0",
 org.eclipse.ui.editors.templates

Добавление org.eclipse.ui.editors.templates может помочь вашей реализации в забирании контекстов шаблонов.

4. Проверка работы классов резолверов

Ваши классы Lower и Upper являются резолверами переменных. Убедитесь, что:

  • Вы создали класс Upper аналогичным образом, как это сделано для Lower.
  • В методе resolve ваших классов вы правильно работаете с передаваемыми переменными. Нужно проверить корректность использования переменной variableName.

5. Перезагрузка Eclipse

После того как вы внесли изменения, обязательно перезагрузите ваш экземпляр Eclipse. В некоторых случаях изменения в plugin.xml могут не обновляться без полной перезагрузки.

6. Проверка запуска в режиме отладки

Если вы запускаете плагин в режиме отладки, убедитесь, что:

  • Вы запустили правильный конфигурационный файл (Eclipse Application).
  • Ваши файлы корректно компилируются.

Если всё сделано правильно, ваш контекст шаблона должен появиться в списке доступных при создании или редактировании шаблона.

Заключение

Следуя вышеуказанным шагам, вы сможете правильно зарегистрировать свой плагин и гарантировать отображение вашего контекста и шаблона в Eclipse. Проверьте все детали во избежание ошибок, а также используйте отладку, чтобы получить больше информации о процессе загрузки вашего плагина. В случае возникновения дальнейших вопросов или проблем, общение с сообществом Eclipse или просмотр документации Eclipse может дать дополнительные подсказки.

Оцените материал
Добавить комментарий

Капча загружается...