 |
|
사용자 환경설정
이전 절에서 가젯 XML에서 사용자 환경설정을 세팅하는 것에 대해 언급했다. 이번에는 가젯을 사용자 취향에 따라 설정할 수 있는 것들에 대해 좀 더 자세히 살펴보겠다. 대부분의 소프트웨어에서 사용자 환경설정은 필요한 요소로 인식된다. 다른 사람들이 작성한 가젯을 살펴보기 시작할 때, 꼭 필요한 것은 아니지만 커스터마이징이 가장 흥미를 불러 일으키는 부분 중 하나일 것이다.
예를 들어, 날씨 정보를 보여주는 가젯을 개인화 홈페이지에 추가하고 사용자 환경설정에서 우편번호를 설정하여 내가 사는 지역의 날씨를 참조한다. 또 다른 가젯은 내가 투자하고 있는 주식의 가격을 보여준다. 이것도 역시 사용자 환경설정에 기반을 두고 내가 갖고 있거나 사고 싶은 주식들의 목록을 보여준다.
속성
사용자 환경설정에서 사용할 수 있는 다양한 속성을 살펴보면서 시작하겠다. 표 1에서 볼 수 있듯이 하나를 제외하면 모두 선택적이다.
표 1. UserPref 속성들
사용자 환경설정
| 속성 | 필수 | 설명 |
|---|
| datatype | 아니오 | 데이터 유형을 지정한다. |
|---|
| default_value | 아니오 | 사용자가 지정하지 않을 때 사용할 기본 값 |
|---|
| display_name | 아니오 | 환경설정을 편집할 때 해당 속성을 구별하기 위한 식별자 |
|---|
| name | 예 | 사용자 환경설정 값을 나타내기 위한 유일한 변수 이름 |
|---|
| required | 아니오 | 반드시 설정되어야 하는 속성인지 표시(예: 빈칸이면 안 됨) |
|---|
| urlparam | 아니오 |
url 콘텐츠 유형을 사용할 때 이 환경설정을 이용해 URL 값을 세팅한다. |
|---|
Listing 7은 몇 가지 속성을 사용하는 예제를 보여준다. 그림 9는 가젯에 나타나는 속성들을 보여준다.
Listing 7. 속성 예제
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="Setting Preferences" height="300" />
<UserPref name="theName" display_name="Name" required="true"
default_value="Your name here"/>
<UserPref name="theSign" display_name="Astrological Sign"/>
<UserPref name="thePrefs" display_name="Save?" datatype="bool" default_value="true"/>
<UserPref name="thePrefs2" datatype="bool" default_value="true"/>
<Content type="html">
<![CDATA[
Testing...
]]>
</Content>
</Module>
|
그림 9. 속성들
몇 가지를 살펴보자. Listing 7에서 name이 각각의 사용자 환경설정에서 사용되는 것에 주의한다. 위에서 잠시 언급했다시피 이 속성이 유일한 필수 요소이기 때문이다. 기본 값 사용과 어떻게 이 값들을 가젯에 보여주는지 살펴본다. 마지막으로 thePrefs2에 선언된 코드를 살펴보면 display_name 속성을 지정하지 않은 것을 확인할 수 있다. 마지막으로 그림 9를 참조하여 가젯이 이것을 어떻게 표현하는지 thePrefs에 정의한 것과 비교해 보자.
데이터 유형
가젯에서 여섯 개의 데이터 유형을 사용할 수 있다.
-
boolean
-
enum
-
hidden
-
list
-
location
-
string
boolean과 string은 설명이 필요 없을 것이다. hidden은 HTML에서 사용하는 의미와 동일하다. 즉 (최소한 HTML 소스 코드를 보지 않는 이상) 사용자가 보거나 편집할 수 없는 속성을 의미한다. 다음 절에서 enum, list, location을 어떻게 사용하는지 간단한 예제를 통해 살펴보겠다.
enum
열거형 데이터 유형을 Listing 8처럼 정의할 수 있다.
Listing 8. 열거형 예제
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="Enum Example" height="100" />
<UserPref name="theStyle" display_name="Beer Style"
default_value="Stout" datatype="enum" >
<EnumValue value="Altbier" />
<EnumValue value="Belgian" />
<EnumValue value="India Pale Ale (IPA)" />
<EnumValue value="Kolschs" />
<EnumValue value="Lambic" />
<EnumValue value="Pale Ale" />
<EnumValue value="Pilsner" />
<EnumValue value="Stout" />
<EnumValue value="Weizenbier" />
</UserPref>
<Content type="html">
<![CDATA[
Test the Enumeration
]]>
</Content>
</Module>
|
열거형은 가젯에서 그림 10처럼 드롭다운 리스트로 표현된다. 코드에서 정의한 기본 값 (""Stout"")가 드롭다운 리스트(그림 10의 하단 참조)를 호출할 때 선택된 값으로서뿐만 아니라 활성화되지 않은 리스트(그림 10의 상단 참조)에서 현재 선택된 값으로서 나타남에 주의한다.
그림 10. 드롭다운 리스트에 보이는 열거형 데이터
list
고정되어 있는 값들의 집합인 enum과는 반대로 list는 사용자의 입력에 기반을 둔 동적인 데이터 유형이다. Listing 9는 기본적인 리스트를 생성하기 위한 XML을 보여준다.
Listing 9. List 예제
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs
title="List example"
scrolling="true"/>
<UserPref name="theList"
display_name="Ingredients"
datatype="list"/>
<Content type="html">
<![CDATA[
Testing list
]]>
</Content>
</Module>
|
그림 1111은 집에서 맥주를 만들 때 사용할 기본 재료들의 목록을 보여준다. Save 버튼을 클릭하면 항목이 리스트에 추가될 것이고 다음 번에 개인화 홈페이지에 접속하면 입력한 값들이 리스트에 추가된 것을 확인할 수 있다.
그림 11. 리스트에 새로운 항목 추가하기
list 데이터 유형은 값들을 추가하는 것처럼 프로그래밍을 통해 list에 접근할 수 있기 때문에 매우 강력하다.
location
location 데이터 유형을 사용하여 Google Maps API의 콘텐츠를 포함시킬 수 있다. Listing 10을 살펴보고 가젯에 지도를 포함시키는 것이 얼마나 쉬운 일인지 느껴보기 바란다.
Listing 10. location 예제
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="Map of __UP_theZip__" height="300" />
<UserPref name="theZip"
display_name="Zip Code"
datatype="location"
required="true" />
<Content type="html">
<![CDATA[
<script src="http://maps.google.com/maps?file=js" type="text/javascript"></script>
<div id="map" style="width: 100%; height: 100%;"></div>
<script type="text/javascript">
// Get the user preferences (ZIP code in this case)
var prefs = new _IG_Prefs(__MODULE_ID__);
// Create a new Google map object
var map = new GMap(document.getElementById("map"));
// Add Pan and Zoom controls to map
map.addControl(new GSmallMapControl());
// Allow choice of map or satellite view
map.addControl(new GMapTypeControl());
// Show map
// Note: using the getString() method with the user preference (zip),
// we can get longitude and latitude
map.centerAndZoom(new GPoint(prefs.getString("theZip.long"),
prefs.getString("theZip.lat")), 6);
</script>
]]>
</Content>
</Module>
|
이 가젯을 개인화 홈페이지에 추가하면 우편번호 입력 화면이 보인다(그림 12). 코드로 다시 돌아가서, UserPref 부분의 required="true"는 사용자로 하여금 반드시 특정 사용자 환경설정 값을 입력하도록 한다. 가젯 바로 아래에 메시지가 출력되는 것과 모든 필수 속성들이 설정될 때까지 가젯에서 지도를 보여주지 않음에 주의하기 바란다.
그림 12. 지역 정보 입력(우편번호)
우편번호를 입력하고 save를 클릭하면 그림 13처럼 지도가 보인다. 다시 Listing 10 코드로 돌아가서 map.addControl()을 호출하는 두 줄을 살펴보자. 단지 이 두 줄의 지도 API를 사용함으로써 사용자는 가젯에서 이동(상, 하, 좌, 우), 확대/축소, 지도와 위성 뷰 간 전환을 할 수 있다.
그림 13. 입력한 우편번호에 해당하는 지도
이 가젯은 30줄도 안 되는 코드로 상당히 다양한 기능을 제공하고 있다. 구글 지도 API에 대한 링크는 참고자료 부분을 참조하라.
|