JFace UI ÇÁ·¹ÀÓ¿öÅ©°¡ ´ëÈ »óÀÚ¿¡ Ÿ½ºÅ© ÁøÇàÀ» Ç¥½ÃÇϱâ À§ÇÑ ±âº» Áö¿øÀ» Á¦°øÇÏ´Â °ÍÀ» »ìÆìº¸¾Ò½À´Ï´Ù(ÀÚ¼¼ÇÑ ³»¿ëÀº Àå±â ½ÇÇà Á¶ÀÛ ÂüÁ¶). µ¿½Ã¼º ÇϺα¸Á¶¿¡¼ µ¿½Ã¼º ¹× Àå±â ½ÇÇà Á¶ÀÛ¿¡ ´ëÇÑ Ç÷§Æû ·±Å¸ÀÓ Áö¿øÀ» °ËÅäÇß½À´Ï´Ù. ÀÌÁ¦ Ç÷§Æû UI°¡
org.eclipse.ui.progress ÆÐŰÁö¿¡¼ ÀÌ ÇϺα¸Á¶¸¦ Çâ»ó½ÃŰ´Â ¹æ¹ý¿¡ ´ëÇØ »ìÆìº¾´Ï´Ù. ÀÌ ÆÐŰÁö´Â Workbench¿¡ ÀÛ¾÷ ÁøÇàÀ» Ç¥½ÃÇÏ´Â UI¸¦ Á¦°øÇϰí UI ½º·¹µå¿¡¼ ½ÇÇàÇÏ´Â ÀÛ¾÷¿¡ ´ëÇÑ Ãß°¡ Áö¿øÀ» Á¤ÀÇÇÕ´Ï´Ù.
»õ API¸¦ ¼Ò°³Çϱâ Àü¿¡ ÀϺΠ°³³äÀ» °ËÅäÇÏ´Â °ÍÀ¸·Î ½ÃÀÛÇÕ´Ï´Ù. ¸ÕÀú ¼·Î ´Ù¸¥ Á¾·ùÀÇ ¹è°æ Á¶ÀÛÀ» ±¸ºÐÇØ¾ß ÇÕ´Ï´Ù.
»ç¿ëÀÚ ½ÃÀÛ. ÀÌ ÀÛ¾÷Àº »ç¿ëÀÚ ÀÛ¾÷ÀÌ µÇµµ·Ï ¼³Á¤µË´Ï´Ù(Job#setUser). Workbench´Â ¹è°æ¿¡¼ Á¶ÀÛÀ» ½ÇÇàÇϰí ÀÛ¾÷À» °è¼ÓÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â ´ÜÃß·Î ¸ð´Þ(modal) ÁøÇà ´ëÈ »óÀÚ¿¡ »ç¿ëÀÚ ÀÛ¾÷À» ÀÚµ¿À¸·Î Ç¥½ÃÇÕ´Ï´Ù. ±Û·Î¹ú ȯ°æ ¼³Á¤À» »ç¿ëÇÏ¿© »ç¿ëÀÚ ÀÛ¾÷ÀÌ Ç×»ó ¹è°æ¿¡¼ ½ÇÇàµÉÁö Ç¥½ÃÇÕ´Ï´Ù.
»ç¿ëÀÚ ÀÛ¾÷ ¿¹Á¦¿¡´Â ºôµå, ÇÁ·ÎÁ§Æ® üũ¾Æ¿ô, ÀúÀå¼Ò¿Í µ¿±âÈ, Ç÷¯±×ÀÎ ³»º¸³»±â ¹× °Ë»ö µîÀÌ ÀÖ½À´Ï´Ù.ÀÚµ¿ Æ®¸®°Å. ÀÌ Á¶ÀÛÀº »ç¿ëÀÚ¿¡°Ô Àǹ̰¡ ÀÖÁö¸¸ »ç¿ëÀÚ°¡ ½ÃÀÛÇÏÁö ¾Ê¾Ò½À´Ï´Ù. À̰ÍÀº ´Ù¾çÇÑ ±âº» ÀÛ¾÷ÀÔ´Ï´Ù. ÀÌ ÀÛ¾÷Àº ÁøÇà º¸±â ¹× »óÅ ǥ½ÃÁÙ¿¡ Ç¥½ÃµÇÁö¸¸ ½ÇÇàµÉ ¶§ ¸ð´Þ ÁøÇà ´ëÈ »óÀÚ¿¡´Â Ç¥½ÃµÇÁö ¾Ê½À´Ï´Ù. ¿¹Á¦¿¡´Â ÀÚµ¿ ºôµå ¹× ½ºÄÉÁÙµÈ µ¿±âȰ¡ ÀÖ½À´Ï´Ù.
½Ã½ºÅÛ Á¶ÀÛ. »ç¿ëÀÚ°¡ Æ®¸®°ÅÇÏÁö ¾Ê°í ±¸Çö ¼¼ºÎ»çÇ×À¸·Î °£ÁÖÇÒ ¼ö ÀÖ´Â Á¶ÀÛÀÔ´Ï´Ù. ÀÌ ÀÛ¾÷Àº ½Ã½ºÅÛ Ç÷¡±×(Job#setSystem)¸¦ ¼³Á¤ÇÏ¿© ÀÛ¼ºµË´Ï´Ù. ½Ã½ºÅÛ ÀÛ¾÷ ¿¹Á¦¿¡´Â À§ÁöÆ®(widget)¸¦ ä¿ì°Å³ª º¸±âÀÇ µ¥ÄÚ·¹ÀÌ¼Ç ¹× ¾î³ëÅ×À̼ÇÀ» °è»êÇÏ´Â ÀÛ¾÷ÀÌ ÀÖ½À´Ï´Ù.
¸î °¡Áö »çÇ×ÀÌ µ¿½Ã¿¡ ¹ß»ýÇÒ ¼ö Àִ ȯ°æÀ» °í·ÁÇÏ¸é »ç¿ëÀÚ´Â ´ÙÀ½À» ÇÊ¿ä·Î ÇÕ´Ï´Ù.
Àå±â ½ÇÇà Á¶ÀÛÀÌ ½ÃÀÛµÈ ½Ã°£ Ç¥½Ã.
»ç¿ëÀÚ ÀÛ¾÷Àº ÁøÇà ´ëÈ »óÀÚ¿¡¼ »ç¿ëÀÚ¿¡°Ô Ç¥½ÃµÇ¾î Áï½Ã Çǵå¹éÀ» Á¦°øÇÏÁö¸¸ ÀÚµ¿ Æ®¸®°Å ÀÛ¾÷Àº »óÅ ǥ½ÃÁÙ°ú ÁøÇà º¸±â¿¡ Ç¥½ÃµË´Ï´Ù. ¶ÇÇÑ Workbench°¡ ºÎºÐ¿¡ ¿µÇâÀ» ÁÖ´Â »çÇ×ÀÌ ½ÇÇàµÇ°í ÀÖ´Ù´Â ÈùÆ®¸¦ »ç¿ëÀÚ¿¡°Ô Á¦°øÇÒ ¼ö ÀÖµµ·Ï ÇÑ ºÎºÐ¿¡ ¿µÇâÀ» ÁÖ´Â ÀÛ¾÷Àº ºÎºÐÀ¸·Î ½ºÄÉÁÙ ¶Ç´Â µî·ÏµÇ¾î¾ß ÇÕ´Ï´Ù.
Á¶ÀÛÀÌ Á¾·áµÈ ½Ã°£ Ç¥½Ã.
ÁøÇà ´ëÈ »óÀÚ°¡ ´ÝÈ÷±â ¶§¹®¿¡ »ç¿ëÀÚ´Â »ç¿ëÀÚ ÀÛ¾÷ÀÌ ³¡³ª´Â ½Ã°£À» ½±°Ô ¾Ë ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª »ç¿ëÀÚ ÀÛ¾÷ÀÌ ¾Æ´Ñ °æ¿ì¿¡ ¸î °¡ÁöÀÇ Çǵå¹é ¸ÞÄ¿´ÏÁòÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÛ¾÷ÀÌ ºÎºÐÀ¸·Î ½ºÄÉÁٵǰųª µî·ÏµÈ °æ¿ì ºÎºÐ ÁøÇà ÈùÆ®°¡ ¿Ï·á ½Ã±â¸¦ Ç¥½ÃÇÕ´Ï´Ù. ÀÛ¾÷ÀÌ ¿À·ù¸¦ ¸®ÅÏÇÏ´Â °æ¿ì ¿À·ù Ç¥½Ã±â°¡ »óÅ ǥ½ÃÁÙÀÇ ¿À¸¥ÂÊ ¸Ç¾Æ·¡¿¡ Ç¥½ÃµÇ¾î ¿À·ù°¡ ¹ß»ýÇß´Ù´Â ÈùÆ®¸¦ Ç¥½ÃÇÕ´Ï´Ù.
¹è°æ Á¶ÀÛ¿¡¼ Ç¥½ÃÇÑ ´ëÈ »óÀÚ·Î ½ºÆ¿¸µ ÃÊÁ¡ ¾øÀÌ Èï¹Ì·Î¿î »õ °á°ú³ª »õ Á¤º¸ Ç¥½Ã.
»ç¿ëÀÚ ÀÛ¾÷Àº Á¶ÀÛÀÌ ¿Ï·áµÇ¸é »ç¿ëÀÚ¿¡°Ô °á°ú¸¦ Á÷Á¢ Ç¥½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù. »ç¿ëÀÚ ÀÛ¾÷ÀÌ ¾Æ´Ñ °æ¿ì ´ëÈ »óÀÚ·Î »ç¿ëÀÚ¸¦ ÀÎÅÍ·´Æ®ÇÏÁö ¾Ê´Â °ÍÀÌ ÁÁ½À´Ï´Ù. ´ë½Å ÀÛ¾÷ °á°ú°¡ º¸±â¿¡ Ç¥½ÃµÇ´Â °æ¿ì ÀÛ¾÷ÀÌ ½ÃÀÛµÉ ¶§ º¸±â¸¦ ¿°í º¸±â¿¡ °á°ú¸¦ Ç¥½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ´Â »ç¿ëÀÚ ÀÛ¾÷ È帧À» ¹æÇØÇÏÁö ¾Ê½À´Ï´Ù. ¶ÇÇÑ Æ¯¼ºÀ» ÀÛ¾÷¿¡ Ãß°¡ÇÏ¿© ÀÛ¾÷ÀÌ ÁøÇà º¸±â¿¡ À¯ÁöµÇ°í °á°ú¸¦ Ç¥½ÃÇÏ´Â Á¶Ä¡°¡ ÀÖÀ½À» Ç¥½ÃÇÕ´Ï´Ù. ÀÛ¾÷ÀÌ ÁøÇà º¸±â¿¡ ÀÖ°í »ç¿ëÀÚ¿¡°Ô Ç¥½ÃÇÒ °á°ú°¡ ÀÖ´Â °æ¿ì °æ°í Ç¥½Ã°¡ »óÅ ǥ½ÃÁÙ ¿À¸¥ÂÊ ¸Ç¾Æ·¡¿¡ Ç¥½ÃµË´Ï´Ù.
¹è°æ Á¶ÀÛÀ» ¸ð´ÏÅÍÇϰí Ãë¼ÒÇÏ´Â ±â´ÉÀ¸·Î ½ÇÇà ÁßÀÎ ÀÛ¾÷À» Á¦¾îÇÏ´Â ÀϹÝÀûÀÎ ´À³¦.
»ç¿ëÀÚ ÀÛ¾÷Àº ½±°Ô Ãë¼ÒµÇ°í ÁøÇà ´ëÈ »óÀÚÀÇ
¼¼ºÎ»çÇ× ÅÇÀ» ÅëÇØ ½ÇÇàµÇ´Â ºí·ÎÅ· ¶Ç´Â µ¿½Ã Á¶ÀÛÀ» Ç¥½ÃÇϹǷΠ»ç¿ëÀÚ¿¡°Ô ÃÖ»óÀÇ Á¦¾î¸¦ Á¦°øÇÕ´Ï´Ù. »ç¿ëÀÚ°¡ IProgressService#busyCursorWhile
¶Ç´Â IProgressService#runInUI¸¦ È£ÃâÇÒ ¶§¸¸ ¼¼ºÎ»çÇ× ¿µ¿ªÀ» Á¦°øÇÏ´Â Çâ»óµÈ ÁøÇà ´ëÈ»óÀÚ°¡ Ç¥½ÃµË´Ï´Ù.
¶ÇÇÑ ÁøÇà º¸±â´Â ½ÇÇà ÁßÀÎ ÀÛ¾÷¿¡ ´ëÇÑ ¾×¼¼½º¸¦ Á¦°øÇÕ´Ï´Ù.
¼³Ä¡µÈ ¸ðµç Ç÷¯±×ÀÎÀº µ¿ÀÏÇÑ ¹æ¹ýÀ¸·Î °è¼Ó ÁøÇàÀ» Ç¥½ÃÇØ¾ß ÇÕ´Ï´Ù.
ÁøÇà ¼ºñ½º API¸¦ »ç¿ëÇÏ¸é »ç¿ëÀÚ°¡ Áö¼ÓÀûÀÎ ÁøÇà °æÇèÀ» ¾ò°Ô µÈ´Ù´Â ÀÌÁ¡ÀÌ ÀÖ½À´Ï´Ù.
´ÙÀ½À¸·Î »õ API¸¦ »ç¿ëÇÏ´Â ¹æ¹ý¿¡ ´ëÇÑ ¼¼ºÎ»çÇ×À¸·Î À̵¿ÇÕ´Ï´Ù.
Workbench ÁøÇà ¼ºñ½º(IProgressService)´Â Workbench ÁøÇà Áö¿ø¿¡ ´ëÇÑ 1Â÷ ÀÎÅÍÆäÀ̽ºÀÔ´Ï´Ù. ÀÌ´Â 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 half-busy cursor in part */);
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 then only keep the finished job in the progress view if // 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¸¦ °»½ÅÇÏ´Â °ÍÀ̸é ÀÌ »óȲÀ» Ç×»ó ÇÇÇÒ ¼ö ¾ø½À´Ï´Ù. SWT ½º·¹µù ¹®Á¦¿¡¼´Â SWT Ç¥½Ã¸¦ »ç¿ëÇÏ¿© ¿Ï·áÇÒ ¼ö ÀÖ´Â ¹æ¹ý¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù. Workbench¿¡¼´Â ½ÇÇà ¸Þ¼Òµå°¡ SWT asyncExec¿¡¼ ½ÇÇàµÇ´Â Ư¼ö ÀÛ¾÷ UIJob¿¡ ´ëÇØ Á¤ÀÇÇÕ´Ï´Ù. UIJobÀÇ ¼ºêŬ·¡½º´Â run ¸Þ¼Òµå ´ë½Å runInUIThread ¸Þ¼Òµå¸¦ ±¸ÇöÇØ¾ß ÇÕ´Ï´Ù.
WorkbenchJobÀº Workbench°¡ ½ÇÇàµÉ ¶§¸¸ ÀÛ¾÷À» ½ºÄÉÁÙÇϰųª ½ÇÇàÇϵµ·Ï UIJobÀ» È®ÀåÇÕ´Ï´Ù. UI ÀÛ¾÷ÀÇ Áö¼Ó±â°£ µ¿¾È UI°¡ »õ·Î °íÃÄÁöÁö ¾ÊÀ¸¹Ç·Î Ç×»ó UI ½º·¹µå¿¡¼ °úµµÇÑ ÀÛ¾÷À» ÇÇÇØ¾ß ÇÕ´Ï´Ù.