Как открыть два eclipse в Mac OS
Wednesday, March 21st, 2012Что бы открыть 2 eclipse открывает терминал и пишем:
cd /Applications/eclipse/
open -n Eclipse.app
Все.
Что бы открыть 2 eclipse открывает терминал и пишем:
cd /Applications/eclipse/
open -n Eclipse.app
Все.
Вылетел у меня эклипс и вместе с ним погиб воркспейс. После запуска эклипса, он грузился до определенного момента и вис намертво. Первый раз я просто пересоздал вокрспейс и импортнул проекты по-новой (сделать такое мне посоветовали несколько человек). Но вместе с воркспейсом погибли все мои настройки и это было грустно.
Через какое-то время эклипс повторил свой трюк. И я таки решил найти другое решение, сначала пытался использовать различные варианты запуска эклипса из командной строки, но ничего не вышло.
Поиск дал следующее решение.
Перескажу рецепт:
идем в папочку воркспейса и убиваем файл .metadata/.plugins/org.eclipse.core.resources/.snap
и все отлично запускается. Справедливо как для мак ос, так и для виндовс.
Непрошло и пол года как я подготовил исходники и написал пост о моем докладе на 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 содержит строку с кодом, дальше с можно поступать как угодно.
Если есть каки-то вопросы, задавайте. Если есть какие-то пожелания, делитесь) Удачи.
Работа с 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 дебагера:
/* * 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 дебагера и запускает процесс сборки и новый дебагер.