воскресенье, 13 декабря 2009 г.

Горячие клавиши - это просто (HK Framework)

Описание

X++ Hot key framework (HK Framework) - платформа для настройки и использования собственных горячих клавиш в среде Microsoft Dynamics AX. Движок реализован на X++ без использования dll/activeX.

Скачать HKFramework 1.0.xpo для DAX 4.0, 2009

Возможность настройки горячих клавиши для:
  • редактора X++ (например, расстановка комментариев, открытие объекта в новом окне и т. п.);
  • репозитария AOT (например, открытие таблицы в обозревателе по Ctrl+O);
  • глобально для приложения (открытие любых форм, запуск классов, джобов и т. п.).
HK Framework уже включает в себя набор преднастроенных горячих клавиш и связанных с ними функций. Для добавления своей собственной функции, необходимо добавить статический метод в класс HKAOT или HKEditor - в зависимости от области ее действия - в AOT или редакторе X++, и в форме настройки HKSetup назначить этому методу желаемую комбинацию клавиш. При срабатывании установленной комбинации клавиш этому методу передастся управление. Пример методов смотрите в уже реализованных функциях.
Также, в форме HKSetup можно назначать горячие клавиши для запуска любой существующей формы/класса/джоба.


Список инструментов в данной версии HK Framework

1. Aot2project (ALT+F3) - менеджер управления AOT проектом; включает функции:
  • добавление элементов в проект из репозитария АОТ и редактора X++ (Ctrl+K);
  • расстановка комментариев в редакторе X++ (Ctrl+1, Ctrl+2, Ctrl+3 - открывающий, обычный, закрывающий комментарии, соответственно), формат комментариев можно настраивать (по принципу "strFmt("%1 %2 %3")");
  • создание соответствующей группы/подгруппы проекта (например, Data_Dictionary/Tables/Classes/...).


2. AotJump (AOT, Ctrl+J) - функция для быстрого «скольжения» по элементам АОТ, в направлении от базового элемента к родителю, например, от класса-наследника к классу-родителю, от датасорса формы к таблице, от менюайтема к открывающемуся объекту. Скольжение осуществляется по следующим цепочкам (уже не помню всех цепочек, если чего-то не хватает, можно добавить свои):
  • класс -> класс-родитель -> класс-родитель -> ... -> базовый класс;
  • table field -> EDT -> EDT-родитель -> EDT-родитель -> ... -> базовый EDT -> [enum];
  • menuItemButton -> menuItem -> класс/форма/отчет (зависит от типа menuItem);
  • menu -> menuItem;
  • formDataSource -> table/view.

3. CheckBestPractice (AOT, Ctrl+B) - функция проверки выделенных элементов АОТ на соответствие рекомендациям BestPractice.

4. Copy2clipboard (AOT, Ctrl+C) - функция копирования имен выделенных элементов АОТ в буфер обмена. Поддерживается мультивыделение. Очень полезно при наборе имен объектов в редакторе.

5. TableBrowser (AOT, Ctrl+O) - функция открывает таблицу в обозревателе таблиц из АОТ.

6. OpenTableBrowser (X++ Editor, Ctrl+«Ноль») - функция открывает таблицу в обозревателе, на которой установлен курсор в редакторе X++.

7. OpenNewWindow (X++ Editor, Ctrl+O) - плагин открывает элемент АОТ в новом окне из редактора X++. Поддерживается распознавание по типу.

Инсталляция

Данная версия тестировалась на DAX 4.0, 2009. Для 3.0 не хватило времени допилить. Если кто-то нуждается в версии для 3.0 - с удовольствием подскажу что и где подправить.

Инсталляция очень проста - две простых модификации стандартных методов.

\Classes\ClassFactory\formRunClassOnClient:

client static FormRun formRunClassOnClient(Args args)
{
SysSetupFormRun sysSetupFormRun;

;

// HK "Hot key framework", evo 30.07.2009 -->
if (args && args.name() == formstr(SysEditorGotoLine))
{
return HKManager::editorCatchObject(args);
}
// HK "Hot key framework", evo 30.07.2009 <--

sysSetupFormRun = SysSetupFormRun::construct(args);

return sysSetupFormRun;
}

\Classes\Info\onEventGoingIdle:

//Event fired by kernel when the client goes idle.
//It is not fired during CTRL-Break dialog.
void onEventGoingIdle()
{
this.operationProgressClear();
this.endLengthyOperation(true);

// HK "Hot key framework", evo 30.07.2009 -->
HKManager::startHKManager().run(false);
// HK "Hot key framework", evo 30.07.2009 <--
}


Примечания

1. HK Framework не использует внешние компоненты (DLL, ActiveX). Вследствие этого, он не перекрывает стандартные горячие клавиши. То есть, если назначить какой-то HK, который пересекается со стандартным, то стандартный HK отработает параллельно. Это накладывает ограничение на набор возможных комбинаций клавиш, который вы захотите использовать. Некоторые комбинации клавиш вообще не работают. Например, любая комбинация с клавишей ALT в редакторе X++ не работает (удобно использовать Ctrl). В общем, к процессу назначения новой горячей клавиши нужно подойти творчески.

2. Детектирование комбинации клавиш несколько отличается от стандартного перехвата. Здесь важен момент одновременного нажатия клавиш, в то время как в стандарте достаточно быстрой последовательности нажатия. Поэтому для некоторых пользователей чувствительность может показаться недостаточной.

3. После инсталляции необходимо удалить метод \Classes\HKProject\aotStructList. При первом использовании функциональности Aot2project метод пересоздается в соответствии с структурой АОТ вашего приложения.

Скачать HKFramework 1.0.xpo для DAX 4.0, 2009