Á¦ 9 Àå. Add-In COM Object »ç¿ëÇϱâ

Add-In COM ObjectÀÇ ±âº» °³³ä

StarUML™¿¡ »õ·Î¿î ±â´ÉÀ» Ãß°¡ÇÏ°íÀÚ ÇÒ ¶§ ÀÌÀü 'Chapter 3. Hello world Example'¿¡¼­ º¸¾ÒµíÀÌ °£´ÜÇÑ Script Äڵ带 Á¤ÀÇÇÒ ¼öµµ ÀÖÁö¸¸, Á» ´õ º¹ÀâÇϰųª À¯¿ëÇÑ ±â´ÉÀ» Á¦°øÇϱâ À§Çؼ­´Â COM °³Ã¼¸¦ Áö¿øÇÏ´Â ÇÁ·Î±×·¥ °³¹ß ȯ°æÀ» »ç¿ëÇÏ´Â °ÍÀÌ ³ªÀ» °ÍÀÌ´Ù. StarUML™ Add-In COM Object¸¦ ±¸ÇöÇÒ ¶§ Visual C++, Delphi, C#, Visual Basic µî°ú °°ÀÌ COM ±â¼úÀ» Áö¿øÇÏ´Â ¾î¶² ÇÁ·Î±×·¥ ȯ°æÀ» ¼±ÅÃÇÏ´øÁö »ó°üÀÌ ¾ø´Ù.

StarUML™ Add-In COM Object¸¦ ±¸ÇöÇÒ ¶§ ÁöÄÑ¾ß ÇÏ´Â °¡Àå Áß¿äÇÑ Á¡Àº StarUML™ÀÌ Á¤ÀÇÇÏ°í ÀÖ´Â IStarUMLAddIn ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇØ¾ß ÇÑ´Ù´Â °ÍÀÌ´Ù.
IStarUMLAddIn ÀÎÅÍÆäÀ̽º´Â À§ÀÇ ±×¸²°ú °°ÀÌ IUnknownÀ» »ó¼ÓÇϸç InitializeAddIn(), FinalizeAddIn(), DoMenuAction() ¼¼ °³ÀÇ Ãß°¡ÀûÀÎ ÀÎÅÍÆäÀ̽º ¸Þ¼Òµå¸¦ Á¤ÀÇÇÏ°í ÀÖ´Ù.

IStarUMLAddIn ÀÎÅÍÆäÀ̽º ¸Þ¼Òµå

IStarUMLAddIn ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÒ ¶§ Á¤ÀÇÇØ¾ß ÇÏ´Â ¸Þ¼Òµå´Â ´ÙÀ½°ú °°´Ù.

¸Þ¼Òµå ¼³¸í
InitializeAddIn() InitializeAddIn() ¸Þ¼Òµå´Â StarUMLApplication °³Ã¼°¡ °¢ Add-In COM Object¸¦ »ý¼ºÇÑ ÈÄ¿¡ È£ÃâÇÏ´Â ÃʱâÈ­ ¸Þ¼ÒµåÀÌ´Ù. ÀÌ°ÍÀº StarUML™ÀÇ À̺¥Æ® ¼ö½Å µî·Ï°ú °°ÀÌ Add-In COM ObjectÀÇ ÃʱâÈ­¿¡ ÇÊ¿äÇÑ µ¿ÀÛÀ» Á¤ÀÇÇÒ ¶§ »ç¿ëÇÑ´Ù.
FinalizeAddIn() FinalizeAddIn() ¸Þ¼Òµå´Â StarUMLApplication °³Ã¼°¡ Add-In COM Object¿¡ ´ëÇÑ ÂüÁ¶¸¦ ²÷±â ¹Ù·Î Àü¿¡ È£ÃâÇÏ´Â ¸Þ¼ÒµåÀÌ´Ù. ÀÌ°ÍÀº StarUML™ÀÇ À̺¥Æ® ¼ö½Å ÇØÁ¦¿Í °°ÀÌ Add-In COM ObjectÀÇ ¼Ò¸ê Àü¿¡ ÇÊ¿äÇÑ µ¿ÀÛÀ» Á¤ÀÇÇÒ ¶§ »ç¿ëÇÑ´Ù.
DoMenuAction(ActionID: Integer) DoMenuAction() ¸Þ¼Òµå´Â 8Àå 'Extending Menu'¿¡¼­ º¸¾ÒµíÀÌ °¢ Add-InÀÌ Á¤ÀÇÇÑ È®Àå ¸Þ´º Ç׸ñÀÌ »ç¿ëÀÚ¿¡ ÀÇÇØ ¼±ÅõǾúÀ» ¶§ È£ÃâµÇ¸ç, ¸Þ´º È®Àå ÆÄÀÏ¿¡¼­ Á¤ÀÇÇÑ °¢ ¸Þ´º Ç׸ñÀÇ 'actionId' °ªÀÌ ÀÎÀÚ·Î Àü´ÞµÈ´Ù.

Add-In COM Object ¿¹Á¦

´ÙÀ½Àº IStarUMLAddIn ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ´Â StarUML™ Add-In COM ObjectÀÇ °£´ÜÇÑ ¿¹¸¦ º¸ÀÌ°í ÀÖ´Ù. ÀÌ°ÍÀº µ¨ÆÄÀÌ ÆĽºÄ® ¹®¹ýÀ¸·Î Á¤ÀÇµÈ °ÍÀÌ´Ù.

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;

Add-In ¼³¸í ÆÄÀÏ ÀÛ¼ºÇϱâ

Add-In ¼³¸í ÆÄÀÏÀÇ ±âº» °³³ä

Add-In Description ÆÄÀÏ(*.aid)Àº XML Çü½ÄÀÇ ÅؽºÆ® ÆÄÀÏ·Î, StarUML¿¡ Ç÷¯±×ÀÎ(plug-in)µÇ´Â °¢ Add-InÀº ¹Ýµå½Ã ÇϳªÀÇ Add-In ÆÄÀÏÀ» Á¦°øÇØ¾ß ÇÑ´Ù. StarUMLÀº Add-In Description ÆÄÀÏÀÌ Á¤ÀÇÇÏ´Â ³»¿ëÀ» ¹ÙÅÁÀ¸·Î Add-InÀ» ·¹Áö½ºÅ͸®¿¡ µî·ÏÇÏ°í ÃʱâÈ­Çϸç, Add-In°ú ¿¬°áµÈ ¸Þ´º È®Àå ÆÄÀÏÀ» ÃʱâÈ­ÇÑ´Ù.

³ëÆ®: Add-In Description ÆÄÀÏÀº ¹Ýµå½Ã *.aid È®ÀåÀÚ¸¦ °¡Á®¾ß Çϸç, StarUML™ ¸ðµâ µð·ºÅ丮(<install-dir>\modules) ÇϺΠµð·ºÅ丮¿¡ Á¸ÀçÇØ¾ß ÇÑ´Ù.

Add-In Description ÆÄÀÏÀÇ Àüü ±¸Á¶

Add-In Description ÆÄÀÏÀº XML ¹®¼­ÀÇ ±ÔÄ¢À» µû¸£¸ç, »ç¿ëÀÚ Á¤ÀÇ Ç׸ñµéÀº 'ADDIN' ¿ä¼Ò ³»¿¡ ±â¼úµÈ´Ù.

<?xml version="1.0" encoding="..."?>

<ADDIN>
    <NAME>...</NAME>
    <DISPLAYNAME>...</DISPLAYNAME>
    <COMOBJ>...</COMOBJ>
    <FILENAME>...</FILENAME>
    <COMPANY>...</COMPANY>
    <COPYRIGHT>...</COPYRIGHT>
    <HELPFILE>...</HELPFILE>
    <ICONFILE>...</ICONFILE>
    <ISACTIVE>...</ISACTIVE>
    <MENUFILE>...</MENUFILE>
    <VERSION>...</VERSION>
    <MODULES>
        <MODULEFILENAME>...</MODULEFILENAME>
    </MODULES>
</ADDIN>

Add-In ¼³¸í ÆÄÀÏ µî·ÏÇϱâ

ÀÛ¼ºµÈ Add-In Description ÆÄÀÏÀ» StarUML¿¡¼­ ÀÚµ¿À¸·Î ÀνÄÇÏ·Á¸é Add-In Description ÆÄÀÏÀÌ StarUML™ ¸ðµâ µð·ºÅ丮(<install-dir>\modules) ÇϺΠµð·ºÅ丮·Î ¿Å°Ü¾ß ÇÑ´Ù. StarUML™Àº ÇÁ·Î±×·¥ ÃʱâÈ­ ½Ã¿¡ ¸ðµâ µð·ºÅ丮 ÇϺθ¦ °Ë»öÇÏ¿© ¸ðµç Add-In Description ÆÄÀϵéÀ» ÀÐ¾î µéÀÎ ÈÄ ÇÁ·Î±×·¥¿¡ ÀÚµ¿ µî·ÏÇÑ´Ù. ¸¸¾à Add-In Description ÆÄÀÏÀÌ ¹®¹ý¿¡ ¸ÂÁö ¾Ê°Ô Àß ¸ø ÀÛ¼ºµÇ¾î Àְųª, È®ÀåÀÚ°¡ .aid°¡ ¾Æ´Ñ °æ¿ì¿¡´Â Add-In Description ÆÄÀÏÀ» Á¤»óÀûÀ¸·Î ÀÐ¾î µéÀÌÁö ¾Ê°í ¹«½ÃÇÏ°Ô µÉ °ÍÀÌ´Ù.
Add-In Description ÆÄÀÏÀº °¡±ÞÀûÀÌ¸é ¸ðµâ µð·ºÅ丮 ÇϺο¡ »õ·Î¿î µð·ºÅ丮¸¦ ¸¸µé°í °Å±â¿¡ ÀúÀåÇϱ⸦ ±ÇÀåÇÑ´Ù.

³ëÆ®: Add-In Description ÆÄÀÏÀ» ´õ ÀÌ»ó »ç¿ëÇÏÁö ¾ÊÀ¸·Á¸é StarUML™ ¸ðµâ µð·ºÅ丮(<install-dir>\modules) ÇϺο¡¼­ »èÁ¦ÇÏ¸é µÈ´Ù.

¿É¼Ç È®Àå

¿É¼Ç È®ÀåÀÇ ±âº» °³³ä

StarUML¿¡¼­´Â »ç¿ëÀÚµéÀÌ StarUMLÀÇ È¯°æ°ú ¼¼ºÎÀûÀÎ ±â´ÉÀ» Á¶ÀýÇÒ ¼ö ÀÖµµ·Ï ¿É¼Ç ÆíÁýÀ» Áö¿øÇÑ´Ù. ÀÌ·± ¿É¼ÇµéÀº StarUML ¾ÖÇø®ÄÉÀÌ¼Ç ÀÚü »Ó¸¸ ¾Æ´Ï¶ó ½áµåÆÄƼ º¥´õµé¿¡ ÀÇÇØ Á¦°øµÇ´Â Add-inµé¿¡°Ôµµ ÇÊ¿äÇÏ´Ù. StarUMLÀÇ ¿É¼Ç È®ÀåÀº Add-inµé¿¡°Ô º°µµÀÇ ±¸Çö °úÁ¤ ¾øÀÌ ¿É¼Ç ¼³Á¤ ±â´ÉÀ» °¡´ÉÇÏ°Ô ÇØÁØ´Ù. À̸¦ À§Çؼ­ Add-in °³¹ßÀÚ´Â ÅؽºÆ® ÆÄÀÏ·Î °£´ÜÇÏ°Ô ¿É¼Ç¿¡ ´ëÇÑ Á¤ÀǸ¸ ±â¼úÇÏ°í ÀÌ ¿É¼Ç Á¤ÀÇ ÆÄÀÏÀ» ·¹Áö½ºÆ®¸®¿¡ µî·ÏÇØ Áֱ⸸ ÇÏ¸é µÈ´Ù. µî·ÏµÈ ¿É¼Ç Á¤ÀÇ´Â ÇÁ·Î±×·¥ ÃʱâÈ­ ½Ã¿¡ ·Îµå µÇ¸ç »ç¿ëÀÚ°¡ ¿É¼Ç ´ÙÀ̾ó·Î±×¸¦ ¶ç¿üÀ» ¶§ Æ®¸®ºä¿Í ÀνºÆåÅÍ¿¡ Ç¥½ÃµÈ´Ù. ¿É¼Ç È®Àå ±â´ÉÀ» ÅëÇؼ­ °³¹ßÀÚµéÀº Add-in ±¸ÇöÀ» À§ÇÑ ½Ã°£°ú ³ë·ÂÀ» Àý°¨ÇÒ ¼ö ÀÖ°í, »ç¿ëÀڵ鿡°Ô ¿É¼Ç ¼³Á¤À» À§ÇÑ ÀÏ°üµÈ À¯Àú ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÒ ¼ö ÀÖ´Ù.

Add-in¿¡¼­ ¿É¼Ç ¼³Á¤À» Áö¿øÇϱâ À§Çؼ­´Â ´ÙÀ½°ú °°Àº ÀýÂ÷°¡ ÇÊ¿äÇÏ´Ù.

  1. Add-in¿¡ Àû¿ëÇÒ ¿É¼Ç Ç׸ñÀ» Á¤ÀÇÇϱâ À§ÇØ ¿É¼Ç ½ºÅ°¸¶ ¹®¼­(.opt)¸¦ ÀÛ¼ºÇÑ´Ù.
  2. ¿É¼Ç ½ºÅ°¸¶ ÆÄÀϸ¦ Add-inÀÌ ¼³Ä¡µÈ µð·ºÅ丮¿¡ º¹»çÇÑ´Ù.

¿É¼ÇÀÇ °èÃþ ±¸Á¶

StarUMLÀº ¾ÖÇø®ÄÉÀ̼ǰú °¢ Add-in¿¡¼­ ÀÛ¼ºµÈ ¸¹Àº ¿É¼Ç Ç׸ñµéÀ» ÅëÇÕÀûÀ¸·Î °ü¸®Çϱâ À§ÇÏ¿© ´ÙÀ½°ú °°ÀÌ °èÃþÀûÀ¸·Î ±¸¼ºÇÏ¿´´Ù.

¿É¼Ç ½ºÅ°¸¶ ÀÛ¼ºÇϱâ

¿É¼Ç ½ºÅ°¸¶ÀÇ ±¸Á¶¿Í ¿É¼Ç Ç׸ñÀ» Á¤ÀÇÇϱâ À§ÇÑ  ¿É¼Ç ½ºÅ°¸¶ ÆÄÀÏÀº È®ÀåÀÚ°¡ .opt ÀÎ XML Æ÷¸ËÀÇ ÅؽºÆ® ÆÄÀÏÀÌ´Ù. ¿É¼Ç ½ºÅ°¸¶¿¡ ´ëÇÑ ³»¿ëÀº OPTIONSCHEMA ¿ä¼Ò ³»¿¡ ±â¼úµÇ¸ç, ±¸¹®À̳ª ³»¿ë¿¡ ¿À·ù°¡ ¾øµµ·Ï ÇØ¾ß ÇÑ´Ù.

<?xml version=¡±1.0¡± encoding=¡±...¡± ?>
<OPTIONSCHEMA id="..."> 
    <HEADER>
    ...
    </HEADER>
    <BODY>
    ...
    </BODY>
</OPTIONSCHEMA>

Header Contents

HEADER ºÎºÐ¿¡´Â ¿É¼Ç ½ºÅ°¸¶ÀÇ Á¦¸ñ°ú »ó¼¼¼³¸í µî ¿É¼Ç ½ºÅ°¸¶¿¡ ´ëÇÑ °³°ýÀûÀÎ Á¤º¸¸¦ ±â¼úÇÑ´Ù. HEADER ºÎºÐÀÇ Çü½ÄÀº ´ÙÀ½°ú °°´Ù.

<HEADER>
    <CAPTION>...</CAPTION> 
    <DESCRIPTION>...</DESCRIPTION> 
</HEADER>

Body Contents

BODY ºÎºÐ¿¡´Â ½ÇÁ¦·Î ¿É¼Ç ½ºÅ°¸¶¿¡ Æ÷ÇԵǴ ¸ðµç ¿É¼Ç Ç׸ñµéÀ» °èÃþÀûÀ¸·Î ±¸ºÐÇÏ¿© Á¤ÀÇÇÑ´Ù.

<BODY>
    <OPTIONCATEGORY>
        <CAPTION>...</CAPTION>
        <DESCRIPTION>...</DESCRIPTION>
        <OPTIONCLASSIFICATION>
            <CAPTION>...</CAPTION>
            <DESCRIPTION>...</DESCRIPTION>
            <OPTIONITEM>
               ...
            </OPTIONITEM>
            ...             
        </OPTIONCLASSIFICATION>
         ... 
    </OPTIONCATEGORY>
     ... 
</BODY>

¿É¼Ç Ç׸ñ Á¤ÀÇ

OPTIONCLASSIFICATION ¿ä¼Ò ÇϺο¡´Â ¿©·¯ °³ÀÇ ¿É¼Ç Ç׸ñÀ» Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. ¿É¼Ç Ç׸ñÀÇ Å¸ÀÔÀº ´Ü¼øÇÑ ¹®ÀÚ¿­¸¸ÀÌ ¾Æ´Ï¶ó Á¤¼ö, ½Ç¼ö, ³í¸®Çü, ¿­°ÅÇü µî ¸î °¡Áö ÇüÅ·Π¸í½ÃÈ­µÇ¾î ÀÖ´Ù. ¿É¼Ç ´ÙÀ̾ó·Î±×¿¡¼­´Â ¿É¼Ç Ç׸ñÀÇ Å¸ÀÔ¿¡ µû¶ó ¿É¼Ç °ª ÀÔ·ÂÀ» À§ÇÑ Á¤º¸¸¦ Á¦°øÇϰųª ÀÔ·ÂÇÒ ¼ö ÀÖ´Â °ªÀ» Á¦ÇÑÇÑ´Ù.

StarUML¿¡¼­ Á¦°øÇÏ´Â ¿É¼Ç Ç׸ñÀÇ Å¸ÀÔÀº ´ÙÀ½°ú °°´Ù.

¿É¼Ç Ç׸ñ ŸÀÔ XML ¿ä¼Ò À̸§ ¿É¼Ç ´ÙÀ̾ó·Î±×¿¡¼­ÀÇ ÀÔ·Â ÇüÅÂ
Á¤¼ö (integer) OPTIONITEM-INTEGER Á¤¼ö ¹üÀ§ÀÇ ¼ýÀÚ¸¸ ÀÔ·Â ÇÒ ¼ö ÀÖ´Ù.
½Ç¼ö (real) OPTIONITEM-REAL ½Ç¼ö ¹üÀ§ÀÇ ¼ýÀÚ¸¸ ÀÔ·Â ÇÒ ¼ö ÀÖ´Ù.
¹®ÀÚ¿­ (string) OPTIONITEM-STRING ¹®ÀÚ¿­ °ªÀ» ÀÔ·Â ¹Þ´Â´Ù.
³í¸®Çü (boolean) OPTIONITEM-BOOLEAN üũ¹Ú½º·Î True / False¸¦ ÀÔ·Â ¹Þ´Â´Ù.
ÅؽºÆ® (text) OPTIONITEM-TEXT ÀÔ·Â ½Ã ÅؽºÆ®¹Ú½º°¡ Æ˾÷ µÇ¾î °Å±â¿¡ ¿©·¯ ÁÙÀ» ÀÔ·ÂÇÒ ¼ö ÀÖ´Ù.
¿­°ÅÇü (enumeration) OPTIONITEM-ENUMERATION OPTION-ENUMERATIONITEMÀ¸·Î Á¤ÀÇµÈ ¿©·¯ °³ÀÇ ¿­°ÅÇ׸ñÀ» ÄÞº¸¹Ú½º¿¡¼­ ¼±ÅÃÇÒ ¼ö ÀÖ´Ù.
±ÛÀÚü (font name) OPTIONITEM-FONTNAME ½Ã½ºÅÛ¿¡ ¼³Ä¡µÈ ±ÛÀÚü ¸ñ·Ï Áß¿¡¼­ Çϳª¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ´Ù.
ÆÄÀϸí (file name) OPTIONITEM-FILENAME ÆÄÀϸíÀ» Á÷Á¢ ÀÔ·ÂÇϰųª ÆÄÀÏ ¿­±â ´ÙÀ̾ó·Î±×¸¦ ÅëÇؼ­ ÆÄÀÏÀ» ÁöÁ¤ÇÑ´Ù.
°æ·Î¸í (path name) OPTIONITEM-PATHNAME µð·ºÅ丮(directory)¸¦ Á÷Á¢ ÀÔ·ÂÇϰųª °æ·Î ÁöÁ¤ ´ÙÀ̾ó·Î±×¸¦ ÅëÇؼ­ °æ·Î¸¦ ÁöÁ¤ÇÑ´Ù.
»ö»ó (color) OPTIONITEM-COLOR »ö»ó ÄÞº¸¹Ú½º¿¡¼­ »ö»óÀ» ¼±ÅÃÇϰųª »ö»ó ´ÙÀ̾ó·Î±×¿¡¼­ »öÀ» ÁöÁ¤ÇÑ´Ù.
¹üÀ§Çü (range) OPTIONITEM-RANGE ÁöÁ¤µÈ ¹üÀ§ ³»ÀÇ Á¤¼ö °ªÀ» ÀÔ·Â ¹Þ´Â´Ù. ½ºÇɹöÆ°À¸·Î ÁöÁ¤µÈ ½ºÅܸ¸Å­ °ªÀ» º¯°æ½Ãų ¼ö ÀÖ´Ù.

¾Æ·¡´Â ¿É¼Ç ½ºÅ°¸¶ ÆÄÀÏ¿¡¼­ OPTIONCLASSIFICATION ÇϺο¡ ¿É¼Ç Ç׸ñ Á¤ÀÇ Æ÷¸ËÀ» º¸ÀÎ °ÍÀÌ´Ù.

<OPTIONCLASSIFICATION>
    <OPTIONITEM-INTEGER key="...">
        <CAPTION>...</CAPTION>
        <DESCRIPTION>...</DESCRIPTION>
        <DEFAULTVALUE>...</DEFAULTVALUE>
    </OPTIONITEM-INTEGER>
    <OPTIONITEM-REAL key="...">
        <CAPTION>...</CAPTION>
        <DESCRIPTION>...</DESCRIPTION>
        <DEFAULTVALUE>...</DEFAULTVALUE>
    </OPTIONITEM-REAL>
    <OPTIONITEM-STRING key="...">
        <CAPTION>...</CAPTION>
        <DESCRIPTION>...</DESCRIPTION>
        <DEFAULTVALUE>...</DEFAULTVALUE>
    </OPTIONITEM-STRING>
    <OPTIONITEM-BOOLEAN key="...">
        <CAPTION>...</CAPTION>
        <DESCRIPTION>...</DESCRIPTION>
        <DEFAULTVALUE>...</DEFAULTVALUE>
    </OPTIONITEM-BOOLEAN>
    <OPTIONITEM-TEXT key="...">
        <CAPTION>...</CAPTION>
        <DESCRIPTION>...</DESCRIPTION>
        <DEFAULTVALUE>...</DEFAULTVALUE>
    </OPTIONITEM-TEXT>
    <OPTIONITEM-ENUMERATION key="...">
        <CAPTION>...</CAPTION>
        <DESCRIPTION>...</DESCRIPTION>
        <DEFAULTVALUE>...</DEFAULTVALUE>
        <ENUMERATIONITEM>...</ENUMERATIONITEM>
        ...
    </OPTIONITEM-ENUMERATION>
    <OPTIONITEM-FONTNAME key="...">
        <CAPTION>...</CAPTION>
        <DESCRIPTION>...</DESCRIPTION>
        <DEFAULTVALUE>...</DEFAULTVALUE>
    </OPTIONITEM-FONTNAME>
    <OPTIONITEM-FILENAME key="...">
        <CAPTION>...</CAPTION>
        <DESCRIPTION>...</DESCRIPTION>
        <DEFAULTVALUE>...</DEFAULTVALUE>
    </OPTIONITEM-FILENAME>
    <OPTIONITEM-PATHNAME key="...">
        <CAPTION>...</CAPTION>
        <DESCRIPTION>...</DESCRIPTION>
        <DEFAULTVALUE>...</DEFAULTVALUE>
    </OPTIONITEM-PATHNAME>
    <OPTIONITEM-COLOR key="...">
        <CAPTION>...</CAPTION>
        <DESCRIPTION>...</DESCRIPTION>
        <DEFAULTVALUE>...</DEFAULTVALUE>
    </OPTIONITEM-COLOR>
    <OPTIONITEM-RANGE key="...">
        <CAPTION>...</CAPTION>
        <DESCRIPTION>...</DESCRIPTION>
        <DEFAULTVALUE>...</DEFAULTVALUE>
        <MINVALUE>...</MINVALUE>
        <MAXVALUE>...</MAXVALUE>
        <STEP>...</STEP>
    </OPTIONITEM-RANGE>
     ... 
</OPTIONITEMCLASSIFICATION>

´ÙÀ½Àº StarUMLÀÇ ±âº» ¿É¼Ç ½ºÅ°¸¶ÀÇ ÀϺκÐÀ» ¿¹Á¦·Î º¸ÀÎ °ÍÀÌ´Ù.

<?xml version="1.0" encoding="UTF-8" ?>
<OPTIONSCHEMA id="ENVIRONMENT">
    <HEADER>
        <CAPTION>Environment</CAPTION>
        <DESCRIPTION> </DESCRIPTION>
    </HEADER>
    <BODY>
        <OPTIONCATEGORY>
            <CAPTION>General</CAPTION>
            <DESCRIPTION>General Configuration is a group of the basic and general option items for the program. This category includes the [General], [Browser], [Collection Editor] and [Web] subcategories.</DESCRIPTION>
            <OPTIONCLASSIFICATION>
                <CAPTION>General</CAPTION>
                <DESCRIPTION></DESCRIPTION>
                <OPTIONITEM-RANGE key="UNDO_LEVEL">
                    <CAPTION>Max. number of undo actions</CAPTION>
                    <DESCRIPTION>Specifies the maximum number of actions for undo and redo.</DESCRIPTION>
                    <DEFAULTVALUE>30</DEFAULTVALUE>
                    <MINVALUE>1</MINVALUE>
                    <MAXVALUE>100</MAXVALUE>
                    <STEP>1</STEP>
                </OPTIONITEM-RANGE>
                <OPTIONITEM-BOOLEAN key="CREATE_BACKUP">
                    <CAPTION>Create backup files</CAPTION>
                    <DESCRIPTION>Specifies whether to create backup files when saving changes.</DESCRIPTION>
                    <DEFAULTVALUE>True</DEFAULTVALUE>
                </OPTIONITEM-BOOLEAN>
            </OPTIONCLASSIFICATION>
        </OPTIONCATEGORY>
    </BODY>
</OPTIONSCHEMA>

¿É¼Ç ½ºÅ°¸¶ µî·ÏÇϱâ

ÀÛ¼ºµÈ ¿É¼Ç ½ºÅ°¸¶ ÆÄÀÏÀ» ÇÁ·Î±×·¥¿¡¼­ ÀνÄÇÏ·Á¸é ¸Þ´º È®Àå ÆÄÀÏÀ» StarUML™ ¸ðµâ µð·ºÅ丮(<install-dir>\modules) ÇϺΠµð·ºÅ丮·Î ¿Å°Ü¾ß ÇÑ´Ù. StarUML™Àº ÇÁ·Î±×·¥ ÃʱâÈ­ ½Ã¿¡ ¸ðµâ µð·ºÅ丮 ÇϺθ¦ °Ë»öÇÏ¿© ¸ðµç ¿É¼Ç ½ºÅ°¸¶ ÆÄÀϵéÀ» ÀÐ¾î µéÀÎ ÈÄ ÇÁ·Î±×·¥¿¡ ÀÚµ¿ µî·ÏÇÑ´Ù. ¸¸¾à ¿É¼Ç ½ºÅ°¸¶ ÆÄÀÏÀÌ ¹®¹ý¿¡ ¸ÂÁö ¾Ê°Ô Àß ¸ø ÀÛ¼ºµÇ¾î Àְųª, È®ÀåÀÚ°¡ .opt°¡ ¾Æ´Ñ °æ¿ì¿¡´Â ¿É¼Ç ½ºÅ°¸¶ ÆÄÀÏÀ» Á¤»óÀûÀ¸·Î ÀÐ¾î µéÀÌÁö ¾Ê°í ¹«½ÃÇÏ°Ô µÉ °ÍÀÌ´Ù.
¿É¼Ç ½ºÅ°¸¶ ÆÄÀÏÀº °¡±ÞÀûÀ̸é Add-In ½ÇÇà¸ðµâÀÌ Æ÷ÇԵǾî ÀÖ´Â µð·ºÅ丮¿Í µ¿ÀÏÇÑ µð·ºÅ丮¿¡ ¼³Ä¡ÇÏ´Â °ÍÀ» ±Ç°íÇÑ´Ù.

³ëÆ®: ¿É¼Ç ½ºÅ°¸¶¸¦ ´õ ÀÌ»ó »ç¿ëÇÏÁö ¾ÊÀ¸·Á¸é StarUML™ ¸ðµâ µð·ºÅ丮(<install-dir>\modules) ÇϺο¡¼­ »èÁ¦ÇÏ¸é µÈ´Ù.

¿É¼Ç°ª Á¢±ÙÇϱâ

COM ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÏ¿© ¿É¼Ç°ª Á¢±ÙÇϱâ

StarUMLÀÇ COM ÀÎÅÍÆäÀ̽º¸¦ ÀÌ¿ëÇÏ¸é »ç¿ëÀÚ°¡ ¿É¼Ç´ÙÀ̾ó·Î±×¸¦ ÅëÇØ º¯°æÇÑ ¿É¼Ç Ç׸ñÀÇ °ªÀ» ÂüÁ¶ ÇÒ ¼ö ÀÖ´Ù. IStarUMLApplicationÀÇ GetOptionValue()´Â ÀÔ·Â ¹ÞÀº SchemaID¿Í ¿É¼ÇÀÇ Key·ÎºÎÅÍ ¿É¼ÇÀÇ °ªÀ» Variant·Î ¸®ÅÏÇØÁØ´Ù. GetOptionValue()ÀÇ È£Ãâ Çü½ÄÀº ´ÙÀ½°ú °°´Ù.

IStarUMLApplication.GetOptionValue(SchemaID: String, Key: String): Variant

GetOptionValue()ÀÇ Variant ŸÀÔÀÇ ¸®ÅÏ°ªÀº °¢ ¿É¼Ç Ç׸ñÀÇ Å¸ÀÔ¿¡ µû¶ó¼­ ij½ºÆÃÇÏ¿© »ç¿ëÇÏ¸é µÈ´Ù. ±×·¯³ª, Jscript ³ª VBscriptó·³ ŸÀÔ °Ë»ç¸¦ ÇÏÁö ¾Ê´Â ¾ð¾î¿¡¼­´Â º°µµÀÇ Å¸ÀÔ Ä³½ºÆà ÀýÂ÷ ¾øÀÌ ¹Ù·Î °ªÀ» Àоî¿Ã ¼ö ÀÖ´Ù.

´ÙÀ½Àº StarUMLÀÇ ±âº» ¿É¼Ç ½ºÅ°¸¶¿¡ Á¤ÀǵǾî ÀÖ´Â "UNDO_LEVEL" ¿É¼Ç Ç׸ñÀÇ °ªÀ» ¾ò¾î¿Í¼­ ¸Þ¼¼Áö »óÀÚ·Î Ãâ·ÂÇÏ´Â JScript ¿¹Á¦ÀÌ´Ù.

var app = new ActiveXObject("StarUML.StarUMLApplication");
var undoLevel = app.GetOptionValue("ENVIRONMENT", "UNDO_LEVEL");

WScript.Echo("Max. number of undo actions : " + undoLevel);

¿É¼Ç°ªÀÇ À̺¥Æ® º¯°æ ó¸®Çϱâ

StarUMLÀº IEventSubscriber¸¦ ±¸ÇöÇÑ Add-inµé¿¡°Ô ÇÁ·Î±×·¥ÀÇ Á¶ÀÛ °úÁ¤¿¡¼­ ¹ß»ýÇÏ´Â À̺¥Æ®¸¦ ÀüÆÄÇØÁØ´Ù. »ç¿ëÀÚ°¡ ¿É¼Ç ´ÙÀ̾ó·Î±×¸¦ ÅëÇØ ¿É¼Ç°ªÀ» º¯°æÇÏ¸é ¾ÖÇø®ÄÉÀ̼ÇÀº IEventSubscriber¸¦ ±¸ÇöÇÑ Add-inµéÀÇ À̺¥Æ® Çڵ鷯- NotifyEvent()-¸¦ È£ÃâÇÑ´Ù. ¿É¼Ç°ªÀÌ º¯°æµÇ¾úÀ» ¶§ ¿É¼Ç °ªÀ» Áï½Ã Add-in¿¡ ¹Ý¿µÇÏ·Á¸é IEventSubscriberÀ» ±¸ÇöÇÏ°í NotifiyEvent()¸Þ½áµå ³»¿¡¼­ EVK_OPTIONS_APPLIED À̺¥Æ®À϶§ IStarUMLApplication.GetOptionValue() ¸Þ½áµå¸¦ »ç¿ëÇÏ¿© Á÷Á¢ ¿É¼Ç°ªÀ» ÀÐ¾î ¿À¸é µÈ´Ù. VBScript³ª JScriptµî ½ºÅ©¸³Æ®¸¦ »ç¿ëÇÏ´Â Add-inµéÀº IEventSubscriber¸¦ ±¸ÇöÇÒ ¼ö ¾øÀ¸¹Ç·Î »ç¿ëÀÚ¿¡ ÀÇÇÑ ¿É¼Ç°ª º¯°æ ½Ã¿¡ À̸¦ Add-in¿¡ ¹Ù·Î ¹Ý¿µÇÒ ¼ö ¾ø´Ù.

À̺¥Æ® Çڵ鸵¿¡ °üÇÑ ´õ ÀÚ¼¼ÇÑ ³»¿ëÀº ´ÙÀ½ ¼½¼Ç¿¡¼­ ´Ù·ç¾î Áú °ÍÀÌ´Ù.

À̺¥Æ® ¼ö½ÅÀÇ ±âº» °³³ä

IEventSubscriber ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ´Â Add-In °³Ã¼´Â StarUML ¾ÖÇø®ÄÉÀ̼ÇÀÇ ´Ù¾çÇÑ ³»ºÎ À̺¥Æ®(Event)µéÀ» ÀüÆÄ ¹ÞÀ» ¼ö ÀÖ´Ù. StarUML ¾ÖÇø®ÄÉÀ̼ÇÀº ³»ºÎ À̺¥Æ®°¡ ¹ß»ýÇÒ ¶§ ¸¶´Ù µî·ÏµÈ IEventSubscriber ŸÀÔ °³Ã¼µéÀÇ NotifyEvent ¸Þ¼Òµå¸¦ È£ÃâÇÑ´Ù.

¾Æ·¡ÀÇ Å¬·¡½º ´ÙÀ̾î±×·¥Àº À̺¥Æ® ¼ö½Å°ú °ü·ÃµÈ ¿ÜºÎ API ÀÎÅÍÆäÀ̽ºµéÀÇ ±¸Á¶¸¦ º¸¿©ÁÖ°í ÀÖ´Ù.

À̺¥Æ®ÀÇ Á¾·ù

À§ÀÇ ±×¸²¿¡¼­ EventKind ¿­°Åü(Enumeration)´Â IEventSubscriber ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ´Â Add-In °³Ã¼°¡ ¼ö½ÅÇÒ ¼ö ÀÖ´Â StarUML ¾ÖÇø®ÄÉÀÌ¼Ç ³»ºÎ À̺¥Æ®ÀÇ Á¾·ù¸¦ Á¤ÀÇÇÏ°í ÀÖ´Ù. EventKind ¿­°ÅüÀÇ °¢ ¸®ÅÍ·²ÀÇ Àǹ̴ ´ÙÀ½ Ç¥¿Í °°´Ù.

À̺¥Æ® Á¾·ù (¸®ÅÍ·²) Á¤¼ö °ª À̺¥Æ® ¼³¸í
EVK_APPLICATION_ACTIVATE 0 StarUML ¾ÖÇø®ÄÉÀ̼ÇÀÇ Ã¢(Window)ÀÌ È°¼ºÈ­(activate)µÉ ¶§ ¹ß»ýÇÑ´Ù.
EVK_APPLICATION_DEACTIVATE 1 StarUML ¾ÖÇø®ÄÉÀ̼ÇÀÇ Ã¢ÀÌ ºñÈ°¼ºÈ­(deactivate)µÉ ¶§ ¹ß»ýÇÑ´Ù.
EVK_APPLICATION_MINIMIZE 2 StarUML¾ÖÇø®ÄÉÀ̼ÇÀÇ Ã¢ÀÌ ÃÖ¼ÒÈ­µÉ ¶§ ¹ß»ýÇÑ´Ù.
EVK_APPLICATION_RESTORE 3 ÃÖ¼ÒÈ­µÈ StarUML¾ÖÇø®ÄÉÀ̼ÇÀÇ Ã¢ÀÌ ÀÌÀü Å©±â·Î º¹±¸µÉ ¶§ ¹ß»ýÇÑ´Ù.
EVK_OPTIONS_APPLIED 4 ¿É¼Ç °ªÀÌ º¯°æµÇ¾úÀ» ¶§ ¹ß»ýÇÑ´Ù.
EVK_PROJECT_OPENED 5 ÇÁ·ÎÁ§Æ® ¿ä¼Ò°¡ »ý¼ºµÇ¾ú°Å³ª ÇÁ·ÎÁ§Æ® ÆÄÀÏÀ» ¿­¾úÀ» ¶§ ¹ß»ýÇÑ´Ù.
EVK_PROJECT_SAVED 6 ÇÁ·ÎÁ§Æ®°¡ ÀúÀåµÇ¾úÀ» ¶§ ¸¶´Ù ¹ß»ýÇÑ´Ù.
EVK_PROJECT_CLOSING 7 ÇÁ·ÎÁ§Æ® ´Ý±â¸¦ ¼±ÅÃÇßÀ» ¶§ ¹ß»ýÇÑ´Ù.
EVK_PROJECT_CLOSED 8 ÇÁ·ÎÁ§Æ®°¡ ´ÝÇûÀ» ¶§ ¹ß»ýÇÑ´Ù.
EVK_DOCUMENT_MODIFIED 9 µµÅ¥¸ÕÆ®(ÇÁ·ÎÁ§Æ®, À¯´Ö)°¡ º¯°æµÇ¾úÀ» ¶§ ¹ß»ýÇÑ´Ù.
EVK_DOCUMENT_SAVED 10 µµÅ¥¸ÕÆ®(ÇÁ·ÎÁ§Æ®, À¯´Ö)°¡ ÀúÀåµÇ¾úÀ» ¶§ ¹ß»ýÇÑ´Ù.
EVK_UNIT_SEPARATED 11 À¯´Ö(Unit) ¿ä¼Ò·Î ºÐ¸®µÇ¾úÀ» ¶§ ¹ß»ýÇÑ´Ù.
EVK_UNIT_MERGED 12 ºÐ¸®µÈ À¯´Ö ¿ä¼Ò°¡ º´ÇյǾúÀ» ¶§ ¹ß»ýÇÑ´Ù.
EVK_UNIT_OPENED 13 À¯´ÖÀÌ ºÒ·¯¿À±â µÇ¾úÀ» ¶§ ¹ß»ýÇÑ´Ù.
EVK_SELECTION_CHANGED 14 ¸ðµ¨¸µ ¿ä¼ÒÀÇ ¼±ÅÃÀÌ º¯°æµÉ ¶§ ¹ß»ýÇÑ´Ù.
EVK_DIAGRAM_ACTIVATED 15 ´ÙÀ̾î±×·¥ÀÌ ¿­¸± ¶§ ¹ß»ýÇÑ´Ù.
EVK_ELEMENTS_ADDED 16 »õ·Î¿î ¸ðµ¨¸µ ¿ä¼Ò°¡ »ý¼ºµÇ¾úÀ» ¶§ ¸¶´Ù ¹ß»ýÇÑ´Ù.
EVK_ELEMENTS_DELETING 17 ¸ðµ¨¸µ ¿ä¼Ò¸¦ »èÁ¦ÇÒ ¶§ ¹ß»ýÇÑ´Ù.
EVK_ELEMENTS_DELETED 18 ¸ðµ¨¸µ ¿ä¼Ò°¡ »èÁ¦µÇ¾úÀ» ¶§ ¹ß»ýÇÑ´Ù.
EVK_MODELS_CHANGED 19 ¸ðµ¨ ¿ä¼ÒÀÇ ¼Ó¼º °ªÀÌ º¯°æµÇ¾úÀ» ¶§ ¹ß»ýÇÑ´Ù.
EVK_VIEWS_CHANGED 20 ºä ¿ä¼ÒÀÇ ¼Ó¼º °ªÀÌ º¯°æµÇ¾úÀ» ¶§ ¹ß»ýÇÑ´Ù.

À̺¥Æ® ¼ö½ÅÇϱâ

StarUML ¾ÖÇø®ÄÉÀ̼ÇÀÇ À̺¥Æ®¸¦ ¼ö½ÅÇÏ·Á´Â Add-In °³Ã¼´Â ¸ðµç StarUML Add-InµéÀÇ °øÅë»çÇ×ÀÎ IStarUMLAddIn ÀÎÅÍÆäÀ̽º ¿Ü¿¡ Ãß°¡·Î IEventSubscriber ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇØ¾ß ÇÑ´Ù.

´ÙÀ½ ¿¹Á¦´Â IStarUMLAddIn ÀÎÅÍÆäÀ̽º¿Í IEventSubscriber ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ´Â StarUML Add-In °³Ã¼ÀÇ Å¬·¡½º Á¤ÀǸ¦ º¸¿©ÁØ´Ù. ¿¹Á¦´Â µ¨ÆÄÀÌ ÆĽºÄ®(Delphi Pascal) ÄÚµå·Î ¾²¿©Á³´Ù.

type
    AddInExample = class(TComObject, IStarUMLAddIn, IEventSubscriber)
    private
        StarUMLApp: IStarUMLApplication;
        EventPub: IEventPublisher;
    protected
        function InitializeAddIn: HResult; stdcall;
        function FinalizeAddIn: HResult; stdcall;
        function DoMenuAction(ActionID: Integer): HResult; stdcall;
        function NotifyEvent(AEvent: EventKind): HResult; stdcall;
        ...
    public
        procedure Initialize; override;
        destructor Destroy; override;
        ...
    end;

À̺¥Æ® ¼ö½Å µî·Ï ¹× ÇØÁö

IEventSubscriber ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÑ Add-In °³Ã¼°¡ ½ÇÁ¦·Î À̺¥Æ®¸¦ ¼ö½ÅÇϱâ À§Çؼ­´Â À̺¥Æ® ¼ö½ÅÀ» µî·ÏÇÏ´Â °úÁ¤ÀÌ ÇÊ¿äÇÏ´Ù. À̺¥Æ® ¼ö½Å µî·Ï°ú ÇØÁö´Â IEventPublisher ŸÀÔ °³Ã¼¸¦ ÅëÇØ ÇÒ ¼ö Àִµ¥, IEventPublisher ŸÀÔ °³Ã¼´Â IStarUMLApplication ¿ä¼Ò¸¦ ÅëÇØ ¾òÀ» ¼ö ÀÖ´Ù. ¾Æ·¡ÀÇ ¿¹Á¦´Â µ¨ÆÄÀÌ ÆĽºÄ® Äڵ忡¼­ IStarUMLApplication°ú IEventPublisher ŸÀÔ °³Ã¼ÀÇ ÂüÁ¶¸¦ ¾ò´Â °ÍÀ» º¸¿©ÁÖ°í ÀÖ´Ù.

implementation

procedure AddInExample.Initialize;
begin
    inherited;
    StarUMLApp := CreateOleObject('StarUML.StarUMLApplication') as IStarUMLApplication;
    EventPub := StarUMLApp.EventPublisher;
end;

destructor AddInExample.Destroy;
begin
    EventPub := nil;
    StarUMLApp := nil;
    inherited;
end;

±×¸®°í IEventPublisher ÀÎÅÍÆäÀ̽º´Â À̺¥Æ® ¼ö½Å µî·Ï°ú ÇØÁö¸¦ Áö¿øÇÏ´Â ´ÙÀ½°ú °°Àº ¸Þ¼ÒµåµéÀ» Á¦°øÇÑ´Ù. °¢ ¸Þ¼Òµå¿¡¼­ "ASubscriber" ÀÎÀÚ´Â IEventSubscriber ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÑ Add-In °³Ã¼ ÀÚ½ÅÀÌ´Ù.

¸Þ¼Òµå ¼³¸í
Subscribe(ASubscriber: IEventSubscriber; AEvent: EventKind) AEvent ÀÎÀÚ°¡ ÁöÁ¤ÇÏ´Â À̺¥Æ®¿¡ ´ëÇÑ ¼ö½ÅÀ» µî·ÏÇÑ´Ù.
SubscribeAll(ASubscriber: IEventSubscriber) ¸ðµç À̺¥Æ®¿¡ ´ëÇÑ ¼ö½ÅÀ» µî·ÏÇÑ´Ù.
Unsubscribe(ASubscriber: IEventSubscriber; AEvent: EventKind) AEvent ÀÎÀÚ°¡ ÁöÁ¤ÇÏ´Â À̺¥Æ®¿¡ ´ëÇÑ ¼ö½ÅÀ» ÇØÁöÇÑ´Ù.
UnsubscribeAll(ASubscriber: IEventSubscriber) ¸ðµç À̺¥Æ®¿¡ ´ëÇÑ ¼ö½ÅÀ» ÇØÁöÇÑ´Ù.

Add-In °³Ã¼°¡ ƯÁ¤ À̺¥Æ® ¸¸À» ¼ö½ÅÇÏ°íÀÚ ÇÒ ¶§´Â Subscribe ¸Þ¼Òµå¸¦ »ç¿ëÇÑ´Ù. ¿¹¸¦ µé¾î µÎ °¡ÁöÀÇ Æ¯Á¤ À̺¥Æ®¿¡ ´ëÇؼ­¸¸ ¼ö½ÅÀ» ÇÏ°íÀÚ ÇÏ´Â °æ¿ì, °¢°¢ÀÇ À̺¥Æ®¿¡ ´ëÇØ Subscribe ¸Þ¼Òµå¸¦ È£ÃâÇØ¾ß ÇÑ´Ù. ¸ðµç À̺¥Æ®µéÀ» ¸ðµÎ ¼ö½Å Çϱ⸦ ¿øÇÑ´Ù¸é SubscribeAll ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¸é µÈ´Ù. ÀϹÝÀûÀ¸·Î Subscribe, SubscribeAll ¸Þ¼Òµå´Â IStarUMLAddIn .InitializeAddIn ¸Þ¼Òµå ±¸Çö¿¡¼­ È£ÃâÇÑ´Ù.

Add-In °³Ã¼´Â ¼ö½Å µî·ÏÇÑ À̺¥Æ®¸¦ ´õ ÀÌ»ó ¼ö½ÅÇÒ ÇÊ¿ä°¡ ¾øÀ» ¶§(°³Ã¼°¡ ¼Ò¸êµÉ ¶§ µî) ÀÚ½ÅÀÌ µî·ÏÇÑ ¸ðµç À̺¥Æ®µé¿¡ ´ëÇØ µî·ÏÀ» ÇØÁöÇØ¾ß ÇÑ´Ù. Subscribe ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© ¼ö½Å µî·ÏÀ» ÇÑ °æ¿ì¿¡´Â Unsubscribe ¸Þ¼Òµå¸¦ »ç¿ëÇÏ°í, SubscribeAll ¸Þ¼Òµå¸¦ »ç¿ëÇÑ °æ¿ì¿¡´Â UnsubscribeAll ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© µî·ÏÀ» ÇØÁöÇÑ´Ù. ÀϹÝÀûÀ¸·Î Unsubscribe, SubscribeAll ¸Þ¼Òµå´Â IStarUMLAddIn.FinalizeAddIn ¸Þ¼Òµå ±¸Çö¿¡¼­ È£ÃâÇÑ´Ù.

´ÙÀ½Àº EVK_ELEMENTS_ADDED, EVK_ELEMENTS_DELETED µÎ À̺¥Æ®¿¡ ´ëÇÑ ¼ö½Å µî·Ï°ú ÇØÁö¸¦ ÇÏ´Â ¿¹ÀÌ´Ù.

implementation

function AddInExample.InitializeAddIn: HResult;
begin
    EventPub.Subscribe(Self, EVK_ELEMENTS_ADDED);
    EventPub.Subscribe(Self, EVK_ELEMENTS_DELETED);
    ...
    Result := S_OK;
end;

function AddInExample.FinalizeAddIn: HResult;
begin
    EventPub.Unsubscribe(Self, EVK_ELEMENTS_ADDED);
    EventPub.Unsubscribe(Self, EVK_ELEMENTS_DELETED);
    ...
    Result := S_OK;
end;

À̺¥Æ® ÀÎÀÚ ¾ò¾î¿À±â

°¢ À̺¥Æ®°¡ ¹ß»ýÇßÀ» ¶§ ÇØ´ç À̺¥Æ®¿Í °ü·ÃµÈ ¾Æ±Ô¸ÕÆ®(Argument)¸¦ ¾ò¾î¾ß ÇÒ Çʿ伺ÀÌ ÀÖ´Ù. ¿¹¸¦ µé¾î ¸ðµ¨¸µ ¿ä¼ÒÀÇ »ý¼º°ú °ü·ÃµÈ(EVK_ELEMENTS_ADDED) À̺¥Æ®°¡ ¹ß»ýÇßÀ» ¶§ ¾î¶² ¸ðµ¨¸µ ¿ä¼Ò°¡ »ý¼ºµÇ¾ú´ÂÁö¸¦ ¾Ë¾Æ¾ß ÇÏ´Â °æ¿ì µîÀÌ´Ù. IEventPublisher ÀÎÅÍÆäÀ̽º´Â À̺¥Æ® ¾Æ±Ô¸ÕÆ®¿Í °ü·ÃÇÏ¿© ´ÙÀ½°ú °°Àº ¸Þ¼ÒµåµéÀ» Á¦°øÇÏ°í ÀÖ´Ù.

¸Þ¼Òµå ¼³¸í
GetEventArgModelCount (): Integer À̺¥Æ®¿Í °ü·ÃµÈ ¸ðµ¨ ¿ä¼ÒµéÀÇ °³¼ö¸¦ ¹ÝȯÇÑ´Ù.
GetEventArgModelAt(Index: Integer): IModel À̺¥Æ®¿Í °ü·ÃµÈ ¸ðµ¨ ¿ä¼Òµé Áß¿¡¼­ Index ¹ø° ¿ä¼Ò¿¡ ´ëÇÑ ÂüÁ¶¸¦ ¹ÝȯÇÑ´Ù.
GetEventArgViewCount: Integer À̺¥Æ®¿Í °ü·ÃµÈ ºä ¿ä¼ÒµéÀÇ °³¼ö¸¦ ¹ÝȯÇÑ´Ù.
GetEventArgViewAt(Index: Integer): IView À̺¥Æ®¿Í °ü·ÃµÈ ºä ¿ä¼Òµé Áß¿¡¼­ Index ¹ø° ¿ä¼Ò¿¡ ´ëÇÑ ÂüÁ¶¸¦ ¹ÝȯÇÑ´Ù.
GetEventArgDocument: IDocument À̺¥Æ®¿Í °ü·ÃµÈ µµÅ¥¸ÕÆ®(Document) ¿ä¼Ò¿¡ ´ëÇÑ ÂüÁ¶¸¦ ¹ÝȯÇÑ´Ù.
GetEventArgUnit: IUMLUnitDocument À̺¥Æ®¿Í °ü·ÃµÈ À¯´Ö(Unit) ¿ä¼Ò¿¡ ´ëÇÑ ÂüÁ¶¸¦ ¹ÝȯÇÑ´Ù.

À̺¥Æ® ó¸®Çϱâ

Add-In¿¡¼­ À̺¥Æ® ¼ö½ÅÀ» µî·ÏÇß´Ù¸é µî·ÏÇÑ À̺¥Æ®°¡ ¹ß»ýÇßÀ» ¶§ ÇÊ¿äÇÑ Ã³¸®¸¦ ÇØ¾ß ÇÒ °ÍÀÌ´Ù. StarUML ¾ÖÇø®ÄÉÀ̼ÇÀº µî·ÏµÈ À̺¥Æ®°¡ ¹ß»ýÇÒ ¶§ ¸¶´Ù ÇØ´ç Add-InÀÇ NotifyEvent ¸Þ¼Òµå¸¦ È£ÃâÇϸç, ¹ß»ýÇÒ À̺¥Æ®ÀÇ Á¾·ù¸¦ ÀÎÀÚ·Î Àü´ÞÇÑ´Ù. NotifyEvent ¸Þ¼ÒµåÀÇ ÀÎÀÚ·Î À̺¥Æ®ÀÇ Á¾·ù¸¦ Àü´ÞÇÏ´Â ÀÌÀ¯´Â Add-InÀÌ Çϳª ÀÌ»óÀÇ À̺¥Æ®¿¡ ´ëÇÑ ¼ö½Å µî·ÏÀ» ÇßÀ» °¡´É¼ºÀÌ Àֱ⠶§¹®ÀÌ´Ù. °¢ Add-InÀº NotifyEvent ¸Þ¼Òµå¿¡¼­ À̺¥Æ®ÀÇ Á¾·ùº°·Î ÇÊ¿äÇÑ Ã³¸®¸¦ ÇÏ´Â ·ÎÁ÷(logic)À» ±¸ÇöÇÏ¸é µÈ´Ù.

´ÙÀ½Àº NotifyEvent ¸Þ¼Òµå¸¦ ±¸ÇöÇÑ ¿¹Á¦ÀÌ´Ù. ÀÌ ¿¹Á¦¿¡¼­´Â StarUML ¾ÖÇø®ÄÉÀ̼ǿ¡ ¿¬°ü(UMLAssociation) ¿ä¼Ò³ª ÀϹÝÈ­(UMLGeneralization) ¿ä¼Ò°¡ »ý¼ºµÇ¾úÀ» ¶§, °¢ ¿ä¼ÒÀÇ ¿¬°áÀÌ ÀǹÌÀûÀ¸·Î À¯È¿ÇÑÁö¸¦ °Ë»çÇÏ°í ÀÖ´Ù. (ÀÌ ¿¹Á¦´Â À§ÀÇ ¿¹Á¦µé°ú ¿¬°áµÇ¹Ç·Î Add-In °³Ã¼ÀÇ Á¤ÀǺκÐÀº À§ÀÇ ¿¹Á¦¸¦ Âü°íÇϱ⠹ٶõ´Ù.)

implementation

function AddInExample.NotifyEvent(AEvent: EventKind): HResult;
var
    M: IModel;
    Assoc: IUMLAssociation;
    Gen: IUMLGeneralization;
    End1, End2: IUMLClassifier;
begin
    if AEvent = EVK_ELEMENTS_ADDED then 
    begin
        if EventPub.GetEventArgModelCount = 1 then 
        begin
            M := EventPub.GetEventArgModelAt(0);

            // Association
            if M.QueryInterface(IUMLAssociation, Assoc) = S_OK then 
            begin
                End1 := Assoc.GetConnectionAt(0).Participant;
                End2 := Assoc.GetConnectionAt(1).Participant
                if End1.IsKindOf('UMLPackage') or End2.IsKindOf('UMLPackage') then
                    ShowMessage('Packages cannot have associations.')
                ...
            end;

          // Generalization
          if M.QueryInterface(IUMLGeneralization, Gen) = S_OK then 
          begin
              if Gen.Child.IsRoot then
                  ShowMessage('Root elements cannot have parent elements.');
              if Gen.Parent.IsLeaf then
                  ShowMessage('Leaf elements cannot have child elements.');
           end;
        end;
    end;

    Result := S_OK;
end;

¡¡