ºñ±³ Ç÷¯±×ÀÎÀ» »ç¿ëÇÏ¿© ±¸Á¶ÈµÇÁö ¾ÊÀº ¿ä¼Ò °£ÀÇ ÄÁÅÙÃ÷ Â÷ÀÌÁ¡À» º¸°í º´ÇÕÇÏ´Â µ¥ ÇÊ¿äÇÑ Æ¯¼öÈµÈ Ç¥½Ã±â¸¦ Á¦°øÇÒ ¼ö ÀÖ½À´Ï´Ù.
´ÜÀÏ ÀԷ¸¸ »ç¿ëÇÒ ¼ö Àֱ⠶§¹®¿¡ ºñ±³°¡ ÇÊ¿ä¾ø´Â °æ¿ì¿¡´Â ÄÁÅÙÃ÷ Ç¥½Ã±â¸¦ »ç¿ëÇÕ´Ï´Ù. À̸¦ À§ÇÑ ÀϹÝÀûÀÎ ¿¹°¡ ¹Ù·Î "·ÎÄà È÷½ºÅ丮¿¡¼ º¹¿ø" ±â´ÉÀÔ´Ï´Ù. org.eclipse.compare.contentViewers È®ÀåÁ¡À» »ç¿ëÇÏ¿© ÇØ´ç ÀÔ·ÂÀ» ºñ±³ÇÏÁö ¾Ê´Â Ư¼öÈµÈ ÄÁÅÙÃ÷ Ç¥½Ã±â¸¦ Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÄÁÅÙÃ÷ º´ÇÕ Ç¥½Ã±â¿¡¼ ÇØ´ç ÀԷ¿¡ ´ëÇÑ 2¹æÇâ ¶Ç´Â 3¹æÇâ ºñ±³¸¦ ¼öÇàÇϰí, °á°ú¸¦ ³ª¶õÈ÷ ¶Ç´Â ´Ù¸¥ ÀûÀýÇÑ ¹æ¹ýÀ¸·Î Á¦°øÇÕ´Ï´Ù. Ç¥½Ã±â¸¦ »ç¿ëÇÏ¿© ÀÔ·Â °£¿¡ º´ÇÕÇÒ ¼ö ÀÖ½À´Ï´Ù. ÄÁÅÙÃ÷ º´ÇÕ Ç¥½Ã±â´Â ÅØ½ºÆ®³ª À̹ÌÁö¿¡ °øÅëÀÔ´Ï´Ù.
Ç¥ÁØ º´ÇÕ Ç¥½Ã±â°¡ Ç÷¯±×ÀÎ ±â´É¿¡ ÀûÇÕÇÏÁö ¾ÊÀº °æ¿ì »ç¿ëÀÚ °íÀ¯ÀÇ ÄÁÅÙÃ÷ Ç¥½Ã±â¸¦ ±¸ÇöÇϵµ·Ï ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ÄÁÅÙÃ÷ Ç¥½Ã±â´Â org.eclipse.compare.contentMergeViewers È®ÀåÁ¡À» »ç¿ëÇÏ¿© Ç÷§Æû¿¡ ´ëÇØ µî·ÏµÇ¾î¾ß ÇÕ´Ï´Ù. ´ÙÀ½ ¸¶Å©¾÷Àº Java IDE¿¡¼ Java ¹× Ư¼º ÆÄÀÏÀ» º¼ ¼ö ÀÖµµ·Ï Ư¼öÈµÈ ÄÁÅÙÃ÷ º´ÇÕ Ç¥½Ã±âÀÇ Á¤ÀǸ¦ Ç¥½ÃÇÕ´Ï´Ù.
<extension point="org.eclipse.compare.contentMergeViewers"> <viewer id="org.eclipse.jdt.internal.ui.compare.JavaContentViewerCreator" extensions="java,java2" class="org.eclipse.jdt.internal.ui.compare.JavaContentViewerCreator"> </viewer> <viewer id="org.eclipse.jdt.internal.ui.compare.TextMergeViewerCreator" extensions="properties" class="org.eclipse.jdt.internal.ui.compare.TextMergeViewerCreator"> </viewer> </extension>
¸¶Å©¾÷¿¡¼ Ç¥½Ã±âÀÇ ID, ÀÌ ID¸¦ ÀÛ¼ºÇϴ Ŭ·¡½º ¹× ÄÁÅÙÃ÷ Ç¥½Ã±â°¡ »ç¿ëÇØ¾ß ÇÒ ÆÄÀÏ È®ÀåÀÚ¸¦ ÁöÁ¤ÇϽʽÿÀ.
ContentMergeViewer´Â 2°³ÀÇ ÄÁÅÙÃ÷ ¿µ¿ªÀÌ ³ª¶õÈ÷ ÀÖ°í °øÅë »óÀ§(3¹æÇâ ºñ±³¿ë)¿¡ ´ëÇÑ ¼±ÅÃÀû ÄÁÅÙÃ÷ ¿µ¿ªÀÌ ÀÖ´Â Ãß»óÀûÀÎ ºñ±³ ¹× º´ÇÕ Ç¥½Ã±âÀÔ´Ï´Ù. ±¸Çö¿¡ ÄÁÅÙÃ÷ À¯Çü¿¡ ´ëÇÑ °¡Á¤ÀÌ ¾øÀ¸¹Ç·Î, ¼ºêŬ·¡½º°¡ ƯÁ¤ ÄÁÅÙÃ÷ À¯ÇüÀ» ó¸®ÇØ¾ß ÇÕ´Ï´Ù.
org.eclipse.compare.internalÀÇ ImageMergeViewer¿¡¼´Â ContentMergeViewer¸¦ »ç¿ëÇÏ¿© À̹ÌÁö¿¡ ´ëÇÑ °£´ÜÇÑ º´ÇÕ Ç¥½Ã±â¸¦ ±¸ÇöÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁÝ´Ï´Ù. ÄÁÅÙÃ÷ º´ÇÕ Ç¥½Ã±â´Â IMergeViewerContentProvider ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇØ¾ß ÇÏ´Â ÄÁÅÙÃ÷ Á¦°øÀÚ¸¦ ÅëÇØ ÇØ´ç ¸ðµ¨¿¡ ¾×¼¼½ºÇÕ´Ï´Ù.
Ç¥½Ã±â°¡ ÅØ½ºÆ®¸¦ »ç¿ëÇÏ´Â °æ¿ì ÅØ½ºÆ® ÄÁÅÙÃ÷¸¦ ºñ±³ÇÏ°í º´ÇÕÇÏ´Â Ãß°¡ Ŭ·¡½º¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
TextMergeViewer´Â ÅØ½ºÆ® ÄÁÅÙÃ÷¸¦ ºñ±³ ¹× º´ÇÕÇϱâ À§ÇÑ ContentMergeViewerÀÇ ±¸Ã¼ÀûÀΠǥÁØ ¼ºêŬ·¡½ºÀÔ´Ï´Ù. ÅØ½ºÆ® º´ÇÕ Ç¥½Ã±â¿¡¼´Â RangeDifferencer¸¦ »ç¿ëÇÏ¿© 2°³ ¶Ç´Â 3°³ÀÇ ÀÔ·Â ¹®¼¸¦ Çະ·Î ÅØ½ºÆ® ºñ±³¸¦ ¼öÇàÇÕ´Ï´Ù.
¼·Î ´Ù¸¥ ÅØ½ºÆ® ÇàÀÇ °æ¿ì TextMergeViewer¿¡¼´Â ITokenComparator¸¦ »ç¿ëÇÏ¿© ÀÏÄ¡ÇÏ´Â ÅäÅ«°ú ÀÏÄ¡ÇÏÁö ¾Ê´Â ÅäÅ«ÀÇ °¡Àå ±ä ¼ø¼¸¦ ã½À´Ï´Ù. TextMergeViewerÀÇ ±âº» ÅäÅ« ºñ±³´Â °ø¹éÀ¸·Î ±¸ºÐµÈ ¹®ÀÚ¿¡¼ ÀÛµ¿ÇÕ´Ï´Ù. ´Ù¸¥ °èȹÀÌ ÇÊ¿äÇÒ °æ¿ì(¿¹¸¦ µé¾î, Java ÀÎ½Ä º´ÇÕ Ç¥½Ã±âÀÇ Java ÅäÅ«) Ŭ¶óÀÌ¾ðÆ®´Â ITokenComparator ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ¿© ÀÚü ÅäÅ« ºñ±³±â¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.
TextMergeViewer´Â Àüü ¹®¼¿Í ¹®¼ÀÇ ÇÏÀ§ ¹üÀ§¿¡¼ ÀÛµ¿ÇÕ´Ï´Ù. ÀϺΠ¹®¼ÀÇ °æ¿ì Ç¥½Ã±âÀÇ ÀÔ·ÂÀº IDocument ´ë½Å IDocumentRange¿©¾ß ÇÕ´Ï´Ù.
RangeDifferencer´Â ÀÏÄ¡ÇÏ´Â ºñ±³ °¡´ÉÇÑ ¿£Æ¼Æ¼¿Í ÀÏÄ¡ÇÏÁö ¾Ê´Â ºñ±³ °¡´ÉÇÑ ÅØ½ºÆ® ÄÁÅÙÃ÷¿¡¼ ¿£Æ¼Æ¼ÀÇ °¡Àå ±ä ¼ø¼¸¦ ã½À´Ï´Ù. ÇØ´ç ±¸ÇöÀº ÆÄÀÏ ºñ±³ ÇÁ·Î±×·¥(ÀÛ¼ºÀÚ: Webb Miller ¹× Eugene W. Myers, Software Practice and Experience, º¼·ý 15, 1985³â 11¿ù)¿¡¼ ¼³¸íÇÑ ¿ÀºêÁ§Æ®ÈµÈ ¹öÀüÀÇ ¾Ë°í¸®ÁòÀ» ±âÁØÀ¸·Î ÇÕ´Ï´Ù. Ŭ¶óÀÌ¾ðÆ®´Â IRangeComparator ÀÎÅÍÆäÀ̽ºÀÇ ±¸ÇöÀ¸·Î Â÷º°±â¿¡°Ô ÀÔ·ÂÀ» Á¦°øÇØ¾ß ÇÕ´Ï´Ù. IRangeComparator´Â ÀÔ·Â µ¥ÀÌÅ͸¦ ¿£Æ¼Æ¼ÀÇ ¼ø¼·Î ¼¼ºÐÇϰí ÇÑ ¿£Æ¼Æ¼¸¦ ´Ù¸¥ IRangeComparatorÀÇ ¿£Æ¼Æ¼¿Í ºñ±³Çϱâ À§ÇÑ ¸Þ¼Òµå¸¦ Á¦°øÇÕ´Ï´Ù.
¿¹¸¦ µé¾î, µÎ °³ÀÇ ÅØ½ºÆ® ¹®¼¸¦ ºñ±³Çϰí ÀÏÄ¡ÇÏ´Â Çà°ú ÀÏÄ¡ÇÏÁö ¾Ê´Â ÇàÀÇ °¡Àå ±ä °øÅë ¼ø¼¸¦ ã±â À§ÇØ IRangeComparatorÀÇ ±¸Çö¿¡¼ ¹®¼¸¦ ÇàÀ¸·Î ¼¼ºÐÇÏ°í µÎ ÇàÀÌ °°ÀºÁö Å×½ºÆ®Çϱâ À§ÇÑ ¸Þ¼Òµå¸¦ Á¦°øÇÕ´Ï´Ù. À̸¦ ¼öÇàÇÒ ¼ö ÀÖ´Â ¹æ¹ý ¿¹Á¦´Â org.eclipse.compare.internal.DocLineComparator¸¦ ÂüÁ¶ÇϽʽÿÀ.
Â÷º°±â¿¡¼´Â ÀÌ ¼ø¼ »çÀÌÀÇ Â÷À̸¦ RangeDifference ¿ÀºêÁ§Æ®ÀÇ ¹è¿·Î ¸®ÅÏÇÕ´Ï´Ù. ¸ðµç ´ÜÀÏ RangeDifference¿¡¼´Â Â÷ÀÌ Á¾·ù(º¯°æ ¾øÀ½, º¯°æ, Ãß°¡, »èÁ¦)¿Í µÎ °³³ª ¼¼ °³ÀÇ ÀÔ·ÂÀÇ ±âº»ÀÌ µÇ´Â ºñ±³ °¡´ÉÇÑ ¿£Æ¼Æ¼ÀÇ ÇØ´ç ¹üÀ§¸¦ ¼³¸íÇÕ´Ï´Ù.