IBM®
메인 컨텐츠로 가기
    Korea [국가변경]    이용약관
 
 
   
        제품    서비스 & 솔루션    고객지원 & 다운로드    회원 서비스    
메인 컨텐츠로 가기

한국 developerWorks  >  오픈 소스  >

데스크톱, 웹, 모바일 기기 개발을 위해 이클립스 가니메데 사용하기. Part 3: 가니메데 방식으로 리치 클라이언트 플랫폼용 개발

eRCP: 모바일로 가기

developerWorks
Go to the previous page10 페이지 중 3 페이지Go to the next page

문서 옵션

샘플 코드


제안 및 의견
피드백

튜토리얼 평가

이 컨텐츠를 개선하기 위한 도움을 주십시오.


모바일 환경에 맞게 리팩터링

RAP처럼 eRCP는 완전한 RCP의 서브셋이다. 그러므로 eRCP를 사용하려면 코드를 리팩터할 필요가 있다. 추가적으로 모바일 플랫폼의 제약 사항을 고려하여 UI의 레이아웃을 약간 변경할 필요가 있다. 이번 절에서는 개인용 전자 수첩에 이와 같은 변경을 어떻게 할지 살펴볼 것이다.

SelectionAdapter에서 SelectionListener로 바꾸기

eRCP는 애플리케이션을 번들하는 방식에서 RCP와 비슷하다. 각각은 단일한 플러그인으로, 완전한 OSGi 번들로 패키지되어 있는데(OSGi는 자바 기반 애플리케이션을 론칭하고 구동하기 위한 프레임워크로 정의된다) GUI 컨트롤을 위한 자체 디스플레이와 셸을 갖고 있다.

하지만 모바일 애플리케이션의 서로 다른 디스플레이 제약 사항 때문에 eRCP에서는 임베디드 애플리케이션용으로 사용하기 적당한 형태의 컨트롤로 수정할 필요가 있다. 개인용 전자 수첩에서 사용할 각각의 컨트롤을 살펴보고 eRCP에 맞는지 살펴보자.

우선 RCP에 의해 사용되는 SelectionAdapter는 eRCP에서는 SelectionListener다. 개인용 전자 수첩에서 SelectionAdapter의 각 인스턴스를 찾아 SelectionListener로 바꾸자(Listing 1 참조). PersonalTaskView.java와 PersonalTaskViewer.java에 있다.


Listing 1. SelectionAdapter를 사용한 PersonalTaskViewcreatePartControl

public void createPartControl(Composite parent) {
    viewer = new PersonalTaskViewer(parent);
    viewer.getCloseButton().addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            handleDispose();
        }
    });
}

Listing 2에서는 SelectionAdapter 대신 SelectionListener를 사용하여 리팩터링한 PersonalTaskViewercreatePartControl 메서드를 보였다.


Listing 2. eRCP의 SeletionListener를 사용한 createPartControl

public void createPartControl(Composite parent) {
    viewer = new PersonalTaskViewer(parent);
    viewer.getCloseButton().addSelectionListener(new SelectionListener() {
        public void widgetSelected(SelectionEvent e) {
            handleDispose();
        }

        public void widgetDefaultSelected(SelectionEvent arg0) {
            // TODO Auto-generated method stub
            // TODO For now this is not implemented
    }
    });
}




위로


Workbench 대신 eWorkbench 사용하기

WorkBench 모델은 이클립스의 기초로서, 이클립스 환경에서 플러그인의 구조를 정의한다. Workbench는 화면 공간을 할당하고 애플리케이션 화면을 제어하려고 퍼스펙티브를 사용한다. 각각의 애플리케이션 그 자체는 다양한 뷰로 구성된다.

eRCP는 eWorkbench라 부르는 모바일 플랫폼에 적절한 버전을 구현함으로써 Workbench 모델의 서브셋을 이용한다(예를 들어 eWorkbench에는 완전한 Workbench에서 퍼스펙티브 모델이 빠져 있다). 플러그인 eRCP 애플리케이션은 메인 메서드가 없지만 eWorkbench 인스턴스를 확장하는데, 이를 이용하면 메인 Workbench 스레드를 구동할 수 있다. Workbench는 여러 애플리케이션을 단일 JVM 내에서 구동할 수 있도록 허용하면서 eRCP 애플리케이션들 간에 수행 스레드를 공유한다.

eWorkbench를 사용하여 개인용 전자 수첩을 수정하려면 모바일 플랫폼에 적용되지 않는 완전한 Workbench에 의해 사용되는 클래스를 제거해야 한다. 패키지 탐색기에서 다음 파일을 삭제하자.

  • ApplicationActionBarAdvisor.java
  • ApplicationWorkbenchWindowAdvisor.java
  • ApplicationWorkbenchAdvisor.java
  • Perspective.java
  • TaskOrganizerApplication.java

제거한 파일 중 일부는 eWorkbench에는 같은 역할을 하는 게 없다는 점을 명심하자. 예를 들어 eWorkbench는 퍼스펙티브가 없다. 비슷하게 메인도 없고 Application 클래스도 필요 없다. 이런 파일들에서 Workbench와 eWorkbench 사이에 몇 가지 다른 차이점이 있다는 점을 보여주고 있다.




위로


셸 수정자 제거

Part 2에서 RAP에서 작업했던 것과 비슷하게 CellModifier를 제거해 팝업 상자를 사용하는 메커니즘으로 바꿀 필요가 있다. 이는 Part 2에서 자세히 다뤘고 코드 다운로드에서 써볼 수 있다. 변경하고 나면 이클립스에서는 더이상 컴파일 시 오류가 나지 않을 것이다.


그림 6. eRCP 수정을 한 후 프로젝트의 패키지 탐색기 뷰
eRCP 수정을 한 후 프로젝트의 패키지 탐색기 뷰




위로


엑스텐션 포인트 리팩터링

이제 코드를 컴파일한다. eRCP가 필요로 하는 사항에 맞추기 위해 익스텐션 포인트를 수정할 때가 되었다. eRCP와 관련없는 익스텐션 포인트를 지우자. 여러분이 제거한 코드 같이 퍼스펙티브처럼 eRCP에 적용될 수 없는 Workbench의 측면에 관련되는 익스텐션이 있다.

plugin.xml을 열고 Extensions 탭을 클릭하자. 이클립스는 익스텐션에 대한 편집기를 표시하여 개인용 전자 수첩에서 사용되는 것들을 나열할 것이다. 다음 것들을 삭제하자.

  • org.eclipse.core.runtime.applications
  • org.eclipse.ui.perspectives
  • org.eclipse.core.runtime.products

이전 절에서 삭제한 코드 같이 이것들은 퍼스펙티브처럼 eRCP에 적용할 수 없는 Workbench의 측면에서 관련있는 익스텐션이다.

이제 eRCP에 중요한 익스텐션을 추가해 넣고 싶을 것이다. Add를 클릭하면 New Extension Point Selection 화면을 볼 것이다.


그림 7. eRCP eWorkbench 애플리케이션 익스텐션 포인트 추가
eRCP eWorkbench 애플리케이션 익스텐션 포인트 추가

org.eclipse.ercp.eworkbench.applications를 선택하고 Finish를 누른다. 이 익스텐션은 eRCP가 개인용 전자 수첩의 뷰를 어떻게 인식하도록 할지, 그리고 RCP에서 사용할 애플리케이션 익스텐션과 비슷한 론칭 포인트로 어떻게 제공될지를 보여주는 방법이다. 익스텐션을 추가한 후 이클립스는 이에 대한 속성을 표시할 것이다. com.devworks.tutorial.po.application을 ID로 입력하고 이름으로 Personal Task Organizer로 넣는다. singleton 속성이 true인지도 확인해 두어야 하는데, 이는 eRCP 프레임워크가 한 번에 해당 기기에서 하나의 개인용 전자 수첩만을 구동하도록 할 것이기 때문이다.


그림 8. 애플리케이션 뷰에 대해 속성 설정
애플리케이션 뷰에 대해 속성 설정

입력을 다 하고 나면 ID가 애플리케이션 이름 아래 트리 뷰에 나타날 것이다. 이걸 선태하고 normal이라고 이름 붙은 필드에서 com.devworks.tutorial.view를 입력한다. 이는 애플리케이션이 론칭될 때 eWorkbench가 표시할 개인용 전자 수첩 뷰의 ID다.


그림 9. eWorkbench에 의해 사용될 뷰 설정
eWorkbench에 의해 사용될 뷰 설정

plugin.xml에서 Dependencies 탭을 선택하면 의존하는 플러그인으로 이클립스가 자동으로 org.eclipse.ercp.eworkbench를 추가했다는 메시지를 받을 것이다.


그림 10. eWorkbench는 의존하는 플러그인으로 나열
eWorkbench는 의존하는 플러그인으로 나열

변경 내용을 저장하자. plugin.xml은 이제 Listing 3과 같이 나타날 것이다.


Listing 3. 적당한 의존성을 가진 plugin.xml

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.2"?>
<plugin>
   <extension
         point="org.eclipse.ui.views">
      <view class="com.devworks.tutorial.po.view.PersonalTaskView"
            icon="icons/alt_window_16.gif"
            id="com.devworks.tutorial.po.view"
            name="Personal Task Organizer">
      </view>
   </extension>
   <extension
         point="org.eclipse.ercp.eworkbench.applications">
      <application
            id="com.devworks.tutorial.po.application"
            name="Personal Task Organizer"
            singleton="true">
         <views normal="com.devworks.tutorial.po.view">
         </views>
      </application>
   </extension>
</plugin>

이제 RCP 애플리케이션을 eRCP에 적용하는 데 필요한 모든 변경을 끝냈다. 다음 절에서는 코드를 테스트하고 동작하는 상황을 보기 위한 효율적인 방법으로 모바일 기기 시뮬레이터에서 개인용 전자 수첩을 구동하는 데에 무엇을 사용하는지 보자.




위로



Go to the previous page10 페이지 중 3 페이지Go to the next page
    IBM 소개 개인정보 보호정책 문의