📄 cardslist.java
字号:
import javax.microedition.lcdui.*;
import javax.microedition.pim.*;
import java.io.IOException;
import java.util.Vector;
/**
* CardsList类描述了名片盒的名片列表,提供了名片列表的视图和对名片列表的操作命令。
*/
public class CardsList extends MicroComponent implements CommandListener {
private CardcaseMIDlet midlet;
private Display display;
private Cardcase cardcase; //名片盒
private Vector cardsList; //名片列表
private List listView; //名片列表视图
private SelectionDialog lsDialog; //新建名片的存储列表
private Command cmdBack = new Command("返回", Command.BACK, 1);
private Command cmdSelect = new Command("详细", Command.SCREEN, 2);
private Command cmdEditCard = new Command("编辑名片", Command.SCREEN, 5);
private Command cmdNew = new Command("新建名片", Command.SCREEN, 2);
private Command cmdDelete = new Command("删除名片", Command.SCREEN, 3);
private Command cmdAddToCategory = new Command("添加名片到名片组", Command.SCREEN, 4);
//构造方法
public CardsList(Cardcase cardcase, CardcaseMIDlet midlet) {
this.cardcase = cardcase;
this.midlet = midlet;
display = Display.getDisplay(midlet);
listView = new List("名片列表:", Choice.IMPLICIT); //创建列表视图
listView.addCommand(cmdBack);
listView.addCommand(cmdNew);
listView.setCommandListener(this);
}
//显示列表视图
public void show() {
updateView();
display.setCurrent(listView);
}
//更新列表视图
private void updateView() {
listView.deleteAll();
listView.removeCommand(cmdSelect);
listView.removeCommand(cmdDelete);
try { //获得名片盒中最新名片列表
cardsList = cardcase.getCards();
}
catch(PIMException pime) {
midlet.showError("获取名片错误!原因:\n" + pime);
}
String cardLabel = "";
int n = cardsList.size();
for(int i=0; i<n; i++) { //添加名片标签
cardLabel = cardcase.getCardLabel((Contact)cardsList.elementAt(i));
listView.append(cardLabel, null);
}
if(listView.size() > 0) {
listView.setSelectCommand(cmdSelect);
listView.addCommand(cmdDelete);
listView.addCommand(cmdAddToCategory);
listView.addCommand(cmdEditCard);
}
}
public void commandAction(Command cmd, Displayable d) {
if(cmd == cmdBack) {
midlet.backToMainMenu(); //返回主菜单
}
else if(cmd == cmdSelect) { //显示选择的名片
int index = listView.getSelectedIndex();
Contact card = (Contact)cardsList.elementAt(index);
CardShowForm csForm = new CardShowForm(cardcase, card, midlet, this);
csForm.show();
}
else if(cmd == cmdNew) { //新建名片命令
if(lsDialog == null) {
createListSelectionDialog(); //创建个人信息列表选择对话框
}
lsDialog.show(); //显示对话框
}
else if(cmd == cmdDelete) { //删除名片
int index = listView.getSelectedIndex();
Contact card = (Contact)cardsList.elementAt(index);
try {
cardcase.removeCard(card);
updateView(); //更新视图
}
catch(PIMException pime) {
midlet.showError("删除名片错误!原因:\n" + pime.toString());
}
}
else if(cmd == cmdAddToCategory) { //添加名片到名片组
SelectionDialog csDialog = createCategoriesDialog();
csDialog.show();
}
else if(cmd == cmdEditCard) { //编辑名片
int index = listView.getSelectedIndex();
Contact card = (Contact)cardsList.elementAt(index);
CardEditor cardEditor = new CardEditor(cardcase, card, midlet, this);
cardEditor.show();
}
}
//该方法创建一个设备联系人列表选择对话框,对话框中列出了当前设备中所有的联系人列表。
private void createListSelectionDialog() {
lsDialog = new SelectionDialog(display, "请选择新建名片的存储位置", Choice.IMPLICIT);
//添加列表名
final String[] names = cardcase.getAllMemoryName(); //final型量可以被内部类访问
for(int i=0; i<names.length; i++) {
lsDialog.append(names[i]);
}
//为对话框设置监视器,处理用户的操作。用匿名类实现。
lsDialog.setSelectionDialogListener(new SelectionDialogListener() {
public void actionDialog(SelectionDialog sd) {
int handle = sd.getHandle(); //用户的操作
if(handle == SelectionDialog.OK) {
//创建名片
int index = sd.getSelectedIndex();
Contact card = cardcase.createCard(names[index]); //names为final型,可以在匿名类中使用
//创建名片编辑器,编辑名片
CardEditor cardEditor = new CardEditor(cardcase, card, midlet, CardsList.this);
cardEditor.show();
}
else if(handle == SelectionDialog.CANCEL) {
display.setCurrent(listView);
}
}
});
}
//创建名片组列表对话框
public SelectionDialog createCategoriesDialog() {
//获取名片组
String[] categories = new String[0];
try {
categories = cardcase.getCategories();
}
catch(PIMException pime) {
midlet.showError("error: " + pime.toString());
}
//创建对话框
SelectionDialog csDialog = new SelectionDialog(display, "请选择名片组", Choice.EXCLUSIVE);
for(int i=0; i<categories.length; i++) {
csDialog.append(categories[i]);
}
//为对话框设置监视器,处理用户的操作。用内部类实现
csDialog.setSelectionDialogListener(new SelectionDialogListener() {
public void actionDialog(SelectionDialog sd) {
int handle = sd.getHandle(); //用户的操作
if(handle == SelectionDialog.OK) {
String category = sd.getSelectedItem();
//获取选择的名片
int index = listView.getSelectedIndex();
Contact card = (Contact)cardsList.elementAt(index);
try {//把名片card添加到categoryName名片组中
cardcase.addCardToCategory(card, category);
display.setCurrent(listView);
}
catch(PIMException pime) {
midlet.showError("添加名片到\"" + category + "\"组中错误!原因:\n" + pime);
}
}
else if(handle == SelectionDialog.CANCEL) {
display.setCurrent(listView);
}
}
});
return csDialog;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -