회사의 업무로 인해서 UI객체 3번째를 이제서야 올리게 되네요...
지금 시간은 퇴근시간인데... ㅠ.ㅠ
그리고 이번 샘플에는 시간이 좀 많이 투자되어버렸네요.
일반 자료에서 찾아서 만들었던 것을 그나마 소스가 쓸만해야 되니깐 쓸만하도록 수정은 했는데... 정말 쓸만한지는 잘 모르겠네요.
그리고 안타깝게도... 강좌를 읽는 것보다 사용기에 대해서 더 많은 분들이 관심을 갖으시더군요...
강좌는 접고 사용기 중심으로 해야 되는건 아닌지... ㅠ.ㅠ
오늘 소개할 UI들은 다음과 같습니다.
- DateTimePicker
- FilePicker
- SpinBox
- DataSet을 활용한 AutoCompleteField
- DataSource를 활용한 AutoCompleteField
전 소스를 제공하니 설명이 허접해도 이해해 주시기 바랍니다. ㅡㅡㅋ
001.
package
org.bbone.sample;
002.
import
java.util.Calendar;
003.
import
java.util.Date;
004.
import
java.util.Vector;
005.
import
net.rim.device.api.collection.util.BasicFilteredList;
006.
import
net.rim.device.api.ui.Field;
007.
import
net.rim.device.api.ui.FieldChangeListener;
008.
import
net.rim.device.api.ui.FocusChangeListener;
009.
import
net.rim.device.api.ui.UiApplication;
010.
import
net.rim.device.api.ui.component.AutoCompleteField;
011.
import
net.rim.device.api.ui.component.ButtonField;
012.
import
net.rim.device.api.ui.component.Dialog;
013.
import
net.rim.device.api.ui.component.KeywordFilterField;
014.
import
net.rim.device.api.ui.component.LabelField;
015.
import
net.rim.device.api.ui.component.SeparatorField;
016.
import
net.rim.device.api.ui.component.TextSpinBoxField;
017.
import
net.rim.device.api.ui.container.MainScreen;
018.
import
net.rim.device.api.ui.container.SpinBoxFieldManager;
019.
import
net.rim.device.api.ui.picker.DateTimePicker;
020.
import
net.rim.device.api.ui.picker.FilePicker;
021.
public
class
UiSample3
extends
UiApplication {
022.
public
UiSample3() {
023.
UiSampleScreen uiScreen =
new
UiSampleScreen();
024.
pushScreen(uiScreen);
025.
}
026.
public
static
void
main(String[] args) {
027.
UiSample3 theApp =
new
UiSample3();
028.
theApp.enterEventDispatcher();
029.
}
030.
}
031.
class
UiSampleScreen
extends
MainScreen
implements
FieldChangeListener{
032.
ButtonField datePickerButton;
033.
ButtonField filePickerButton;
034.
ButtonField spinBoxButton;
035.
TextSpinBoxField spinBoxDays;
036.
TextSpinBoxField spinBoxMonths;
037.
SpinBoxFieldManager spinBoxMgr;
038.
KeywordFilterField keywordField;
039.
Vector countries;
040.
final
String[] DAYS = {
"Monday"
,
"Tuesday"
,
"Wednesday"
,
"Thursday"
,
"Friday"
,
"Saturday"
,
"Sunday"
};
041.
final
String[] MONTHS = {
"January"
,
"February"
,
"March"
,
"April"
,
"May"
,
"June"
,
"July"
,
"August"
,
"September"
,
"October"
,
"November"
,
"December"
};
042.
public
UiSampleScreen() {
043.
setTitle(
"UI SAMPLE NO3"
);
044.
// ButtonField를 추가해서 버튼을 클릭했을 때 DatePicker를 호출하는 이벤트를 생성한다.
045.
datePickerButton =
new
ButtonField(
"DatePickerButton"
, ButtonField.CONSUME_CLICK);
046.
datePickerButton.setChangeListener(
this
);
047.
add(datePickerButton);
048.
add(
new
SeparatorField());
049.
// ButtonField를 추가해서 버튼을 클릭했을 때 FilePicker를 호출하는 이벤트를 생성한다.
050.
filePickerButton =
new
ButtonField(
"FilePickerButton"
, ButtonField.CONSUME_CLICK);
051.
filePickerButton.setChangeListener(
this
);
052.
add(filePickerButton);
053.
add(
new
SeparatorField());
054.
spinBoxButton =
new
ButtonField(
"SpinBoxButton"
, ButtonField.CONSUME_CLICK);
055.
spinBoxButton.setChangeListener(
this
);
056.
add(spinBoxButton);
057.
add(
new
SeparatorField());
058.
add(
new
LabelField(
"BasicFielterList Use DataSet"
));
059.
BasicFilteredList filterList1 =
new
BasicFilteredList();
060.
filterList1.addDataSet(
1
, DAYS,
"days"
, BasicFilteredList.COMPARISON_IGNORE_CASE);
061.
AutoCompleteField autoCompleteField1 =
new
AutoCompleteField(filterList1);
062.
add(autoCompleteField1);
063.
add(
new
SeparatorField());
064.
add(
new
LabelField(
"BasicFielterList Use DataSource"
));
065.
BasicFilteredList filterList2 =
new
BasicFilteredList();
066.
filterList2.addDataSource(
067.
1
,
068.
BasicFilteredList.DATA_SOURCE_CONTACTS,
069.
BasicFilteredList.DATA_FIELD_CONTACTS_NAME_FULL
| BasicFilteredList.DATA_FIELD_CONTACTS_COMPANY |
BasicFilteredList.DATA_FIELD_CONTACTS_EMAIL,
070.
BasicFilteredList.DATA_FIELD_CONTACTS_NAME_FULL
| BasicFilteredList.DATA_FIELD_CONTACTS_COMPANY |
BasicFilteredList.DATA_FIELD_CONTACTS_EMAIL,
071.
BasicFilteredList.DATA_FIELD_CONTACTS_NAME_FULL,
072.
-
1
,
073.
null
);
074.
AutoCompleteField autoCompleteField2 =
new
AutoCompleteField(filterList2);
075.
add(autoCompleteField2);
076.
add(
new
SeparatorField());
077.
}
078.
// Button 클릭시에 반응하는 리스너
079.
public
void
fieldChanged(Field field,
int
context) {
080.
if
(field == datePickerButton){
081.
UiApplication.getUiApplication().invokeLater(
new
Runnable() {
082.
public
void
run() {
083.
DateTimePicker datePicker = DateTimePicker.createInstance();
084.
datePicker.doModal();
085.
Calendar cal = datePicker.getDateTime();
086.
Date date = cal.getTime();
087.
Dialog.alert(
"DateTimePicker selected : "
+ date.toString());
088.
}
089.
});
090.
}
else
if
(field == filePickerButton){
091.
UiApplication.getUiApplication().invokeLater(
new
Runnable() {
092.
public
void
run() {
093.
FilePicker filePicker = FilePicker.getInstance();
094.
filePicker.setListener(
new
FilePicker.Listener() {
095.
public
void
selectionDone(String selected) {
096.
Dialog.alert(
"FilePicker selected : "
+ selected);
097.
}
098.
});
099.
filePicker.show();
100.
}
101.
});
102.
}
else
if
(field == spinBoxButton){
103.
UiApplication.getUiApplication().invokeLater(
new
Runnable() {
104.
public
void
run() {
105.
spinBoxMgr =
new
SpinBoxFieldManager();
106.
spinBoxMgr.setClickToLock(
false
);
107.
spinBoxMonths =
new
TextSpinBoxField(MONTHS);
108.
spinBoxMonths.setFocusListener(
new
FocusChangeListener() {
109.
// eventType 1: FOCUS_GAINED, 2: FOCUS_CHANGED, 3: FOCUS_LOST
110.
public
void
focusChanged(Field field,
int
eventType) {
111.
if
(field == spinBoxMonths && eventType == FOCUS_LOST){
112.
Dialog.alert(
"You selected Months : "
+ (String)spinBoxMonths.get(spinBoxMonths.getSelectedIndex()));
113.
}
114.
}
115.
});
116.
spinBoxDays =
new
TextSpinBoxField(DAYS);
117.
spinBoxDays.setFocusListener(
new
FocusChangeListener() {
118.
// eventType 1: FOCUS_GAINED, 2: FOCUS_CHANGED, 3: FOCUS_LOST
119.
public
void
focusChanged(Field field,
int
eventType) {
120.
if
(field == spinBoxDays && eventType == FOCUS_LOST){
121.
Dialog.alert(
"You selected Days : "
+ (String)spinBoxDays.get(spinBoxDays.getSelectedIndex()));
122.
}
123.
}
124.
});
125.
spinBoxMgr.add(spinBoxMonths);
126.
spinBoxMgr.add(spinBoxDays);
127.
Dialog diaLog =
new
Dialog(Dialog.OK,
"SPINBOX"
,
0
,
null
,
0
);
128.
diaLog.add(spinBoxMgr);
129.
diaLog.show();
130.
}
131.
});
132.
}
133.
}
134.
// 종료시에 저장할지에 대한 프롬프트에서 무조건 저장하는 것으로 해서 종료한다.
135.
public
boolean
onSavePrompt(){
136.
return
true
;
137.
}
138.
}
spinBox는 선택하는 방법을 아직은 찾아봐도 잘 모르겠네요.
나중에 찾아서 알게되면 올려드리도록 하겠습니다.
'스마트폰 프로그래밍 > 블랙베리' 카테고리의 다른 글
[Blackberry] 블랙베리 우편번호 검색 어플 (0) | 2011.12.14 |
---|---|
[Blackberry] 블랙베리 메일 필터생성하기 (0) | 2011.12.14 |
[Blackberry] 블랙베리 개발하기-5(UI객체2) (0) | 2011.12.14 |
[Blackberry] 블랙베리 개발하기-4(UI 객체) (0) | 2011.12.14 |
[Blackberry] 블랙베리 개발하기-3(JavaDoc API 활용) (0) | 2011.12.14 |