ÄÁÅÙÃ÷ ¾Æ¿ô¶óÀ̳Ê

ÆíÁý±â¿¡´Â ÆíÁý±â ÄÁÅÙÃ÷¿¡ ´ëÇÑ ±¸Á¶È­µÈ º¸±â¸¦ Á¦°øÇÏ°í ÆíÁý±â ÄÁÅÙÃ÷ÀÇ Å½»öÀ» Áö¿øÇÏ´Â ÇØ´ç ÄÁÅÙÃ÷ ¾Æ¿ô¶óÀ̳ʰ¡ ÀÖ´Â °æ¿ì°¡ ¸¹½À´Ï´Ù.

Workbench´Â ÀÌ·± ¸ñÀûÀ¸·Î Ç¥ÁØ ¾Æ¿ô¶óÀÎ º¸±â¸¦ Á¦°øÇÕ´Ï´Ù. Workbench »ç¿ëÀڴ â >º¸±â Ç¥½Ã ¸Þ´º¸¦ »ç¿ëÇÏ¿© ÀÌ º¸±â¸¦ º¼ ¼ö ÀÖ´Â ½Ã±â¸¦ Á¦¾îÇÕ´Ï´Ù.

ÀÏ¹Ý TextEditor´Â ÅØ½ºÆ® ±¸Á¶¸¦ ¾ËÁö ¸øÇϱ⠶§¹®¿¡ Èï¹Ì·Î¿î ¾Æ¿ô¶óÀÎ º¸±â¿¡ ´ëÇÑ ÀÛµ¿À» Á¦°øÇÒ ¼ö ¾ø½À´Ï´Ù.  µû¶ó¼­ ¾Æ·¡ Ç¥½ÃµÈ ±âº» ¾Æ¿ô¶óÀÎ º¸±â´Â ¸¹Àº ¿ªÇÒÀ» ¼öÇàÇÏÁö ¸øÇÕ´Ï´Ù.

±âº» ÄÁÅÙÃ÷ ¾Æ¿ô¶óÀ̳Ê

 

ÅØ½ºÆ® ÇÁ·¹ÀÓ¿öÅ©ÀÇ ÆíÁý±â´Â °íÀ¯ÇÑ ÄÁÅÙÃ÷ ¾Æ¿ô¶óÀÌ³Ê ÆäÀÌÁö¸¦ ¾Æ¿ô¶óÀÎ º¸±â¿¡ Á¦°øÇÒ ¼ö ÀÖ½À´Ï´Ù.  ÆíÁý±â ¾Æ¿ô¶óÀ̳ʴ Workbench°¡ IContentOutlinePage À¯Çü ¾î´ðÅ͸¦ ¿äûÇÒ ¶§ ÁöÁ¤µË´Ï´Ù.

public Object getAdapter(Class required) {
	if (IContentOutlinePage.class.equals(required)) {
		if (fOutlinePage == null) {
			fOutlinePage= new JavaContentOutlinePage(getDocumentProvider(), this);
			if (getEditorInput() != null)
				fOutlinePage.setInput(getEditorInput());
		}
		return fOutlinePage;
	}
	return super.getAdapter(required);
}

ÄÁÅÙÃ÷ ¾Æ¿ô¶óÀÌ³Ê ÆäÀÌÁö´Â IContentOutlinePage¸¦ ±¸ÇöÇØ¾ß ÇÕ´Ï´Ù.  ÀÌ ÀÎÅÍÆäÀ̽º´Â ¼±ÅûçÇ× º¯°æ ¸®½º³Ê(ISelectionProvider)¿¡ ¾Ë¸®´Â ±â´ÉÀ» º¸±â(IPage)ÀÇ ÆäÀÌÁö¿¡ ÀÛµ¿°ú °áÇÕÇÕ´Ï´Ù.  ÄÁÅÙÃ÷ ¾Æ¿ô¶óÀ̳ʴ ÀϹÝÀûÀ¸·Î JFace Ç¥½Ã±â¸¦ »ç¿ëÇÏ¿© ±¸ÇöµË´Ï´Ù.  ÄÁÅÙÃ÷ ¾Æ¿ô¶óÀ̳Ê(ContentOutlinePage)ÀÇ ±âº» ±¸ÇöÀº JFace Æ®¸® Ç¥½Ã±â¸¦ »ç¿ëÇÏ¿© ¾Æ¿ô¶óÀÎÀÇ °èÃþ ±¸Á¶ Ç¥½Ã¸¦ Ç¥½ÃÇÕ´Ï´Ù.  ÀÌ Ç¥½Ã´Â JavaContentOutlinePage¸¦ Æ÷ÇÔÇÏ¿© ´Ù¼öÀÇ ±¸Á¶È­µÈ ¾Æ¿ô¶óÀ̳ʿ¡ ÀûÇÕÇÕ´Ï´Ù.

ÆäÀÌÁöÀÇ ±¸ÇöÀ» Á» ´õ ÀÚ¼¼È÷ »ìÆì º¾½Ã´Ù. À§ ½º´ÏÆê¿¡¼­ ÆíÁý±â·Î ¾Æ¿ô¶óÀÎ ÆäÀÌÁö°¡ ÀÛ¼ºµÉ ¶§ ÇØ´ç ÀÔ·Â ¿ä¼Ò°¡ ÆíÁý±âÀÇ ÀÔ·Â ¿ä¼Ò·Î ¼³Á¤µË´Ï´Ù.

public void createControl(Composite parent) {

	super.createControl(parent);

	TreeViewer viewer= getTreeViewer();
	viewer.setContentProvider(new ContentProvider());
	viewer.setLabelProvider(new LabelProvider());
	viewer.addSelectionChangedListener(this);

	if (fInput != null)
		viewer.setInput(fInput);
}

Æ®¸® Ç¥½Ã±â ÀÛ¼ºÀº ContentOutlinePage¿¡¼­ °è½ÂµË´Ï´Ù.  Ç¥ÁØ ÄÁÅÙÃ÷ ¹× ·¹À̺í Á¦°ø¾÷ü°¡ »ç¿ëµË´Ï´Ù. ÆíÁý±â ÀÔ·ÂÀÌ ¼³Á¤(¶Ç´Â º¯°æ)µÉ ¶§¸¶´Ù JavaContentOutlinePage´Â ÆíÁý±â ÀԷ¿¡ ´ëÇÑ ¹®¼­¸¦ ¾ò°í ÅØ½ºÆ®¸¦ ±¸¹® ºÐ¼®ÇÕ´Ï´Ù.

public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
	...
	if (newInput != null) {
		IDocument document= fDocumentProvider.getDocument(newInput);
		if (document != null) {
			document.addPositionCategory(SEGMENTS);
			document.addPositionUpdater(fPositionUpdater);

			parse(document);
		}
	}
}

ÅØ½ºÆ®´Â ¹®¼­ ³»ÀÇ ¼¼±×¸ÕÆ®¶ó´Â ¹üÀ§·Î ±¸¹® ºÐ¼®µË´Ï´Ù.   ÀÌ ¼¼±×¸ÕÆ®´Â ¾Æ¿ô¶óÀÎ º¸±â¿¡¼­ Ç¥½ÃµË´Ï´Ù.

¼±ÅûçÇ×ÀÌ º¯°æµÇ¸é ¼±ÅÃµÈ ¼¼±×¸ÕÆ®°¡ °Ë»öµË´Ï´Ù.  ÇØ´ç ¿ÀÇÁ¼ÂÀÌ ÆíÁý±âÀÇ °­Á¶Ç¥½Ã ¹üÀ§¸¦ ¼³Á¤ÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù.

public void selectionChanged(SelectionChangedEvent event) {

	super.selectionChanged(event);

	ISelection selection= event.getSelection();
	if (selection.isEmpty())
		fTextEditor.resetHighlightRange();
	else {
		Segment segment= (Segment) ((IStructuredSelection) selection).getFirstElement();
		int start= segment.position.getOffset();
		int length= segment.position.getLength();
		try {
			fTextEditor.setHighlightRange(start, length, true);
		} catch (IllegalArgumentException x) {
			fTextEditor.resetHighlightRange();
		}
	}
}
Copyright IBM Corporation and others 2000, 2003.