Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Eclipse Monkey

4,799 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Eclipse Monkey

  1. 1. Ilja Panin http://the33cows.com Eclipse Monkey Безграничный функционал Flex Builder
  2. 2. Ilja Panin http://the33cows.com Что такое Eclipse Monkey ? Это плагин к Eclipse который позволяет писать к нему расширения на языке JavaScript (также Ruby, Python и Groove).
  3. 3. Ilja Panin http://the33cows.com Установка Устанавливается как и большинство плагинов Eclipse, адрес сайта: http://download.eclipse.org/technology/dash/update/
  4. 4. Ilja Panin http://the33cows.com Основные возможности • файловая система • запуск программ • веб-запросы • … Работа с Eclipse Platform: • Workspace • Projects • Debugger • Plug-ins • … Работа с Java:
  5. 5. Ilja Panin http://the33cows.com Инициализация скриптов • Выбор пункта из меню • По сочетанию клавиш • По событию среды
  6. 6. Ilja Panin http://the33cows.com От теории к практике
  7. 7. Ilja Panin http://the33cows.com Hello world /* * Menu: sample > hello word * Key: M3+6 * Kudos: Ilja Panin http://the33cows.com * DOM: http://download.eclipse.org/technology/dash/update/org.eclipse.eclipsemonkey.lang.javascript */ function main() { Packages.org.eclipse.jface.dialogs.MessageDialog.openInformation(window.getShell(), "Monkey", "Hello World"); } E >
  8. 8. Ilja Panin http://the33cows.com Стандартные диалоги Packages.org.eclipse.jface.dialogs.InputDialog Диалог ввода текста Packages.org.eclipse.swt.widgets.FontDialog Диалог выбора шрифта Packages.org.eclipse.swt.widgets.ColorDialog Стандартный диалог выбора цвета Больше информации о диалогах можно найти в хелпе к эклипс платформе Искать в пакете org.eclipse.swt.widgets E >
  9. 9. Ilja Panin http://the33cows.com Кастомные диалоги и окна Можно создать любой произвольный диалог используя SWT: The Standard Widget Toolkit E > http://www.eclipse.org/swt/
  10. 10. Ilja Panin http://the33cows.com Работа с View Мы можем получить доступ к любому View. Можем открывать их, закрывать, работать с ними, как это делает платформа или плагины E > Подробнее: http://code.google.com/p/monkey-for-flex/wiki/KnowHow
  11. 11. Ilja Panin http://the33cows.com Использование «чужого» кода По умолчанию Eclipse Monkey доступны только основные ресурсы платформы. Чтобы начать использовать остальные ресурсы платформы или плагинов нужно воспользоваться функцией: loadBundle(<имя пакета>) E > Пример: loadBundle("com.adobe.flexbuilder.editors.common"); //”Загружает” классы Flex Builder
  12. 12. Ilja Panin http://the33cows.com Работа с Java Работая с Eclipse Monkey, мы имеем возможность использовать стандартные объекты Java, их методы и свойства E > Пример 1: Packages.java.lang.Runtime.getRuntime().exec("tskill.exe adl"); //запукает процесс tskill.exe, который убивает процесс adl // AIR отладчик, подробнее у меня в блоге. Пример 2: hashSet = new Packages.java.util.HashSet(); //создали экземпляр класса HashSet
  13. 13. Ilja Panin http://the33cows.com Работа с редакторами Получить текущий редактор можно следующим образом: var editor = window.getActivePage().getActiveEditor(); Для работы с редактором (получение текста, вставка, текста, управление курсором и выделением) нужно получить ссылку на класс наследованный от org.eclipse.ui.editors.text.TextEditor В Flex Builder для MXML редактора используя getActiveEditor() мы не получим ссылки на требуемый типа редактора.
  14. 14. Ilja Panin http://the33cows.com Работа с редакторами. Flex Builder Flex Builder имеет 3 типа редакторов MXMLEditor и CSSEditor – сложные редакторы, каждый объединяет в себя визуальный и текстовый редактор. Для получения текстового редактора я использую следующий код: 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(); } } return editor; } 1. ASEditor 2. MXMLEditor 3. CSSEditor ASEditor – «простой» редактор, наследуется от org.eclipse.ui.editors.text.TextEditor и мы можем работать с ним сразу
  15. 15. Ilja Panin http://the33cows.com Работа с редакторами. Вставка, удаление, выделение текста Для работы с текстом нужно изучить хелп по org.eclipse.ui.editors.text.TextEditor, org.eclipse.jface.text.TextSelection :) Я сейчас уже не помню, что к чему и использую несколько ранее написанных мною методов. Они будут выложены вместе с докладом E >
  16. 16. Ilja Panin http://the33cows.com Flex Builder Code Model Adobe Flex Builder 3 Extensibility > Adobe Flex Builder 3 Extensibility API Reference Взяв его на вооружение будем «правильно готовить» билдер :) Разработчики Flex Builder предоставили нам возможность работать с API Flex Builder. В Help можно даже найти скромный раздел:
  17. 17. Ilja Panin http://the33cows.com Flex Builder Code Model доступ к модели кода Получить доступ к нему мы можем используя следующий код: loadBundle("com.adobe.flexbuilder.codemodel"); var CMFactory = Packages.com.adobe.flexbuilder.codemodel.common.CMFactory; Дальше пример того, что можно сделать имея этот класс. Входной точкой для работы с API Flex Builder является класс com.adobe.flexbuilder.codemodel.common.CMFactory
  18. 18. Ilja Panin http://the33cows.com Flex Builder Code Model автогенерация кода класс для любого интерфейса У Flex Builder немного хромает автогенерация кода когда класс имплементирует какой либо интерфейс: - Код методов создается лишь тогда когда мы выбираем интерфейс при создании класса, если мы добавляем интерфейс потом то мы код приходиться создавать с нуля ручкам. - Мы не можем задать произвольный шаблон для генерации кода - Если интерфейс наследован от другого то автогенератор добавляет все методы, и те которые не нужны. Например: MyAxisRenderer extends UIComponent implements IAxisRenderer где public interface IAxisRenderer extends IUIComponent При генерации билдером в MyAxisRenderer будут вставлены все методы из IUIComponent хотя они есть т.к. мы наследовались от UIComponent Возьмем Eclipse Monkey и будем шаманить… E >
  19. 19. Ilja Panin http://the33cows.com Почитать о Eclipse Monkey За стартовую точку я советую взять проект monkey-for-flex

×