SWT에서는 Text와 StyledText 두가지를 제공한다.
Text는 여러 이벤트를 연관 시킬 수 있다.
addModifyListener() // 텍스트 수정 리스너
addSelectionListener() // 컨트롤 선택 리스너
addVerifyListener() // 텍스트에 변화가 일어났을때 발생
Append() // 추가
Insert() 대체
setSelection(), selectAll() // 선택
setEchoCharacter() // 사용자가 타이핑 하는 문자 대신 보여줄 다른 문자열 지정
setEditable() // 편집을 가능하게 하거나 불가능하게 한다.
setFont()
StyledText는 text에서 제공하는 모든 메소드를 제공하고 폰트, 텍스트 색상, 폰트 스타일 등으 ㅣ기능이 추가된다.
StyledText는 키를 바인딩 할 수 있다.
첫 번째 방법은 st 클래스를 이용하여 코드상에 직접 구현하거나, setKeyBinding()을 이용하여 키 입력과 연동 시킬 수 있다.
StyledText.setKeyBinding( 'Q' | SWT.CONTROl, ST.PASTE);
StyleRange를 이용한 텍스트 스타일
StyledText는 StyledRange 클래스를 이용하여 서로 다른 스타일을 관리 할 수 있다.
StyleRange style = new StyleRange(int start, int length, Color foreground, Color background, int fontStyle)
styledText.setStyleRange(style);
Styledtext에서 사용되는 ExtendedModifyListener는 ModifyListener보다 정확하게 어디서 어떤 부분이 변경되었는지 알 수있다.
Styledtext.addExtendedModifyListener(
New ExtenedModifyListener() {
Public void modifyText(ExtendedModifyEvnet event){
}
}
styledText.addkeyListener(new KeyAdapter(){
Public void keyPressed(KeyEvent e){
}
}
Jface에서는 텍스트 지원을 하는 Idocument와 ITextViewer 인터페이스를 제공한다.
Document
Document는 실제 텍스트 부분을 보유한다. 그렇기 때문에 표준 메스드와 더불어 IDocumentListener을 통해서 내용 편집에대한 이벤트를 받을 수 있다.
Idocument의 고급기능
- Position : 텍스트의 영역(문서의 내용이 변해도 항상 동일한 오프셋을 부여하므로 이 Document를 이용하여 북마크를구현할 수 있다. -> 추적장치를 제공한다.)
- 컨텐츠 타입 구분 : plain text, rich text, html 등 여러 타입을 지정할 수 있다. Idocument Partitioner 를 통해 특정 영역의 컨텐츠 타입을 정의 하여야한다.
- 검색 : search() 메소드를 통해 검색을 제공한다. 특정 패넌을 지원하지는 않지만, 시작위치 검색, 방향, 대 소문자 구분, 단어일 경우와 같은 경우의 검색이 가능하다.
ITextViewer
표준 텍스트 위젯을 문서 기분 텍스트 위젯으로 바꾸기 위한 viewer 이다.
StyledText를 사용하여 텍스트를 보여준다.
텍스트 수정과 시각적인 이벤트(현재 보이는 지역인 뷰 포트에서 발생하는 변경) 양쪽에 대한 리스너를 지원한다.
TextViewer는 다양한 플러그인을 제공한다. 각 플러그인을 사용하려면 이런 인터페이스의 인스턴스를 텍스트 뷰어에 할당하고 나서 activatePlugins()를 호출해야한다.
유요한 플러그인
Org.eclipse.jface.text.contentassist // 텍스트를 입력할 때 텍스트 자동 완성을 위한 프레임 워크를 제공하며 IContentAssistant와 IContentAssistantProcessor는 함꼐 동작한다.
Org.eclipse.jface.text.formatter // 텍스트의 서식을 설정하는 유틸리티로서 IContentFormatter는 IFormattingStrategy의 인스턴스를 컨텐트 타입과 함께 등록한다.
Org.eclipse.jface.text.presentation // 변경과 관련하여 문서의 시각적인 모양새를 업데이트 한다.
Org.eclipse.jface.text.reconciler // 문서를 텍스트의 외부 저장소와 함께 동기화 하는데 사용한다.
Org.eclipse.jface.text.rules // 환경 설정이 가능한 Irule에 기반혀여 텍스트를 스캔하고 매치하기 위한 클래스. 단어, 숫자, 공백, 행 종료 문자 등 자주 발생하는 구문을 찾기 위한 내장 규칙을 가지고 있다.
Org.eclipse.jface.text.source // text 컴파일에러 표시등 을 출력할 때 사용한다. 하위 클래스인 Annotation이 필요하다.
'RCP > SWT & JFACE' 카테고리의 다른 글
현재 화면의 활성화된 shell 얻는 방법 (0) | 2016.12.23 |
---|---|
Tableviwer와 편집모드, 컨텍스트 메뉴 생성 (0) | 2016.12.23 |
JFace의 treeList 예제 (0) | 2016.12.23 |
JFACE TreeViewer 예제 (0) | 2016.12.23 |
SashForm 소개와 예제 (3) | 2016.12.22 |