내부 및 외부 편집기

org.eclipse.ui.editors

이 확장점은 Workbench에 새 편집기를 추가하는 데 사용됩니다. 편집기는 Workbench 페이지 내의 시각적 컴포넌트입니다. 일반적으로 문서 또는 입력 오브젝트를 편집하거나 찾아보는 데 사용됩니다. 편집기를 열려면 사용자는 일반적으로 IFile에서 "열기"를 호출합니다. 이 조치가 수행되면 Workbench 레지스트리를 참조하여 파일 유형에 적절한 편집기가 결정된 다음 편집기 유형의 새로운 인스턴스가 만들어집니다. 실제 결과는 편집기 유형에 따라 달라집니다. Workbench는 Workbench에 밀접하게 통합되어 있는 내부 편집기와 독립적인 프레임 창에서 실행되는 외부 편집기의 생성을 지원합니다. 내부 편집기와 외부 편집기 사이에는 다양한 통합 수준이 있습니다.

내부 편집기의 경우 Workbench 창과 편집기 파트 사이에서 완벽한 통합이 이루어질 수 있습니다. 잘라내기, 복사, 붙여넣기 등과 같은 여러 공통 조치를 사용하여 Workbench 메뉴와 도구 모음을 미리 로드합니다. 활성 파트인 보기 또는 편집기에서 이 조치에 대한 구현을 제공하게 됩니다. 내부 편집기에서는 Workbench 창에 나타나는 새 조치도 정의할 수 있습니다. 이 조치는 편집기가 활성화된 경우에만 나타납니다.

Workbench와 외부 편집기 사이의 통합 정도는 좀 덜 엄격합니다. 이 경우 Workbench에서 편집기를 실행할 수 있지만 그 후에는 외부 편집기의 상태를 확인하거나 파일 시스템을 제외한 다른 수단으로 공동 작업을 할 수 있는 방법이 없습니다.

<!ELEMENT extension (editor*)>

<!ATTLIST extension

point CDATA #REQUIRED

id    CDATA #IMPLIED

name  CDATA #IMPLIED>


<!ELEMENT editor (contentTypeBinding*)>

<!ATTLIST editor

id               CDATA #REQUIRED

name             CDATA #REQUIRED

icon             CDATA #IMPLIED

extensions       CDATA #IMPLIED

class            CDATA #IMPLIED

command          CDATA #IMPLIED

launcher         CDATA #IMPLIED

contributorClass CDATA #IMPLIED

default          (true | false) "false"

filenames        CDATA #IMPLIED

symbolicFontName CDATA #IMPLIED

matchingStrategy CDATA #IMPLIED>


<!ELEMENT contentTypeBinding EMPTY>

<!ATTLIST contentTypeBinding

contentTypeId CDATA #REQUIRED>

포함하는 편집기에 지정된 컨텐츠 유형이 정의되어 있고 해당 유형의 파일 편집에 적합함을 표시합니다.



다음은 내부 편집기 확장 정의 예제입니다.

   

<extension point=

"org.eclipse.ui.editors"

>

<editor id=

"com.xyz.XMLEditor"

name=

"Fancy XYZ XML editor"

icon=

"./icons/XMLEditor.gif"

extensions=

"xml"

class=

"com.xyz.XMLEditor"

contributorClass=

"com.xyz.XMLEditorContributor"

symbolicFontName=

"org.eclipse.jface.textfont"

default=

"false"

>

</editor>

</extension>

command 속성을 사용한 경우에는 플랫폼에 종속되는 방법으로 실행되는 외부 프로그램 명령행으로 처리됩니다.

launcher 속성을 사용할 경우 편집기도 외부 프로그램으로 처리됩니다. 이 경우 지정한 클래스에서 org.eclipse.ui.IEditorLauncher를 구현해야 합니다. 실행기가 인스턴스화된 다음 open(IFile file)을 호출하여 편집기를 실행합니다.

class 속성을 사용할 경우 내부 편집기로 처리되며, 지정된 클래스에서 org.eclipse.ui.IEditorPart를 구현해야 합니다. 새로운 편집기 유형을 정의할 때는 서브클래스 org.eclipse.ui.EditorPart를 일반적으로 사용합니다. contributorClass 속성도 정의해야 합니다. 지정된 클래스는 org.eclipse.ui.IEditorActionBarContributor를 구현해야 하며, 편집기 유형의 기능을 반영하는 Workbench 메뉴 및 도구 모음에 새 조치를 추가하는 데 사용됩니다.

Workbench에는 특정한 유형의 편집기가 하나 이상 열려 있을 수 있습니다. 예를 들어 Java 편집기가 하나 이상 열려 있을 수 있습니다. 조치와 조치 이미지를 중복으로 생성하지 않기 위해 편집기 개념이 둘로 분할되었습니다. IEditorActionBarContributor는 조치의 생성을 담당하고, 편집기는 조치 구현을 담당합니다. 또한, 열려 있는 편집기들이 이 제공자를 공유합니다. 이러한 디자인 때문에 하나 이상의 열려 있는 편집기에 대해 조치 집합은 하나만 있습니다.

제공자는 편집기 유형을 반영하는 Workbench 메뉴와 도구 모음에 새로운 조치를 추가합니다. 이러한 조치는 공유되며 호출할 경우 활성화된 편집기에서 수행됩니다. 활성화된 편집기는 IEditorActionBarContributor.setActiveEditor를 호출하여 제공자로 전달됩니다. Workbench 창에 있는 주 그룹과 조치의 ID는 org.eclipse.ui.IWorkbenchActionConstants에서 정의됩니다. 주 그룹과 조치의 ID는 새로운 조치를 추가할 때 참조 지점으로 사용되어야 합니다. path 속성에 대한 다음 값을 사용하여 상위 레벨 메뉴를 작성합니다.

이 경로에 추가된 조치와 메뉴는 관련된 편집기가 활성화된 경우에만 표시됩니다. 편집기가 닫히면 메뉴와 조치가 제거됩니다.

Workbench는 "기본 문서 편집기"를 제공합니다. 일반 사용자 제품에 기본 제공 번들의 일부로 다른 편집기가 포함될 수 있습니다. 그런 경우 위에서 설명한 구문을 사용하여 편집기가 확장으로 등록됩니다.