JDT-UI API´Â Ç¥ÁØ JFace Ç¥½Ã±â¿¡¼ Java ¸ðµ¨ ¶Ç´Â ÀÌ ¸ðµ¨ÀÇ ÆÄÆ®¸¦ ³ªÅ¸³»´Â ¿©·¯ °¡Áö Ŭ·¡½º¸¦ Á¦°øÇÕ´Ï´Ù. ÀÌ ±â´ÉÀº ÁÖ·Î ´ÙÀ½¿¡¼ Á¦°øÇÕ´Ï´Ù.
...Java ¸ðµ¨ ¿Ü¿¡µµ
IJavaProject jProject= ...;
TreeViewer viewer= new TreeViewer(parent);
// Provide members of a compilation unit or class file, but no working copy elements
ITreeContentProvider contentProvider= new StandardJavaElementContentProvider(true, false);
viewer.setContentProvider(contentProvider);
// There are more flags defined in class JavaElementLabelProvider
ILabelProvider labelProvider= new JavaElementLabelProvider(
JavaElementLabelProvider.SHOW_DEFAULT |
JavaElementLabelProvider.SHOW_QUALIFIED |
JavaElementLabelProvider.SHOW_ROOT);
viewer.setLabelProvider(labelProvider);
// Using the Java model as the viewers input present Java projects on the first level.
viewer.setInput(JavaCore.create(ResourcesPlugin.getWorkspace().getRoot()));
...
StandardJavaElementContentProvider
Ŭ·¡½º´Â IJavaProject
,
IPackageFragmentRoot
, IPackageFragment
,IFolder
¿Í °°Àº ÀÔ·Â ¿ä¼Ò À¯ÇüÀ» Áö¿øÇÕ´Ï´Ù....°°Àº ¹æ½ÄÀ¸·Î OverrideIndicatorLabelDecorator´Â ÀÏ¹Ý ·¹À̺í Á¦°ø¾÷ü¸¦ µ¥ÄÚ·¹ÀÌÆ®ÇÏ¿© ¸Þ¼Òµå¿¡ ´ëÇÑ ±¸Çö ¹× ´ëü Ç¥½Ã±â¸¦ Ç¥½ÃÇÏ´Â µ¥ »ç¿ëµÉ ¼ö ÀÖ½À´Ï´Ù.
DecoratingLabelProvider decorator= new DecoratingLabelProvider(labelProvider, new ProblemsLabelDecorator());
viewer.setLabelProvider(decorator);
...
OverrideIndicatorLabelDecorator
³ª
ProblemsLabelDecorator
´Â ¸ðµ¨ º¯°æ»çÇ×À» ûÃëÇÏÁö ¾Ê½À´Ï´Ù. µû¶ó¼ Java ¶Ç´Â
ÀÚ¿ø ¸¶Ä¿ ¸ðµ¨ÀÌ º¯°æÇÒ °æ¿ì Ç¥½Ã±â´Â ¸ðµ¨ÀÇ ÇÁ¸®Á¨Å×À̼ÇÀ» °»½ÅÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ·¯ÇÑ
Ŭ·¡½º¿¡ ´ëÇÑ Å¬¶óÀÌ¾ðÆ®¿¡ °»½ÅÇØ¾ß ÇÏ´Â ÀÌÀ¯´Â ¸ðµç ¼º´É°ú °ü·ÃÇÏ¿© ÀÌÇàÇÏ´Â
ÀÏ¹Ý ±¸ÇöÀÌ ¾ÆÁ÷ ¾ø±â ¶§¹®ÀÔ´Ï´Ù. °¢ ·¹À̺í
µ¥ÄÚ·¹ÀÌÅÍ ¶Ç´Â Á¦°ø¾÷ü¿¡¼ Java ¸ðµ¨ µ¨Å¸ °Ë»ç ó¸® ¹× Ç¥½Ã±â¸¦
»õ·Î °íÄ¡¸é ´ÙÁß µ¨Å¸ °Ë»ç ¹× ºÒÇÊ¿äÇÑ Ç¥½Ã±â °»½Å¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù. OverrideIndicatorLabelDecorator
: Ŭ¶óÀÌ¾ðÆ®´Â Java ¸ðµ¨
º¯°æ»çÇ×À» ûÃëÇϰí(JavaCore.addElementChangedListener
ÂüÁ¶)
µ¨Å¸·Î ¼³¸íÇÏ´Â º¯°æ»çÇ×ÀÌ Ç¥½Ã±â¿¡ ³ªÅ¸³ ¿ä¼ÒÀÇ ´ëü Ç¥½Ã±â¸¦
¹«È¿ÈÇÏ´ÂÁö¸¦ ÆÇº°ÇØ¾ß ÇÕ´Ï´Ù. ¹«È¿ÈÇÑ´Ù¸é µ¨Å¸¸¦ °Ë»çÇÏ´Â
Ŭ·¡½º´Â Ç¥ÁØ JFace Ç¥½Ã±â API¸¦ »ç¿ëÇÏ¿© ÇØ´ç Java ¿ä¼ÒÀÇ
¸®ÆäÀÎÆ®¸¦ Æ®¸®°ÅÇØ¾ß ÇÕ´Ï´Ù(StructuredViewerÀÇ °»½Å ¸Þ¼Òµå ÂüÁ¶).ProblemsLabelDecorator
: Ŭ¶óÀÌ¾ðÆ®´Â
ProblemsLabelChangedEvent¸¦ ÅëÇØ µ¥ÄÚ·¹ÀÌÅͰ¡ ¾Ë¸®´Â º¯°æ»çÇ×À» ûÃëÇØ¾ß ÇÕ´Ï´Ù(
ProblemsLabelDecorator.addListener ÂüÁ¶). ¸¶Ä¿ ¸ðµ¨Àº ÀÚ¿ø ±â¹ÝÀ̹ǷΠ¸®½º³Ê´Â ÀÚ¿ø ¾Ë¸²À» ÀÚ¿øÀÇ ±âº»
µ¥ÀÌÅÍ ¸ðµ¨¿¡ ¸ÊÇÎÇØ¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î,
Java ¿ä¼Ò¸¦ ³ªÅ¸³»´Â Ç¥½Ã±â¿¡ ´ëÇØ À̰ÍÀ» ¼öÇàÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁÖ´Â
¿¹Á¦´Â ³»ºÎ Ŭ·¡½º ProblemTreeViewer.handleLabelProviderChanged
¸¦ ÂüÁ¶ÇϽʽÿÀ.