리치 클라이언트 응용프로그램 플러그인에 대한 정의는 지금까지 학습해 왔던 다른 플러그인과 유사한 방식으로 시작됩니다. 마크업의 첫 번째 부분에 대한 유일한 차이점은 필수 플러그인 목록이 지금까지 사용해왔던 것보다 훨씬 작다는 것입니다.
<?xml version="1.0" encoding="UTF-8"?> <?eclipse version="3.0"?> <plugin id="org.eclipse.ui.examples.rcp.browser" name="%pluginName" version="3.0.0" provider-name="%providerName"> <runtime> <library name="browser.jar"> </library> </runtime> <requires> <import plugin="org.eclipse.core.runtime"/> <import plugin="org.eclipse.ui"/> </requires>
지금까지 Workbench에 요소를 추가하는 확장을 선언하여 플랫폼 Workbench에 기능을 제공해 왔습니다. 지금까지 검토한 모든 plugin.xml 컨텐츠에서는 가정되는 Workbench에 대한 개별적인 컨트리뷰션 항목만 살펴보았습니다. RCP(Rich Client Platform)에는 이미 정의된 응용프로그램이 없습니다. 사용자의 리치 클라이언트 플러그인은 플랫폼이 시작될 때 실행할 클래스를 지정해야 합니다. 이것은 org.eclipse.core.runtime.applications 확장에서 수행됩니다.
<extension point="org.eclipse.core.runtime.applications" id="app" name="%appName"> <application> <run class="org.eclipse.ui.examples.rcp.browser.BrowserApp"> </run> </application> </extension>
이 확장에서는 플랫폼이 처음으로 시작될 때 실행해야 하는 클래스를 지정합니다. 이 클래스는 IPlatformRunnable을 구현하는데, 이것은 간단히 run 메소드를 구현해야 함을 의미합니다. 실행 메소드는 SWT 표시를 작성하고 Workbench를 시작해야 합니다. PlatformUI 클래스는 이러한 타스크를 수행하는 편리한 메소드를 구현합니다.
public Object run(Object args) throws Exception { Display display = PlatformUI.createDisplay(); try { int code = PlatformUI.createAndRunWorkbench(display, new BrowserAdvisor()); // exit the application with an appropriate return code return code == PlatformUI.RETURN_RESTART ? EXIT_RESTART : EXIT_OK; } finally { if (display != null) display.dispose(); } }
createAndRunWorkbench에 대한 호출은 Workbench가 닫히기 전에는 리턴되지 않습니다. SWT 이벤트 루프 및 기타 하위 레벨 논리는 이 메소드에서 처리됩니다. 이 단계에서 SWT 응용프로그램을 실행하는 기본 구조를 이해하는 것은 별로 중요하지 않습니다. 이 코드를 최소의 변경사항으로 리치 클라이언트 응용프로그램에 복사할 수 있습니다. 실제로 사용자가 고유 기능을 추가하는 후크는 Workbench가 작성될 때 인수로서 전달되는 WorkbenchAdvisor입니다. 여기에 대해 좀더 자세히 살펴보기로 합니다.