Archive for the ‘Monkey Script’ Category

UAFPUG 9, мой доклад о Eclipse Monkey

Friday, May 1st, 2009

Непрошло и пол года как я подготовил исходники и написал пост о моем докладе на UAFPUG, который был 28 февраля, этого года.

Мой доклад назывался
“Eclipse Monkey — безграничный функционал Flex Builder’а.” как можно догадаться был посвещен прикручиванию Monkey скриптов к Flex Builder’у

В начале небольшая призентация:

По ходу призентации я приводил примеры использования скриптов. В правом углу некоторый слайдов есть метка E> это означает, что вместе со слайдом был пример кода. Примеры скриптов лежать в архиве у меня или в проекте monkey-for-flex на гугл коде. Примеры простые и не очень :).

Непростой пример посвещен использованию модели кода Flex Builder в Monkey Eclipse. Пример лежит в файле create-interface.js Данный пример генерит методы и свойства которые объявлены в выбраном интерфейсе, используя модель кода Flex Builder. Чтобы получить код нужно выделить в коде имя интерфейса и нажать Alt+m и в консоле будет выведен код. Остаеться его только скопипастить. Данный пример не является эталоном работы с моделью кода Flex Builder, это лишь иллюстрация возможностей Eclipse Monkey.

Еще я хочу обратить ваше внимание на библиотечки, которые я написал для более удобной работы.
Эти библиотеки лежат в папке com/the33cows/monkeylib

flexutil.js
Содержит методы для работы с текстовыми редакторами, как обычными так и MXML и CSS редакторов Flex Builder (Получение редактора, добавление текста, перемещение курсора). Библиотека не доделана, но с базовыми вещами справляеться нормально. Приветствуется добавление своих методов и/или советов, критики :)

templateUtils.js
Служит для работы с темплитами кода. В файл нужно прописать путь к каталогу где будут храниться файлы с темплитами

this.templateRoot = "< YourPathToTemplates >/templates/"; 

использование до безобразия простое


include("com/the33cows/monkeylib/templateUtils.js");
...
var tmpl = getTemplate("public-method.tpl"); // загрузили темплит из файла
tmpl = tmpl.replace(/{comments}/g, coments); // заменяем переменные на значения

переменная tmpl содержит строку с кодом, дальше с можно поступать как угодно.

Если есть каки-то вопросы, задавайте. Если есть какие-то пожелания, делитесь) Удачи.



Eclipse Monkey и редакторы Flex Builder

Thursday, April 16th, 2009

Работа с mxml и css редактором отличается от работы с обычным редактором который нам предоставляет Eclipse Monkey. Чтобы получить доступ к любому редактору я использую такой метод

loadBundle("com.adobe.flexbuilder.editors.common");
/**
 * @return current text editor or null
 * @see org.eclipse.ui.editors.text.TextEditor  
 */
this.getCurrentTextEditor = function()
{
	var editor = window.getActivePage().getActiveEditor();
	if (editor)
	{ 
		if (editor.getClass().getName() == "com.adobe.flexbuilder.editors.mxml.MXMLEditor"
			|| editor.getClass().getName() == "com.adobe.flexbuilder.editors.css.CSSEditor")
		{
			editor = editor.getCodeEditor();
		}
		/*
		//TODO add others editors that 
		else if (){}
 
		*/
	}
	return editor;
}

Данный метод отдает ссылку на инстанс класса наследованого от org.eclipse.ui.editors.text.TextEditor, вернее даже на инстанс, который реализует
org.eclipse.ui.editors.ITextEditor

дальше работаем обычными для эклипса методами:

this.TextSelection = Packages.org.eclipse.jface.text.TextSelection;
 
this.insertToCursor = function(editor, text, moveCursor)
{
	if (editor)
	{
		var documentProvider = editor.getDocumentProvider();
		var doc = documentProvider.getDocument(editor.getEditorInput());
		var offset = editor.getSelectionProvider().getSelection().getOffset();
 
		doc.replace(offset, 0,  text);
 
		if (moveCursor)
		{
			var selection = new TextSelection(doc, offset+text.length, 0);
			editor.getSelectionProvider().setSelection(selection);	
		}
	}
}

Метод вставляет текст в позицию курсора и если выставлен флаг, перемещает курсор в конец вставленного текста.



Закрываем И запускаем AIR-debugger с помощью Eclipse Monkey

Monday, February 23rd, 2009

Про апгрейченый скрипт запуска AIR дебагера:

 
/*
 * Menu: Kill adl an run debug
 * Key: M3+d
 * Kudos: Ilja Panin http://the33cows.com
 * DOM: http://download.eclipse.org/technology/dash/update/org.eclipse.eclipsemonkey.lang.javascript
 */
 
var workspace = Packages.org.eclipse.core.resources.ResourcesPlugin.getWorkspace(); 
var configToRunName = "[YOU_DEBUG_CONFIGURATION_NAME]";
 
function main() 
{
	Packages.java.lang.Runtime.getRuntime().exec("tskill.exe adl");
 
	loadBundle("org.eclipse.debug.ui");
 
	var ProgressMonitorDialog = Packages.org.eclipse.jface.dialogs.ProgressMonitorDialog;
	var IRunnableWithProgress = Packages.org.eclipse.jface.operation.IRunnableWithProgress;
 
	var runnableWithProgress = new IRunnableWithProgress({run: runfun});
	var monitorDialog = new ProgressMonitorDialog(window.getShell()).run(true, true, runnableWithProgress);;
}
 
 
function runfun(monitorDialog)
{
	monitorDialog.beginTask("Run debbuger ...", 1);
	var plugin =  Packages.org.eclipse.debug.core.DebugPlugin;
	var launchManager = plugin.getDefault().getLaunchManager();
	configurations = launchManager.getLaunchConfigurations();
 
	var conf;
 
	for (var i in configurations)
	{
		if (configurations[i].getName() == configToRunName )
		{
			conf = configurations[i];
		}	
	}
 
	if (conf)
	{
		var launch = Packages.org.eclipse.debug.ui.DebugUITools.buildAndLaunch(conf, "debug", monitorDialog);
	}
	else
	{
		debug("project not found!");
	}
 
	monitorDialog.done()
}
 
function debug(s) 
{
  	out.println(s);
}

Правила применения:
1.заменяем строку [YOU_DEBUG_CONFIGURATION_NAME] на имя конфигурации запуска приложения. Это имя можно найти в меню “Run -> Open Debug Dialog…”
2. заменяем сочетание M3+d на свое (M3 это alt). Для меня alt+d ближе чем F11 :)

При выполнении скрипт, убивается процесс AIR дебагера и запускает процесс сборки и новый дебагер.



Закрываем AIR-debugger с помощью Eclipse Monkey

Sunday, February 22nd, 2009

Flex Builder не умеет закрывать дебагер AIR приложений.

Лично я все время забываю закрывать приложение и каждый раз при запуске получаю сообщение об ошибке. После чего приходится “искать” приложение и закрывать его. Отнимает время и иногда нервирует.

Чтобы облегчить себе работу в закрытии приложения я написал небольшой Eclipse Monkey script:


/*
 * Menu: kill adl
 * Key: M3+d
 * Kudos: Ilja Panin http://the33cows.com
 * DOM: http://download.eclipse.org/technology/dash/update/org.eclipse.eclipsemonkey.lang.javascript
 */

function main()
{
	Packages.java.lang.Runtime.getRuntime().exec("tskill.exe adl");
}

он убивает запущенный процесс adl.exe(отладчик AIR) легким движением руки ) и экономит время.

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

upd: чтобы запустить скрипт нужно создать в папке со скриптами(по умолчанию проект monkey папка scripts) js файл, например kill-adl.js в него вставить код. Запускаеться скрипт нажатием alt+d или выбором пункта из меню



Eclipse Monkey и Flex Builder

Tuesday, November 25th, 2008

Я нашел свою ошибку при работе с флекс билдером. Я неверно загружал ява классы билдера и поэтому немог к ним нормально обратиться. Правильный вариант выглядит так:

loadBundle("com.adobe.flexbuilder.editors.common");

скачать пример Monkey Script’a , который добавляет цвет в редактор используя диалог выбора цвета из Flex Builder, можно со страницы примеров проекта «monkey-for-flex»

Теперь мы можем гораздо больше!




]]> rss о RIA от 33 Коровы
Забадать RSS!
]]>
~~~~~~