Archive for the ‘Eclipse Monkey’ 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 »