RCP/SWT & JFACE

RCP 프레임워크의 Extension and Extension Points

반응형

Extension and Extension Points


 모듈 소프트웨어를 만드는 기본적인 규칙은 컴포넌트간 커플링을 피하는 것이다. 만약 컴포넌트가 강력하게 통합되어 있다면, 서로 다른 설정들을 조작하거나 시스템의 변화없이 다르게 구현된 컴포넌트로 교체하는 것이 힘들게 된다.


이클립스에서 커플링을 줄이는 것은 extensions / extension points(이하 확장/확장지점)를 통해서 이루어진다. 




- Extension

자신의 플러그인에 다른 플러그인(view, editor)등을 사용하여 기능적으로 확장하고 싶은경우에 플러그인의 extension에 정의를 한다.


- Extension points

extension point는 extension이 반드시 따라야 하는 자바 인터페이스와 xml을 조합한 명세를 나타낸다. 하지만 요근래 들어 extionsion point 명세없이 extension 만으로도 확장이 가능하다.





- Extension registry


 확장 레지스트리(extionsion registry)란 플러그인 간의 관계를 정의하는 메커니즘을 추가한 기능


extension point을 선언해 자신을 확장하거나 구성 가능


확장점을 선언한 플러그인은 내게 다음의 정보를 제공하면 내가 ...을 하겠다 라는 뜻이다.


예를들어


애플리케이션에서 UI에 액션세트를 설정할 수 있는 org.eclipse.ui.actionsets를 확장점으로 지정한다.

확장점으로 지정된 actionSets은 화면 UI에 보이게 되고 사용자가 아이콘을 클릭하게 되면 액션클래스에서 run() 메소드를 호출하여 action을 실행 시켜준다.


Extension Point

org.eclipse.ui/plugin.xml

<extension-point id="actionSets" name="Action sets"/>


Extension

org.eclipse.hyperbola/plugin.xml

<extension point="org.eclipse.ui.actionSets">

<actionSet id="org.eclipsercp.wedulaccount.ActionSet">

 <action

id="addAccountAction"

class="org.eclipsercp.wedulaccout.addAccountAction"

icon="icons/addAccountAction.gif"

label="Add actions"/>

</actionSet>

</extension>



확장과 확장점은 이클립스 전체에 걸쳐 많은 부분에서 사용됨

- 뷰 및 메뉴 아이템 구성 부터 도움말 문서 연결 등 이클립스 내 모든것에서 확장과 확장점이 사용됨

- 필요할때 까지 코드를 로딩하지 않고 사용자가 동작을 실행하고자 할때 클래스를 로딩한다.

ex) 사용자가 해당 Action 수행을 시도하기 전에 클래스는 로드되지 않는다.

반응형