ExtJs를 처음 접하고 Sample을 이용해서 여러 폼들을 생성해보았다. 기존 샘플 예제에서는 현업에서 사용하기 위한 폼의 한계가 있었고, 나름대로 이렇게 저렇게 디자인을 바꿔보면서 주로 사용하게 되는 폼을 중심으로 아니 내가 설계한 UI에 맞는 화면들 중심으로 설명을 하고자 한다.
ExtJs를 이용해서 폼을 만들때 다양한 방법으로 구성할 수 있지만, 나의 경우에는 가능한 Object들을 따로 생성해서 해당 FormPanel에 items로 추가하는 방법을 이용했다.
이렇게 한 이유는 한개의 화면에 생성되는 Object들을 명확히 할 필요가 있고, FormPanel에서는 이미 생성된 Object들을 items속성에 배열형태로 셋팅 함으로 스크립트의 가독성을 높일 수 있다고 생각했다.
실제 해보니 스크립트의 길이는 상당히 길어졌지만, 스크립트의 가독성 및 각 객체의 속성에 대한 구분이 좀 더 명확해지는 부분이 있었다.
이 보다 더 좋은 방법을 체험하기전까지는 현재의 방법으로 스크립트를 작성할 생각이다.
개발할 UI의 모습은 아래와 같다.
실제 개발을 하다보면 특정 값을 입력 받아서 해당하는 정보를 보여주는 형태의 UI가 꽤나 많다. 물론 복잡도는 이보다 더 높은 화면이 상당히 많이 있을 수 있다.
상기와 같은 화면을 구성하기 위한 JSP(HTML)와 JS파일은 아래와 같다.
JSP파일에는 div 태그를 이용해서 body부분에 div를 추가한다. div의 id를 'main_panel' 이라고 두자. 이 부분은 sample.js 파일이 로딩되면서 상기의 UI와 같이 화면을 보여줄 부분이다.
호출되는 sample.js파일의 내용을 살펴보자.
Ext.onReady(function() {
//Tooltip 제공을 위해서 global tooltip 초기화
Ext.QuickTips.init();
//사번을 입력 받기 위한 label 및 textfield 생성
var emp_no = new Ext.form.TextField({
fieldLabel: '사번',
id: 'empNo',
name: 'empNo',
allowBlank: false,
width: 100
});
//주민번호 입력을 위한 label 및 textfield 생성
var ssn = new Ext.form.TextField({
fieldLabel: '주민등록번호',
id: 'ssn',
name: 'ssn',
allowBlank: false,
width: 130
});
//확인 button 생성
var ok_btn = new Ext.Button({
text: '확인',
buttonAlign: 'center',
formBind: true,
handler:function(){ //버튼이 클릭 되었을때 실행되는 부분
alert('aaaa');
}
});
//사번을 Display하기 위한 label 생성
var emp_no2 = new Ext.form.Label({
fieldLabel: '사번',
id: 'empNo2',
name: 'empNo2',
width: 100
});
//성명을 Display하기 위한 label 생성
var emp_name = new Ext.form.Label({
fieldLabel: '성명',
id: 'empName',
name: 'empName',
width: 100
});
//부서를 Display하기 위한 label 생성
var dept = new Ext.form.Label({
fieldLabel: '부서(팀)',
id: 'dept',
name: 'dept',
width: 150
});
//연락처를 Display하기 위한 label 생성
var tel_no = new Ext.form.Label({
fieldLabel: '전화번호',
id: 'tel_no',
name: 'tel_no',
width: 100
});
var user_cnfm = new Ext.form.FormPanel({
labelAlign: 'right',
labelWidth: 140,
frame:true,
title:'사용자 확인',
buttonAlign: 'center',
monitorValid:true,
items: [{
xtype:'fieldset',
layout:'column', //컬럼 형태로 제공. 총 3개의 컬럼(emp_no, ssn, form)
items:[{
layout: 'form', // layout을 form으로 설정해야 라벨과 텍스트박스가 나타남.
items: [emp_no]
}, {
layout: 'form',
items: [ssn]
}, {
layout: 'form',
items: [ok_btn]
}]
}, {
xtype:'fieldset',
autoHeight:true,
collapsed: false,
layout:'column', // 컬럼형태.
items:[{
layout: 'form',
items: [emp_no2, dept]
}, {
layout: 'form',
items: [emp_name, tel_no]
}]
}]
});
user_cnfm.render('main_panel'); // FormPanel을 직접 그리는 부분
});
2009년 10월 26일 월요일
2009년 10월 20일 화요일
UI 설계 시 사용하기 좋은 툴 2종
제가 소개하는 툴은 balsamiq라는 툴과 pencil project라는 툴 2가지 입니다. balsamiq의 경우는 Adobe의 air를 이용해서 구현된 툴입니다. 다양한 형태의 UI를 그릴 수 있도록 많은 컴포넌트를 제공하고 있습니다. balsamiq의 경우 자신의 블로그에 소개자료를 올린 후 라이센스를 요청하면 바로 라이센스를 보내줍니다. 한글을 이용하기 위해서는 View > Use System Fonts를 체크하시면 한글을 사용하실 수 있습니다. 손으로 그린 듯한 UI 디자인이 상당히 매력적입니다. 라이센스를 받기 위해서는 http://www.balsamiq.com/products/mockups/desktop#download 로 가셔서 아래에 있는 항목 중 제가 파란색으로 표기한 부분의 "email us"를 클릭해서 메일로 라이센스를 요청하시면 됩니다. "자신의 블로그에 해당 툴을 소개하는 내용을 올린 후 블로그에서 툴에 대한 소개를 하고 싶다. 그러니 라이센스를 보내달라" 라고 하면 바로 라이센스를 보내줍니다. GET MOCKUPS FOR DESKTOP FOR FREEYou can download Mockups for Desktop for free. Some of the features of the app, like saving and loading multiple mockups, can only get unlocked using a license key. To get a free license key, you can do one of the following:
Pencil projcet의 경우 라이센스는 GPL 2.0을 따르며 자세한 내용은 아래의 사이트에 가셔서 보시기 바랍니다. 파이어폭스용 툴과 Standalone 형태의 설치를 지원하며 window 및 linux를 지원함다. 파이어폭스 3.0을 설치해서 사용하시는 분은 파이어폭스 Add-on 형태로 설치해서 사용하는 것이 더 편리할 수 있습니다. 2가지 툴 모두 일장일단이 있습니다. Balsamiq의 경우 다양한 애플리케이션 UI를 그릴 수 있으며, 연필로 그린 듯한 느낌의 툴입니다. 다양한 애플리케이션 환경을 지원합니다. (윈도우, 웹, 모바일 등등) Pencil Project의 경우 window 환경에 최적화 된 UI를 그릴 수 있으며, 웹 및 모바일 관련 UI를 그리기에는 Balsamiq에 비해 상대적으로 조금 제한적입니다. 윈도우의 느낌을 최대한 살려서 UI를 그릴 경우에는 Pencil project를 이용하시면 될 것 같습니다. Pencil project : http://www.evolus.vn/Pencil/Screenshots.html |
피드 구독하기:
글 (Atom)
