Разработка плагина Intellij IDEA. Действие «создать класс kotlin»

Я хочу создать плагин для Intellij Idea . Мне нужно добавить действие ( AnAction ), которое создаст class в Kotlin (а не Java) в пользовательском package . У меня есть два quastions:

  • Как создать файлы с нужным расширением?
  • Или как создать файл с class kotlin (из некоторого базового класса) в пользовательском package ?

Один из возможных способов сделать это – использовать PsiFileFactory.createFileFromText() для создания файла Kotlin в памяти, а затем передать этот файл в качестве параметра PsiDirectory.add() чтобы сохранить его в файловой системе.

Хотя ответ yole верен, я хотел бы получить более подробную информацию о классе mistery PsiDirectory.

 //get directory by VirtualFile PsiDirectory directory = PsiManager.getInstance(project).findDirectory((getKotlinSourceDir(project)) 

Получить исходный код kotlin:

 private VirtualFile getKotlinSourceDir(Project project) { return project.getBaseDir().findChild("src").findChild("main").findChild("kotlin"); } 

И чем вы можете создавать подкаталоги:

 //someDirectoryName it is simple name //(ie if you post "com.some.package" - it does not create com/some/package folder) PsiDirectory newDirectory = psiDirectory.createSubdirectory(someDirectoryName); 
Intereting Posts
Как связать и отобразить статус выполнения, используя привязку данных в android Как импортировать каталог / полный пакет в Intellij для целей тестирования Получить строку базы данных с помощью Anko Имущество должно быть инициализировано или быть абстрактным Почему я не могу ссылаться на вложенный объект из val или typealias, ссылающихся на объект? Kotlin, таблица / массив на основе записей с динамическими полями Как передать vararg в функцию или конструктор varag в Kotlin? Передающая функция как параметр в котлине Сгенерировать диаграмму классов Котлина Как настроить пакетную загрузку с помощью gradle-script-kotlin Как имитировать излучение 2 infiite Наблюдаемые потоки и есть другие Observable, которые объединяют их и буферируют каждые 10 секунд? Как применить метод запуска / остановки звука с помощью ToggleButton? Kotlin – Как преобразовать String в ByteArray Как связать общие типы двух параметров функции Kotlin? Android Studio 3.0 beta2