SlideShare une entreprise Scribd logo
1  sur  22
SWT/JFace

JFACE에 대해
            조현종(V0.9, 12/07/07)
            http://cafe.naver.com/eclipseplugin
            http://hangumkj.blogspot.com/
            hangum@gmail.com
목 차
   JFace는?
   Hello World 예제
   Image, Font, Color Registry 소개
   Action과 Contribution 소개
   Viewer 소개
   LabelProvider
   ContentProvider
   TreeViewer
   TableViewer
   TreeTableViewer
   ListViewer
   Dialog, Wizard, Preference 소개
   팀 회의
   실습
JFace는?

- 모델 기반 어뎁터 or 헬퍼 클래스
- www.eclipse.org/swt
UI Framework
 문제 :
   구조적인 도메인 모델을 탐색 및 조작 할 수 있어야
    한다.
   도메인이 바뀌어도 UI와 싱크를 맞추어야 한다.
HelloWorld예제
 public class HelloWorldJFace extends ApplicationWindow {
public HelloWorldJFace() {                                     // 2
            super(null);
            createActions();
            addToolBar(SWT.FLAT | SWT.WRAP);
            addMenuBar();
            addStatusLine();
     }
     protected Control createContents(Composite parent)                      // 8 composit 생성
     private void createActions()                                            // 3 명령 설정
     protected ToolBarManager createToolBarManager(int style) // 4 메뉴 아래에 툴바
     protected MenuManager createMenuManager()                               // 5 최상위 메뉴 설정
     protected StatusLineManager createStatusLineManager()     // 6 하단에 상태바
     public static void main(String args[]) {                                // 1
            try {
                           HelloWorldJFace window = new HelloWorldJFace();
                           window.setBlockOnOpen(true);
                           window.open();
                           Display.getCurrent().dispose();
            } catch (Exception e) {
                           e.printStackTrace();
HelloWorld 예제 실행
1. SWT Designer사용
2. File -> New -> Project -> Designer ->
   SWT/JFace Java Project
Viewer 소개

 Viewer는?
  Model + View + Control을 분리.
  정렬 필터링
  랜더링( 아이콘, 레벨)
  Action을 제공



  종류
   Combo,List, Table, Tree,
   Text, TreeTable
Viewer 소개
ContentProvider
 IStructuredContentProvider : table, list
   Object[] getEmement(Object)

 ITreeContentProvider : tree
   Object[] getChildren(Object) : 자식 객체 리턴
   getParent(Object) : 부모객체 리턴
   hasChildren(Object) : 자식 객체 유무
   getEmentnt : 최상위 부모 노드의 자식 리턴
LabelProvider
 ILabelProvider -> Tree, List
   getImage(Object) 해당 이미지 리턴
   getText(Object) 해당 텍스트 리턴

 ITableLabelProvider -> Table
   getColumnImage(Object, int)
   getColumnText(Object, int)
Tree Viewer 소개


                                ILabelProvider
     TreeViewer
                       사용   getImage(Object)
                            getText(Object)
setContentProvider()
setLabelProvider()
                       사용
                             ITreeContentProvider
                            getChildren(Object)
                       사용                                Domain
                            getParent(Object)
                                                    사용    Data
                            inputChange(Object)
Tree Viewer 소개
   모델변경 – 모델변경 -> view 변경
                      ITreeContentProvider                    Domain
                    getChildren(Object)                        Data
                    getParent(Object)
                    inputChange(Object)
                                                       MyModelListener
     TreeViewer                                  modelChanged()
                             Extend


addChild()                                           Extend

removeChild()
updateNode()                MyModelContentProvider
refresh()         Update
                           getChildren(Object)
                  Viewer   getParent(Object)
                           domainChange(Object)
Viewer 최적화

 SWT.VIRTUAL
   보이는 부분만 viewer에 보이도록
 StructuredViewer.setUseHashlookup(boolean)
   Hash 알고리즘으로 탐색 속도 향상
     Viewer의 DAO에 hashCode(), equals() 를 구현합니다.
 See(EMF Databinding)
     http://tomsondev.bestsolution.at/2011/10/07/jface-viewer-and-eclipse-
      databinding-with-10-000-objects/
Viewer 최적화

 Lazy Content Provider
   데이터를 보여지는 부분 처리




   tableViewer.setItemCount(sourceData.size());
     뷰어의 스크롤 크기 지정
Image, Font, Color Registry 소개

 JFaceResources   - JFace에 대한 상수정의



 ImageRegistry    - 자주 사용하고 여러곳에서 공유되는 것들 위
                   주로 사용
                   -시스템 마다 이미지를 핸들링 할수 있는 한 개
                   가 있으므로 주의 필요

 FontRegistry


 ColorRegistry
Image
Action과 Contribution 소개
                                                            운영체
      View와 Control분리                                       제
                                                                                               Display
                                                            Event         메시지
public class StatusAction extends Action {                  Queue


    public StatusAction() {
      super("&Trigger@Ctrl+T", AS_PUSH_BUTTON);
                                                                               Application
      setToolTipText("Trigger the Action");                                     Window
      setImageDescriptor(
       ImageDescriptor.createFromFile(
           this.getClass(), "property.png"));
                                                                          Action
    }

    public void run() {
      System.out.println("The status action has fired.");      Contirib
                                                                                             Run
    }                                                           ution     호출
}
Dialog 소개
ErrorDialog
MessageDialog
InputDialog
ProgressMonitorDialog



ProgressBar bar = new ProgressBar(shell, SWT.SMOOTH);
bar.setBounds(10, 10, 200, 32);
shell.open();
for (int i = 0; i <= bar.getMaximum(); i++) {
try {
Thread.sleep(5);
} catch (Throwable th) {
}
bar.setSelection(i);
}
Wizard 소개
// wizard page 페이지 시작
TestWizard wizard = new
TestWizard();
WizardDialog dialog = new
WizardDialog(getShell(), wizard);

// wizard 정의
class TestWizard extends Wizard {
// page 정의
public void addPages() {
  addPage(new Wizard1Page());
  addPage(new Wizard2Page());
}

// 종료시 해야할 일 정의
public boolean performFinish() {
..
}
}
Preference 소개
실습
                                         초기화면이 로드되면
                                         아래의 예제 데이터가
                                         로드 된다.

                                         이름에 값을 입력하고
                                         검색 버튼을 누르면 이
                                         름으로 테이블에 있는
                                         데이터를 검색하고 데
                                         이터가 있다면 선택한
                                         다

                                         아래 선택 버튼을 클릭
                                         하면 선택팝업이 뜨면
                                         서 상세정보출력한다
예제데이터(cvs)   이름,나이,전화번호,주소
             톰,47,010-1234-1235,미국헐리우드
             제리,48,010-1234-1234,한국
             놀부,500,02-1234-1231,한국
             흥부,498,02-2345-3456,한국
참고자료

 www.eclipse.org/swt
 http://help.eclipse.org/help32/index.jsp?topic=/org.eclipse.emf.doc/r
   eferences/overview/EMF.Edit.html
 http://www.ibm.com/developerworks/library/os-ecgui1/

Contenu connexe

Tendances

파이썬 프로퍼티 디스크립터 이해하기
파이썬 프로퍼티 디스크립터 이해하기파이썬 프로퍼티 디스크립터 이해하기
파이썬 프로퍼티 디스크립터 이해하기
Yong Joon Moon
 
파이썬+객체지향+이해하기 20160131
파이썬+객체지향+이해하기 20160131파이썬+객체지향+이해하기 20160131
파이썬+객체지향+이해하기 20160131
Yong Joon Moon
 
빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)
SeongHyun Ahn
 

Tendances (20)

파이썬 프로퍼티 디스크립터 이해하기
파이썬 프로퍼티 디스크립터 이해하기파이썬 프로퍼티 디스크립터 이해하기
파이썬 프로퍼티 디스크립터 이해하기
 
파이썬+클래스+구조+이해하기 20160310
파이썬+클래스+구조+이해하기 20160310파이썬+클래스+구조+이해하기 20160310
파이썬+클래스+구조+이해하기 20160310
 
Hacosa j query 4th
Hacosa j query 4thHacosa j query 4th
Hacosa j query 4th
 
파이썬+객체지향+이해하기 20160131
파이썬+객체지향+이해하기 20160131파이썬+객체지향+이해하기 20160131
파이썬+객체지향+이해하기 20160131
 
파이썬 객체 클래스 이해하기
파이썬  객체 클래스 이해하기파이썬  객체 클래스 이해하기
파이썬 객체 클래스 이해하기
 
Web server page_ed10
Web server page_ed10Web server page_ed10
Web server page_ed10
 
파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 파이썬 플라스크 이해하기
파이썬 플라스크 이해하기
 
Collection framework
Collection frameworkCollection framework
Collection framework
 
빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)
 
python data model 이해하기
python data model 이해하기python data model 이해하기
python data model 이해하기
 
파이썬 class 및 인스턴스 생성 이해하기
파이썬 class 및 인스턴스 생성 이해하기파이썬 class 및 인스턴스 생성 이해하기
파이썬 class 및 인스턴스 생성 이해하기
 
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
 
Jupyter notebook 이해하기
Jupyter notebook 이해하기 Jupyter notebook 이해하기
Jupyter notebook 이해하기
 
파이썬 Special method 이해하기
파이썬 Special method 이해하기파이썬 Special method 이해하기
파이썬 Special method 이해하기
 
ECMA Script 5 & 6
ECMA Script 5 & 6ECMA Script 5 & 6
ECMA Script 5 & 6
 
Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)
 
파이썬 파일처리 이해하기
파이썬 파일처리 이해하기파이썬 파일처리 이해하기
파이썬 파일처리 이해하기
 
파이썬 유용한 라이브러리
파이썬 유용한 라이브러리파이썬 유용한 라이브러리
파이썬 유용한 라이브러리
 
파이썬 Xml 이해하기
파이썬 Xml 이해하기파이썬 Xml 이해하기
파이썬 Xml 이해하기
 
Java 강의자료 ed11
Java 강의자료 ed11Java 강의자료 ed11
Java 강의자료 ed11
 

En vedette

Penman - Our PR Process
Penman - Our PR ProcessPenman - Our PR Process
Penman - Our PR Process
pdhill
 
Eclipse basic(조현종)
Eclipse basic(조현종)Eclipse basic(조현종)
Eclipse basic(조현종)
cho hyun jong
 

En vedette (20)

PowerPoint presentation: Resources Oct. 10
PowerPoint presentation: Resources Oct. 10PowerPoint presentation: Resources Oct. 10
PowerPoint presentation: Resources Oct. 10
 
Domestic violence
Domestic violenceDomestic violence
Domestic violence
 
오픈소스 프로젝트 올챙이
오픈소스 프로젝트 올챙이오픈소스 프로젝트 올챙이
오픈소스 프로젝트 올챙이
 
Leicester Stadium Kp
Leicester Stadium KpLeicester Stadium Kp
Leicester Stadium Kp
 
Penman - Our PR Process
Penman - Our PR ProcessPenman - Our PR Process
Penman - Our PR Process
 
Msu standards pp
Msu standards ppMsu standards pp
Msu standards pp
 
Den attraktiva gymnasieskolan
Den attraktiva gymnasieskolanDen attraktiva gymnasieskolan
Den attraktiva gymnasieskolan
 
Sho Mfg Final
Sho Mfg FinalSho Mfg Final
Sho Mfg Final
 
Down syndrome 2
Down syndrome 2Down syndrome 2
Down syndrome 2
 
Using iOS Apps to Foster Literacy Learning
Using iOS Apps to Foster Literacy LearningUsing iOS Apps to Foster Literacy Learning
Using iOS Apps to Foster Literacy Learning
 
Creating Connections 5 Questions
Creating  Connections   5  QuestionsCreating  Connections   5  Questions
Creating Connections 5 Questions
 
Black hole kel 1 1
Black hole kel 1 1Black hole kel 1 1
Black hole kel 1 1
 
EI Cloud Computing eBusiness Masterclass
EI Cloud Computing eBusiness MasterclassEI Cloud Computing eBusiness Masterclass
EI Cloud Computing eBusiness Masterclass
 
Draw2D
Draw2DDraw2D
Draw2D
 
Nk Rock.0
Nk Rock.0Nk Rock.0
Nk Rock.0
 
Taking Wi-Fi Where It’s Never Gone Before
Taking Wi-Fi Where It’s Never Gone BeforeTaking Wi-Fi Where It’s Never Gone Before
Taking Wi-Fi Where It’s Never Gone Before
 
Ek 1552 S Eng
Ek 1552 S EngEk 1552 S Eng
Ek 1552 S Eng
 
Eclipse basic(조현종)
Eclipse basic(조현종)Eclipse basic(조현종)
Eclipse basic(조현종)
 
Howto Facebook
Howto FacebookHowto Facebook
Howto Facebook
 
The Benefits and Challenges of Being Connected: Living, Learning, and Teachin...
The Benefits and Challenges of Being Connected: Living, Learning, and Teachin...The Benefits and Challenges of Being Connected: Living, Learning, and Teachin...
The Benefits and Challenges of Being Connected: Living, Learning, and Teachin...
 

Similaire à Swt J Face 2/3

Youtube를활용한app만들기
Youtube를활용한app만들기Youtube를활용한app만들기
Youtube를활용한app만들기
DaeHee Jang
 
Web Components 101 polymer & brick
Web Components 101 polymer & brickWeb Components 101 polymer & brick
Web Components 101 polymer & brick
yongwoo Jeon
 
Design patterns
Design patternsDesign patterns
Design patterns
df
 

Similaire à Swt J Face 2/3 (20)

[2018] MyBatis에서 JPA로
[2018] MyBatis에서 JPA로[2018] MyBatis에서 JPA로
[2018] MyBatis에서 JPA로
 
Spring Boot 2
Spring Boot 2Spring Boot 2
Spring Boot 2
 
MyBatis에서 JPA로
MyBatis에서 JPA로MyBatis에서 JPA로
MyBatis에서 JPA로
 
Secrets of the JavaScript Ninja - Chapter 12. DOM modification
Secrets of the JavaScript Ninja - Chapter 12. DOM modificationSecrets of the JavaScript Ninja - Chapter 12. DOM modification
Secrets of the JavaScript Ninja - Chapter 12. DOM modification
 
I phone 2 release
I phone 2 releaseI phone 2 release
I phone 2 release
 
[115] clean fe development_윤지수
[115] clean fe development_윤지수[115] clean fe development_윤지수
[115] clean fe development_윤지수
 
Clean Front-End Development
Clean Front-End DevelopmentClean Front-End Development
Clean Front-End Development
 
Youtube를활용한app만들기
Youtube를활용한app만들기Youtube를활용한app만들기
Youtube를활용한app만들기
 
Software Architect day - 웹 프레임워크 종결 - metaworks3
Software Architect day - 웹 프레임워크 종결 -  metaworks3Software Architect day - 웹 프레임워크 종결 -  metaworks3
Software Architect day - 웹 프레임워크 종결 - metaworks3
 
[Codelab 2017] ReactJS 기초
[Codelab 2017] ReactJS 기초[Codelab 2017] ReactJS 기초
[Codelab 2017] ReactJS 기초
 
Web Components 101 polymer & brick
Web Components 101 polymer & brickWeb Components 101 polymer & brick
Web Components 101 polymer & brick
 
Nest js 101
Nest js 101Nest js 101
Nest js 101
 
반복적인 작업이 싫은 안드로이드 개발자에게
반복적인 작업이 싫은 안드로이드 개발자에게반복적인 작업이 싫은 안드로이드 개발자에게
반복적인 작업이 싫은 안드로이드 개발자에게
 
Eclipse RCP 1/2
Eclipse RCP 1/2Eclipse RCP 1/2
Eclipse RCP 1/2
 
자바 테스트 자동화
자바 테스트 자동화자바 테스트 자동화
자바 테스트 자동화
 
5-3. html5 device access
5-3. html5 device access5-3. html5 device access
5-3. html5 device access
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Jlook open api platform-appdevguide
Jlook open api platform-appdevguideJlook open api platform-appdevguide
Jlook open api platform-appdevguide
 
Okjsp 13주년 발표자료: 생존 프로그래밍 Test
Okjsp 13주년 발표자료: 생존 프로그래밍 TestOkjsp 13주년 발표자료: 생존 프로그래밍 Test
Okjsp 13주년 발표자료: 생존 프로그래밍 Test
 
Swt J Face 1/3
Swt J Face 1/3Swt J Face 1/3
Swt J Face 1/3
 

Plus de cho hyun jong

평범한 개발자 오픈소스로 먹고살기 2
평범한 개발자 오픈소스로 먹고살기 2평범한 개발자 오픈소스로 먹고살기 2
평범한 개발자 오픈소스로 먹고살기 2
cho hyun jong
 
올챙이팜플렛 V1.0
올챙이팜플렛 V1.0올챙이팜플렛 V1.0
올챙이팜플렛 V1.0
cho hyun jong
 
올챙이 확장으로 살펴보는 이클립스 확장
올챙이 확장으로 살펴보는 이클립스 확장올챙이 확장으로 살펴보는 이클립스 확장
올챙이 확장으로 살펴보는 이클립스 확장
cho hyun jong
 
Tadpole DB Hub 1.0.0
Tadpole DB Hub 1.0.0Tadpole DB Hub 1.0.0
Tadpole DB Hub 1.0.0
cho hyun jong
 
Petra보고서 개발 open자료
Petra보고서 개발 open자료Petra보고서 개발 open자료
Petra보고서 개발 open자료
cho hyun jong
 

Plus de cho hyun jong (20)

평범한 개발자 오픈소스로 먹고살기 2
평범한 개발자 오픈소스로 먹고살기 2평범한 개발자 오픈소스로 먹고살기 2
평범한 개발자 오픈소스로 먹고살기 2
 
테드폴허브(올챙이) PostgreSQL 디비 확장하기
테드폴허브(올챙이) PostgreSQL 디비 확장하기테드폴허브(올챙이) PostgreSQL 디비 확장하기
테드폴허브(올챙이) PostgreSQL 디비 확장하기
 
평범한 개발자 오픈소스로 먹고살기 2
평범한 개발자 오픈소스로 먹고살기 2평범한 개발자 오픈소스로 먹고살기 2
평범한 개발자 오픈소스로 먹고살기 2
 
자바가 디비와 사귀기 까지 벌어지는 일들
자바가 디비와 사귀기 까지 벌어지는 일들자바가 디비와 사귀기 까지 벌어지는 일들
자바가 디비와 사귀기 까지 벌어지는 일들
 
테드폴허브 오픈소스Vs엔터프라이즈
테드폴허브 오픈소스Vs엔터프라이즈테드폴허브 오픈소스Vs엔터프라이즈
테드폴허브 오픈소스Vs엔터프라이즈
 
올챙이팜플렛 V1.0
올챙이팜플렛 V1.0올챙이팜플렛 V1.0
올챙이팜플렛 V1.0
 
올챙이팜플렛
올챙이팜플렛올챙이팜플렛
올챙이팜플렛
 
Tadpole db hub-monitoring
Tadpole db hub-monitoring Tadpole db hub-monitoring
Tadpole db hub-monitoring
 
올챙이 확장으로 살펴보는 이클립스 확장
올챙이 확장으로 살펴보는 이클립스 확장올챙이 확장으로 살펴보는 이클립스 확장
올챙이 확장으로 살펴보는 이클립스 확장
 
Swt bot
Swt botSwt bot
Swt bot
 
Tadpole DB Hub 1.0.0
Tadpole DB Hub 1.0.0Tadpole DB Hub 1.0.0
Tadpole DB Hub 1.0.0
 
올챙이(Tadpole for DB Tools)로 살펴보는 Eclipse RAP
올챙이(Tadpole for DB Tools)로 살펴보는 Eclipse RAP올챙이(Tadpole for DB Tools)로 살펴보는 Eclipse RAP
올챙이(Tadpole for DB Tools)로 살펴보는 Eclipse RAP
 
올챙이 현재와 미래
올챙이 현재와 미래올챙이 현재와 미래
올챙이 현재와 미래
 
올챙이로 살펴보는 Eclipse개발
올챙이로 살펴보는 Eclipse개발올챙이로 살펴보는 Eclipse개발
올챙이로 살펴보는 Eclipse개발
 
올챙이로 살펴보는 개발툴과 Cloud
올챙이로 살펴보는 개발툴과 Cloud올챙이로 살펴보는 개발툴과 Cloud
올챙이로 살펴보는 개발툴과 Cloud
 
Eclipse RAP design
Eclipse RAP designEclipse RAP design
Eclipse RAP design
 
WindowTester PRO
WindowTester PROWindowTester PRO
WindowTester PRO
 
Eclipse RAP - Single Source
Eclipse RAP - Single SourceEclipse RAP - Single Source
Eclipse RAP - Single Source
 
Petra보고서 개발 open자료
Petra보고서 개발 open자료Petra보고서 개발 open자료
Petra보고서 개발 open자료
 
GEF
GEFGEF
GEF
 

Dernier

Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
Wonjun Hwang
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
Wonjun Hwang
 

Dernier (6)

캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 

Swt J Face 2/3

  • 1. SWT/JFace JFACE에 대해 조현종(V0.9, 12/07/07) http://cafe.naver.com/eclipseplugin http://hangumkj.blogspot.com/ hangum@gmail.com
  • 2. 목 차  JFace는?  Hello World 예제  Image, Font, Color Registry 소개  Action과 Contribution 소개  Viewer 소개  LabelProvider  ContentProvider  TreeViewer  TableViewer  TreeTableViewer  ListViewer  Dialog, Wizard, Preference 소개  팀 회의  실습
  • 3. JFace는? - 모델 기반 어뎁터 or 헬퍼 클래스 - www.eclipse.org/swt
  • 4. UI Framework  문제 :  구조적인 도메인 모델을 탐색 및 조작 할 수 있어야 한다.  도메인이 바뀌어도 UI와 싱크를 맞추어야 한다.
  • 5. HelloWorld예제 public class HelloWorldJFace extends ApplicationWindow { public HelloWorldJFace() { // 2 super(null); createActions(); addToolBar(SWT.FLAT | SWT.WRAP); addMenuBar(); addStatusLine(); } protected Control createContents(Composite parent) // 8 composit 생성 private void createActions() // 3 명령 설정 protected ToolBarManager createToolBarManager(int style) // 4 메뉴 아래에 툴바 protected MenuManager createMenuManager() // 5 최상위 메뉴 설정 protected StatusLineManager createStatusLineManager() // 6 하단에 상태바 public static void main(String args[]) { // 1 try { HelloWorldJFace window = new HelloWorldJFace(); window.setBlockOnOpen(true); window.open(); Display.getCurrent().dispose(); } catch (Exception e) { e.printStackTrace();
  • 6. HelloWorld 예제 실행 1. SWT Designer사용 2. File -> New -> Project -> Designer -> SWT/JFace Java Project
  • 7. Viewer 소개  Viewer는?  Model + View + Control을 분리.  정렬 필터링  랜더링( 아이콘, 레벨)  Action을 제공  종류 Combo,List, Table, Tree, Text, TreeTable
  • 9. ContentProvider  IStructuredContentProvider : table, list  Object[] getEmement(Object)  ITreeContentProvider : tree  Object[] getChildren(Object) : 자식 객체 리턴  getParent(Object) : 부모객체 리턴  hasChildren(Object) : 자식 객체 유무  getEmentnt : 최상위 부모 노드의 자식 리턴
  • 10. LabelProvider  ILabelProvider -> Tree, List  getImage(Object) 해당 이미지 리턴  getText(Object) 해당 텍스트 리턴  ITableLabelProvider -> Table  getColumnImage(Object, int)  getColumnText(Object, int)
  • 11. Tree Viewer 소개 ILabelProvider TreeViewer 사용 getImage(Object) getText(Object) setContentProvider() setLabelProvider() 사용 ITreeContentProvider getChildren(Object) 사용 Domain getParent(Object) 사용 Data inputChange(Object)
  • 12. Tree Viewer 소개  모델변경 – 모델변경 -> view 변경 ITreeContentProvider Domain getChildren(Object) Data getParent(Object) inputChange(Object) MyModelListener TreeViewer modelChanged() Extend addChild() Extend removeChild() updateNode() MyModelContentProvider refresh() Update getChildren(Object) Viewer getParent(Object) domainChange(Object)
  • 13. Viewer 최적화  SWT.VIRTUAL  보이는 부분만 viewer에 보이도록  StructuredViewer.setUseHashlookup(boolean)  Hash 알고리즘으로 탐색 속도 향상  Viewer의 DAO에 hashCode(), equals() 를 구현합니다.  See(EMF Databinding)  http://tomsondev.bestsolution.at/2011/10/07/jface-viewer-and-eclipse- databinding-with-10-000-objects/
  • 14. Viewer 최적화  Lazy Content Provider  데이터를 보여지는 부분 처리  tableViewer.setItemCount(sourceData.size());  뷰어의 스크롤 크기 지정
  • 15. Image, Font, Color Registry 소개  JFaceResources - JFace에 대한 상수정의  ImageRegistry - 자주 사용하고 여러곳에서 공유되는 것들 위 주로 사용 -시스템 마다 이미지를 핸들링 할수 있는 한 개 가 있으므로 주의 필요  FontRegistry  ColorRegistry
  • 16. Image
  • 17. Action과 Contribution 소개 운영체  View와 Control분리 제 Display Event 메시지 public class StatusAction extends Action { Queue public StatusAction() { super("&Trigger@Ctrl+T", AS_PUSH_BUTTON); Application setToolTipText("Trigger the Action"); Window setImageDescriptor( ImageDescriptor.createFromFile( this.getClass(), "property.png")); Action } public void run() { System.out.println("The status action has fired."); Contirib Run } ution 호출 }
  • 18. Dialog 소개 ErrorDialog MessageDialog InputDialog ProgressMonitorDialog ProgressBar bar = new ProgressBar(shell, SWT.SMOOTH); bar.setBounds(10, 10, 200, 32); shell.open(); for (int i = 0; i <= bar.getMaximum(); i++) { try { Thread.sleep(5); } catch (Throwable th) { } bar.setSelection(i); }
  • 19. Wizard 소개 // wizard page 페이지 시작 TestWizard wizard = new TestWizard(); WizardDialog dialog = new WizardDialog(getShell(), wizard); // wizard 정의 class TestWizard extends Wizard { // page 정의 public void addPages() { addPage(new Wizard1Page()); addPage(new Wizard2Page()); } // 종료시 해야할 일 정의 public boolean performFinish() { .. } }
  • 21. 실습 초기화면이 로드되면 아래의 예제 데이터가 로드 된다. 이름에 값을 입력하고 검색 버튼을 누르면 이 름으로 테이블에 있는 데이터를 검색하고 데 이터가 있다면 선택한 다 아래 선택 버튼을 클릭 하면 선택팝업이 뜨면 서 상세정보출력한다 예제데이터(cvs) 이름,나이,전화번호,주소 톰,47,010-1234-1235,미국헐리우드 제리,48,010-1234-1234,한국 놀부,500,02-1234-1231,한국 흥부,498,02-2345-3456,한국
  • 22. 참고자료  www.eclipse.org/swt  http://help.eclipse.org/help32/index.jsp?topic=/org.eclipse.emf.doc/r eferences/overview/EMF.Edit.html  http://www.ibm.com/developerworks/library/os-ecgui1/