ÇÁ·ÎÁ§Æ® ¼Ó¼º

ÇÁ·ÎÁ§Æ® ¼Ó¼ºÀº Ç÷¯±×ÀÎÀÌ ÇÁ·ÎÁ§Æ®¸¦ ƯÁ¤ À¯ÇüÀÇ ÇÁ·ÎÁ§Æ®·Î ű×È­ÇÒ ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î JDT(Java Development Tool)´Â "Java ¼Ó¼º"À» »ç¿ëÇÏ¿© ÇÁ·ÎÁ§Æ®¿¡ Java ƯÁ¤ ÀÛµ¿À» Ãß°¡ÇÕ´Ï´Ù. ÇÁ·ÎÁ§Æ® ¼Ó¼ºÀº Ç÷¯±×Àο¡¼­ Á¤ÀÇÇϰí, ´ë°³ »ç¿ëÀÚ°¡ Ç÷¯±×Àο¡¼­ Á¤ÀÇÇÑ ÀϺΠÁ¶Ä¡¸¦ ¼öÇàÇÒ °æ¿ì ÇÁ·ÎÁ§Æ®º°·Î Ãß°¡Çϰųª Á¦°ÅÇÕ´Ï´Ù.

ÇÁ·ÎÁ§Æ®¿¡´Â Çϳª ÀÌ»óÀÇ ¼Ó¼ºÀÌ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ÇÁ·ÎÁ§Æ® ¼Ó¼ºÀ» Á¤ÀÇÇÒ °æ¿ì ¼Ó¼º¿¡ ´ëÇÑ Æ¯¼öÇÑ Á¦ÇÑÁ¶°ÇÀ» Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù.

°íÀ¯ÀÇ ¼Ó¼ºÀ» ±¸ÇöÇÏ·Á¸é È®ÀåÀ» Á¤ÀÇÇϰí IProjectNature¸¦ ±¸ÇöÇϴ Ŭ·¡½º¸¦ Á¦°øÇØ¾ß ÇÕ´Ï´Ù.

¼Ó¼º Á¤ÀÇ

org.eclipse.core.resources.natures È®ÀåÁ¡Àº ÇÁ·ÎÁ§Æ® ¼Ó¼º Á¤ÀǸ¦ Ãß°¡ÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. ´ÙÀ½ ¸¶Å©¾÷Àº °¡»óÀÇ com.example.natures Ç÷¯±×Àο¡ ¼Ó¼ºÀ» Ãß°¡ÇÕ´Ï´Ù.

      <extension
      point="org.eclipse.core.resources.natures"
      id="myNature"
      name="My Nature">
      <runtime>
         <run class="com.example.natures.MyNature">
         </run>
      </runtime>
   </extension>

È®Àå¿¡¼­ ½Äº°µÈ Ŭ·¡½º´Â Ç÷§Æû ÀÎÅÍÆäÀ̽º IProjectNature¸¦ ±¸ÇöÇØ¾ß ÇÕ´Ï´Ù. ÀÌ Å¬·¡½º´Â ¼Ó¼ºÀÌ ±¸¼ºµÉ ¶§ ¼Ó¼º ƯÁ¤ Á¤º¸¸¦ ÇÁ·ÎÁ§Æ®¿Í ¿¬°ü½Ã۱â À§ÇÑ Ç÷¯±×ÀΠƯÁ¤ ÀÛµ¿À» ±¸ÇöÇÕ´Ï´Ù.

public class MyNature implements IProjectNature {

      private IProject project;

      public void configure() throws CoreException {
         // Add nature-specific information
         // for the project, such as adding a builder
         // to a project's build spec.
      }
      public void deconfigure() throws CoreException {
         // Remove the nature-specific information here.
      }
      public IProject getProject() {
         return project;
      }
      public void setProject(IProject value) {
         project = value;
      }
   }

configure() ¹× deconfigure() ¸Þ¼Òµå´Â ÇÁ·ÎÁ§Æ®¿¡ ¼Ó¼ºÀÌ Ãß°¡µÇ°Å³ª Á¦°ÅµÉ ¶§ Ç÷§Æû¿¡¼­ Àü¼ÛµË´Ï´Ù.  configure() ¸Þ¼Òµå¸¦ ±¸ÇöÇÏ¿© ºô´õ¿¡ ¼³¸íµÈ ´ë·Î ÇÁ·ÎÁ§Æ®¿¡ ºô´õ¸¦ Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù.

¼Ó¼ºÀ» ÇÁ·ÎÁ§Æ®¿Í ¿¬°ü

ÇÁ·ÎÁ§Æ®¿¡ ¿¬°ü½ÃŰ´Â µ¥ ¼Ó¼º Á¤Àǰ¡ ÃæºÐÇÏÁö ¾Ê½À´Ï´Ù. ¼Ó¼ºÀ» Æ÷ÇÔÇϵµ·Ï ÇÁ·ÎÁ§Æ®ÀÇ ¼³¸íÀ» °»½ÅÇÏ¿© ÇÁ·ÎÁ§Æ®¿¡ ¼Ó¼ºÀ» ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù. À̰ÍÀº ´ë°³ ¼Ó¼ºÀ» ÁöÁ¤Çϴ Ư¼öÇÑ »õ ÇÁ·ÎÁ§Æ® ¸¶¹ý»ç¸¦ »ç¿ëÇÏ¿© »ç¿ëÀÚ°¡ »õ ÇÁ·ÎÁ§Æ®¸¦ ÀÛ¼ºÇÒ ¶§ ¹ß»ýÇÕ´Ï´Ù. ´ÙÀ½ ½º´ÏÆê¿¡¼­´Â ÁöÁ¤ÇÑ ÇÁ·ÎÁ§Æ®¿¡ »õ ¼Ó¼ºÀ» ÁöÁ¤ÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁÝ´Ï´Ù.

try {
      IProjectDescription description = project.getDescription();
      String[] natures = description.getNatureIds();
      String[] newNatures = new String[natures.length + 1];
      System.arraycopy(natures, 0, newNatures, 0, natures.length);
      newNatures[natures.length] = "com.example.natures.myNature";
      description.setNatureIds(newNatures);
      project.setDescription(description, null);
} catch (CoreException e) {
      // Something went wrong
   }

ÇÁ·ÎÁ§Æ® ¼³¸íÀ» ÇÁ·ÎÁ§Æ®¿¡ ¼³Á¤ÇÒ ¶§±îÁö ¼Ó¼ºÀº ½ÇÁ¦·Î ÇÁ·ÎÁ§Æ®¿¡ ÁöÁ¤(±¸¼º)µÇÁö ¾Ê½À´Ï´Ù. ¼Ó¼º¿¡ »ç¿ëµÇ´Â ID´Â ¼Ó¼º È®ÀåÀÇ ¿ÏÀüÇÑ À̸§(Ç÷¯±×ÀÎ ID + È®Àå ID)ÀÔ´Ï´Ù.

Á¦ÇÑÁ¶°ÇÀ» »ç¿ëÇÏ¿© ¼Ó¼ºÀ» Á¤ÀÇÇÑ °æ¿ì ÀÛ¾÷°ø°£ API¸¦ »ç¿ëÇÏ¿© »õ ¼Ó¼ºÀÇ À¯È¿¼ºÀ» °ËÁõÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ ÀüÁ¦Á¶°ÇÀ» »ç¿ëÇÏ¿© ¼Ó¼ºÀ» Á¤ÀÇÇÏ´Â °ÍÀ¸·Î °¡Á¤ÇÕ´Ï´Ù.

      <extension
      point="org.eclipse.core.resources.natures"
      id="myOtherNature"
      name="My Other Nature">
      <runtime>
         <run class="com.example.natures.MyOtherNature">
         </run>
      </runtime>
   <requires-nature id="com.example.natures.myNature"/>
   </extension>

ÇÁ·ÎÁ§Æ®¿¡ ´ëÇÑ Ã¹ ¹øÂ° ¼Ó¼ºÀÌ ¾øÀ¸¸é »õ ¼Ó¼ºÀº À¯È¿ÇÏÁö ¾Ê½À´Ï´Ù. Ç÷¯±×ÀÎÀÇ µðÀÚÀο¡ µû¶ó ÀüÁ¦Á¶°Ç ¼Ó¼ºÀÌ ¼³Ä¡µÇ¾ú´ÂÁö È®ÀÎÇϰųª ÀüÁ¦Á¶°Ç ¼Ó¼ºÀ» Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾î´À ¹æ¹ýÀ̵ç ÀÛ¾÷°ø°£ API¸¦ »ç¿ëÇÏ¿© ÇÁ·ÎÁ§Æ® ¼Ó¼ºÀÇ Á¦¾ÈµÈ Á¶ÇÕÀÇ À¯È¿¼ºÀ» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.

   try {
      IProjectDescription description = project.getDescription();
      String[] natures = description.getNatureIds();
      String[] newNatures = new String[natures.length + 1];
      System.arraycopy(natures, 0, newNatures, 0, natures.length);
      newNatures[natures.length] = "com.example.natures.myOtherNature";
      IStatus status = workspace.validateNatureSet(natures);

      // check the status and decide what to do
      if (status.getCode() == IStatus.OK) {
      	description.setNatureIds(newNatures);
      	project.setDescription(description, null);
         } else {
      	// raise a user error
	...
      }
} catch (CoreException e) {
      // Something went wrong
   }

¼Ó¼º ¼³¸íÀÚ

ID·Î ¼Ó¼º¿¡ ´ëÇØ ÀÛ¾÷ÇÏ´Â °Í ¿Ü¿¡ ¼Ó¼º, ¼Ó¼ºÀÇ Á¦ÇÑÁ¶°Ç ¹× ·¹À̺íÀ» ¼³¸íÇÏ´Â ¼³¸íÀÚ(IProjectNatureDescriptor)¸¦ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. ¼³¸íÀÚÀÇ Æ¯Á¤ ¼Ó¼ºÀ» Á¶È¸Çϰųª, ÀÛ¾÷°ø°£¿¡¼­ ¼³¸íÀÚ¸¦ °¡Á®¿Ã ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ ½º´ÏÆê¿¡¼­´Â »õ ¼Ó¼º¿¡ ´ëÇÑ ÇÁ·ÎÁ§Æ® ¼Ó¼º ¼³¸íÀÚ¸¦ °¡Á®¿É´Ï´Ù.

      IProjectNatureDescriptor descriptor = workspace.getNatureDescriptor("com.example.natures.myOtherNature");

¼³Ä¡µÈ ¸ðµç ¼Ó¼º¿¡ ´ëÇØ ¼³¸íÀÚ ¹è¿­À» °¡Á®¿Ã ¼öµµ ÀÖ½À´Ï´Ù.

      IProjectNatureDescriptor[] descriptors = workspace.getNatureDescriptors();

 

Copyright IBM Corporation and others 2000, 2003.