5. 컨트롤 패턴
UI 자동화 기술에서는 컨트롤을 사용할 수 있는 기능에 따라 컨트롤 패턴을 정의하여 패턴마다 메서드, 속성, 이벤트 등을 제공하고 있습니다.
UI 자동화 평가 도구나 클리이언트 응용에서는 자동화 요소가 어떠한 컨트롤 패턴인지 확인하여 해당 컨트롤 패턴에서 제공하는 메서드를 이용하여 컨트롤의 기능을 프로그램 방식으로 제어하거나 속성이나 이벤트로 컨트롤의 상태를 확인할 수 있습니다.
5.1 컨트롤 패턴 종류
UI 자동화 기술에서는 컨트롤을 사용할 수 있는 독립적인 기능들을 컨트롤 패턴으로 정의하였습니다. 서로 다른 컨트롤이 같은 기능을 제공하는 경우도 있기 때문에 컨트롤과 컨트롤 패턴은 1:1 매핑 관계가 아닙니다. 하나의 컨트롤이 여러 컨트롤 패턴에 해당할 수도 있고 컨트롤 상태에 따라 같은 종류의 컨트롤이지만 컨트롤 패턴은 다를 수 있습니다.
예를 들어 편집 창의 내용이 많아 자동으로 스크롤 바가 생기면 해당 편집 창은 스크롤 패턴에 해당합니다. 하지만 편집 창의 내용이 적어 스크롤 바가 생기지 않으면 스크롤 패턴에 해당하지 않습니다. 이처럼 컨트롤은 상태에 따라 특정 컨트롤 패턴일 수도 있고 그렇지 않을 수도 있습니다. 이러한 특징을 동적 컨트롤 패턴이라 부릅니다.
여러분이 사용자 정의 컨트롤을 제작할 때 특정 컨트롤 패턴을 지원하기를 원한다면 각 컨트롤 패턴의 기능을 약속한 인터페이스를 기반으로 구현해야 합니다.
예를 들어 여러분이 정의하는 컨트롤이 스크롤 기능을 지원한다면 IScrollProvider 인터페이스를 기반으로 구현하면 UI 자동화 평가 도구나 UI 자동화 기술 클라이언트 응용에서는 해당 컨트롤이 스크롤 패턴에 해당함을 인지할 수 있고 프로그램 방식으로 해당 컨트롤을 제어할 수 있게 됩니다.
컨트롤 패턴 |
설명 |
DockPattern |
도킹 컨테이너에 도킹할 수 있는 컨트롤 |
ExpandCollapsePattern |
확장하거나 축소할 수 있는 컨트롤 |
GridPattern |
표 기능을 지원하는 컨트롤 |
GridItemPattern |
표 안에 있는 컨트롤 |
InvokePattern |
버튼처럼 호출할 수 있는 컨트롤 |
MultipleViewPattern |
같은 정보를 여러 표현으로 전환할 수 있는 컨트롤 |
RangeValuePattern |
특정 범위의 값을 지정할 수 있는 컨트롤 |
ScrollPattern |
스크롤할 수 있는 컨트롤 |
ScrollItemPattern |
스크롤할 수 있는 컨트롤의 항목 컨트롤 |
SelectionPattern |
항목을 선택할 수 있는 컨트롤 |
SelectionItemPattern |
항목을 선택할 수 있는 컨트롤의 항목 컨트롤 |
TablePattern |
테이블 컨트롤 |
TableItemPattern |
테이블 컨트롤의 항목 컨트롤 |
TextPattern |
텍스트 정보를 갖을 수 있는 컨트롤 |
TogglePattern |
상태를 전환할 수 있는 컨트롤 |
TransformPattern |
크기 조정, 이동, 회전할 수 있는 컨트롤 |
ValuePattern |
값을 가져오거나 설정할 수 있는 컨트롤 |
WindowPattern |
창 컨트롤 |
[표 5.1] 컨트롤 패턴 종류
컨트롤 |
지원 패턴 |
상태에 따라 지원하는 패턴 |
Button |
없음 |
Invoke, Toggle, ExpandCollapse |
Calendar |
Grid, Table |
Selection, Scroll |
CheckBox |
Toggle |
없음 |
ComboBox |
ExpandCollapse |
Selection, Value |
DataGrid |
Grid |
Scroll, Selection, Table |
DataItem |
SelectionItem |
ExpandCollapse, GridItem, ScrollItem, Table, Toggle, Value |
Ducument |
Text |
Scroll, Value |
Edit |
없음 |
Text, RangeValue, Value |
Group |
없음 |
ExpandCollapse |
Header |
없음 |
Transform |
HeaderItem |
없음 |
Transform, Invoke |
HyperLink |
Invoke |
Value |
Image |
없음 |
GridItem, TableItem |
List |
없음 |
Grid, MultipleView, Scroll, Selection |
ListItem |
SelectionItem |
ExpandCollapse, GridItem, Invoke, ScrollItem, Toggle, Value |
Menu |
없음 |
없음 |
MenuBar |
없음 |
ExpandCollapse, Dock, Tansform |
MenuItem |
없음 |
ExpandCollapse, Invoke, SelectionItem, Toggle |
Pane |
없음 |
Dock, Scroll, Transform |
ProgressBar |
없음 |
RangeValue, Value |
RadioButton |
SlectionItem |
없음 |
ScrollBar |
없음 |
RangeValue |
Separator |
없음 |
없음 |
Slider |
없음 |
RangeValue, Selection, Value |
Spinner |
없음 |
RangeValue, Selection, Value |
SplitButton |
Invoke, ExpandCollapse |
없음 |
StatusBar |
없음 |
Grid |
Tab |
Selection |
Scroll |
TabItem |
SelectionItem |
없음 |
Table |
Grid, GridItem, Table, TableItem |
없음 |
Text |
없음 |
GridItem, TableItem, Text |
Thumb |
Transform |
없음 |
TitleBar |
없음 |
없음 |
ToolBar |
없음 |
Dock, ExpandCollapse, Transform |
ToolTip |
없음 |
Text, Window |
Tree |
없음 |
Scroll, Selection |
TreeItem |
ExpandCollapse |
Invoke, ScrollItem, SelectionItem, Toggle |
Window |
Transform, Window |
Dock |
[표 5.2] 컨트롤 별 지원 패턴
'프로그래밍 기술 > 소프트웨어 접근성, UI 자동화' 카테고리의 다른 글
[S/W 접근성] InvokePattern 요소 제어하기 실습 (시나리오) (0) | 2016.04.19 |
---|---|
[S/W 접근성] InvokePattern (0) | 2016.04.19 |
[S/W 접근성] GridPattern, GridItemPattern (0) | 2016.04.19 |
[S/W 접근성] ExpandCollapsePattern (0) | 2016.04.19 |
[S/W 접근성] DockPattern (0) | 2016.04.19 |
[S/W 접근성] TreeWalker 메서드 (0) | 2016.04.19 |
[S/W 접근성] TreeWalker 개체 참조 (0) | 2016.04.19 |
[S/W 접근성] 자동화 트리 (데스크 톱의 모든 하위 요소 출력) (0) | 2016.04.19 |
[S/W 접근성] AutomationElement 메서드(속성 검색) (0) | 2016.04.19 |
[S/W 접근성] AutomationElement 메서드(자동화 요소 개체로 패턴 검색) (0) | 2016.04.19 |