Показаны сообщения с ярлыком Eclipse. Показать все сообщения
Показаны сообщения с ярлыком Eclipse. Показать все сообщения

суббота, 25 апреля 2009 г.

Elipse RCP. Linux круче, чем Windows!

У меня не работал в моем проекте импорт файлов из файловой системы. Google порекомендовал добавить плагин org.eclipse.core.runtime.compability, но так просто всё сделать никак не получилось.
Вначале я начал тестить на Eclipse Europa win32: добавляю в dependencies, добавляю в launch configuration, и... ничего не запускается, после заcтавки мне сообщают, что No application id has been found.
Дальше я лезу в мой Debian GNU/Linux и проделываю всё то же самое: всё благополучно работает. Наверное это потому, что у меня тут Ganymede, а там Europe версия! Лезу в винду, скачиваю Ganymede (не знаю какой точно билд скачиваю, но последний), и имею те же проблемы, что и с Europой.
Так что жe такое получается? Linux roolez, Windows must die?

P.S. Наверное такое заслуживает багтрекера Eclipse.

воскресенье, 19 апреля 2009 г.

Eclipse RCP. Команды пунктам меню

Саму менюшку можно создать поковыряв plugin.xml на вкладке Extensions. Однако, там могут возникать некоторые проблемы такого рода: некоторые пункты меню работают, а некоторые - нет. Например, у меня есть несколько пунктов в меню File: Save и Exit. Реализации, прописанные в CommandId у них org.eclipse.ui.file.save и org.eclipse.ui.file.exit соответственно. Имеем ситуацию, когда Save не работает, а Exit - работает. Не работает - в смысле "серый", на него нельзя кликнуть.
Я попробовал создавать менюшку руками:
public class ApplicationActionBarAdvisor extends ActionBarAdvisor {
private IWorkbenchAction exitAction, saveAction;
protected void makeActions(IWorkbenchWindow window) {
exitAction = ActionFactory.QUIT.create(window);
register(exitAction);
saveAction = ActionFactory.SAVE.create(window);
register(saveAction);
}
protected void fillMenuBar(IMenuManager menuBar) {
MenuManager hyperbolaMenu = new MenuManager(
"&Hyperbola", "hyperbola");
hyperbolaMenu.add(saveAction);
hyperbolaMenu.add(exitAction);
menuBar.add(hyperbolaMenu);
}
}
Отлично, всё работает: и выход, и сохранение. Если убрать register(saveAction) - сохранение перестанет работать. По-видимому некоторые Actions сами создаются, а некоторые надо ручками. Магия!

суббота, 28 марта 2009 г.

Первые шаги c Eclipse RCP. Пункты меню

Я учавствую в проекте, где интерфейс создается на технологии Eclipse RCP. Пару недель назад я увидел её впевые и многое было непонятно. Например, я не мог даже добавить нормально менюшку ещё одну к списку готовых. Порой проскаквало ощущение, что если участие моё в этом проекте как-нибудь положительно закончится, то я ни за что больше не буду писать в Eclipse=)

Первое, что мне захотелось сделать, это добавить новую менюшку к уже имеющимся. Сразу встала проблема понимания как всё в этой технологии завязано, зачем нужны для одной менюшки и Action, и command (org.eclipse.ui.commands) на который вешается какой-то handler, унаследованный, например, от AbstractHandler (org.eclipse.core.commands.AbstractHandler). Методом научного тыка пришло понимание как всё это работает.

В терминах Eclipse то, что я создаю называется plugin. Значит так, открываем plugin.xml, идет на вкладку Extensions. Создадим новую команду - добавим расширение org.eclipse.ui.commands. Повесим какой-нибудь handler - IDE нам помагает очень просто это сделать, а также укажем какой-нибудь ID - его запомним в голове.

Теперь создадим новый ActionSet (org.eclipse.ui.actionSets) и в нём новый Action. Поля id, label и class интуитивно понятны, а вот в definitionID надо написать имя созданного нами handler'a. Иначе при выборе пункта меню мышкой мы будем постоянно получать сообщение о том, что действие не реализовано.

Последний штрих: укажем расположение в меню. Для этого есть поле menubarPath. Здесь надо просто указать ID пункта меню. Будьте внимательны, если хотите сделать подменю, то не забудьте "/" в конце!