Как стать автором
Обновить

Пишем plugin для Jetbrains IDE: отображение файлов вне проекта в Project Tool

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров1.7K
Всего голосов 8: ↑8 и ↓0+11
Комментарии4

Комментарии 4

Получить ID события можно так - ActionManager.getInstance().getId(this)

Но по моему мнению, создавать два разных события и вешать их обработку на один класс это неправильно. В итоге внутри получаем лишние проверки. Когда можно было сразу разнести на два класса и избежать этого. Хотя если платформа такое допускает... то может все норм.

Также резануло глаз, то как вы работаете с путями и хардкодите слешь. Такое не будет работать в win. Причем самое удивительное, что далее вы пишите все верно, что в java есть соответствующая константа File.separatorChar , и что с путями правильно работать через JDK Path или через виртуальную файловую систему Virtual Files которую предоставляет платформа IDEA.

Правильно делать вот так, через Virtual File:

val pathTemplate = e.getData(CommonDataKeys.VIRTUAL_FILE)
val shortMainTemplate = pathTemplate.findChild(MAIN_SHORT_FILE_TEMPLATE)

Или вот так через Path:

val pathTemplate = e.getData(CommonDataKeys.VIRTUAL_FILE)?.toNioPath()
val shortMainTemplate = pathTemplate.resolve(MAIN_SHORT_FILE_TEMPLATE)

Спасибо большое за замечания =) Про Action я с вами согласен, но мне было очень лень дублировать, логика переноса от копирования отличается что в конце я просто удалю каталог, по этому посчитал что это тот случай когда ничего страшного в этом не вижу =) Про слэш спасибо что заметили, глаз уже замылен, не всегда удается подчищать =)

Идея с шаблонами довольно интересная. Хотелось бы знать, если пользовались или писали, ваше мнение насчёт встроенного в IDEA движка — Apache Velocity, для генерации бойлерплейт кода на подобии геттеров и сеттеров, что вызывается через Alt&Insert. И разницу проблем решающие ваш и встроенный инструменты. Поверхностно я пока вижу, что плагин может быть полезен для генерации структуры каталогов. Но было бы интересно узнать поподробнее, как вы его используете в своих целях.

Если честно, когда я искал решения, то не натыкался на этот движок — Apache Velocity. Когда я начал делать своё решение, появились запросы на изменение параметра ввода. Суть в том, что когда мы вводим параметр name, он может быть написан по-разному в разных местах, но его сущность не меняется. Например, NewFeature в зависимости от параметра, который мы выставим в шаблоне, может выглядеть как new_feature, new.feature, newFeature и т. д.
У себя мы используем это в KMP, когда для новой фичи нам нужно создать множество структур, не только каталогов, но и файлов, в которых можно сразу писать логику. Проблематику и применение я описывал вот тут https://habr.com/ru/companies/cian/articles/740928/ .

Зарегистрируйтесь на Хабре, чтобы оставить комментарий