이미지 검색을 사용해 보세요
검색창 이전화면 이전화면
최근 검색어
인기 검색어

가격
35,000
10 31,500
YES포인트?
1,750원 (5%)
5만원 이상 구매 시 2천원 추가 적립
결제혜택
카드/간편결제 혜택을 확인하세요

이미 소장하고 있다면 판매해 보세요.

  •  해외배송 가능?
  •  문화비소득공제 가능

관련 상품

이클립스 요술램프
[도서] 이클립스 요술램프
David Gallardo 외 2인 저 / 김기영 역 에이콘출판사
10% 22,500
이클립스 요술램프
SWT/JFace 인 액션
[도서] SWT/JFace 인 액션
Matthew Scarpino 등저/제갈호준,이선아 공역 에이콘출판사
10% 27,000
SWT/JFace 인 액션

에이콘 이클립스 프로페셔널 시리즈

책소개

목차

1장 이클립스 개발도구 사용하기
1.1 시작하기
1.1.1 이클립스 얻기
1.1.2 설치
1.2 이클립스 워크벤치
1.2.1 퍼스펙티브, 뷰, 편집기
1.2.1.1 Java 퍼스펙티브
1.2.1.2 자원 퍼스펙티브
1.2.1.3 디버그 퍼스펙티브
1.2.2 액션
1.2.2.1 최상위 메뉴
1.2.2.2 컨텍스트 메뉴
1.2.2.3 툴바
1.2.2.4 액션의 사용 여부 변경
1.3 개발환경 꾸미기
1.3.1 워크벤치 환경설정
1.3.2 자바 환경설정
1.3.3 환경설정 가져오기/내보내기
1.4 프로젝트 생성
1.4.1 새 자바 프로젝트 마법사 사용하기
1.4.2 .classpath 파일과 .project 파일
1.4.3 자바 패키지 마법사 사용하기
1.4.4 자바 클래스 마법사 사용하기
1.5 탐색
1.5.1 타입 열기 대화창
1.5.2 타입 계층구조 뷰
1.5.3 행으로 이동
1.5.4 아웃라인 뷰
1.6 검색
1.6.1 파일 검색
1.6.2 자바 검색
1.6.3 기타 검색 메뉴 옵션
1.6.4 작업 세트
1.7 코드 작성
1.7.1 자바 편집기
1.7.1.1 색상 적용 문법 강조
1.7.1.2 사용자 정의 코드 포맷 적용
1.7.1.3 자바 가져오기 구문 구성하기
1.7.1.4 컨텍스트 감지 코드 자동완성
1.7.1.5 ‘빠른 수정’ 문제점 자동 교정
1.7.2 템플릿
1.7.3 리팩토링
1.7.4 로컬 히스토리
1.7.5 파일 확장자 연관
1.8 CVS를 사용한 팀 개발
1.8.1 CVS 시작하기
1.8.2 CVS에서 프로젝트 체크아웃
1.8.3 저장소와 동기화하기
1.8.4 리소스 비교 및 치환
1.8.5 CVS 레이블 데코레이터
1.9 애플리케이션 실행
1.9.1 자바 애플리케이션 실행
1.9.2 실행 구성
1.10 디버깅
1.10.1 중단점 설정
1.10.2 디버그 뷰 사용하기
1.10.3 변수 뷰 사용하기
1.10.4 표현식 뷰 사용하기
1.11 단위 테스트
1.11.1 테스트 케이스 생성
1.11.2 테스트 케이스 실행
1.12 요약

2장 간단한 플러그인 예제
2.1 Favorites 플러그인
2.2 플러그인 프로젝트 생성
2.2.1 새 플러그인 프로젝트 마법사
2.2.2 플러그인 정의
2.2.3 뷰 정의
2.3 생성된 코드 둘러보기
2.3.1 플러그인 내역서
2.3.2 플러그인 클래스
2.3.3 Favorites 뷰
2.4 제품 빌드
2.4.1 직접 빌드하기
2.4.2 아파치 Ant로 빌드하기
2.5 제품 설치와 실행
2.6 제품 디버깅
2.6.1 실행 구성 생성
2.6.2 플러그인과 프래그먼트 선택
2.6.3 런타임 워크벤치 실행
2.7 PDE 뷰
2.7.1 플러그인 레지스트리 뷰
2.7.2 플러그인 뷰
2.7.3 플러그인 종속성 뷰
2.8 플러그인 테스트 작성
2.8.1 테스트 준비
2.8.2 플러그인 테스트 프로젝트 생성
2.8.3 플러그인 테스트 생성
2.8.4 플러그인 테스트 실행
2.8.5 Favorites 플러그인 설치 제거

3장 이클립스 기반구조
3.1 기반구조 개요
3.1.1 플러그인 구조
3.1.2 작업공간
3.2 플러그인 디렉토리와 JAR 파일
3.2.1 링크 파일
3.2.2 혼합 방식
3.3 플러그인 내역서
3.3.1 플러그인 선언
3.3.1.1 플러그인 ID
3.3.1.2 플러그인 버전
3.3.1.3 플러그인 이름과 프로바이더
3.3.1.4 플러그인 클래스 선언
3.3.2 플러그인 런타임
3.3.3 플러그인 종속성
3.3.4 확장과 확장점
3.4 Plugin 클래스
3.4.1 시동과 종료
3.4.2 플러그인 이른 시동하기
3.4.3 정적 플러그인 리소스
3.4.4 플러그인 환경설정
3.4.5 플러그인 구성 파일
3.4.6 Plugin과 AbstractUIPlugin
3.5 플러그인 모델
3.5.1 Platform
3.5.2 플러그인과 번들
3.5.3 플러그인 확장 레지스트리
3.6 로깅
3.6.1 상태 객체
3.6.2 오류 로그 뷰
3.7 이클립스 플러그인
3.8 요약

4장 SWT
4.1 SWT 역사와 목적
4.2 SWT 위젯
4.2.1 간단한 독립실행형 애플리케이션 예제
4.2.1.1 프로젝트 클래스 경로에 SWT 추가
4.2.1.2 독립실행형 SWT 코드
4.2.1.3 예제 실행
4.2.2 위젯 생명주기
4.2.3 위젯 이벤트
4.2.4 추상 위젯 클래스
4.2.4.1 Widget
4.2.4.3 Scrollable
4.2.5 최상위 클래스
4.2.5.1 디스플레이
4.2.6 주요 위젯
4.2.6.1 Label
4.2.6.2 Button
4.2.6.3 Text
4.2.6.4 List
4.2.6.5 Combo
4.2.6.6 Table
4.2.6.7 Tree
4.2.6.8 Composite
4.2.6.9 Group
4.2.6.10 TabFolder
4.2.7 메뉴
4.3 레이아웃 관리
4.3.2 RowLayout
4.3.3 GridLayout
4.3.4 FormLayout
4.4 자원 관리
4.4.1 색상
4.4.2 폰트
4.4.3 이미지
4.5 요약

5장 JFace 뷰어
5.1 리스트 지향 뷰어
5.1.1 레이블 프로바이더
5.1.2 컨텐트 프로바이더
5.1.3 뷰어 정렬자
5.1.4 뷰어 필터
5.1.5 StructuredViewer 클래스
5.1.6 ListViewer 클래스
5.1.7 TableViewer 클래스
5.1.8 TreeViewer 클래스
5.2 TextViewer
5.3 요약

6장 액션
6.1 IAction 대 IActionDelegate
6.2 워크벤치 윈도우 액션
6.2.1 워크벤치 윈도우 메뉴 정의
6.2.2 메뉴 내의 그룹
6.2.3 메뉴 항목과 툴바 버튼 정의
6.2.4 액션 이미지
6.2.5 삽입점
6.2.6 액션 위임자 작성
6.2.6.1 selectionChanged 메소드
6.2.6.2 run 메소드
6.2.7 새 액션 직접 테스트하기
6.2.8 새 액션에 대한 테스트 추가
6.2.9 논의
6.3 객체 액션
6.3.1 객체 기반 액션 정의
6.3.2 액션 필터와 사용 여부 지정
6.3.2.1 기본 필터와 사용 여부 지정
6.3.2.2 visibility 요소
6.3.2.3 filter 요소
6.3.2.4 selection 요소
6.3.2.5 enablement 요소
6.3.2.6 컨텍스트 감지 객체 컨트리뷰션
6.3.3 IObjectActionDelegate
6.3.4 객체 기반 서브 메뉴 작성
6.3.5 새로운 액션 수동 테스트
6.3.6 새로운 액션에 대한 테스트 추가
6.4 뷰 액션
6.4.1 뷰 컨텍스트 서브 메뉴 정의
6.4.2 뷰 컨텍스트 메뉴 액션 정의
6.4.3 IViewActionDelegate
6.4.4 뷰 툴바 액션 정의
6.4.5 뷰 풀다운 서브 메뉴와 액션 정의
6.4.6 새 액션 직접 테스트
6.4.7 새 액션에 대한 테스트 추가
6.4.8 뷰 컨텍스트 메뉴 식별자
6.5 편집기 액션
6.5.1 편집기 컨텍스트 메뉴 정의
6.5.2 편집기 컨텍스트 액션 정의
6.5.3 IEditorActionDelegate
6.5.4 편집기 최상위 메뉴 정의
6.5.5 편집기 최상위 액션 정의
6.5.6 편집기 툴바 액션 정의
6.5.7 새 액션에 대한 테스트 추가
6.5.8 편집기 컨텍스트 메뉴 식별자
6.6 키 바인딩
6.6.1 카테고리
6.6.2 커맨드
6.6.3 키 바인딩
6.6.4 액션에 커맨드 연관시키기
6.6.5 키보드 접근성
6.7 RFRS 고찰
6.7.1 전역 액션 레이블 (RFRS 5.3.5.1)
6.8 요약

7장 뷰
7.1 뷰 선언
7.1.1 뷰 카테고리 선언
7.1.2 뷰 선언
7.2 뷰 파트
7.2.1 뷰 메소드
7.2.2 뷰 컨트롤
7.2.3 뷰 모델
7.2.4 컨텐트 프로바이더
7.2.5 레이블 프로바이더
7.2.6 뷰어 정렬자
7.2.7 뷰어 필터
7.2.8 뷰 선택항목
7.3 뷰 액션
7.3.1 모델 액션
7.3.2 컨텍스트 메뉴
7.3.2.1 액션 작성
7.3.2.2 컨텍스트 메뉴 작성
7.3.2.3 컨텍스트 메뉴 동적 빌드
7.3.2.4 선택항목 프로바이더
7.3.2.5 원치 않는 액션에 필터 적용
7.3.3 툴바 버튼
7.3.4 풀다운 메뉴
7.3.5 키보드 액션
7.3.6 전역 액션
7.3.7 클립보드 액션
7.3.7.1 복사
7.3.7.2 잘라내기
7.3.7.3 붙여넣기
7.3.8 드래그 앤 드롭 지원
7.3.8.1 Favorites 뷰 밖으로 객체 드래그
7.3.8.2 Favorites 뷰 안으로 객체 드래그
7.3.8.3 전송 타입 직접 정의하기
7.3.9 인라인 편집
7.4 뷰 연결
7.4.1 선택사항 프로바이더
7.4.2 적응 가능 객체
7.4.3 선택사항 리스너
7.4.4 편집기 열기
7.5 뷰 상태 저장
7.5.1 지역 뷰 정보 저장
7.5.2 전역 뷰 정보 저장
7.6 테스트
7.7 이미지 캐시
7.8 테이블 열 크기 자동 조정
7.9 RFRS 고찰
7.9.1 내비게이션 목적의 뷰(RFRS 3.5.15)
7.9.2 뷰는 즉시 저장한다(RFRS 3.5.16).
7.9.3 뷰 초기화 (RFRS 3.5.17)
7.9.4 뷰 전역 액션 (RFRS 3.5.18)
7.9.5 뷰 상태 보존 (RFRS 3.5.19)
7.9.6 컨텍스트 메뉴 등록 (RFRS 5.3.5.8)
7.9.7 뷰에 대한 액션 필터(RFRS 5.3.5.9)
7.10 요약

8장 편집기
8.1 편집기 선언
8.2 편집기 파트
8.2.1 편집기 메소드
8.2.2 편집기 컨트롤
8.2.3 편집기 모델
8.2.4 컨텐트 프로바이더
8.2.5 레이블 프로바이더
8.3 편집
8.3.1 셀 편집기
8.3.2 셀 모디파이어
8.3.3 변경 리스너
8.3.4 셀 밸리데이터
8.3.5 편집 대 선택
8.4 편집기 생명주기
8.4.1 수정사항이 있는 편집기
8.4.2 페이지 전환
8.4.3 컨텐츠 저장
8.5 편집기 액션
8.5.1 컨텍스트 메뉴
8.5.1.1 액션 생성
8.5.1.2 컨텍스트 메뉴 작성
8.5.1.3 컨텍스트 메뉴 동적 구성
8.5.2 편집기 컨트리뷰터
8.5.2.1 전역 액션
8.5.2.2 최상위 메뉴
8.5.2.3 툴바 버튼
8.5.2.4 키보드 액션
8.5.3 실행 취소/다시 실행
8.5.4 클립보드 액션
8.6 편집기 연결
8.7 RFRS 고찰
8.7.1 편집 또는 열람에는 편집기 사용 (RFRS 3.5.9)
8.7.2 편집기 생명주기 (RFRS 3.5.10)
8.7.3 전역 액션 접근하기 (RFRS 3.5.11)
8.7.4 객체를 삭제했을 때 닫기 (RFRS 3.5.12)
8.7.5 외부 변경사항 동기화 (RFRS 3.5.14)
8.7.6 편집기 메뉴 등록 (RFRS 5.3.5.2)
8.7.7 편집기 액션 필터 (RFRS 5.3.5.3)
8.7.8 저장되지 않은 편집기 수정사항 (RFRS 5.3.5.4)
8.7.9 변경된 리소스에 접두사 붙이기 (RFRS 5.3.5.5)
8.7.10 편집기 아웃라인 뷰 (RFRS 5.3.5.6)
8.7.11 아웃라인 뷰 동기화 (RFRS 5.3.5.7)
8.8 요약

9장 리소스 변경 추적
9.1 IResourceChangeListener
9.1.1 IResourceChangeEvent
9.1.2 IResourceDelta
9.2 변경 이벤트 처리
9.3 변경 이벤트 일괄처리
9.4 진행 모니터
9.4.1 IProgressMonitor
9.4.2 진행 출력에 관련된 클래스
9.4.3 워크벤치 윈도우 상태 표시줄
9.4.4 IProgressService
9.5 지연된 변경 이벤트
9.6 요약

10장 퍼스펙티브
10.1 퍼스펙티브 작성
10.1.1 퍼스펙티브 확장점
10.1.2 퍼스펙티브 팩토리
10.1.3 IPageLayout
10.2 기본 퍼스펙티브 개선
10.2.1 뷰와 위치지정자 추가
10.2.2 바로가기 추가
10.2.3 액션 세트 추가
10.3 RFRS 고찰
10.3.1 장시간 소요 작업을 위한 퍼스펙티브 생성 (RFRS 5.3.5.10)
10.3.2 기존 퍼스펙티브 확장 (RFRS 5.3.5.11)
10.3.3 윈도우 메뉴에 액션 추가 (RFRS 5.3.5.15)
10.4 요약

11장 대화창과 마법사
11.1 대화창
11.1.1 SWT 대화창과 JFace 대화창 비교
11.1.2 주요 SWT 대화창
11.1.3 주요 JFace 대화창
11.1.4 JFace 대화창 작성
11.1.5 대화창 단위
11.1.6 기본 대화창 위치와 크기
11.1.7 크기 변경 가능한 대화창
11.1.8 Favorites 뷰 필터 대화창
11.1.9 세부사항 대화창
11.1.10 대화창 열기-부모 셸 찾기
11.2 마법사
11.2.1 IWizard
11.2.2 IWizardPage
11.2.3 IWizardContainer
11.2.4 중첩된 마법사
11.2.5 마법사 실행
11.2.5.1 마법사 확장점
11.2.5.2 마법사 직접 실행하기
11.2.6 마법사 예제
11.2.7 대화창 설정
11.2.8 선택사항 기반 페이지 컨텐츠
11.2.9 이전 페이지 기반 페이지 컨텐츠
11.3 RFRS 고찰
11.3.1 마법사 룩앤필 (RFRS 3.5.2)
11.3.2 편집기에서 새 파일 열기 (RFRS 3.5.6)
11.3.3 새 프로젝트를 생성할 때 퍼스펙티브 전환 (RFRS 3.5.7)
11.3.4 새 객체 보기 (RFRS 3.5.8)
11.3.5 단일 페이지 마법사 버튼 (RFRS 5.3.5.13)
11.4 요약

12장 환경설정 페이지
12.1 환경설정 페이지 생성
12.2 환경설정 페이지 API
12.2.1 FieldEditorPreferencePage
12.2.2 필드 편집기
12.2.3 PreferencePage
12.2.4 Favorites 환경설정 페이지
12.2.5 검증
12.2.6 중첩된 환경설정 페이지
12.2.7 탭 환경설정 페이지
12.3 환경설정 API
12.3.1 기본 환경설정
12.3.2 환경설정 접근
12.3.3 프로그램에서 기본 값 지정
12.3.4 파일에서 기본값 지정
12.3.5 Favorites 뷰 연동
12.3.6 환경설정 변경 전달
12.4 RFRS 고찰
12.4.1 환경설정 대화창 사용 (RFRS 3.5.25)
12.5 요약

13장 프로퍼티
13.1 프로퍼티 생성
13.1.1 FavoriteItem 프로퍼티
13.1.2 리소스 프로퍼티
13.2 프로퍼티 대화창에서 프로퍼티 출력
13.2.1 프로퍼티 페이지 선언
13.2.2 리소스 프로퍼티 페이지 작성
13.2.3 Favorites 항목 리소스 페이지 작성
13.2.4 특성 대화창 열기
13.3 특성 뷰에 프로퍼티 출력하기
13.3.1 특성 뷰 API
13.3.2 특성 뷰에서 Favorite 프로퍼티 출력
13.4 특성 페이지를 환경설정 페이지로 재활용하기
13.5 RFRS 고찰
13.5.1 빠른 접근을 위한 특성 뷰 (RFRS 3.5.21)
13.6 요약

14장 빌더, 마커, 네이처
14.1 빌더
14.1.1 빌더 선언
14.1.2 IncrementalProjectBuilder
14.1.3 파생 리소스
14.1.4 빌더를 프로젝트에 연관시키기
14.1.5 빌더 호출
14.2 마커
14.2.1 마커 유형
14.2.2 마커 생성과 제거
14.2.3 마커 속성
14.2.4 마커 해결-빠른 수정
14.2.5 마커 찾기
14.3 네이처
14.3.1 네이처 선언
14.3.2 빌더와 네이처 연관시키기
14.3.3 IProjectNature
14.3.4 필수 네이처
14.3.5 네이처 충돌
14.3.6 네이처 이미지
14.3.7 프로젝트에 네이처 연관시키기
14.4 RFRS 고찰
14.4.1 리소스 변환에는 빌더 사용 (RFRS 3.8.1)
14.4.2 기존 빌더 대체 금지 (RFRS 3.8.3)
14.4.3 ’빌드’ 용어 사용 주의 (RFRS 5.3.8.1)
14.4.4 생성된 리소스에 ’파생됨’ 표시 (RFRS 5.3.8.2)
14.4.5 정리 빌드 요청에 대한 처리 (RFRS 5.3.8.3)
14.4.6 가능한 한 IResourceProxy 사용 (RFRS 5.3.8.4)
14.4.7 빌더는 반드시 네이처로 추가 (RFRS 5.3.8.5)
14.5 요약

15장 도움말 구현
15.1 도움말 사용
15.2 도움말 구현
15.2.1 새 도움말 프로젝트 생성
15.2.2 플러그인 내역서 파일
15.2.3 목차 파일
15.2.4 HTML 컨텐츠 작성
15.3 컨텍스트 감지 도움말 (F1)
15.3.1 컨텍스트 ID를 항목에 연관시키기
15.3.2 IWorkbenchHelpSystem API
15.3.3 컨텍스트 감지 도움말 컨텐츠 작성
15.3.4 컨텍스트 확장점
15.3.5 마커 도움말
15.4 프로그램으로 도움말 접근
15.4.1 특정 도움말 페이지 열기
15.4.2 웹 페이지 열기
15.5 치트 시트
15.5.1 치트 시트 사용법
15.5.2 간단한 치트 시트 작성
15.5.3 치트 시트 액션 추가
15.6 RFRS 고찰
15.6.1 도움말 시스템으로 도움말 제공 (RFRS 3.7.2)
15.6.2 도움말 시스템을 통해 모든 도움말 제공 (RFRS 5.3.7.1)
15.6.3 F1을 사용해 컨텍스트 도움말 활성화하기 (RFRS 5.3.7.2)
15.6.4 동적 도움말 구현 (RFRS 5.3.7.3)
15.6.5 독립형 도움말 사용 (RFRS 5.3.7.4)
15.6.6 추가 문서 사용 (RFRS 5.3.7.5)
15.6.7 태스크 흐름 개요 제공하기 (RFRS 5.3.5.34)
15.6.8 단 하나의 태스크만 설명하기 (RFRS 5.3.5.35)
15.6.9 각 단계마다 도움말 링크 제공 (RFRS 5.3.5.36)
15.7 요약

16장 다국어 지원
16.1 플러그인 내역서 구체화
16.2 플러그인 문자열 구체화
16.3 프래그먼트 사용
16.3.1 프래그먼트 프로젝트 작성
16.3.2 프래그먼트 내역서
16.3.3 프래그먼트 프로젝트 컨텐츠
16.4 요약

17장 확장점 작성
17.1 확장점 메커니즘
17.2 확장점 정의
17.2.1 확장점 생성
17.2.2 확장점 스키마 작성
17.2.3 확장점 요소와 속성
17.2.4 확장점 요소 문법
17.3 확장점 구현 코드
17.3.1 확장 정보 해석
17.3.2 프록시 생성
17.3.3 실행 가능 확장 작성
17.3.4 클린업
17.4 확장점 문서화
17.5 확장점 사용
17.6 RFRS 고찰
17.6.1 확장점 문서화 (RFRS 3.10.5)
17.6.2 에러 기록 (RFRS 5.3.10.1)
17.7 요약

18장 피처, 브랜딩, 업데이트
18.1 피처 프로젝트
18.1.1 새 피처 프로젝트 생성
18.1.2 피처 내역서 파일
18.1.3 피처 내역서 편집기
18.2 브랜딩
18.2.1 about.html 파일
18.2.2 about.ini 파일
18.2.3 제품 브랜딩
18.3 업데이트 사이트
18.3.1 업데이트 사이트 프로젝트 작성
18.3.2 site.xml 파일
18.3.3 업데이트 웹 사이트
18.3.4 피처 내역서 다듬기
18.3.5 업데이트 사이트 접근
18.4 RFRS 고찰
18.4.1 제품 브랜딩 오버라이드 금지 (RFRS 3.1.8)
18.4.2 브랜드 적용 피처 출력 여부 (RFRS 5.3.1.9)
18.4.3 귀속 정보 포함하기 (RFRS 5.3.1.10)
18.4.4 about.html 파일 내용 (RFRS 5.3.1.11)
18.4.5 스플래시 화면 제한 (RFRS 5.3.1.12)
18.5 요약

19장 제품 빌드
19.1 Ant 간단히 살펴보기
19.1.1 프로젝트 빌드
19.1.2 빌드 타깃
19.1.3 빌드 태스크
19.1.4 빌드 프로퍼티
19.1.4.1 사전정의된 프로퍼티
19.1.4.2 프로퍼티 유효범위
19.1.4.3 프로퍼티 가변성
19.1.4.4 타깃 외부의 프로퍼티
19.1.4.5 명령행 프로퍼티
19.1.5 태스크
19.1.6 macrodef
19.1.7 콘솔에서 Ant 실행
19.1.8 Ant 확장
19.2 Favorites 제품 빌드
19.2.1 자동 생성 빌드 스크립트
19.2.2 Favorites 빌드 스크립트 리팩토링
19.2.2.1 빌드 매크로와 빠른 중단
19.2.2.2 빌드 초기화
19.2.2.3 다중 프로젝트 빌드
19.2.2.4 개별 프로젝트 빌드
19.2.3 빌드 과정에서 직접 컴파일하기
19.2.4 단일 바이너리와 다중 바이너리 비교
19.2.5 다른 버전의 이클립스로 편집하기
19.2.6 다른 버전의 이클립스에 대해 빌드하기
19.2.6.1 코드 브랜치
19.2.6.2 퍼사드 패턴
19.2.6.3 전처리기
19.2.6.4 프래그먼트
19.2.6.5 이클립스 3.0을 위한 Favorites 예제
19.2.7 클래스 경로 도구
19.2.8 이클립스 3.0에 대해 빌드하기
19.2.9 소스 코드 타깃 변경
19.2.10 버전 확인
19.2.11 다국어 지원 빌드
19.3 요약

20장 심화학습
20.1 고급 프로젝트 검색-참조
20.2 내부 코드 접근
20.2.1 이클립스 뉴스그룹
20.2.2 버그질라-이클립스 버그 추적 시스템
20.2.3 내부 코드 접근과 관련된 옵션
20.2.4 이클립스와 일반 자바 애플리케이션의 차이
20.2.5 관련된 플러그인
20.2.6 프래그먼트 사용
20.3 어댑터
20.3.1 IAdaptable
20.3.2 어댑터 사용
20.3.3 어댑터 팩토리
20.3.4 IWorkbenchAdapter
20.4 웹 브라우징 또는 메일 작성
20.4.1 IWorkbenchBrowserSupport
20.4.2 LaunchURL
20.5 확장점에 지정된 타입
20.5.1 파라미터 적용 타입
20.5.1.1 구조화되지 않은 파라미터
20.5.1.2 구조화된 파라미터
20.5.2 다른 플러그인에서 클래스 참조하기
20.6 이클립스를 수정하여 파트 식별자 찾기
20.6.1 이클립스 베이스 코드 수정하기
20.6.2 전역 액션 작성
20.6.3 새 유틸리티 테스트
20.6.4 이클립스에 변경사항 제출
20.7 레이블 데코레이터
20.7.1 레이블 데코레이터 선언
20.7.2 ILightweightLabelDecorator
20.7.3 장식전용 레이블 데코레이터
20.7.4 IDecoratorManager
20.8 백그라운드 작업-Jobs API
20.9 플러그인 클래스 로더
20.10 이른 시동
20.10.1 이른 시동 관리하기
20.10.2 이른 시동 끄기
20.11 리치 클라이언트 플랫폼
20.12 결론

부록 A 이클립스 플러그인과 리소스
A.1 플러그인
A.1.1 CodePro AnalytiX and CodePro PlusPak
A.1.2 EclipseProfiler
A.1.3 EclipseUML
A.1.4 MyEclipse Enterprise Workbench
A.1.5 WindowBuilder Pro
A.1.6 XMLBuddy
A.2 리소스
A.2.1 Eclipse.org
A.2.2 Eclipse Plug-in Central
A.2.3 Eclipse plug-in site
A.2.4 Eclipse wiki wiki
A.2.5 EclipseCon
A.2.6 Eclipse용 ANTLR 플러그인
A.2.7 Bugzilla 플러그인
A.2.8 Coloring editor
A.2.9 Eclipse Easter eggs
A.2.10 IBM Alphaworks on Eclipse
A.2.11 IBM Eclipse research
A.2.12 PHP plug-in for Eclipse
A.2.13 QNX’s Momentics
A.2.14 QuickShare: XP programming for Eclipse
A.2.15 Sangam: XP programming for Eclipse

부록 B Ready for Rational Software

저자 소개

저자 : 에릭 클레이버그 외
에릭 클레이버그

에릭 클레이버그는 Instantiations 사의 제품 개발 부문 부사장이다. 에릭은 17년 간의 상용 소프트웨어 개발 경험이 있으며 그 중 9년은 자바, 6년은 이클립스를 경험해 온 숙련된 소프트웨어 기술자이자 제품 개발자, 기업가, 관리자이다. 또한 윈도우빌더 프로(WindowBuilder Pro), 코드프로(CodePro), 수상작인 VA Assist 제품 계열 등 다양한 상용 자바/스몰토크 확장 기능 제품의 주요 개발자이자 아키텍트이다. MIT 학사, 하버드 MBA 학위를 가지고 있으며 성공적인 소프트웨어 회사인 ObjectShare와 Instantiations의 공동 창업자이다.

댄 루벨
댄 루벨은 Instantiations 사의 수석 연구원이다. 그는 17년 간 상용 소프트웨어를 개발해 왔으며 그 중 10년은 자바, 6년은 이클립스를 경험해 온 객체 지향 기술 디자인/적용 전문가이며 기업가이다. 그는 jFactor, jKit/GO, jKit/Grid 등 몇몇 성공적인 상용 제품의 핵심 아키텍트이면서 제품 관리자로서 WindowBuilder Pro, VA Assist, CodePro 등의 상용 제품 설계와 리더 역할을 맡아 수행한 바 있다. 버크넬 학사 학위를 갖고 있으며 Instantiations의 공동창업자이다.

Instantiations는 어드밴스드 IBM 비즈니스 파트너 중 하나이며 이클립스와 IBM 비주얼에이지(VisualAge), 웹스피어(WebSphere), 래셔널(Rational) 제품 계열에 대한 다수의 상용 확장 기능을 개발했다. Instantiations는 이클립스 연합의 멤버이며 이클립스 협업 도구 프로젝트(Koi)와 이클립스 폴리네이트 프로젝트(Beehive)를 담당하는 이클립스 오픈소스의 기여자이다.


<저자 서문>

처음 이클립스를 접했던 1999년 후반을 돌이켜 보면, 우리는 IBM이 해결하려고 시도하던 문제의 규모에 압도되어 있었음을 알 수 있다. IBM은 모든 개발 환경을 단일 코드 기반으로 통합하려고 했다. 그 때 IBM은 C/C++, 자바, 스몰토크가 뒤섞인 혼합 기술을 사용하고 있었다.

수상작인 Visual Age for Java를 포함해 IBM의 중요한 도구 중 상당수가 스몰토크로 작성되어 있었다. 스몰토크는 복잡한 도구를 개발하기에 매우 좋은 언어였지만 자바 같은 언어에게 시장점유율을 급속히 빼앗기고 있었다. 반면 IBM은 스몰토크 개발자가 세계에서 가장 많은 곳 가운데 하나였지만 IBM 외부에서는 스몰토크에 대한 산업적인 지원이 그다지 크지 않았고, 스몰토크 기반의 부가 기능을 개발할 만한 독립 소프트웨어 벤더(ISV, Independent Software Vender)는 매우 부족했다.

반면 자바는 간편한 이식성과 다양한 플랫폼 지원으로 세계 전역에 걸쳐 개발자들의 마음을 사로잡고 있었고, 최신의 웹 기반 비즈니스 애플리케이션 구축에 필요한 풍부한 API를 제공했다. 무엇보다도 자바는 객체 지향 언어였으므로 IBM은 스몰토크 기반 도구를 개발하면서 늘어난 숙련된 객체지향 개발자들을 적극적으로 활용할 수 있었다. IBM은 그때까지 IBM의 Visual Age Smalltalk와 VisualAge Java 개발환경을 개발했던 OTI(Object Technology International) 그룹을 인수했고, 이 그룹에 자바 기반이면서 확장성이 매우 우수한 IDE의 구축을 맡겼다. 이로 인해 태어난 이클립스야말로 매우 축복 받은 결과물이었다.

OTI는 최고수준의 객체 지향 기술을 적용해 기능, 유연성, 확장성 면에서 비할 데 없이 뛰어난 IDE를 만들 수 있었다. OTI는 기존의 스몰토크 기반 IDE에서 유용했던 기능을 대부분 구현해냈고, 그와 동시에 IDE라는 소프트웨어의 한 장르에서 이제껏 볼 수 없었던 예술적인 경지를 이뤄냈다.

따라서 그 이전까지 자바 세상에서 이클립스만큼 강력하고 극찬을 받은 제품이 없었지만, 현재는 이클립스가 마이크로소프트의 .NET과 함께 세계에서 가장 인기 있는 개발 환경으로 자리잡고 있다. 자신의 도구를 가능한 한 많은 사람들에게 전하고 싶은 개발자들에게는 이클립스야말로 완벽한 플랫폼이었다. 더구나 이클립스는 완전히 무료인데다 오픈소스라는 점에서 도저히 사용하지 않을 수 없는 매력적인 도구였다. 이처럼 개방형의 확장 가능한 IDE 기반이 누구에게나 무료라는 사실은 미래의 도구 개발자들에게 강력한 동기가 되었다.

우리에게도 마찬가지였다. Instantiations에서 그리고 더 이전의 ObjectShare에서, 우리는 다양한 IDE에 대한 확장도구를 구축하는 데 집중하면서 훨씬 의미 있는 시간을 보낼 수 있었다. Digitalk의 Smalltalk/V에 대한 확장 도구를 개발하는 것으로 시작해 이후에는 IBM의 VisualAge Smalltalk를 위한 개발도구로 이전했으며, 마침내는 IBM의 VisualAge Java를 위한 도구(수상작인 VA Assist 제품과 jFactor 제품은 최초의 자바 리팩토링 도구 중 하나)까지 개발하게 되었다. 이와 같은 개발환경은 모두 IDE를 확장할 수 있는 수단을 제공하긴 했지만, 문서화나 표준화는 매우 부실했다. 적은 시장 점유율(비주얼 베이직 등과 비교할 때)과 다양한 사용자 기반으로 인해 개발환경뿐만 아니라 우리 자신도 큰 어려움을 겪었다.

우리는 어드밴스드 IBM 비즈니스 파트너로서 IBM에서 이클립스 개발 책임을 맡은 사람들과 길고 신뢰할만한 관계를 맺을 수 있었다. 이러한 관계 덕분에 우리는 새로운 기술에 대해 전달 받고, 다른 사람들이 이클립스를 접하는 것보다 1년 반 정도 앞서서 이클립스를 사용할 기회를 얻을 수 있었다. IBM은 2001년 중반에 이클립스를 세계적으로 발표했으며, Instantiations의 우리 팀은 IBM에서 공개할 첫 번째 데모 애플리케이션을 개발했다. 그해 말 IBM은 최초의 이클립스 기반 상용 도구인 WebSphere Studio Application v4.0(v4.0은 당시 VisualAge for Java v4.0과 버전을 맞추기 위한 것)을 발표했으며, 같은 날 우리의 CodPro 제품은 WebSphere Studio 최초의 상용 확장 기능(이클립스도 지원)이 되었다.

현재 CodePro 제품은 이클립스와 다른 이클립스 기반 IDE에 수백 가지 개선사항을 추가하고 있다. 지난 몇 년간 CodePro를 개발하면서 우리는 이클립스 개발에 대해 세부적으로 배울 수 있는 기회를 얻었다. 이클립스에 대해 우리보다 더 잘 알 만한 개발자는 IBM과 OTI에서 이클립스와 함께 먹고 자며 숨쉰 사람들 정도일 것이라 생각한다. 또한 CodePro는 이 책에서 제시하는 아이디어와 기법을 실험해볼 수 있는 실험실이기도 했으므로, 덕분에 어떤 내용을 써야 할지 생각해볼 여유를 가질 수 있었다.


<역자 소개>

양석호
KAIST 전산과를 졸업하고, 웹, 모바일, 임베디드, 자바 GUI 애플리케이션 등 다양한 프로젝트를 수행했으며 현재는 NHN에서 일본 검색서비스 개발 업무를 맡고 있다. 에이콘 이클립스 프로페셔널 시리즈 에디터를 맡아 『이클립스 RCP: 설계에서 구현, 배포까지, 자바 GUI 애플리케이션 개발의 모든 것』를 번역하는 등 양질의 이클립스 관련서를 독자들에게 소개하는 데 큰 보람을 느낀다. 또한 2005년부터 네이버 이클립스 플러그인 까페(http://cafe.naver.com/eclipseplugin)를 운영하며 점점 늘어가는 이클립스 플러그인 개발자들과 함께 이클립스 기술 전파에 노력하고 있다.


<역자 서문>

지금도 이클립스 플랫폼 개발 관련 서적이 많은 것은 아니지만, 역자가 이클립스 플러그인 개발을 시작할 때는 『Eclipse: Building Commercial-Quality Plug-ins』가 처음 이클립스 플랫폼을 접하는 사람이 참고할만한 독보적인 책이었습니다. 유일한 책임에도 불구하고 적절한 예제와 상세한 설명, 풍부한 실무 경험이 담겨 있어서 정말 큰 도움이 되었습니다. 돌이켜 생각해보면 이클립스 플러그인 개발 분야에서 유일하다 싶은 이 책이 너무 뛰어나서 한동안 경쟁서적이 나오지 못한 것은 아닐까 싶습니다.

이클립스 서적을 번역하고자 마음을 먹었을 때 당연하게도 이 책이 첫번째 후보가 되었습니다만, 이미 시간이 많이 흘러 이클립스는 기반 플랫폼을 OSGi로 전환한다는 크나큰 변화를 겪은 직후였습니다. 이로 인해 OSGi 전환 직후 출간된 『이클립스 RCP』는 최신 이클립스 플랫폼의 내용을 훌륭히 담고 있어 일단 먼저 번역을 시작했습니다. 하지만 곧이어 출간된 『Eclipse Building Commercial-Quality Plug-ins, 2판』은 절대 놓칠 수 없는 책이었습니다. 『SWT/JFace 인 액션』, 『이클립스 RCP』 출간과 때를 맞춰 최근 이클립스 플랫폼에 관심 갖는 개발자분들이 눈에 띄게 늘어나면서, 『이클립스 실전 플러그인 개발』을 빨리 내놓아야 한다는 압박감도 컸습니다만 마치고 나니 가장 뿌듯한 번역서이기도 합니다..

전에도 이미 읽었던 책이지만 직접 번역을 해보니 이 책의 장점을 더욱 크게 느낄 수 있었습니다. OSGi 등 고급 주제에 해당하는 것은 『이클립스 RCP』에 더 많이 녹아 있다고 봅니다만, 이클립스 설치와 SWT/JFace 프로그래밍부터 시작하는 학습과정은 처음 시작하는 개발자에게 큰 도움이 되도록 구성되어 있습니다. 특히 이 책의 최고 장점은 단순히 코딩뿐만 아니라 플러그인 개발자로서 염두에 둬야 할 이클립스 철학과 좋은 GUI를 위한 가이드라인입니다. 결국 "상용 품질(commercial-quality)"이라 함은 개발의 난이도보다는 사용자에 대한 배려니까요. 또한 이클립스 RCP는 아무래도 애플리케이션 개발자의 입장이었습니다만, 『이클립스 실전 플러그인 개발』은 플러그인 개발자 입장에서 다른 플러그인과 매끄럽게 상호작용하는 부분에 대해 잘 설명하고 있습니다.

최근 이클립스는 또 한번의 큰 변화를 겪었습니다. 이클립스 3.3 기반의 유로파(EUROPA)는 Mylyn이라는 새로운 형태의 UI와 다양한 개발 언어 지원을 추가함으로써 범용 개발 도구로서의 면모를 제대로 보여주고 있습니다.

이클립스 3.2를 기준으로 집필된 책이어서 최근 출시된 이클립스 3.3과는 다소 차이가 있지만, 이클립스 유로파는 이클립스의 기반 플랫폼의 확장보다는 외부 기능을 넓히는 데 중점을 두었습니다. 이 책은 방대해진 이클립스의 영역을 탐험하기 위한 훌륭한 도구가 되리라 생각합니다. 이클립스는 아직 OSGi와 완전히 동화되지는 않은 상태이므로 곧 또 한번의 큰 변화를 예고하고 있습니다. 이 책으로 지금까지 발전해온 이클립스의 모습을 빠른 시간 안에 파악하고 앞으로 이클립스의 진화 과정을 함께 즐길 수 있기를 바랍니다.

신혼임에도 번역에 많은 시간을 양보해주었던 착한 아내 현우, 저를 언제나 지지해주시는 할머니와 엄마, 장인어른, 장모님, 지금은 하늘나라에 계시지만 항상 저를 격려해주시고 많은 것을 남겨주신 할아버지께 이 자리를 빌어 감사 드립니다. 또한 이클립스의 잠재력을 믿어주시고 좋은 책을 만들기 위해 끊임없이 노력하시는 에이콘 출판사분들께도 진심으로 감사 드립니다.

2007년 7월
양 석 호

관련 분류

품목정보

발행일
2007년 08월 06일
쪽수, 무게, 크기
856쪽 | 1716g | 188*255*40mm
ISBN13
9788960770188

출판사 리뷰

★ 이 책의 주요 내용 ★

■ 자바 프로그래머를 위한 이클립스 사용 설명서 요약
■ 숙련된 이클립스 사용자를 위한 체계화된 참고서
■ 이클립스 플러그인을 개발하는 데 필요한 다양한 개발 도구 소개
■ 플러그인과 확장점 구조 등 이클립스 아키텍처에 대한 설명
■ SWT와 JFace로 이클립스 UI를 구축하는 실무 과정
■ 변경내역 추적, 퍼스펙티브, 마커, 네이처 등을 사용하는 방법 예시
■ 다국어 지원, 도움말 시스템, 피처, 브랜드 적용


★ 이 책의 목표 ★

이 책은 이클립스와 IBM SDP(Software Development Platform, IBM의 이클립스 기반 상용 개발 환경)를 위한 상용 품질의 확장 기능을 구축하는 과정과, 그와 관련된 상세하고 심층적인 내용을 다룬다. 여기서 ‘상용 품질’이란 ‘상용 수준’ 또는 ‘고품질’과 동일한 의미로 사용한다. 상용 품질의 플러그인을 개발하는 것은 이클립스에 통합시키기 위해 필요한 최소한의 요구사항을 만족시키는 것을 의미한다. 또한 상용 제품을 ‘갈고 닦는 과정’에 기여하는 모든 세부사항에 관련된 것을 의미한다.
이클립스 플러그인 세상에서는 매우 일부의 플러그인만이 상용화를 위한 마지막 과정까지 수행해 마무리되며 대부분은 오픈소스나 아마추어 플러그인 형태로 남는다. 고품질 플러그인을 개발하는 데 관심이 있는 개발자(십중팔구는 이클립스 기반 제품을 개발하려는 소프트웨어 회사)라면 고려해야 할 세부적인 사항이 많다. 이 책은 플러그인 개발의 전체 과정에 대해 방향을 잡아주고 고품질의 결과물을 완성하기 위해 필요한 모든 부가 사항을 제시한다. 또한 이를 통해 몇 가지 보조적인 목표도 함께 이루고자 한다.
입문자를 위해 이클립스 사용법에 대해서도 간단히 소개한다.
숙련된 이클립스 사용자의 지식을 보완하고 이클립스 기반 제품의 품질을 향상시키기 위한 참고자료를 제공한다.
입문자와 숙련된 사용자 모두를 대상으로 복잡한 이클립스 플러그인을 작성하는 것에 대한 상세한 학습서 역할을 한다.


★ 이 책의 구성 ★

처음 3개 장은 이클립스 개발 환경과 간단한 플러그인 개발 과정의 개요를 소개한다. 여기서는 이클립스를 처음 접하는 개발자가 플러그인 개발을 금방 경험해볼 수 있게 하는 데 목적을 두고 있다.

특히 1장은 독자에게 이클립스 개발도구 중에서 플러그인 개발을 위해 꼭 필요한 부분을 소개한다. 이는 이클립스 IDE와 관련 도구에 대한 매우 짤막한 개요이므로(제대로 쓰려면 책 한 권 분량이다), 숙련된 이클립스 사용자라면 그냥 넘어가도 상관없다.

2장은 이 책 전체에 걸쳐 사용할 예제를 소개하고 동작하는 플러그인을 구축하는 과정을 처음부터 끝까지 신속하게 살펴본다. 3장은 이클립스 아키텍처와 플러그인, 확장점 구조에 대해 추상적인 개념으로 살펴본다.

4장과 5장은 모든 이클립스 UI를 구성하는 기본 요소인 SWT와 JFace를 다룬다. 이 내용은 독립적인 참고자료로도 활용할 수 있으며 플러그인을 당장 개발하기에도 부족하지 않을 만한 내용을 담고 있다. 책 전체에 걸쳐 UI를 작성하는 데 있어서 충분한 지식을 제공하고 그 중 몇 가지는 즉시 사용할 수 있다.

이 책의 대부분을 차지하는 6장 이후 장들에서는 플러그인 개발의 다양한 측면을 각각 다루며 독자에게 관련된 문제 해결 방안에 대한 심층적인 지식을 제공한다. 각 장은 문제의 다른 측면에 초점을 맞추며 개요, 상세한 설명, 문제와 해결책에 대한 논의, 도표, 화면 이미지, 코드 예제, 관련 API 목록, 요약 등으로 구성된다.


★ 이 책의 대상★

이 책의 대상 독자는 이클립스와 다른 이클립스 기반 제품에 통합시킬 제품을 구축하려는 자바 개발도구 개발자나 자신의 개발환경을 직접 개선하려는 고급 이클립스 사용자, 그리고 이클립스가 어떻게 동작하는지를 알고 싶은 모든 개발자이다. 1장 ‘이클립스 개발도구 사용법’에서 필요한 기초 지식의 대부분을 소개하고 있으므로, 이 책을 보려면 반드시 숙련된 이클립스 사용자라야 하는 것은 아니다. 독자가 이클립스 관련 지식은 충분치 않더라도 자바와 XML을 능숙하게 사용하는 개발자일 것으로 전제하고 집필을 했다.

추천평

“이클립스 관련 책 중에서 가장 좋은 것은 무엇입니까”라고 종종 물어오는 사람들이 있다. 내가 알고 있는 것 가운데 으뜸이라면 언제나 바로 이 책『이클립스 실전 플러그인 개발』이다. 이 책은 소프트웨어 현업 개발자에게 가장 깔끔하고 적절한 이클립스 서적임에 틀림 없다. 다른 이클립스 서적은 이클립스 내부 구조에 초점을 맞추거나 이클립스 문서를 반복할 뿐이지만, 이 책은 이클립스 기반의 제품을 만드는 과정에서 발생할 수 있는 문제와 이슈들에 대해 정확히 초점을 맞추고 있다.
— 비욘 프리맨 벤슨 / 이클립스 재단 이사, 오픈소스 프로세스

제목이 암시하듯 이 두꺼운 책은 이클립스 플러그인의 개발에 있어 최고 개발 과정으로 안내해준다. 게다가 매우 수월하게 학습할 수 있게 쓰여 있다. 플러그인을 개발하고 배포하기 전에 이 책을 꼭 읽어 보라.
— 어니스트 프리드맨 힐 / JavaRanch.com 운영자

길잡이가 될 이클립스 플러그인 개발 서적을 찾고 있다면 바로 이 책이 해답이 될 것이다. 이클립스를 말하는 책은 이미 여러 권 소개됐지만 『이클립스 실전 플러그인 개발』만큼 깊게 파고드는 책은 없다.
— 사이먼 아처

『이클립스 실전 플러그인 개발』은 우리 팀원 모두에게 값진 교육 수단이었다. 사실 이 책이 없었다면 우리 팀의 기초 교육을 진행하기란 불가능했을 것이다. 이제는 우리 회사의 모든 개발자가 이 책을 읽은 후 더 적은 예산과 시간으로 최신의 복잡한 제품 개발을 할 수 있게 됐다. 이클립스 플러그인 개발 과정을 잘 설명해준 저자들에게 감사할 따름이다.
— 브루스 그루엔바움

이 책은 내가 소장한 책들 가운데 가장 유용한 책 중 하나이다. 이클립스 플러그인 개발을 시작하려 한다면 반드시 지녀야 할 책으로, 개발에 따르는 시간과 노력을 크게 줄여 줄 것이다. 이 책에는 수많은 조언이 들어 있으며, 무엇보다 플러그인에 프로정신을 담아 완벽을 추구하는 노하우를 얻을 수 있다. 목표가 뚜렷할 뿐 아니라 잘 구조화되어 있고 명확해서 낭비한 페이지가 하나도 없는 놀라운 책이다. 여러 컴포넌트와 내역서 구역 사이의 관계를 설명한 도표는 매우 훌륭하며 전체적으로 이해하는 데 무척 큰 도움을 준다. 액션, 뷰, 편집기 이상의 내용을 훌륭하게 담아냈으며, 그 안에 담긴 저자의 경험에서 누구나 큰 도움을 받을 것으로 확신한다.
— 토니 사베스키

이 밀알과 같은 책의 저자들은 가장 생산성 높고 튼튼한 소프트웨어공학 기술에 대해 수십 년간 경험을 쌓아왔다. 그들의 경험이 비로소 가장 효율적인 자바 개발을 위해 이클립스에 적용됐다. 진지한 소프트웨어공학 전문가라면 누구나 꼭 소장해야 할 책이다!
— 에드 클리마스

이 책이 정말 훌륭한 책이라는 사실을 알리고 싶을 뿐이다! 이렇게 읽기 쉬우면서도 내용이 풍부한 책을 써 준 것에 진심으로 감사한다!
— 브룩 헤드릭

훌륭한 이클립스 플러그인을 개발하기 위한 핵심은 어디서, 어떻게 IDE를 확장할 것인지에 달려 있는데, 이 책이 그 해답을 당신에게 알려 줄 것이다. 진지한 플러그인 개발자라면 특히 상용 애플리케이션 개발자라면 이 책은 필독서이다. 나는 이 책이 아니었다면 아무것도 할 수 없었을 것이다.
— 브라이언 윌커슨

리뷰/한줄평0

리뷰

첫번째 리뷰어가 되어주세요.

한줄평

첫번째 한줄평을 남겨주세요.