?? itemdisplayscreen.java~3~
字號:
package example.pim;import java.io.ByteArrayOutputStream;import java.util.Date;import java.util.Enumeration;import java.util.Hashtable;import java.util.Vector;import javax.microedition.lcdui.Alert;import javax.microedition.lcdui.AlertType;import javax.microedition.lcdui.Command;import javax.microedition.lcdui.CommandListener;import javax.microedition.lcdui.DateField;import javax.microedition.lcdui.Display;import javax.microedition.lcdui.Displayable;import javax.microedition.lcdui.Form;import javax.microedition.lcdui.Item;import javax.microedition.lcdui.ItemCommandListener;import javax.microedition.lcdui.List;import javax.microedition.lcdui.StringItem;import javax.microedition.lcdui.TextField;import javax.microedition.pim.Contact;import javax.microedition.pim.Event;import javax.microedition.pim.PIM;import javax.microedition.pim.PIMException;import javax.microedition.pim.PIMItem;import javax.microedition.pim.ToDo;/** * Demonstrate the use of JSR 75 PIM APIs */public class ItemDisplayScreen extends Form implements CommandListener, ItemCommandListener { private final Command editArrayCommand = new Command("Edit", Command.OK, 1); private final Command editBooleanCommand = new Command("Edit", Command.OK, 1); private final Command commitCommand = new Command("Commit", Command.OK, 2); private final Command backCommand = new Command("Back", Command.BACK, 1); private final Command showVCard = new Command("Show vCard", Command.SCREEN, 5); private final Command showVCalendar = new Command("Show vCalendar", Command.SCREEN, 5); private final Command addField = new Command("Add Field", Command.SCREEN, 2); private final Command removeField = new Command("Remove Field", Command.SCREEN, 3); private final PIMDemo midlet; private final ItemSelectionScreen caller; private final PIMItem item; private final Hashtable fieldTable = new Hashtable(); // maps field indices to items public ItemDisplayScreen(PIMDemo midlet, ItemSelectionScreen caller, PIMItem item) throws PIMException { super("PIM Item"); this.midlet = midlet; this.caller = caller; this.item = item; populateForm(); addCommand(backCommand); addCommand(commitCommand); setCommandListener(this); } private boolean isClassField(int field) { return (item instanceof Contact && (field == Contact.CLASS)) || (item instanceof Event && (field == Event.CLASS)) || (item instanceof ToDo && (field == ToDo.CLASS)); } private void populateForm() throws PIMException {// deleteAll();// fieldTable.clear();//// int[] fields = item.getPIMList().getSupportedFields();// boolean allFieldsUsed = true;//// for (int i = 0; i < fields.length; i++) {// int field = fields[i];//// // exclude CLASS field// if (isClassField(field)) {// continue;// }//// if (item.countValues(field) == 0) {// allFieldsUsed = false;//// continue;// }//// int dataType = item.getPIMList().getFieldDataType(field);// String label = item.getPIMList().getFieldLabel(field);// Item formItem = null;//// switch (dataType) {// case PIMItem.STRING: {// String sValue = item.getString(field, 0);//// if (sValue == null) {// sValue = "";// }//// int style = TextField.ANY;//// // cater for specific field styles// if (item instanceof Contact) {// switch (field) {// case Contact.EMAIL:// style = TextField.EMAILADDR;//// break;//// case Contact.TEL:// style = TextField.PHONENUMBER;//// break;//// case Contact.URL:// style = TextField.URL;//// break;// }// }//// try {// formItem = new TextField(label, sValue, 128, style);// } catch (IllegalArgumentException e) {// formItem = new TextField(label, sValue, 128, TextField.ANY);// }//// break;// }//// case PIMItem.BOOLEAN: {// formItem = new StringItem(label, item.getBoolean(field, 0) ? "yes" : "no");// formItem.setDefaultCommand(editBooleanCommand);//// break;// }//// case PIMItem.STRING_ARRAY: {// String[] a = item.getStringArray(field, 0);//// if (a != null) {// formItem = new StringItem(label, joinStringArray(a));// formItem.setDefaultCommand(editArrayCommand);// }//// break;// }//// case PIMItem.DATE: {// long time = item.getDate(field, 0);// int style = DateField.DATE_TIME;//// // some fields are date only, without a time.// // correct for these fields:// if (item instanceof Contact) {// switch (field) {// case Contact.BIRTHDAY:// style = DateField.DATE;//// break;// }// }//// formItem = new DateField(label, style);// ((DateField)formItem).setDate(new Date(time));//// break;// }//// case PIMItem.INT: {// formItem = new TextField(label, String.valueOf(item.getInt(field, 0)), 64,// TextField.DECIMAL);//// break;// }//// case PIMItem.BINARY: {// byte[] data = item.getBinary(field, 0);//// if (data != null) {// formItem = new StringItem(label, data.length + " bytes");// }//// break;// }// }//// if (formItem != null) {// append(formItem);// fieldTable.put(formItem, new Integer(field));// formItem.addCommand(removeField);// formItem.setItemCommandListener(this);// }// }//// if (item instanceof Contact) {// addCommand(showVCard);// } else {// addCommand(showVCalendar);// }//// if (!allFieldsUsed) {// addCommand(addField);// } else {// removeCommand(addField);// } } public void commandAction(final Command command, Displayable displayable) { if (command == backCommand) { new Thread(new Runnable() { public void run() { try { getUserData(); } catch (Exception e) { // ignore; store what can be stored of the data } try { caller.populateList(); } catch (Exception e) { // ignore again; show what can be shown of the list } Display.getDisplay(midlet).setCurrent(caller); } }).start(); } else if (command == commitCommand) { commit(); } else if (command == showVCard) { showItem("VCARD/2.1"); } else if (command == showVCalendar) { showItem("VCALENDAR/1.0"); } else if (command == addField) { addField(); } } public void commandAction(final Command command, final Item formItem) { new Thread(new Runnable() { public void run() { final int field = ((Integer)fieldTable.get(formItem)).intValue(); if (command == editBooleanCommand) { boolean newValue = !item.getBoolean(field, 0); item.setBoolean(field, 0, PIMItem.ATTR_NONE, newValue); ((StringItem)formItem).setText(newValue ? "yes" : "no"); } else if (command == editArrayCommand) { String label = item.getPIMList().getFieldLabel(field); final String[] a = item.getStringArray(field, 0);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -