반응형
먼저 이 기사에서는 플레인 텍스트 에디터가 있는 플러그인을 생성하기 위한 템플릿을 통해 이클립스 플러그인을 작성할 때 사용하는 [신규 플러그인 프로젝트] 마법사에 템플릿을 짜넣는 방법을 소개합니다.템플릿을 마법사에 입력하면 플러그인 작성 시 확장포인트 추가나 Java 파일 작성 등 일련의 작업을 자동화할 수 있습니다.대상독자 이클립스의 플러그인을 작성하신 적이 있는 분을 대상으로 합니다.필요한 환경 이클립스 SDK 버전 3.0 이후.템플릿이란 무엇인가?이클립스의[신규 플러그 인 프로젝트]작성 마법사의 3 페이지째에[템플릿]페이지라고 하는 페이지가 준비되어 있고,[Hello, World]플러그 인이나 뷰 첨부의 플러그 인등의 템플릿을 선택할 수 있게 되어 있습니다.이러한 템플릿을 사용하면 일반 플러그인 프로젝트의 콘텐츠에 확장 포인트라던가 자바 클래스 등의 추가 콘텐츠를 만들 수 있습니다.예를 들면 여기서[뷰 첨부 플러그 인]템플릿을 선택하면, 뷰·클래스의 이름이나 뷰·액션의 유무등의 옵션을 지정하는 것만으로, 확장 포인트나 뷰·클래스등이 추가된, 플러그 인·프로젝트가 생성됩니다.이 때 프로젝트에 추가된 뷰 클래스나 아이콘 이미지 파일 등은 ECLIPSE_HOME/plugins/org.eclipse.pde.ui_3.x/templates_3.0/view/ 디렉토리 아래에 있는 템플릿 파일을 사용하여 생성됩니다.또, 매니페스토·파일에의 확장 포인트의 추가나, 프로젝트에의 클래스의 추가등을 실시하는 것은 「org.eclipse.pde.ui.plugin Content」확장 포인트를 사용해[신규 플러그 인·프로젝트]작성 마법사에 짜넣어지는, 플러그 인의 「컨텐츠·위저드」입니다.또한 템플릿은 ′org.eclipse.pde.ui.new Extension′ 확장포인트 및 ′org.eclipse.pde.ui.templates′ 확장포인트를 사용하여 매니페스토 에디터에서 새로운 확장포인트를 추가할 때 사용되는 ′신규 확장마법사′를 추가할 수도 있습니다.템플릿에서 뭘 할 수 있을까?이러한 기능은 특정 유형의 플러그인을 개발할 때 수행해야 하는 반복 작업을 줄이기 위해 이용할 수 있습니다.예를 들어 RCP어플리케이션을 개발할 때는 실제 개발을 시작하기 전에 org.eclipse.core.runtime.applications 확장포인트나 몇 가지 자바 클래스를 만들어야 하는데 이런 컨텐츠들을 추가하기 위한 템플릿을 [신규 플러그인 프로젝트] 작성 마법사에 포함시켜 놓으면 마법사가 끝나는 즉시 원래 작업을 할 수 있습니다.또한 이 기사에서 사용하고 있는 플레인 텍스트 에디터를 작성하는 템플릿을 사용하면 구문 강조 표시를 하는 JavaScript 에디터 플러그인이나 Perl 에디터 플러그인 등을 작성하는 경우에 필요한 플러그인을 의존관계에 추가하거나 또는 ′org.eclipse.ui.editors′ 확장포인트를 추가해서 편집하는 수고를 덜 수 있습니다.플러그 인 프로젝트의 작성[파일]→[신규]→[프로젝트...]→[플러그 인 프로젝트]를 선택해,[다음에]를 클릭해,[신규 플러그 인 프로젝트]작성 마법사를 기동합니다.프로젝트명에 example.template라고 입력합니다.그 외의 항목은 디폴트인 채로,[다음에]를 클릭해 「플러그 인·컨텐츠」페이지까지 진행되어,[종료]를 클릭합니다.다음으로 매니페스토 파일(plugin.xml)의 편집을 실시합니다.매니페스트·파일을 매니페스트·에디터로 열면, 에디터의[의존 관계]탭을 클릭해,[의존 관계]페이지를 표시해,[추가]버튼을 누릅니다.그러면,[플러그 인의 선택]다이알로그가 표시되므로, 플러그 인의 리스트로부터 이하의 3개를[Ctrl] 키를 누르면서 복수 선택하고[OK]를 누릅니다(1개씩 선택도 가능). org.eclipse.core.resources
org . eclipse . pde . core
org.eclipse.pde.ui로써 플러그인의 의존관계에 대한 작업이 끝났으니 한번 plugin.xml 파일을 저장해 주세요.다음에, 매니페스토·에디터로[확장]페이지를 열어([확장]탭을 클릭),[추가]버튼을 눌러[신규 확장]다이알로그를 표시합니다.표시된 다이알로그의[사용 가능한 확장 포인트]리스트로부터[org.eclipse.pde.ui.plugin Content]를 선택해[종료]를 누릅니다.[확장]페이지에 추가된[org.eclipse.pde.ui.plugin Content]확장 포인트를 오른쪽 클릭하고,[신규]→[wizard]로 선택합니다.매니페스트·에디터에서 wizard의 속성을 이하와 같이 설정합니다(각 속성의 의미는, Eclipse의 헬프의[PDE 가이드]→[참조]→[확장 포인트 참조]→[org.eclipse.pde.ui.plugin Content]를 참조해 주세요).작성한 위저드를 오른쪽 클릭해[신규]→[description]이라고 선택합니다.이 엘리먼트에는, 이 템플릿이[신규 플러그 인·프로젝트]위저드의[템플릿]페이지로 선택되었을 때에 페이지의 오른쪽에 표시되는 설명문을 지정합니다.이 텍스트는, 매니페스토·에디터의 하부에 있는[텍스트 본문]이라고 하는 텍스트를 클릭하면 표시되는 텍스트·박스에 입력합니다.이 텍스트는, 반드시 외부화할 필요가 있습니다만(이하의 보충 설명을 참조), 여기에서는 간단하게 하기 위해 「Sample editor」라고만 입력해 주세요.또한 이 페이지의 선두에서 입수할 수 있는 소스에서는 이 텍스트는 외부화되어 있습니다.이것으로 매니페스토·파일의 편집은 끝입니다.「 plugin . xml 」
< ? xml version = ′ 1 . 0 ′ encoding = ′ UTF - 8 ′ ? >
< ? eclipse version = ′ 3 . 0 ′ ? >
name=′Template 플러그인′
version = ′ 1 . 0 . 0 ′
provider - name = ′′
class = ′ example . template . TemplatePlugin ′ >
< runtime >
< export name = ′ * ′ / >
< / library >
< / runtime >
< requires >
< import plugin = ′ org . eclipse . ui ′ / >
< import plugin = ′ org . eclipse . core . runtime ′ / >
< import plugin = ′ org . eclipse . core . resources ′ / >
< import plugin = ′ org . eclipse . pde . core ′ / >
< import plugin = ′ org . eclipse . pde . ui ′ / >
< / requires >
< extension point = ′ org . eclipse . pde . ui . pluginContent ′ >
< wizard java = ′ true ′
icon = ′ icons / sample . gif ′
class = ′ example . template . TextEditorNewWizard ′
ui - content = ′ true ′
name=′텍스트 에디터가 있는 플러그인′
id = ′ example . template . mywizard ′ >
< description >
% pluginContent . txtEditor . description
< / description >
< / wizard >
< / extension >
컨텐츠 마법사의 구현 컨텐츠 마법사 클래스는 ′org.eclipse.pde.ui.plug in Content′ 확장 포인트의 class 속성으로 지정되는 IPlug in Content Wizard 인터페이스를 구현하는 클래스입니다.이 클래스는 템플릿 섹션(ITemplate Section) 관리 및 프로젝트 의존 관계 편집, 확장 포인트 추가 등의 처리를 수행합니다.PDE에는 이런 처리를 쉽게 할 수 있도록 New Plug in Template Wizard와 Option Template Section이라고 하는 클래스가 준비가 되어있기 때문에 샘플에서 사용을 하겠습니다.NewPlugin Template Wizard 추상 클래스는 IPlugin Content Wizard 인터페이스를 구현한 클래스로 콘텐츠 마법사 클래스의 슈퍼클래스로 사용하도록 설계되어 있습니다.또한 이 클래스는 하나 이상의 Option Template Section 클래스의 서브클래스를 관리하고 마법사의 [종료] 버튼이 눌러진 뒤의 확장 포인트 추가 및 템플릿 가져오기 등의 처리를 각 Option Template Section 클래스로 이양합니다.Option Template Section 클래스는 ITemplate Section 인터페이스 구현 클래스로, 생성하는 확장 포인트와 일대일로 연관 지을 수 있습니다.또한 연관된 확장 지점을 만들거나 템플릿 파일 관리 및 템플릿 옵션 지정을 위한 마법사 페이지의 작성도 이 클래스에서 합니다.따라서 대부분의 처리는 Option Template Section 클래스의 서브클래스가 맡게 되고 NewPlugin Template Wizard 클래스는 Option Template Section 관리만 하게 됩니다.「 TextEditorNewWizard . java 」
package example . template ;
import org . eclipse . pde . ui . IFieldData ;
import org . eclipse . pde . ui . templates . ITemplateSection ;
import org . eclipse . pde . ui . templates . NewPluginTemplateWizard ;
/**
* @ author tak _ a
*
* TODO 이 생성된 형 코멘트 템플릿을 변경하려면 다음 점프: * 창 - 설정 - Java - 코드 스타일 - 코드 템플릿 * /
public class TextEditorNewWizard extends NewPluginTemplateWizard {
public ITemplateSection [ ] createTemplateSections ( ) {
// 사용하는 TemplateSection의 배열을 반환한다
return new ITemplateSection [ ] { new TextEditorTemplate ( ) } ;
}
public void init ( IFieldData data ) {
super . init ( data ) ;
// 제목 설정
set Window Title(′플레인 텍스트 에디터를 가지′
+ ′신규 플러그인 프로젝트′);
}
}}이 createTemplateSections 메서드에서 각 확장 포인트를 지원하는 OptionTemplateSection 클래스 배열을 반환하면 콘텐츠 마법사 클래스 구현은 끝납니다.이때 TextEditor Template 클래스는 아직 작성하지 않았지만 곧 작성할 테니 그대로 적어주세요.템플릿 섹션 구현 Option Template Section 서브클래스에서는 하나의 확장 포인트에 대한 추가 콘텐츠(확장 포인트 및 의존 관계 및 템플릿 파일) 작성 및 템플릿 옵션을 지정하는 마법사 페이지 작성(여러 페이지를 만들 수도 있음)을 수행합니다.이 샘플은 추가할 확장포인트는 org.eclipse.ui.editors 뿐이기 때문에 OptionTemplateSection의 서브클래스도 하나뿐입니다.이 클래스에서는 컨스트럭터에서 이 섹션에서 사용할 마법사 페이지의 개수를 setPageCount 메서드로 지정하고 각 페이지에서 사용할 옵션을 등록해 두어야 합니다.Option Template Section 클래스는 옵션이 등록되면 해당 옵션의 유형에 따라 마법사 페이지에 컨트롤을 추가합니다.이 유형은 옵션을 등록할 때 사용하는 addOption 메서드의 종류에 따라 결정됩니다.예를 들어 문자열형 값을 가진 옵션을 등록하면 페이지에 텍스트 박스가 추가되고 boolean형 값을 가진 옵션을 등록하면 체크박스가 추가되는 식으로 페이지의 UI가 구축됩니다.또한 사용자에 의해서 이러한 옵션 컨트롤들이 변경이 될 때마다 validateOptions 메서드가 호출되므로 이 메서드 안에서 각 옵션 항목들의 체크를 수행할 수 있습니다.유저가 위저드의[종료]버튼을 클릭하면, 매니페스토·파일의 편집과 템플릿·파일의 읽기를 위한 메서드가 불립니다.우선 getDependencies 메서드에서는 플러그인 프로젝트의 의존관계를 설정합니다.이 때 인수 schema Version에는 작성하는 플러그인 프로젝트의 목표 버전이 전달됩니다.이 값이 null이면 이클립스 버전 3.0보다 오래된 버전의 이클립스에서 사용할 플러그인 매니페스트 파일이 생성됩니다.「 TextEditorTemplate . java ( 抜粋 ) 」
public IPluginReference [ ] getDependencies ( String schemaVersion ) {
// 플러그인의 의존 관계를 편집하다
ArrayList result = new ArrayList ( ) ;
// schemaVersion이 null 아니면
// 버전 3.0 이상용 의존관계 추가
if ( schemaVersion ! = null )
result . add ( new PluginReference (
′ org . eclipse . core . runtime ′ , null , 0 )) ;
result . add ( new PluginReference (
′ org . eclipse . ui ′ , null , 0 )) ;
result . add ( new PluginReference (
′ org . eclipse . jface . text ′ , null , 0 )) ;
result . add ( new PluginReference (
′ org . eclipse . ui . editors ′ , null , 0 )) ;
result . add ( new PluginReference (
′ org . eclipse . ui . workbench . texteditor ′ , null , 0 )) ;
return ( IPluginReference [ ] )
result . toArray ( new IPluginReference [ result . size ( ) ] ) ;
}}updateModel 메소드에서는 확장포인트 작성 및 각 속성 설정을 합니다.확장포인트는 create Extension 메서드에 작성하고자 하는 확장포인트의 ID를 지정하는 것으로 만듭니다.또한 에디터 엘리먼트 속성의 일부는 사용자가 지정한 옵션을 사용하여 설정하고 매니페스토 파일에 반영되도록 하고 있습니다.「 TextEditorTemplate . java ( 抜粋 ) 」
protected void updateModel ( IProgressMonitor monitor )
throws CoreException {
// 플러그인 프로젝트를 갱신하다
IPluginBase plugin = model . getPluginBase ( ) ;
// org.eclipse.ui.editors 확장포인트 작성
IPluginExtension extension
= createExtension ( getUsedExtensionPoint ( ) , true ) ;
IPluginModelFactory factory = model . getPluginFactory ( ) ;
// 에디터 엘리먼트 작성 및 각 속성 설정
IPluginElement editorElement = factory . createElement ( extension ) ;
editorElement . setName ( ′ editor ′ ) ;
editorElement
. setAttribute ( ′ id ′ , getStringOption ( KEY _ PACKAGE _ NAME )
+ ′ . ′ + getStringOption ( ′ className ′ )) ;
editorElement
. setAttribute ( ′ name ′ , getStringOption ( ′ editorName ′ )) ;
editorElement . setAttribute ( ′ icon ′ , ′ icons / icon . gif ′ ) ;
editorElement
. setAttribute ( ′ extensions ′ , getStringOption ( ′ extension ′ )) ;
editorElement
. setAttribute ( ′ class ′ , getStringOption ( KEY _ PACKAGE _ NAME )
+ ′ . ′ + getStringOption ( ′ className ′ )) ;
editorElement . setAttribute ( ′ contributorClass ′ ,
′ org . eclipse . ui . texteditor . BasicTextEditorActionContributor ′ ) ;
// org.eclipse.ui.editors 확장포인트에 editor 엘리먼트 추가
extension . add ( editorElement ) ;
// 이 확장 포인트가 이미 존재하는지
if ( ! extension . isInTheModel ( ))
plugin . add ( extension ) ;
}}템플릿 파일 검색에는 getSectionId() 메서드로 반환되는 문자열이 사용되므로 템플릿 파일을 두는 디렉토리는 아래와 같은 구조를 가지고 있어야 합니다.사용자가 [신규 플러그인 프로젝트] 마법사에서 [Eclipse Platform의 이전 버전(3.0보다 이전)에서 사용함]에 체크를 했을 경우는 ′templates′ 가 템플릿 디렉토리가 되고, 그렇지 않을 경우는 ′templates_3.0′ 이 템플릿 디렉토리가 됩니다.그리고 bin 디렉토리 안에 있는 파일이나 폴더는 그대로 프로젝트에 복사가 되고 java 디렉토리 안에 있는 파일은 자바 콘텐츠로 프로젝트에 추가됩니다.템플릿 파일 준비 프로젝트의 루트 디렉토리에 templates_3.0이라고 하는 폴더를 만듭니다.그 하위 폴더로 bin, java라고 하는 폴더도 생성을 합니다.bin 폴더에는 icons라는 폴더를 작성하고 그 폴더에 icon.gif 파일을 Import합니다.이들 폴더와 파일은 생성되는 플러그인 프로젝트에 그대로 복사됩니다.이제 ′java′ 폴더에 ′$className$.java′ 라는 파일을 작성하여 다음과 같이 기술하세요.$ className $ . java
package $ packageName $ ;
import org . eclipse . ui . editors . text . TextEditor ;
% if comment
/**
* The standard text editor .
*/
% endif
public class $ className $ extends TextEditor {
public $ className $ ( ) {
super ( ) ;
}
}} 이 파일의 파일명이나, 파일 안에 기술되어 있는 ′$′ 기호로 둘러싸인 문자열은 옵션명으로, 이 문자열은 해당 옵션의 값으로 변환됩니다.또한 Java템플릿 파일 안에서는 %if-%else-%endif 구문을 사용하여 출력할 텍스트를 제어할 수 있습니다.또한 ′java′ 폴더에는 여러 자바 템플릿 파일을 포함할 수도 있습니다.이것으로 모든 작업이 끝났으니 실행해보겠습니다.우선 런타임·워크벤치를 기동해, 메뉴로부터[파일]→[신규]→[프로젝트...]→[플러그 인·프로젝트]로 선택해[신규 플러그 인·프로젝트]위저드를 표시합니다.다음은 적당한 프로젝트명을 지정하고,[템플릿]페이지까지 진행되어,[이하의 템플릿을 사용해 플러그 인을 작성]에 체크를 넣어[사용 가능한 템플릿]에서[텍스트·에디터 첨부 플러그 인]을 선택해[다음에]를 클릭합니다.각 옵션을 임의의 것으로 변경하고 나서[종료]를 클릭합니다.이 마법사에 의해 생성된 플러그인 프로젝트는 텍스트 에디터 플러그인으로 바로 실행할 수 있게 되어 있을 것입니다.또,[코멘트를 추가하는]이나[클래스명]옵션이 생성되는 플러그 인·컨텐츠에 어떻게 반영되는지도 확인해 주세요.정리해 이 기사에서는 템플릿을 「신규 플러그 인 프로젝트」마법사에의 내장하는 방법을 소개했습니다.템플릿을 사용하면 어떤 확장 포인트를 사용할 경우 매니페스토 에디터에서 매번 반복적으로 수행하는 작업 및 클래스 작성을 자동화하여 작업의 효율을 높일 수 있습니다.【Eclipse.org - PDE】 플러그인 개발 환경 하위 프로젝트】
IBM developerWorks는 다음과 같습니다.
org . eclipse . pde . core
org.eclipse.pde.ui로써 플러그인의 의존관계에 대한 작업이 끝났으니 한번 plugin.xml 파일을 저장해 주세요.다음에, 매니페스토·에디터로[확장]페이지를 열어([확장]탭을 클릭),[추가]버튼을 눌러[신규 확장]다이알로그를 표시합니다.표시된 다이알로그의[사용 가능한 확장 포인트]리스트로부터[org.eclipse.pde.ui.plugin Content]를 선택해[종료]를 누릅니다.[확장]페이지에 추가된[org.eclipse.pde.ui.plugin Content]확장 포인트를 오른쪽 클릭하고,[신규]→[wizard]로 선택합니다.매니페스트·에디터에서 wizard의 속성을 이하와 같이 설정합니다(각 속성의 의미는, Eclipse의 헬프의[PDE 가이드]→[참조]→[확장 포인트 참조]→[org.eclipse.pde.ui.plugin Content]를 참조해 주세요).작성한 위저드를 오른쪽 클릭해[신규]→[description]이라고 선택합니다.이 엘리먼트에는, 이 템플릿이[신규 플러그 인·프로젝트]위저드의[템플릿]페이지로 선택되었을 때에 페이지의 오른쪽에 표시되는 설명문을 지정합니다.이 텍스트는, 매니페스토·에디터의 하부에 있는[텍스트 본문]이라고 하는 텍스트를 클릭하면 표시되는 텍스트·박스에 입력합니다.이 텍스트는, 반드시 외부화할 필요가 있습니다만(이하의 보충 설명을 참조), 여기에서는 간단하게 하기 위해 「Sample editor」라고만 입력해 주세요.또한 이 페이지의 선두에서 입수할 수 있는 소스에서는 이 텍스트는 외부화되어 있습니다.이것으로 매니페스토·파일의 편집은 끝입니다.「 plugin . xml 」
< ? xml version = ′ 1 . 0 ′ encoding = ′ UTF - 8 ′ ? >
< ? eclipse version = ′ 3 . 0 ′ ? >
version = ′ 1 . 0 . 0 ′
provider - name = ′′
class = ′ example . template . TemplatePlugin ′ >
< runtime >
< export name = ′ * ′ / >
< / library >
< / runtime >
< requires >
< import plugin = ′ org . eclipse . ui ′ / >
< import plugin = ′ org . eclipse . core . runtime ′ / >
< import plugin = ′ org . eclipse . core . resources ′ / >
< import plugin = ′ org . eclipse . pde . core ′ / >
< import plugin = ′ org . eclipse . pde . ui ′ / >
< / requires >
< extension point = ′ org . eclipse . pde . ui . pluginContent ′ >
< wizard java = ′ true ′
icon = ′ icons / sample . gif ′
class = ′ example . template . TextEditorNewWizard ′
ui - content = ′ true ′
name=′텍스트 에디터가 있는 플러그인′
id = ′ example . template . mywizard ′ >
< description >
% pluginContent . txtEditor . description
< / description >
< / wizard >
< / extension >
package example . template ;
import org . eclipse . pde . ui . IFieldData ;
import org . eclipse . pde . ui . templates . ITemplateSection ;
import org . eclipse . pde . ui . templates . NewPluginTemplateWizard ;
/**
* @ author tak _ a
*
* TODO 이 생성된 형 코멘트 템플릿을 변경하려면 다음 점프: * 창 - 설정 - Java - 코드 스타일 - 코드 템플릿 * /
public class TextEditorNewWizard extends NewPluginTemplateWizard {
public ITemplateSection [ ] createTemplateSections ( ) {
// 사용하는 TemplateSection의 배열을 반환한다
return new ITemplateSection [ ] { new TextEditorTemplate ( ) } ;
}
public void init ( IFieldData data ) {
super . init ( data ) ;
// 제목 설정
set Window Title(′플레인 텍스트 에디터를 가지′
+ ′신규 플러그인 프로젝트′);
}
}}이 createTemplateSections 메서드에서 각 확장 포인트를 지원하는 OptionTemplateSection 클래스 배열을 반환하면 콘텐츠 마법사 클래스 구현은 끝납니다.이때 TextEditor Template 클래스는 아직 작성하지 않았지만 곧 작성할 테니 그대로 적어주세요.템플릿 섹션 구현 Option Template Section 서브클래스에서는 하나의 확장 포인트에 대한 추가 콘텐츠(확장 포인트 및 의존 관계 및 템플릿 파일) 작성 및 템플릿 옵션을 지정하는 마법사 페이지 작성(여러 페이지를 만들 수도 있음)을 수행합니다.이 샘플은 추가할 확장포인트는 org.eclipse.ui.editors 뿐이기 때문에 OptionTemplateSection의 서브클래스도 하나뿐입니다.이 클래스에서는 컨스트럭터에서 이 섹션에서 사용할 마법사 페이지의 개수를 setPageCount 메서드로 지정하고 각 페이지에서 사용할 옵션을 등록해 두어야 합니다.Option Template Section 클래스는 옵션이 등록되면 해당 옵션의 유형에 따라 마법사 페이지에 컨트롤을 추가합니다.이 유형은 옵션을 등록할 때 사용하는 addOption 메서드의 종류에 따라 결정됩니다.예를 들어 문자열형 값을 가진 옵션을 등록하면 페이지에 텍스트 박스가 추가되고 boolean형 값을 가진 옵션을 등록하면 체크박스가 추가되는 식으로 페이지의 UI가 구축됩니다.또한 사용자에 의해서 이러한 옵션 컨트롤들이 변경이 될 때마다 validateOptions 메서드가 호출되므로 이 메서드 안에서 각 옵션 항목들의 체크를 수행할 수 있습니다.유저가 위저드의[종료]버튼을 클릭하면, 매니페스토·파일의 편집과 템플릿·파일의 읽기를 위한 메서드가 불립니다.우선 getDependencies 메서드에서는 플러그인 프로젝트의 의존관계를 설정합니다.이 때 인수 schema Version에는 작성하는 플러그인 프로젝트의 목표 버전이 전달됩니다.이 값이 null이면 이클립스 버전 3.0보다 오래된 버전의 이클립스에서 사용할 플러그인 매니페스트 파일이 생성됩니다.「 TextEditorTemplate . java ( 抜粋 ) 」
public IPluginReference [ ] getDependencies ( String schemaVersion ) {
// 플러그인의 의존 관계를 편집하다
ArrayList result = new ArrayList ( ) ;
// schemaVersion이 null 아니면
// 버전 3.0 이상용 의존관계 추가
if ( schemaVersion ! = null )
result . add ( new PluginReference (
′ org . eclipse . core . runtime ′ , null , 0 )) ;
result . add ( new PluginReference (
′ org . eclipse . ui ′ , null , 0 )) ;
result . add ( new PluginReference (
′ org . eclipse . jface . text ′ , null , 0 )) ;
result . add ( new PluginReference (
′ org . eclipse . ui . editors ′ , null , 0 )) ;
result . add ( new PluginReference (
′ org . eclipse . ui . workbench . texteditor ′ , null , 0 )) ;
return ( IPluginReference [ ] )
result . toArray ( new IPluginReference [ result . size ( ) ] ) ;
}}updateModel 메소드에서는 확장포인트 작성 및 각 속성 설정을 합니다.확장포인트는 create Extension 메서드에 작성하고자 하는 확장포인트의 ID를 지정하는 것으로 만듭니다.또한 에디터 엘리먼트 속성의 일부는 사용자가 지정한 옵션을 사용하여 설정하고 매니페스토 파일에 반영되도록 하고 있습니다.「 TextEditorTemplate . java ( 抜粋 ) 」
protected void updateModel ( IProgressMonitor monitor )
throws CoreException {
// 플러그인 프로젝트를 갱신하다
IPluginBase plugin = model . getPluginBase ( ) ;
// org.eclipse.ui.editors 확장포인트 작성
IPluginExtension extension
= createExtension ( getUsedExtensionPoint ( ) , true ) ;
IPluginModelFactory factory = model . getPluginFactory ( ) ;
// 에디터 엘리먼트 작성 및 각 속성 설정
IPluginElement editorElement = factory . createElement ( extension ) ;
editorElement . setName ( ′ editor ′ ) ;
editorElement
. setAttribute ( ′ id ′ , getStringOption ( KEY _ PACKAGE _ NAME )
+ ′ . ′ + getStringOption ( ′ className ′ )) ;
editorElement
. setAttribute ( ′ name ′ , getStringOption ( ′ editorName ′ )) ;
editorElement . setAttribute ( ′ icon ′ , ′ icons / icon . gif ′ ) ;
editorElement
. setAttribute ( ′ extensions ′ , getStringOption ( ′ extension ′ )) ;
editorElement
. setAttribute ( ′ class ′ , getStringOption ( KEY _ PACKAGE _ NAME )
+ ′ . ′ + getStringOption ( ′ className ′ )) ;
editorElement . setAttribute ( ′ contributorClass ′ ,
′ org . eclipse . ui . texteditor . BasicTextEditorActionContributor ′ ) ;
// org.eclipse.ui.editors 확장포인트에 editor 엘리먼트 추가
extension . add ( editorElement ) ;
// 이 확장 포인트가 이미 존재하는지
if ( ! extension . isInTheModel ( ))
plugin . add ( extension ) ;
}}템플릿 파일 검색에는 getSectionId() 메서드로 반환되는 문자열이 사용되므로 템플릿 파일을 두는 디렉토리는 아래와 같은 구조를 가지고 있어야 합니다.사용자가 [신규 플러그인 프로젝트] 마법사에서 [Eclipse Platform의 이전 버전(3.0보다 이전)에서 사용함]에 체크를 했을 경우는 ′templates′ 가 템플릿 디렉토리가 되고, 그렇지 않을 경우는 ′templates_3.0′ 이 템플릿 디렉토리가 됩니다.그리고 bin 디렉토리 안에 있는 파일이나 폴더는 그대로 프로젝트에 복사가 되고 java 디렉토리 안에 있는 파일은 자바 콘텐츠로 프로젝트에 추가됩니다.템플릿 파일 준비 프로젝트의 루트 디렉토리에 templates_3.0이라고 하는 폴더를 만듭니다.그 하위 폴더로 bin, java라고 하는 폴더도 생성을 합니다.bin 폴더에는 icons라는 폴더를 작성하고 그 폴더에 icon.gif 파일을 Import합니다.이들 폴더와 파일은 생성되는 플러그인 프로젝트에 그대로 복사됩니다.이제 ′java′ 폴더에 ′$className$.java′ 라는 파일을 작성하여 다음과 같이 기술하세요.$ className $ . java
package $ packageName $ ;
import org . eclipse . ui . editors . text . TextEditor ;
% if comment
/**
* The standard text editor .
*/
% endif
public class $ className $ extends TextEditor {
public $ className $ ( ) {
super ( ) ;
}
}} 이 파일의 파일명이나, 파일 안에 기술되어 있는 ′$′ 기호로 둘러싸인 문자열은 옵션명으로, 이 문자열은 해당 옵션의 값으로 변환됩니다.또한 Java템플릿 파일 안에서는 %if-%else-%endif 구문을 사용하여 출력할 텍스트를 제어할 수 있습니다.또한 ′java′ 폴더에는 여러 자바 템플릿 파일을 포함할 수도 있습니다.이것으로 모든 작업이 끝났으니 실행해보겠습니다.우선 런타임·워크벤치를 기동해, 메뉴로부터[파일]→[신규]→[프로젝트...]→[플러그 인·프로젝트]로 선택해[신규 플러그 인·프로젝트]위저드를 표시합니다.다음은 적당한 프로젝트명을 지정하고,[템플릿]페이지까지 진행되어,[이하의 템플릿을 사용해 플러그 인을 작성]에 체크를 넣어[사용 가능한 템플릿]에서[텍스트·에디터 첨부 플러그 인]을 선택해[다음에]를 클릭합니다.각 옵션을 임의의 것으로 변경하고 나서[종료]를 클릭합니다.이 마법사에 의해 생성된 플러그인 프로젝트는 텍스트 에디터 플러그인으로 바로 실행할 수 있게 되어 있을 것입니다.또,[코멘트를 추가하는]이나[클래스명]옵션이 생성되는 플러그 인·컨텐츠에 어떻게 반영되는지도 확인해 주세요.정리해 이 기사에서는 템플릿을 「신규 플러그 인 프로젝트」마법사에의 내장하는 방법을 소개했습니다.템플릿을 사용하면 어떤 확장 포인트를 사용할 경우 매니페스토 에디터에서 매번 반복적으로 수행하는 작업 및 클래스 작성을 자동화하여 작업의 효율을 높일 수 있습니다.【Eclipse.org - PDE】 플러그인 개발 환경 하위 프로젝트】
IBM developerWorks는 다음과 같습니다.
반응형