RCP/SWT & JFACE

RCP 프레임워크 프로젝트의 플러그인 클래스

반응형

플러그인 클래스

모든 플러그인은 프로그램 관저에서 플러그인을 대표하는 클래스를 내역서 편집기의 개요 페이지에서 선언할  있다. (Menifest OverView 페이지 이기도 하며, 3.2 이상부터는 Activator라고 부른다.)

플러그인과 연관된 정적 리소스에 접근하거나플러그인별 환경설정 또는 기타 상태 정보에 접근해 초기화 하기 위한 메소드를 제공한다.

반드시 필요한 것은 아니지만 플러그인 내역서에 플러그인 클래스가 지정되어 있는 경우에 플러그인이 로딩 되었음을 전달 받는  번째 클래스이며또한 종료되었을  전달 받는 마지막 클래스 이다. (그를 이용해서 해당 플러그인의 시작과 끝의 새로운 동작을 추가할  있다.)

 

UI 사용하는 플러그인의 경우 AbstractUIPlugin 상속받아서 사용하고 UI 사용하지 않을 경우에는 Plugin 상속받는다.

AbstractUIPlugin 자동으로 해당 플러그인의 환경설정을 저장하지만 Plugin 종료  stop() 메소드에 별도로 기재해 주어야 한다.

 

 

Public class FavoritesPlugin extends AbstractUIPlugin {

Private static FavoritesPlugin plugin;

 

Public FavoritesPlugin() {

Plugin = this;

}

 

//  메소드는 플러그인 활성화 시점에 호출 된다.

Public void start(BundleContext context) throws Exception {

Super.start(context)

}

 

//  메소드는 플러그인 중단 시점에 호출된다.

Public void stop(BundleContext context) throws Exception {

Super.stop(context);

Plugin = null;

}

 

//공유 인스턴스를 반환한다.

Public static FavoritesPlugin getDefault() {

Return plugin;

}

 

// 주어진 플러그인 상대 경로에 해당하는 이미지 파일에 대한 이미지 디스크립터를 반환한다.

Public static ImageDescriptor getImageDescriptor(String path) {

Return AbstractUIPlugin.imageDescriptorFromPlugin(

"com.qualityeclipse.favorites", path);

}

}

 

플러그인이 활성화될 이클립스 시스템은 다른 클래스를 로딩하기 전에 가정 먼저 플러그인 클래스의 인스턴스를 생성한다.

플러그인의 일생에 걸쳐 하나의 플러그인 클래스인스턴스만 이클립스 시스템에 의해 사용되며  다른 인스턴스는 생성되지 않는다.

 

일반적으로 플러그인 클래스는 정적 필드를 선언해 자신의 싱글턴 객체를 참고하므로 필요할  플러그인을 통해 쉽게 공유할  있다.

 

PDE, PDE Runtime 카테고리를 확장하여 해당 플러그인의 확장점런타임 라이브러리등을 트리형태로 자세히   있다.


반응형