9.3.4 ProjectInfoControl
이번에는 생성한 평가 프로젝트의 정보를 제공하는 ProjectInfoControl을 구현합시다.
[그림 9.13] ProcessInfoControl 배치
번호 |
컨트롤 형식 |
컨트롤 이름 |
특이 사항 |
1 |
Label |
lb_title |
|
2 |
Label |
lb_ui_cnt |
|
3 |
Label |
lb_noname_cnt |
|
4 |
ListView |
lv_control |
View 속성을 Details로 설정 |
5 |
Button |
btn_save |
Visible 속성을 False로 설정 |
6 |
Button |
btn_end |
|
7 |
Button |
btn_save_end |
|
8 |
ListView |
lv_accesskey |
View 속성을 Details로 설정 |
9 |
ListView |
lv_acceleratorkey |
View 속성을 Details로 설정 |
10 |
FolderBrowserDialog |
fbdlg |
|
[표 9.4] ProcessInfoControl의 자식 컨트롤
lv_control 컨트롤의 열 추가를 합니다. ch_ctrl_type과 ch_cnt를 추가합니다.
lv_accesskey 컨트롤의 열 추가를 합니다. ch_ui_name과 ch_access를 추가합니다.
lv_acceleratorkey 컨트롤에도 ch_ui_name2와 ch_accelerator 열을 추가합니다.
컨트롤의 생성자에는 평가 프로젝트를 입력 인자로 받습니다. 생성자에서는 인자로 받은 평가 프로젝트를 멤버 필드로 설정합니다.
AccEvalProject aeproject;
public ProjectInfoControl(AccEvalProject aeproject)
{
InitializeComponent();
this.aeproject = aeproject;
}
로드 이벤트 핸들러를 추가합니다. 로드 이벤트 핸들러에서는 프로젝트 타이틀을 관련 레이블에 설정하고 UI 요소 개수 및 이름 없는 요소 개수를 관련 레이블에 설정합니다. 그리고 컨트롤 패턴 목록과 AccessKey, AcceleratorKey 목록을 분석하여 관련 리스트 뷰 컨트롤 목록에 추가하는 메서드를 호출합니다.
private void ProjectInfoControl_Load(object sender, EventArgs e)
{
lb_title.Text = aeproject.Title;
lb_ui_cnt.Text = aeproject.UICount.ToString();
lb_noname_cnt.Text = aeproject.NonameCount.ToString();
ParsingControlPattern();
ParsingAccessKey();
ParsingAcceleratorKey();
}
private void ParsingControlPattern()
{
lv_control.Items.Clear();
for (ENUM_CONTROL ctrl = 0; ctrl < ENUM_CONTROL.MAX_CONTROL; ctrl++)
{
int count = aeproject.GetControlPatternCount(ctrl);
string[] name_count = new string[2];
name_count[0] = ctrl.ToString();
name_count[1] = count.ToString();
lv_control.Items.Add(new ListViewItem(name_count));
}
}
private void ParsingAccessKey()
{
List<string[]> item_list = aeproject.GetAccessKeyItemList();
lv_accesskey.Items.Clear();
foreach (string[] item in item_list)
{
lv_accesskey.Items.Add(new ListViewItem(item));
}
}
private void ParsingAcceleratorKey()
{
List<string[]> item_list = aeproject.GetAcceleratorKeyItemList();
lv_acceleratorkey.Items.Clear();
foreach (string[] item in item_list)
{
lv_acceleratorkey.Items.Add(new ListViewItem(item));
}
}
btn_save 컨트롤의 클릭 이벤트 핸들러를 추가하고 핸들러에는 Save 메서드를 호출합니다. Save 메서드에서는 저장할 폴드를 선택하면 평가 프로젝트의 Save 메서드를 호출합니다.
private void btn_save_Click(object sender, EventArgs e)
{
Save();
}
private bool Save()
{
if (fbdlg.ShowDialog() == DialogResult.OK)
{
aeproject.Save(fbdlg.SelectedPath);
return true;
}
return false;
}
btn_end 컨트롤의 클릭 이벤트 핸들러를 추가하고 EndProject 메서드를 호출합니다. 그리고 EndProject 메서드에서는 평가 프로젝트의 End 메서드 호출과 컨트롤의 Dispose 메서드를 호출합니다.
private void btn_end_Click(object sender, EventArgs e)
{
EndProject();
}
private void EndProject()
{
aeproject.End();
this.Dispose();
}
마지막으로 btn_save_end 클릭 이벤트 핸들러를 추가하여 Save 메서드와 EndProject 메서드를 호출합니다.
private void btn_save_end_Click(object sender, EventArgs e)
{
if (Save())
{
EndProject();
}
}
'프로그래밍 기술 > 소프트웨어 접근성, UI 자동화' 카테고리의 다른 글
9. 접근성 평가 도구 만들기 - 19. MainForm (0) | 2017.12.12 |
---|---|
9. 접근성 평가 도구 만들기 - 18. InvokePatternForm (0) | 2017.12.12 |
9. 접근성 평가 도구 만들기 - 17. 이미지 보기 Form (0) | 2017.12.12 |
9. 접근성 도구 만들기 - 15. ProjectSelectForm (0) | 2017.12.12 |
9. 접근성 평가 도구 만들기 - 14.ProjectMakerControl (0) | 2017.12.12 |
9. 접근성 평가 도구 만들기 -13. 접근성 평가 도우미 폼, 컨트롤 구현, EHHighlight (0) | 2017.12.12 |
9. 접근성 평가 도구 만들기 - 12. EvalManager 클래스 구현 (0) | 2016.10.27 |
9. 접근성 평가 도구 만들기 - 11. MakeProjectEvent 핸들러와 인자 클래스 구현 (0) | 2016.10.27 |
9. 접근성 평가 도구 만들기 - 10. AccEvalProject 클래스 구현 (0) | 2016.10.25 |
9. 접근성 도구 만들기 - 8. FindAutoElemEvent 핸들러와 인자 클래스 구현 (0) | 2016.10.25 |