Плагин IntelliJ — как автоматически генерировать фрагмент кода [Java]

В настоящее время я работаю над проектом, реализованным с помощью плагина IntelliJ. К сожалению, я не могу найти пример/руководство по настройке функции "автоматическая генерация кода".

Примером могут служить методы получения/установки IntelliJ. (Альт+вставка)

Я хотел бы использовать «мой плагин» для создания небольшого метода Java в текущем файле.

Было бы неплохо, если бы кто-нибудь дал мне совет или даже пример кода.

Мне известна общая структура - (plugin.xml -> group-id="GenerateGroup" и т.д.)


person SBifi    schedule 10.06.2020    source источник


Ответы (1)


Ладно, я так и не нашел настоящего туториала...

Мое решение:

  1. Добавить/изменить <depends>com.intellij.modules.java</depends> в файле plugin.xml

  2. Когда вы используете проект Gradle, добавьте: intellij { plugins 'java' в свой build.gradle

Это всего лишь моя версия нового конструктора

    public void actionPerformed(AnActionEvent e)
    {

        WriteCommandAction.runWriteCommandAction(null, new Runnable() {
            @Override
            public void run() {
              Editor editor = e.getRequiredData(CommonDataKeys.EDITOR);

                Project project = e.getData(CommonDataKeys.PROJECT);
                PsiFile file = PsiUtilBase.getPsiFileInEditor(editor, project);

                PsiJavaFile psiJavaFile = (PsiJavaFile)file;
                PsiClass[] classes = psiJavaFile.getClasses();

                PsiClass psiClass = classes[0];

                PsiElementFactory factory = JavaPsiFacade.getInstance(project).getElementFactory();
                PsiMethod newConstructor = factory.createMethodFromText("puplic " + psiClass.getName() + "() {//new Constructor }", psiClass);
                final PsiMethod[] psiMethods = psiClass.getMethods();
                PsiMethod firstMethod = (psiMethods.length == 0) ? null : psiMethods[0];
                psiClass.addBefore(newConstructor, firstMethod);
            }
        });}

Может быть, кто-то мог бы взглянуть на это и предложить улучшения

person SBifi    schedule 11.06.2020