IDEA + Adobe Flex - текущее состояние дел

· На чтение уйдёт 3 минуты · (604 слова)

Как известно, JetBrains IDEA довольно давно поддерживает редактирование JavaScript; с недавних пор она "научилась" понимать и ActionScript 3 код (в том числе MXML). SELENA EAP (нестабильная версия, "обгоняющая" текущий релиз) вполне сносно. Ниже расскажу, что я делал и как, чтобы этого добиться. Но для начала - надо скачать SELENA EAP.

Есть еще более новая версия, Diana EAP. Подробнее можно прочесть в статье "IDEA 8 + Flex = поддержка и отладка".

Скачали, распаковали, установили. Предположим, что нам нужна только разработка на Java и ActionScript 3. Собственно, в моем случае дела обстоят именно так. Поэтому, отключаем все ненужные для работы плагины. А именно - все, что не имеет отношения к Java и JavaScript. У меня получился такой список отключенных плагинов: AspectJ, ClearCase, Commander, DSM Analysis, Eclipse Integration (возможно, есть смысл оставить), GWT Studio, Geronimo Integration, Hibernate Support, Images, J2ME, JBoss integration, JSF Integration, JSR 45 Integration, Java EE Integration, JetConnect, Maven Integration, Plugin DevKit, Spring Support, StarTeam Integration, Struts Assistant, Subversion Integration, TestNG-J, Tomcat Integration, Visual SourceSafe Integration, WebLogic Integration, WebServicesPlugin, WebSphere Integration, ZKM-Unscramble. Ant Integration оставим - он нам еще пригодится.

Далее, создаем новый проект. Говорим Селене, что это - Java Module (впрочем, если все плагины отключены - иного и не дано). Называем его, ну, скажем, TestIdea, и пусть себе лежит в D:\BERSERK\FLASH\TestIdea. Для исходников создадим папочку src, как собственно, IDEA и советует... А в Select Desired Technologies выберем Flex.

Включаем поддержку MXML и Flex

Наберемся терпения - надо проиндексировать все библиотеки и инициализировать все плагины.

Далее, создаем новый ФАЙЛ. Wizard'ов пока нету. Обзовем этот файл - конечно же, TestIdea.mxml - а содержание его можно взять из любого проекта на FlexBuilder:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Button label="Click me" click="testLabel.text='Hello world! I am Flex'"/>
<mx:Label id="testLabel" text="I am Hello World" color="123456"/>
</mx:Application>

Теперь видно, что на этом уровне поддержка работает, есть автокомплит и все дела... Вот только самого главного нету - нет возможности скомпилировать проект и запустить его. Мы последуем примеру Constantiner'а и воспользуемся Flex Ant Tasks. Я немножко переписал build.xml, но - совсем чуть-чуть, чтобы на выходе получалось примерно то же, что и во Flex Builder 3. Итак, пишем build.xml, пробуем его запустить - ничего не выходит. Встроенный в IDEA ant для этой цели не подходит. Поэтому воспользуемся входящим в состав Flex Builder, заодно подключим к нему Flex Tasks:

Выбираем нужную версию AntПодключаем FlexTasks к Ant

Далее, нам потребуется конфиг-файл, его можно взять по адресу ${FLEX_HOME}\sdks\3.0.0\frameworks\flex-config.xml - правда, придется проставить в нем пути (если пишет, что каталог libs не найден - надо заменить libs на ${flexlib}/libs.

Если все прошло нормально, - у нас появились файлы bin/TestIdea.swf и bin-release/TestIdea.swf, запустить которые можно в Adobe Flash Player. Да-да, как запустить это в отладке из IDEA - науке до сих пор неизвестно :-). Возможно, уже есть какие-то плагины, но я пока на них не натыкался.

Есть и другие недостатки: например, если задать атрибут width="100%", IDEA ругается, что это нечисловое значение. Та же ситуация, если цвет задавать так: color="#FFFFFF". Разумеется, файл будет нормально откомпилирован, - но ориентироваться в таком файле неудобно. Сказанное выше, само собой, относится лишь к редактированию MXML.

В целом же, при работе с .as файлами - все не так печально. Из "новых" рефакторингов (тех, которых нет ни во Flex Builder, ни в FDT) - Introduce Variable. Кроме того, есть безопасное удаление метода/переменной/класса. Остальное - примерно то же самое, есть и оптимизация импортов, и переименовывание переменных, методов и классов. Слабовато, конечно, по сравнению с функционалом для Java - но куда ж деваться...

Серьезный проект в IDEA поддерживать на данном этапе, вероятно, нельзя - ввиду отсутствия отладки. Простенький - аналогично, ввиду отсутствия визуального редактора для MXML. Однако, может иметь смысл поставить и иногда использовать IDEA для проверки "качества" кода - в этом аспекте IDEA на недосягаемой для конкурентов высоте.

Полезное