ÄÁÅØ½ºÆ®¸¦ »ç¿ëÇÏ¿© ÇØ´ç ½ÃÁ¡¿¡ »ç¿ëÀÚ°¡ »ç¿ëÇÒ ¼ö ÀÖ´Â ¸í·É¿¡ ¿µÇâÀ» ÁÙ ¼ö ÀÖ½À´Ï´Ù. ÄÁÅØ½ºÆ®´Â Ȱµ¿º¸´Ù µ¿ÀûÀÔ´Ï´Ù. Ȱµ¿ÀÌ ´ëºÎºÐÀÇ ½Ã°£¿¡ »ç¿ëÀÚ°¡ »ç¿ëÇÒ ¼ö ÀÖ´Â ±â´ÉÀÇ ±¤¹üÀ§ÇÑ ¼¼Æ®¸¦ Ç¥½ÃÇÏ´Â ¹Ý¸é, ÄÁÅØ½ºÆ®´Â ƯÁ¤ ½ÃÁ¡¿¡¼ »ç¿ëÀÚÀÇ ÃÊÁ¡À» ¼³¸íÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ÅØ½ºÆ®¸¦ ÆíÁýÇÏ´Â Áß »ç¿ëÀÚ°¡ »ç¿ëÇÒ ¼ö ÀÖ´Â ¸í·ÉÀº Java ÅØ½ºÆ®¸¦ ÆíÁýÇϰųª ÆÐŰÁö Ž»ö±â¿¡¼ ÆÐŰÁö¸¦ ã¾Æº¸´Â µ¿¾È »ç¿ëÀÚ°¡ »ç¿ëÇÒ ¼ö ÀÖ´Â °Í°ú ´Ù¸¦ ¼ö ÀÖ½À´Ï´Ù.
ÄÁÅØ½ºÆ®´Â org.eclipse.ui.contexts È®ÀåÁ¡¿¡¼ ¼±¾ðµË´Ï´Ù. ÅØ½ºÆ® ÆíÁý¿¡ Á¤ÀÇµÈ ´ÙÀ½ ÄÁÅØ½ºÆ®¸¦ °í·ÁÇϽʽÿÀ.
<extension point="org.eclipse.ui.contexts"> <context name="%context.editingText.name" description="%context.editingText.description" id="org.eclipse.ui.textEditorScope" parentId="org.eclipse.ui.contexts.window"> </context>»ç¿ëÀÚ¿¡°Ô ÄÁÅØ½ºÆ®¿¡ ´ëÇÑ Á¤º¸¸¦ Ç¥½ÃÇÒ ¶§ »ç¿ëµÇ´Â À̸§ ¹× ¼³¸íÀ» ÄÁÅØ½ºÆ®¿¡ ÁöÁ¤ÇÕ´Ï´Ù. ƯÁ¤ ÄÁÅØ½ºÆ®¿¡ ´ëÇÑ ¸í·É µî UI Áö½Ã¹®À» ¹ÙÀεåÇÒ ¶§ ÄÁÅØ½ºÆ® ID°¡ »ç¿ëµË´Ï´Ù.
ÄÁÅØ½ºÆ®´Â ¿ø·¡ °èÃþ ±¸Á¶ÀÔ´Ï´Ù. ÄÁÅØ½ºÆ®°¡ Ȱ¼ºÈµÇ¸é ÄÁÅØ½ºÆ® ¹× »óÀ§ ÄÁÅØ½ºÆ®¿¡¼ »ç¿ë °¡´ÉÇÑ ¸í·Éµµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. À̰ÍÀº ÀϹÝÀû »óȲ¿¡¼ º¸´Ù ±¸Ã¼ÀûÀÎ ÄÁÅØ½ºÆ®·Î À̵¿ÇÏ´Â ÄÁÅØ½ºÆ®ÀÇ ·¹º§À» Á¤ÀÇÇÏ´Â µ¥ À¯¿ëÇÕ´Ï´Ù. À§ ÄÁÅØ½ºÆ® Á¤ÀÇ¿¡¼ ÄÁÅØ½ºÆ®¿¡ ÁöÁ¤µÈ »óÀ§ÀÇ ID°¡ ÀÖ½À´Ï´Ù.
<context name="%context.editingText.name" description="%context.editingText.description" id="org.eclipse.ui.textEditorScope" parentId="org.eclipse.ui.contexts.window"> </context>»óÀ§ ÄÁÅØ½ºÆ®´Â â¿¡¼ ÀÛ¾÷ÀÇ Ãß°¡ ÀÏ¹Ý ÄÁÅØ½ºÆ®¸¦ Á¤ÀÇÇÕ´Ï´Ù. »óÀ§´Â âÀ̳ª ´ëÈ »óÀÚ¿¡¼ ÀÛ¾÷ÀÇ Ãß°¡ ÀÏ¹Ý ÄÁÅØ½ºÆ®¸¦ Á¤ÀÇÇÕ´Ï´Ù.
<context name="%context.window.name" description="%context.window.description" id="org.eclipse.ui.contexts.window" parentId="org.eclipse.ui.contexts.dialogAndWindow"> </context> <context name="%context.dialogAndWindow.name" description="%context.dialogAndWindow.description" id="org.eclipse.ui.contexts.dialogAndWindow"> </context>
Áö±Ý±îÁö ÄÁÅØ½ºÆ®ÀÇ °èÃþ ±¸Á¶ Á¤ÀÇ¿¡ ´ëÇØ »ìÆìº¸¾Ò½À´Ï´Ù. ÄÁÅØ½ºÆ®´Â ´Ù¸¥ UI Áö½Ã¹®¿¡ ´ëÇÑ ¼³¸í¿¡¼ ÂüÁ¶µÉ ¶§ À¯¿ëÇÕ´Ï´Ù. ÄÁÅØ½ºÆ®´Â Ű ¹ÙÀεù¿¡¼ °¡Àå ÀϹÝÀûÀ¸·Î »ç¿ëµË´Ï´Ù. ÄÁÅØ½ºÆ®°¡ Ű ¹ÙÀεù°ú ¿¬°üµÇ¸é Ű ¹ÙÀεùÀº »ç¿ëÀÚ°¡ ÇØ´ç ÄÁÅØ½ºÆ®¿¡ ÀÖÀ» ¶§¿¡¸¸ Ȱ¼ºÈµË´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ ¸¶Å©¾÷Àº ·çÆ® ´ëÈ »óÀÚ ¹× â ÄÁÅØ½ºÆ®¸¦ Ű ¹ÙÀεùÀÇ ÄÁÅØ½ºÆ®·Î ÁöÁ¤ÇÕ´Ï´Ù.
<extension point="org.eclipse.ui.bindings"> <key sequence="M1+X" contextId="org.eclipse.ui.contexts.dialogAndWindow" commandId="org.eclipse.ui.edit.cut" schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/> </extension>
Workbench ÄÁÅØ½ºÆ® Áö¿ø¿¡´Â Á¤ÀÇµÈ ÄÁÅØ½ºÆ®¿¡ ´ëÇØ ÀÛ¾÷ÇÏ°í Æ¯Á¤ ÄÁÅØ½ºÆ®°¡ »ç¿ë °¡´ÉÇÑ ±âÁØÀ» Á¤ÀÇÇÏ´Â API°¡ Æ÷ÇԵ˴ϴÙ. ´ëºÎºÐÀÇ Ç÷¯±×ÀÎÀÌ API¿Í °ü·ÃµÉ Çʿ䰡 ¾øÁö¸¸ »õ ÄÁÅØ½ºÆ®¸¦ Á¤ÀÇÇϴ Ư¼öÈµÈ º¸±â³ª ÆíÁý±â¸¦ Á¤ÀÇÇÒ ¶§ À¯¿ëÇÕ´Ï´Ù.
Workbench¿¡¼ ÄÁÅØ½ºÆ®¿¡ ´ëÇÑ ÀÛ¾÷ÀÇ ½ÃÀÛÁ¡Àº IContextServiceÀÔ´Ï´Ù. Ç÷¯±×ÀÎÀº Workbench¿¡¼ ±Û·Î¹ú ÄÁÅØ½ºÆ® Áö¿ø ÀνºÅϽº¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù.
IContextService contextService = (IContextService)PlatformUI.getWorkbench() .getService(IContextService.class);
IContextService, IHandlerService ¹× IBindingService¿Í °°Àº ¼ºñ½º´Â IServiceLocator¸¦ »ç¿ëÇÏ¿© °Ë»öÇÒ ¼ö ÀÖ½À´Ï´Ù. IWorkbench, IWorkbenchWindow ¹× IWorkbenchSite´Â ¸ðµÎ IServiceLocatorÀÔ´Ï´Ù.
IContextService´Â Á¤Àǵǰųª »ç¿ë °¡´ÉÇÑ ¸ðµç ÄÁÅØ½ºÆ® ID¸¦ °¡Á®¿À°í ƯÁ¤ IDÀÇ ¿¬°üµÈ Context¸¦ °¡Á®¿À´Â ÇÁ·ÎÅäÄÝÀ» Á¤ÀÇÇÕ´Ï´Ù. ÀÌ ¿ÀºêÁ§Æ®¸¦ »ç¿ëÇÏ¿© ID, À̸§ ¶Ç´Â »óÀ§ ÄÁÅØ½ºÆ®ÀÇ ID¸¦ °¡Á®¿À´Â µî API¿¡¼ ÄÁÅØ½ºÆ®ÀÇ Á¤ÀǸ¦ À̵¿ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸®½º³Ê¸¦ ÄÁÅØ½ºÆ® °ü¸®ÀÚ³ª ÄÁÅØ½ºÆ® ÀÚü¿¡ µî·ÏÇÏ¿© ƯÁ¤ ÄÁÅØ½ºÆ®ÀÇ Á¤Àdzª ÄÁÅØ½ºÆ® °ü¸®ÀÚ¿¡¼ º¯°æ»çÇ×À» ¹ß°ßÇÒ ¼öÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ Á¤º¸´Â org.eclipse.core.commands.contexts ÆÐŰÁö¸¦ ÂüÁ¶ÇϽʽÿÀ.
ÄÁÅØ½ºÆ®´Â ´ÙÀ½°ú °°ÀÌ ÇÁ·Î±×·¡¹Ö ¹æ½ÄÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
IContextActivation activation = contextService.activateContext("org.eclipse.ui.textEditorScope");
IContextActivationÀº Ȱ¼º ÄÁÅØ½ºÆ®¸¦ ºñȰ¼ºÈÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ´Â ÅäÅ«ÀÔ´Ï´Ù. Á¤ÀÇµÈ ÄÁÅØ½ºÆ®¸¸ Ȱ¼ºÈÇØ¾ß ÇÕ´Ï´Ù.
ÇØ´ç ÆÄÆ®(º¸±â ¶Ç´Â ÆíÁý±â)¿¡¼ º¸´Ù ±¸Ã¼ÀûÀÎ ÄÁÅØ½ºÆ®¸¦ Ȱ¼ºÈÇÏ´Â °æ¿ì ÆÄÆ® »çÀÌÆ® ¼ºñ½º À§Ä¡ ÁöÁ¤ÀÚ¸¦ »ç¿ëÇÏ¿© ÄÁÅØ½ºÆ®¸¦ Ȱ¼ºÈÇÒ ¼ö ÀÖ½À´Ï´Ù. ÆÄÆ®ÀÇ IContextService´Â ÆÄÆ®°¡ Ȱ¼ºÈµÇ°Å³ª ºñȰ¼ºÈµÉ ¶§ ÄÁÅØ½ºÆ®¸¦ Ȱ¼ºÈÇÏ°í ºñȰ¼ºÈÇÕ´Ï´Ù. ¶ÇÇÑ ÆÄÆ®¸¦ ó¸®ÇÒ ¶§ ÄÁÅØ½ºÆ®¸¦ ó¸®ÇÕ´Ï´Ù.