JFace UI ÇÁ·¹ÀÓ¿öÅ©°¡ ´ëÈ »óÀÚ¿¡ Ÿ½ºÅ© ÁøÇàÀ» Ç¥½ÃÇϱâ À§ÇÑ ±âº» Áö¿øÀ» Á¦°øÇÏ´Â °ÍÀ» »ìÆìº¸¾Ò½À´Ï´Ù(ÀÚ¼¼ÇÑ ³»¿ëÀº Àå±â ½ÇÇà Á¶ÀÛ ÂüÁ¶). µ¿½Ã¼º ÇϺΠ±¸Á¶¿¡¼ µ¿½Ã¼º ¹× Àå±â ½ÇÇà Á¶ÀÛ¿¡ ´ëÇÑ Ç÷§Æû ·±Å¸ÀÓ Áö¿øÀ» °ËÅäÇß½À´Ï´Ù. ÀÌÁ¦ Ç÷§Æû UI°¡
org.eclipse.ui.progress ÆÐŰÁö¿¡¼ ÀÌ ÇϺΠ±¸Á¶¸¦ Çâ»ó½ÃŰ´Â ¹æ¹ý¿¡ ´ëÇØ »ìÆìº¾´Ï´Ù. ÀÌ ÆÐŰÁö´Â Workbench¿¡ ÀÛ¾÷ ÁøÇàÀ» Ç¥½ÃÇÏ´Â UI¸¦ Á¦°øÇϰí UI ½º·¹µå¿¡¼ ½ÇÇàÇÏ´Â ÀÛ¾÷¿¡ ´ëÇÑ Ãß°¡ Áö¿øÀ» Á¤ÀÇÇÕ´Ï´Ù.
ù ¹øÂ°, ½ÇÇà ÁßÀÏ ¼ö ÀÖ´Â ¿©·¯ °¡Áö Á¾·ùÀÇ ¹è°æ Á¶ÀÛ ¹× À̵éÀÌ Workbench UI¿¡ Ç¥½ÃµÇ´Â ¹æ¹ýÀ» ãÀ¸½Ê½Ã¿À.
»ç¿ëÀÚ ½ÃÀÛ ÀÛ¾÷Àº »ç¿ëÀÚ°¡ Æ®¸®°ÅÇÑ ÀÛ¾÷ÀÔ´Ï´Ù. Workbench´Â ¹è°æ¿¡¼ Á¶ÀÛÀ» ½ÇÇàÇϰí ÀÛ¾÷À» °è¼ÓÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â ´ÜÃß·Î ¸ð´Þ(modal) ÁøÇà ´ëÈ »óÀÚ¿¡ »ç¿ëÀÚ ÀÛ¾÷À» ÀÚµ¿À¸·Î Ç¥½ÃÇÕ´Ï´Ù. ±Û·Î¹ú ȯ°æ ¼³Á¤ÀÌ »ç¿ëÀÚ ÀÛ¾÷ÀÌ Ç×»ó ¹è°æ¿¡¼ ½ÇÇàµÉÁö Ç¥½ÃÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. »ç¿ëÀÚ ÀÛ¾÷Àº »ç¿ë ÁßÀÎ ÀÛ¾÷ API¿¡¼¿Í °°ÀÌ ±¸º°µË´Ï´Ù(Job#setUser). »ç¿ëÀÚ ÀÛ¾÷ÀÇ ¿¹Á¦¿¡´Â ºôµå, ÇÁ·ÎÁ§Æ® üũ¾Æ¿ô, ÀúÀå¼Ò¿Í µ¿±âÈ, Ç÷¯±×ÀÎ ³»º¸³»±â ¹× °Ë»öÀÌ ÀÖ½À´Ï´Ù.
ÀÚµ¿À¸·Î Æ®¸®°ÅµÈ ÀÛ¾÷Àº »ç¿ëÀÚ¿¡°Ô Àǹ̰¡ ÀÖÁö¸¸ »ç¿ëÀÚ¿¡ ÀÇÇØ ½ÃÀÛµÇÁö ¾Ê½À´Ï´Ù. À̵é ÀÛ¾÷Àº ÁøÇà º¸±â ¹× »óÅ ǥ½ÃÁÙ¿¡ Ç¥½ÃµÇÁö¸¸ ¸ð´Þ ÁøÇà ´ëÈ »óÀÚ¿¡´Â ÀÛµ¿ÇÒ ¶§ Ç¥½ÃµÇÁö ¾Ê½À´Ï´Ù. ¿¹Á¦¿¡´Â ÀÚµ¿ ºôµå ¹× ½ºÄÉÁÙµÈ µ¿±âȰ¡ ÀÖ½À´Ï´Ù.
½Ã½ºÅÛ Á¶ÀÛÀº »ç¿ëÀÚ¿¡ ÀÇÇØ Æ®¸®°ÅµÇÁö ¾ÊÀ¸¸ç Ç÷§Æû ±¸Çö ¼¼ºÎ»çÇ×À¸·Î °£ÁÖµÉ ¼ö ÀÖ½À´Ï´Ù. À̵é ÀÛ¾÷Àº (Job#setSystem)À» »ç¿ëÇÏ¿© ½Ã½ºÅÛ Ç÷¡±×¸¦ ¼³Á¤ÇÏ¿© ÀÛ¼ºµË´Ï´Ù. ½Ã½ºÅÛ ÀÛ¾÷ ¿¹Á¦¿¡´Â À§ÁöÆ®(widget)¸¦ ä¿ì°Å³ª º¸±âÀÇ µ¥ÄÚ·¹ÀÌ¼Ç ¹× ¾î³ëÅ×À̼ÇÀ» °è»êÇÏ´Â ÀÛ¾÷ÀÌ ÀÖ½À´Ï´Ù.
¿©·¯ °¡Áö »çÇ×ÀÌ µ¿½Ã¿¡ ¹ß»ýÇÒ ¼ö Àִ ȯ°æÀ» °í·ÁÇÏ¸é »ç¿ëÀÚ´Â
´ÙÀ½ÀÌ ÇÊ¿äÇÕ´Ï´Ù.
Àå±â ½ÇÇà Á¶ÀÛÀÌ ½ÃÀÛÇߴٴ ǥ½Ã.
»ç¿ëÀÚ ÀÛ¾÷Àº ÁøÇà ´ëÈ »óÀÚ¿¡¼ »ç¿ëÀÚ¿¡°Ô Ç¥½ÃµÇ¾î Áï½Ã Çǵå¹éÀ» Á¦°øÇÏÁö¸¸ ÀÚµ¿ Æ®¸®°Å ÀÛ¾÷Àº »óÅ ǥ½ÃÁÙ°ú ÁøÇà º¸±â¿¡ Ç¥½ÃµË´Ï´Ù. ºÎºÐ¿¡ ¿µÇâÀ» ÁÖ´Â
ÀÛ¾÷Àº Workbench°¡ »ç¿ëÀÚ¿¡°Ô ºÎºÐ¿¡ ¿µÇâÀ» ÁÖ´Â »çÇ×ÀÌ ½ÇÇà ÁßÀ̶ó´Â ÈùÆ®¸¦ »ç¿ëÀÚ¿¡°Ô Á¦°øÇÒ¼ö ÀÖµµ·Ï ºÎºÐÀ¸·Î ½ºÄÉÁÙ ¶Ç´Â µî·ÏµÇ¾î¾ß ÇÕ´Ï´Ù.
Á¶ÀÛÀÌ Á¾·áÇߴٴ ǥ½Ã.
»ç¿ëÀÚ´Â ÁøÇà ´ëÈ »óÀÚ°¡ ´ÝÈ÷±â ¶§¹®¿¡ »ç¿ëÀÚ ÀÛ¾÷ÀÌ ³¡³ª´Â ½Ã±â¸¦
½±°Ô ¾Ë ¼ö ÀÖ½À´Ï´Ù. »ç¿ëÀÚ ÀÛ¾÷ÀÌ ¾Æ´Ñ °æ¿ì ¸î °¡Áö Çǵå¹é ¸ÞÄ¿´ÏÁòÀ» »ç¿ëÇÒ ¼ö
ÀÖ½À´Ï´Ù. ÀÛ¾÷ÀÌ ºÎºÐÀ¸·Î ½ºÄÉÁÙ ¶Ç´Â µî·ÏµÇ´Â
°æ¿ì ºÎºÐÀÇ ÁøÇà ÈùÆ®°¡ ¿Ï·á ½Ã±â¸¦
Ç¥½ÃÇÕ´Ï´Ù. ÀÛ¾÷ÀÌ ¿À·ù¸¦ ¸®ÅÏÇÏ´Â °æ¿ì ¿À·ù Ç¥½Ã±â°¡ »óÅ ǥ½ÃÁÙÀÇ ¿À¸¥ÂÊ ¸Ç ¾Æ·¡¿¡ Ç¥½ÃµÇ¾î ¿À·ù°¡ ¹ß»ýÇß´Ù´Â ÈùÆ®¸¦ Ç¥½ÃÇÕ´Ï´Ù.
´ëÈ »óÀÚ¸¦ »ç¿ëÇÏ¿© »õ °á°ú³ª »õ Á¤º¸¸¸À» Ç¥½Ã.
»ç¿ëÀÚ ÀÛ¾÷Àº Á¶ÀÛÀÌ ¿Ï·áµÇ¸é »ç¿ëÀÚ¿¡°Ô °á°ú¸¦ Á÷Á¢ Ç¥½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù. »ç¿ëÀÚ ÀÛ¾÷ÀÌ ¾Æ´Ñ °æ¿ì »ç¿ëÀÚ°¡ ÀÎÅÍ·´Æ®µÇÁö ¾Êµµ·Ï ´ëÈ »óÀÚ ÀÌ¿ÜÀÇ ´Ù¸¥ °ÍÀ» »ç¿ëÇÏ¿© °á°ú¸¦ Ç¥½ÃÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù. ¿¹¸¦ µé¾î ÀÛ¾÷ÀÌ ½ÃÀÛÇÒ ¶§
º¸±â°¡ ¿¸®°í °á°ú°¡ »ç¿ëÀÚÀÇ ¿öÅ©Ç÷οìÀ» ¹æÇØÇÏÁö ¾Ê°í ÀÌ º¸±â¿¡
Ç¥½ÃµÉ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ ÁøÇà º¸±â¿¡¼ º¸Á¸µÇ¾î¾ß Çϸç
°á°ú¸¦ Ç¥½ÃÇÒ Á¶Ä¡¸¦ Á¦°øÇÔÀ» Ç¥½ÃÇϱâ À§ÇØ ÀÛ¾÷ Ư¼ºÀ»
ÀÛ¾÷¿¡ Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì ÀÛ¾÷ÀÌ ÁøÇà º¸±â¿¡ ³²¾ÆÀÖ°í »ç¿ëÀÚ¿¡°Ô
Ç¥½ÃÇÒ °á°ú°¡ ÀÖÀ» ¶§ »óÅ ǥ½ÃÁÙÀÇ ¸Ç ¾Æ·¡ ¿À¸¥ÂÊ¿¡ °æ°í Ç¥½Ã°¡
³ªÅ¸³³´Ï´Ù.
¹è°æ Á¶ÀÛÀ» ¸ð´ÏÅÍÇϰí Ãë¼ÒÇÏ´Â ±â´ÉÀ¸·Î ½ÇÇà ÁßÀÎ ÀÛ¾÷À» Á¦¾îÇÏ´Â ÀϹÝÀûÀÎ ´À³¦.
»ç¿ëÀÚ ÀÛ¾÷Àº ½±°Ô Ãë¼ÒµÇ°í ÁøÇà ´ëÈ »óÀÚÀÇ ¼¼ºÎ»çÇ× ÅÇÀ»
ÅëÇØ ½ÇÇà ÁßÀÎ ºí·ÎÅ· ¶Ç´Â µ¿½Ã Á¶ÀÛÀÇ °·ÂÇÑ Ç¥½Ã¸¦ Á¦°øÇϹǷÎ
»ç¿ëÀÚ¿¡°Ô ÃÖ»óÀÇ Á¦¾î¸¦ Á¦°øÇÕ´Ï´Ù. ¼¼ºÎ»çÇ× ¿µ¿ªÀ» Á¦°øÇÏ´Â
Çâ»óµÈ ÁøÇà ´ëÈ »óÀÚ´Â Ç÷¯±×ÀÎÀÌ IProgressService#busyCursorWhile
¶Ç´Â IProgressService#runInUI¸¦
»ç¿ëÇÒ ¶§¸¸ Ç¥½ÃµÊÀ» Âü°íÇϽʽÿÀ.
¶ÇÇÑ ÁøÇà º¸±â´Â ½ÇÇà ÁßÀÎ ÀÛ¾÷¿¡ ´ëÇÑ ¾×¼¼½º¸¦ Á¦°øÇÕ´Ï´Ù.
¼³Ä¡µÈ ¸ðµç Ç÷¯±×Àο¡ ÀÇÇÑ ÁøÇàÀÇ ÀϰüµÈ º¸°í.
ÁøÇà ¼ºñ½º API¸¦ »ç¿ëÇÏ¸é »ç¿ëÀÚ°¡ Áö¼ÓÀûÀÎ ÁøÇà °æÇèÀ» ¾ò°Ô µÈ´Ù´Â ÀÌÁ¡ÀÌ ÀÖ½À´Ï´Ù.
Workbench ÁøÇà ¼ºñ½º(IProgressService)´Â Workbench ÁøÇà Áö¿ø¿¡ ´ëÇÑ ±âº» ÀÎÅÍÆäÀ̽ºÀÔ´Ï´Ù. ÀÌ´Â Workbench¿¡¼ È®º¸ÇÏ¿© ¹è°æ Á¶ÀÛ°ú UI ½º·¹µå¿¡¼ ½ÇÇàÇÏ´Â Á¶ÀÛ¿¡ ´ëÇØ ÁøÇà º¸±â¸¦ Ç¥½ÃÇÏ´Â µ¥ »ç¿ëµÉ ¼ö ÀÖ½À´Ï´Ù. ÀÌ Å¬·¡½ºÀÇ ±âº» ¸ñÀûÀº ½ÇÇà ÁßÀÎ Á¶ÀÛ¿¡ ´ëÇÑ ¿ø½ºÅé ¼îÇÎ(one-stop shopping)À» Á¦°øÇÏ¿© Ç÷¯±×ÀÎ °³¹ßÀÚ°¡ ÇØ´ç »óȲ¿¡¼ ÁøÇàÀ» Ç¥½ÃÇÏ´Â µ¥ »ç¿ëÇÒ ¸ÞÄ¿´ÏÁòÀ» °áÁ¤ÇÒ Çʿ䰡 ¾øµµ·Ï ÇÏ´Â °ÍÀÔ´Ï´Ù. ´Ù¸¥ ÀåÁ¡Àº ÀÌ ¸Þ¼Òµå·Î Ç¥½ÃµÈ ÁøÇà ´ëÈ »óÀÚ°¡ ´Ù¸¥ »ç¿ëÀÚ¿¡ ÀÇÇØ Á¶ÀÛÀÌ Â÷´ÜµÇ´Â °æ¿ì¸¦ Ç¥½ÃÇϱâ À§ÇÑ Áö¿øÀ» Á¦°øÇϰí Ãæµ¹À» ÇØ°áÇÏ´Â »ç¿ëÀÚ Á¦¾î¸¦ Á¦°øÇÏ´Â °ÍÀÔ´Ï´Ù. °¡´ÉÇÑ °æ¿ì IProgressService#busyCursorWhileÀ» »ç¿ëÇÏ¿© Àå±â ½ÇÇà Á¶ÀÛÀÌ ½ÇÇàµÇ¾î¾ß ÇÕ´Ï´Ù.
IProgressService progressService = PlatformUI.getWorkbench().getProgressService(); progressService.busyCursorWhile(new IRunnableWithProgress(){ public void run(IProgressMonitor monitor) { //do non-UI work } });
Á¶ÀÛÀÌ ÁöÁ¤µÈ ½Ã°£ ÀÓ°è°ªº¸´Ù ¿À·¡ Áö¼ÓµÇ´Â °æ¿ì ÀÌ ¸Þ¼Òµå°¡ »ç¿ë ÁßÀÎ Ä¿¼¸¦ ÁøÇà ´ëÈ »óÀÚ·Î ´ëüÇÕ´Ï´Ù. ÁøÇà ´ëÈ »óÀÚ »ç¿ë¿¡ ´ëÇÑ ÀÌ ¸Þ¼ÒµåÀÇ ÀåÁ¡Àº Á¶ÀÛÀÌ Âª°Ô ½ÇÇàµÇ´Â °æ¿ì ÁøÇà ´ëÈ »óÀÚ°¡ Ç¥½ÃµÇÁö ¾Ê´Â´Ù´Â Á¡ÀÔ´Ï´Ù. Á¶ÀÛÀÌ UI¸¦ °»½ÅÇØ¾ß ÇÏ´Â °æ¿ì Ç×»ó Display.asyncExec ¶Ç´Â Display.syncExec¸¦ »ç¿ëÇÏ¿© UI¸¦ ¼öÁ¤ÇÏ´Â Äڵ带 ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.
Á¶ÀÛÀÌ UI ½º·¹µå¿¡¼ ¿ÏÀüÈ÷ ½ÇÇàµÇ¾î¾ß ÇÏ´Â °æ¿ì IProgressService#runInUI°¡ »ç¿ëµÇ¾î¾ß ÇÕ´Ï´Ù. ÀÌ ¸Þ¼Òµå´Â ¶ÇÇÑ Á¶ÀÛÀÌ ºí·ÏµÇ´Â °æ¿ì ÁøÇà ´ëÈ »óÀÚ¸¦ Ç¥½ÃÇÏ°í »ç¿ëÀÚ Á¦¾î¸¦ Á¦°øÇÕ´Ï´Ù.
progressService.runInUI( PlatformUI.getWorkbench().getProgressService(), new IRunnableWithProgress() { public void run(IProgressMonitor monitor) { //do UI work } }, Platform.getWorkspace().getRoot());
¼¼ ¹øÂ° ¸Å°³º¯¼ö´Â ³Î(null)À̰ųª Á¶ÀÛÀÇ ½ºÄÉÁÙ¸µ ±ÔÄ¢ÀÏ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¿¹Á¦¿¡¼´Â ÀÌ UI Á¶ÀÛÀÌ ½ÇÇàÇÏ´Â µ¿¾È ÀÛ¾÷°ø°£À» Àá±×´Â ÀÛ¾÷°ø°£ ·çÆ®¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
¶ÇÇÑ ÁøÇà º¸±â°¡ ½ÇÇà ÁßÀÎ ÀÛ¾÷ ¿·¿¡ ¾ÆÀÌÄÜÀ» Ç¥½ÃÇÒ ¼ö ÀÖµµ·Ï ÁøÇà ¼ºñ½º¿¡ ÀÛ¾÷ Á¦Ç°±º¿¡ ´ëÇÑ ¾ÆÀÌÄÜÀ» µî·ÏÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½Àº ÀÚµ¿ ºôµå ÀÛ¾÷ Á¦Ç°±ºÀÌ ÇØ´ç ¾ÆÀÌÄܰú ¿¬°üµÇ´Â ¹æ¹ýÀ» Ç¥½ÃÇÏ´Â ¿¹Á¦ÀÔ´Ï´Ù.
IProgressService service = PlatformUI.getWorkbench().getProgressService(); ImageDescriptor newImage = IDEInternalWorkbenchImages.getImageDescriptor( IDEInternalWorkbenchImages.IMG_ETOOL_BUILD_EXEC); service.registerIconForFamily(newImage, ResourcesPlugin.FAMILY_MANUAL_BUILD); service.registerIconForFamily(newImage, ResourcesPlugin.FAMILY_AUTO_BUILD);
IWorkbenchSiteProgressService´Â ÀÛ¾÷ÀÌ ½ÇÇàµÇ´Â µ¿¾È Workbench ºÎºÐÀÇ ¸ð¾çÀ» º¯°æÇÏ´Â ÀÛ¾÷ ½ºÄÉÁÙ¿ë API¸¦ Æ÷ÇÔÇϰí ÀÖ½À´Ï´Ù. Ç÷¯±×ÀÎÀÌ ºÎºÐÀÇ »óÅ¿¡ ¿µÇâÀ» ÁÖ´Â ¹è°æ Á¶ÀÛÀ» ½ÇÇà ÁßÀÎ °æ¿ì ºÎºÐÀ» ÅëÇØ ÀÛ¾÷À» ½ºÄÉÁÙÇÒ ¼ö ÀÖÀ¸¸ç »ç¿ëÀÚ´Â ºÎºÐÀÌ »ç¿ë ÁßÀ̶ó´Â Çǵå¹éÀ» ¹Þ°Ô µË´Ï´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°½À´Ï´Ù.
IWorkbenchSiteProgressService siteService = (IWorkbenchSiteProgressService)view.getSite().getAdapter(IWorkbenchSiteProgressService.class); siteService.schedule(job, 0 /* now */, true /* use the half-busy cursor in the part */);
Workbench°¡ IProgressConstants¿¡ ÀÛ¾÷¿¡ ´ëÇÑ ÁøÇà °ü·Ã Ư¼ºÀ» Á¤ÀÇÇÕ´Ï´Ù. À̵éÀº ÀÛ¾÷ÀÌ ÁøÇà º¸±â¿¡ Ç¥½ÃµÇ´Â ¹æ¹ýÀ» Á¦¾îÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. À̰ÍÀº ÁøÇà º¸±â°¡ ¿Ï·áµÈ ÈÄ º¸±â¿¡ (IProgressConstants#KEEP_PROPERTY) ÀÛ¾÷À» À¯ÁöÇϰųª Çѹø¿¡ ÇϳªÀÇ (IProgressConstants#KEEPONE_PROPERTY) ÀÛ¾÷À» º¸±â¿¡ À¯ÁöÇϵµ·Ï Áö½ÃÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. Á¶Ä¡¸¦ (IProgressConstants#ACTION_PROPERTY) ÀÛ¾÷°ú ¿¬°ü½Ãų ¼öµµ ÀÖ½À´Ï´Ù. ÀÛ¾÷¿¡ ¿¬°üµÈ Á¶Ä¡°¡ ÀÖÀ¸¸é »ç¿ëÀÚ°¡ Á¶Ä¡¸¦ ½ÇÇàÇÒ ¼ö ÀÖµµ·Ï ÁøÇà º¸±â´Â ÇÏÀÌÆÛ¸µÅ©¸¦ Ç¥½ÃÇÕ´Ï´Ù. »ç¿ëÀÚ ÀÛ¾÷ÀÌ ÁøÇà ´ëÈ »óÀÚ¿¡ Ç¥½ÃµÇ´ÂÁö ã¾Æ³¾ ¼öµµ ÀÖ½À´Ï´Ù(IProgressConstants#PROPERTY_IN_DIALOG). Á¶Ä¡°¡ »ç¿ë °¡´ÉÇÑ ½Ã±â¿¡ ´ëÇÑ ÈùÆ®°¡ »óÅ ǥ½ÃÁÙ ¿À¸¥ÂÊ ¸Ç¾Æ·¡¿¡ Á¦°øµË´Ï´Ù. ´ÙÀ½ ¿¹Á¦´Â ÀÌµé Æ¯¼ºÀ» »ç¿ëÇÕ´Ï´Ù.
Job job = new Job("Do Work") { public IStatus run(IProgressMonitor monitor) { // do some work. // Keep the finished job in the progress view only if it is not running in the progress dialog Boolean inDialog = (Boolean)getProperty(IProgressConstants.PROPERTY_IN_DIALOG); if(!inDialog.booleanValue()) setProperty(IProgressConstants.KEEP_PROPERTY, Boolean.TRUE); } }; job.setProperty(IProgressConstants.ICON_PROPERTY, Plugin.getImageDescriptor(WORK_IMAGE)); IAction gotoAction = new Action("Results") { public void run() { // show the results } }; job.setProperty(IProgressConstants.ACTION_PROPERTY, gotoAction); job.setUser(true); job.schedule();
°¡´ÉÇÑ °æ¿ì UI ½º·¹µå ¿ÜºÎ¿¡¼ Àå±â ½ÇÇà ¿ÀÆÛ·¹À̼ÇÀ» ¼öÇàÇØ¾ß ÇÕ´Ï´Ù. ±×·¯³ª ¿ÀÆÛ·¹À̼ÇÀÇ ¸ñÀûÀÌ UI¸¦ °»½ÅÇÏ´Â °ÍÀÏ °æ¿ì UI ½º·¹µå¿¡¼ ¼öÇàµÇ¾î¾ß ÇÕ´Ï´Ù. SWT ½º·¹µù ¹®Á¦¿¡¼´Â SWT Display¸¦ »ç¿ëÇÏ¿© ¿Ï·áÇÒ ¼ö ÀÖ´Â ¹æ¹ý¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù. Workbench¿¡¼´Â ½ÇÇà ¸Þ¼Òµå°¡ SWT asyncExec¿¡¼ ½ÇÇàµÇ´Â Ư¼ö ÀÛ¾÷ UIJob¿¡ ´ëÇØ Á¤ÀÇÇÕ´Ï´Ù. UIJobÀÇ ¼ºêŬ·¡½º´Â run ¸Þ¼Òµå ´ë½Å runInUIThread ¸Þ¼Òµå¸¦ ±¸ÇöÇØ¾ß ÇÕ´Ï´Ù.
WorkbenchJobÀº Workbench°¡ ½ÇÇàµÉ ¶§¸¸ ÀÛ¾÷À» ½ºÄÉÁÙÇϰųª ½ÇÇàÇϵµ·Ï UIJobÀ» È®ÀåÇÕ´Ï´Ù. UI ÀÛ¾÷ÀÇ Áö¼Ó±â°£ µ¿¾È UI°¡ »õ·Î °íÃÄÁöÁö ¾ÊÀ¸¹Ç·Î Ç×»ó UI ½º·¹µå¿¡¼ °úµµÇÑ ÀÛ¾÷À» ÇÇÇØ¾ß ÇÕ´Ï´Ù.