Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
37
Добавлен:
20.03.2016
Размер:
7.31 Mб
Скачать

StarUML. Руководство разработчика. Глава 8. Расширение меню

87 / 139

** диапазон значений свойства availableWhen - Тот же самый, что и для элемента MAINMENU.

Пример файла расширения меню

Следующий пример показывает реальный файл описания меню для одного из стандартных расширений, которое устанавливается вместе с программой StarUML™ .

<?xml version="1.0" encoding="UTF-8"?> <ADDINMENU addInID="StarUML.StandardAddIn">

<HEADER>

<NAME>Default module of StarUML</NAME> <VERSION>1.0.0</VERSION>

<DESCRIPTION>Default extension pack of Agora Plastic to convert diagram</DESCRIPTION> <COMPANY>Plastic Software, Inc.</COMPANY>

<COPYRIGHT>Copyright (C) 2005 Plastic Software, Inc. All rights reserved.</COPYRIGHT> </HEADER>

<BODY>

<MAINMENU>

<MAINITEM base="MODEL" caption="Convert Diagram" beginGroup="TRUE" availableWhen="MODEL_SELECTED">

<MAINITEM caption="Convert Sequence(Role) to Collaboration(Role)" script="ConvSeq2Col.vbs"/>

<MAINITEM caption="Convert Collaboration(Role) to Sequence(Role)" script="ConvCol2Seq.vbs"/>

</MAINMENU>

</BODY>

</ADDINMENU>

Регистрация файла расширения меню

Чтобы расширение меню было распознано автоматически, файл нужно поместить подкаталог каталога модулей StarUML (<install-dir> \modules). StarUML находит и читает все файлы расширения меню, расположенные в каталоге модулей и автоматически регистрирует их во время своей инициализации. Если файл расширения меню некорректен, или его расширение не .mnu, он будет игнорирован. Рекомендуется создать подкаталог в каталоге модулей StarUML и поместить файл туда, чтобы избежать путаницы.

Обратите внимание: Просто удалите файл расширения меню из каталога модулей StarUML (<install-dir> \modules), чтобы данное расширение меню больше не использовалось.

StarUML. Руководство разработчика. Глава 9. Написание дополнительных COM-объектов 88 / 139

Глава 9. Написание дополнительных COMобъектов

Основные концепции дополнительных COM-объектов

Как отмечалось в "Главе 3. Пример Здравствуй мир", чтобы добавить новые функциональные возможности к StarUML™ могут быть использованы несложные скрипты. Однако, чтобы реализовать более сложные и полезные функциональные возможности, лучше использовать среду разработки программ, которая поддерживает COM-объекты. Если Вы хотите создать аддин для StarUML™, не имеет значения, будет ли использоваться Delphi, Visual Basic или любая другая среда программирования, лишь бы она поддерживала технологию COM.

Наиболее важный аспект создания аддина для StarUML™ заключается в том, что должен использоваться интерфейс IStarUMLAddIn, определенный в StarUML™.

Как показано выше, интерфейс IStarUMLAddIn наследован от IUnknown и определяет три дополнительных метода: InitializeAddIn (), FinalizeAddIn (), и DoMenuAction ().

Методы интерфейса IStarUMLAddIn

Методы, определенные для реализации интерфейса IStarUMLAddIn следующие.

 

 

 

 

 

 

 

Метод

Описание

 

 

 

 

 

 

 

 

 

 

 

Метод InitializeAddIn() используется объектом StarUMLApplication,

 

 

 

 

 

чтобы инициализировать COM-объект аддина, когда он будет создан. Как

 

 

InitializeAddIn()

 

 

будет показано ниже, он используется, чтобы выполнить действия,

 

 

 

 

 

требуемые при инициализации аддина, такие как регистрация подписки

 

 

 

 

 

на события.

 

 

 

 

 

 

 

 

FinalizeAddIn()

 

 

Метод FinalizeAddIn() вызывается объектом StarUMLApplication

 

 

 

 

непосредственно перед отсоединением от объекта аддина. Как будет

 

 

 

 

 

 

 

 

 

 

 

 

StarUML. Руководство разработчика. Глава 9. Написание дополнительных COM-объектов 89 / 139

 

 

 

 

 

 

 

Метод

Описание

 

 

 

 

 

 

 

 

 

 

 

показано ниже, он используется, чтобы выполнить действия, требуемые

 

 

 

 

 

при завершении аддина, такие как удаление подписки на события.

 

 

 

 

 

 

 

 

 

 

 

Как отмечено в 'Главе 8. Расширение меню' метод DoMenuAction ()

 

 

DoMenuAction(ActionID:

 

 

вызывается, когда пользователь выбирает дополнительный пункт меню,

 

 

Integer)

 

 

определенный аддином. Значение 'actionId' пункта меню, определенного

 

 

 

 

 

файлом расширения меню, передаётся как параметр.

 

 

 

 

 

 

 

Пример COM-объекта аддина

Ниже показан простой пример объявления COM-объекта аддина, реализующего интерфейс IStarUMLAddIn. Пример написан на Delphi Pascal.

type

AddInExample = class(TComObject, IStarUMLAddIn) private

StarUMLApp: IStarUMLApplication; protected

function InitializeAddIn: HResult; stdcall; function FinalizeAddIn: HResult; stdcall;

function DoMenuAction(ActionID: Integer): HResult; stdcall;

...

public

procedure Initialize; override; destructor Destroy; override;

...

end;

...

implementation

procedure AddInExample.Initialize; begin

inherited;

StarUMLApp := CreateOleObject('StarUML.StarUMLApplication') as IStarUMLApplication;

...

end;

destructor AddInExample.Destroy; begin

...

StarUMLApp := nil; inherited;

end;

function AddInExample.InitializeAddIn: HResult; begin

...

Result := S_OK;

end;

function AddInExample.FinalizeAddIn: HResult; begin

...

Result := S_OK;

end;

function AddInExample.DoMenuAction(ActionID: Integer): HResult; stdcall; begin

Result := S_OK;

...

end;

Соседние файлы в папке ПиАПС ЛР2