6. Exercise: Creating an Eclipse RCP application
: 실습 : Eclipse RCP application 만들기
이 실습에서, 당신은 표준 Eclipse plug-in을 만듭니다. 이후에, 당신은 생성된 plug-in을 Eclipse RCP application으로 변경합니다. 이 plug-in은 당신의 user interface components의 basis로 사용됩니다.
정보 : 만약 당신이 다른 project를 전에 생성한 경우, 그것을 workspace에서 모두 닫거나 삭제하길 권장합니다. side effect를 피하기 위해 말이죠. project를 닫기 위해선, 우클릭 후 content menu에서 Close를 선택하면 됩니다. 삭제하기 위해서는 우클릭 후 content menu에서 delete를 선택하면 됩니디. 이어지는 dialog에서 "Delete project content on disk"를 설정하지 말길 바랍니다. 이렇게 해야 당신이 필요할 때, 나중에 project를 다시 import할 수 있습니다.
주의 : 만약 당신이 target definition file을 사용한다면, 연관된 project는 workspace에서 open 상태로 두어야 합니다.
6.1. Creating a plug-in project : plug-in project 만들기
com.vogella.tasks.ui의 이름인 project를 만듭니다.
방법 : menu entry에서 File > New > Other > Plug-in Development > Plug-in Project 선택

첫번째 wizard page에서 com.vogella.tasks.ui 를 project 이름으로 입력하고 [next] 누르기

다음 wizard page에서 다음의 setting을 확실히 설정하세요. :
- Would you like to create a rich client application? : NO로 설정
- This plug-in will make contributions to the UI option " : 체크해제
- Generate an activatora Java class that controls the plug-in’s life cycle : 체크해제

Finish 버튼을 누르세요
당신이 Finish 대신 Next 버튼을 누르면, template 선택 페이지가 나타납니다. 이 선택을 하지말고, [Finish]를 눌러 wizard를 종료하세요.
6.2. Review the generated code
: 생성된 code에 대한 review
.
- Project를 열고 src 폴더에 어떠한 Java class도 생성 안되었는지 확인
- manifest editor안에서 dependencies 탭으로 이동 후, 어떠한 entry도 없는지 확인
6.3. Create a feature project : feature project 만들기
com.vogella.tasks.feature로 불리어질 feature project를 생성하세요.
방법 : File > New > Other… > Plug-in Development > Feature Project.
첫 wizard page에서 당신은 Finish 버튼을 눌러도 됩니다.

이후 feature.xml 파일의 editor 에서, Included Plug-ins 탭을 선택하고 [Add…] 버튼을 누릅니다. 그리고 com.vogella.tasks.ui plug-in을 포함시킵니다.(맨 처음 만든 프로젝트)

주의 : 당신이 Included Plug-ins 탭에서 plug-in을 add 했는지 확인하세요. Dependencies 탭을 사용하면 안됩니다.
6.4. Create a project to host the product configuration file
: product configuration file을 호스팅할 project 생성
com.vogella.tasks.product 로 불리어 질 Project를 생성하세요.
menu entry에서 > File > New > Other…> General > Project


프로젝트 명으로 com.vogella.tasks.product를 입력하고, [Finish] 를 누릅니다.
6.5. Create a product configuration file
: product configuration file 생성
com.vogella.tasks.product project에서 우클릭 하고,
File > New > Other… > Plug-in Development > Product Configuration을 선택하세요.

name을 todo.product로 설정하여, com.vogella.tasks.product 폴더 안에 product configuration 파일을 만드세요.

[Finish] 버튼을 누르세요. 파일이 생성되고, editor에서 열립니다.
product editor의 Overview 탭에서 [New..]버튼을 누르세요

아래와 같이 설정하세요
Product Name : to-do
Defining Plug-in : 당신의 plug in
Product ID : product
Application : org.eclipse.e4.ui.workbench.swt.E4Application 설정

ID, version, Name이 설정되어 있는지 확인하세요. Version은 0.0.1 이어야 합니다.(혹은 3개의 숫자가 '.'으로 구분됨). 이것은 command line build에 요구되는 사항입니다.

6.6. Configure the start levels : start level 설정
product editor에서, Configuration 탭으로 이동 후 [Add Recommended…] 버튼을 클릭하세요. 이러한 설정은, 예를 들어, Maven/Tycho 빌드 시스템에서 사용되므로 구성하는 것이 좋습니다

6.7. Enter the feature as content into the product
: product의 content로, Feature 입력하기
todo.product 파일을 열고, feature 사용을 위해 product configuration 파일을 변경합니다. product editor의 Overview 탭에서 [features] 옵션을 선택하면 됩니다.

Contents 탭을 선택하고 [Add…] 버튼을 클릭하여 아래의 feature를 추가하세요.
com.vogella.tasks.feature
org.eclipse.e4.rcp
org.eclipse.emf.ecore
org.eclipse.emf.common
정보 : 만약 당신이 product에 feature list 에 있는 것을 추가 할 수 없다면, product에서 based on feature로 변경하였는지 확인하세요.
결과는 아래의 screen shot과 비슷하게 나와야 합니다.

product에 속한, feature의 version dependency 제거하기
Eclipse IDE의 오래된 버전은, 현재 버전의 feature를 추가합니다. 포함된 feature의 version은 시간이 지남에 따라, 변경될 수 있으므로, 당신은 product의 feature version number를 사용하지 말아야 합니다. 만약 version이 설정되어 있으면, product configuration editor에서 Contents탭 > [ Properties… ] 버튼을 통해 제거할 수 있습니다.


6.8. Create an application model : application model 만들기
당신의 com.vogella.tasks.ui plug-in에 application model을 생성하세요
방법 : menu > File > New > Other… > Eclipse 4 > Model > New Application Model

container에 r com.vogella.tasks.ui 를 입력하세요. 그리고 the wizard의 file 이름 추천을 사용하세요.

[Finish] 버튼을 누릅니다. application model 파일이 생성되고, editor에서 열립니다.
6.9. Add a window to the application model
: application model에 window 추가하기.
application model에 1개의 window를 추가하세요.
Windows node에서 우클릭하고, Trimmed Window를 선택하세요(아래 스크린샷 처럼)

taskmanager suffix를 포함한 ID를 입력하고, 아래 스크린샷 처럼
window의 postion, size, label을 입력합니다.

6.10. Ensure to delete the persisted user interface state at startup
: Startup에서 persisted user interface state를 삭제했는지 확인
당신이 application을 실행 후 닫으면, application의 마지막 상태는 framework에 의해, 이 application을 다음에 실행할 때, 유지되고 복구됩니다. 이것은 개발 시 application model 파일의 최신 상태를 사용해야 하므로, 부적절합니다. 이것을 확인하기 위해 당신의 application model이 항상 최신상태를 사용하는지 확실하게 하기 위해 product configuration 파일에 clearPersistedState parameter를 추가하세요.
아래의 screenshot이 product configuration 파일의 이 설정을 보여줍니다.

주의 : - 표시를 사용하고, parameter가 정확히 입력되었는지 확인하세요.
=> "-clearPersistedState" 이렇게 되어있어야 합니다.
6.11. Start the application and validate the result
: application을 실행하고 결과를 체크하세요
product 파일을 열고 Overview 탭으로 갑니다. Testing 섹션의 "Launch an Eclipse application" 하이퍼 링크를 누릅니다.

application이 시작하는지 검증하세요. 당신은 빈 window를 볼 수 있습니다. 이 window는 이동, 사이즈조절, 최소화, 최대화, 닫기가 가능합니다.
6.12. Desired user interface
: 요구되는 User Interface
이 실습에서, application user interface의 기초를 만들겁니다. 실습의 마지막에서는, user interface가 아래 screenshot과 비슷하게 나와야 합니다.

Eclipse model editor에서, Application.e4xmi를 더블클릭 혹은 우클릭 > Open With를 통해 여세요.
6.12.1. Add part sash and part stack containers
: part sash와 part stack container 추가하기
window 하위의 Control을 선택하고, part sash container element를 추가하세요

이것의 Orientation 속성을 Horizontal로 변경하고, ID field에 com.vogella.tasks.ui.partsashcontainer.main로 값을 설정하세요.

sash container에 part stack을 첫번째 child로 추가하세요
parent part sash container를 다시 선택하고, part sash container를 추가하세요. 추가한 것에 2개의 part stack을 또 추가하세요.
이 변경이 완료되면, application model은 아래 screenshot 처럼 보여야 합니다.

6.12.2. Create the parts
: parts 만들기
각 stack에 1개의 part를 추가하세요. 아래 table의 ID와 label을 사용하세요
아이디어 : name을 먼저 입력하세요, label이 빈 값이라면, ID는 name에 기초해 조절되야 합니다.
Table 6. Label and ID for the parts
ID Suffix
|
Label
|
com.vogella.tasks.ui.part.overview
|
Overview
|
com.vogella.tasks.ui.part.details
|
Details
|
com.vogella.tasks.ui.part.playground
|
Playground
|
application model의 최종 구조는 아래 screenshot 처럼 되어야 합니다. screenshot에서는, overview part가 tree에서 선택되어, 그것의 데이타를 당신이 볼 수 있습니다.

6.12.3. Validate the user interface
: user inteface 검증
당신의 product의 user 실행하고, user interface가 계획되로 되었는지, 검증하세요. 필요하다면, model elements를 재할당 하세요. model editor는 drag&drop을 통한 재할당을 지원합니다.
또한, 지금까지 어떤 Java class를 만들지도 않았음에도 불구하고structure를 이미 볼 수 있다는 것을 알아채십시오.
6.13. Define the API which can be used
: 사용할 수 있는 API 정의
plug-in에서 다른 plug-ins의 class를 사용하기 위해, plug-in의 MANIFEST.MF파일에 dependencies를 추가해야 합니다.
이 실습에서, 당신은 다른 plug-in의 class 사용을 익힐 수 있습니다.
com.vogella.tasks.ui plug-in의 META-INF/MANIFEST.MF 파일을 여세요. 그리고, Dependencies 탭으로 이동하세요. Required Plug-ins 섹션의 [Add...] 버튼을 사용해 아래의 plug-ins를 dependencies로 추가하세요.
org.eclipse.core.runtime
org.eclipse.jface
org.eclipse.e4.core.di
org.eclipse.e4.ui.workbench
org.eclipse.e4.ui.di
org.eclipse.e4.core.di.extensions
정보 : jface는 swt를 당연히 제공합니다.
Imported Packages section의 [Add...] 버튼을 사용해 아래 plug-ins를 dependencies로 추가합니다. 결과는 아래 screenshot처럼 나와야 합니다(버전은 다를 수 있습니다)
javax.annotation
javax.inject

6.14. Create Java classes and connect with the parts
: Java class 만들고 parts와 연결하기
6.14.1. Create a new package and some Java classes
: 새 package와 몇개의 Java class 생성하기
application plug-in안에 com.vogella.tasks.ui.parts 패키지를 만드세요
아래 3개의 Java class를 이 패키지에 만드세요
TodoOverviewPart
TodoDetailsPart
PlaygroundPart
이 class들은 다른 class에서 extend 되면 안되고, 어떤 interface의 구현체(implement)가 되어서도 안됩니다.
아이디어 : You can create the classes by clicking on the Class URI hyperlink in the detail pane of the model editor for the part. This also connects the created class to the model object. If you do this, you can skip Connect the Java classes with your parts.
아래 code 는 TodoDetailsPart class 입니다.
package com.vogella.tasks.ui.parts; public class TodoDetailsPart { public TodoDetailsPart() { System.out.println(this.getClass().getSimpleName() + " constructed"); }
6.14.2. Connect the Java classes with your parts
: parts에 Java class들 연결하기
당신의 application model에서, 대응하는 part model에 class를 연결합니다. part model의 Class URI 속성을 통해 할 수 있습니다.
아이디어 : The model editor allows you to search for an existing class via the Find… button. The initial list of Contribution Classes is empty, start typing in the Class Name field to see the results.
model editor는 [Find…] 버튼으로 존재하는 class를 찾을 수 있게 해줍니다. 최초의 Contribution Classes 리스트는 비어있으며, 결과를 보려면 Class Name 필드에 type하세요.
아래 table은 어떤 element가 연결되어야 하는지 개요를 보여줍니다.
Table 7. Mapping Java classes with part model element
: Java class들과 part model 요소 mapping
Class
|
Part ID suffix
|
TodoOverviewPart
|
com.vogella.tasks.ui.part.overview
|
TodoDetailsPart
|
com.vogella.tasks.ui.part.details
|
PlaygroundPart
|
com.vogella.tasks.ui.part.playground
|
아래 screenshot은 overview part의 결과를 보여줍니다.

6.14.3. Validate : 검증
application을 실행하세요. 실행 될것이지만, 당신은 user interface의 차이가 없음을 볼 수 있습니다. runtime에 생성된 model object를 검증하기 위해, System.out.println() 구문을 사용하여, Eclipse의 console view를 체크하세요.
7. 추가적인 실습, 예제 그리고 영상
https://learn.vogella.com/courses/rich-client-platform
위 주소에서, 유료 추가 내용을 배울 수 있습니다.