Archive for the ‘Monkey Script’ Category
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 содержит строку с кодом, дальше с можно поступать как угодно.
Если есть каки-то вопросы, задавайте. Если есть какие-то пожелания, делитесь) Удачи.
Posted in ActionScript 3.0, Eclipse, Eclipse Monkey, Effective work, Flex Builder 2, Flex Builder 3, Monkey Script | 2 Comments »
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;
} |
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);
}
}
} |
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);
}
}
}
Метод вставляет текст в позицию курсора и если выставлен флаг, перемещает курсор в конец вставленного текста.
Posted in Eclipse, Eclipse Monkey, Flex Builder 3, Monkey Script, mxml | 2 Comments »
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);
} |
/*
* 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 дебагера и запускает процесс сборки и новый дебагер.
Posted in AIR, Eclipse, Effective work, Flex Builder 3, Monkey Script | Comments Off on Закрываем И запускаем 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 или выбором пункта из меню
Posted in AIR, Eclipse, Effective work, Flex Builder 3, Monkey Script | 4 Comments »
Tuesday, November 25th, 2008
Я нашел свою ошибку при работе с флекс билдером. Я неверно загружал ява классы билдера и поэтому немог к ним нормально обратиться. Правильный вариант выглядит так:
loadBundle("com.adobe.flexbuilder.editors.common");
скачать пример Monkey Script’a , который добавляет цвет в редактор используя диалог выбора цвета из Flex Builder, можно со страницы примеров проекта «monkey-for-flex»
Теперь мы можем гораздо больше!
Posted in Eclipse, Flex Builder 2, Flex Builder 3, Monkey Script, optimization | Comments Off on Eclipse Monkey и Flex Builder