?? itemdisplayscreen.java~3~
字號:
final TextField[] textFields = new TextField[a.length]; for (int i = 0; i < a.length; i++) { String elementLabel = item.getPIMList().getArrayElementLabel(field, i); textFields[i] = new TextField(elementLabel, a[i], 128, TextField.ANY); } Form form = new Form(label, textFields); final Command okCommand = new Command("OK", Command.OK, 1); final Command cancelCommand = new Command("Cancel", Command.CANCEL, 1); form.addCommand(okCommand); form.addCommand(cancelCommand); form.setCommandListener(new CommandListener() { public void commandAction(Command command, Displayable d) { if (command == okCommand) { for (int i = 0; i < textFields.length; i++) { a[i] = textFields[i].getString(); } item.setStringArray(field, 0, item.getAttributes(field, 0), a); ((StringItem)formItem).setText(joinStringArray(a)); } Display.getDisplay(midlet).setCurrent(ItemDisplayScreen.this); } }); Display.getDisplay(midlet).setCurrent(form); } else if (command == removeField) { try { item.removeValue(field, 0); } catch (IllegalArgumentException iae) { System.out.println(iae.toString()); } try { populateForm(); } catch (PIMException e) { } /* for (int i = size() - 1; i >=0; i--) { if (get(i) == formItem) { delete(i); break; } }*/ } } }).start(); } private void commit() { new Thread(new Runnable() { public void run() { try { getUserData(); item.commit(); populateForm(); } catch (Exception e) { midlet.reportException(e, ItemDisplayScreen.this); } } }).start(); } private void getUserData() throws NumberFormatException { int itemCount = size(); for (int i = 0; i < itemCount; i++) { Item formItem = get(i); int field = ((Integer)fieldTable.get(formItem)).intValue(); if (item.countValues(field) < 1) { // No data in field. This can happen if, for example, a // value is adding to PUBLIC_KEY, causing values of // PUBLIC_KEY_STRING to be erased. continue; } int dataType = item.getPIMList().getFieldDataType(field); switch (dataType) { case PIMItem.STRING: { String s = ((TextField)formItem).getString(); try { item.setString(field, 0, PIMItem.ATTR_NONE, s); } catch (IllegalArgumentException e) { // this was a read-only field (UID) } break; } case PIMItem.DATE: { long time = ((DateField)formItem).getDate().getTime(); try { item.setDate(field, 0, PIMItem.ATTR_NONE, time); } catch (IllegalArgumentException e) { // this was a read-only field (REVISION) } break; } case PIMItem.INT: { String s = ((TextField)formItem).getString(); int j = Integer.parseInt(s); item.setInt(field, 0, PIMItem.ATTR_NONE, j); break; } } } } private void addField() { int[] allFields = item.getPIMList().getSupportedFields(); final Vector unusedFields = new Vector(); for (int i = 0; i < allFields.length; i++) { if ((item.countValues(allFields[i]) == 0) && !isClassField(allFields[i])) { unusedFields.addElement(new Integer(allFields[i])); } } final List fieldList = new List("Select a field to add", List.IMPLICIT); for (Enumeration e = unusedFields.elements(); e.hasMoreElements();) { int field = ((Integer)e.nextElement()).intValue(); fieldList.append(item.getPIMList().getFieldLabel(field), null); } fieldList.addCommand(new Command("Cancel", Command.CANCEL, 1)); fieldList.setSelectCommand(new Command("Add", Command.OK, 1)); fieldList.setCommandListener(new CommandListener() { public void commandAction(final Command c, Displayable d) { new Thread(new Runnable() { public void run() { if (c.getCommandType() == Command.OK) { try { int index = fieldList.getSelectedIndex(); int field = ((Integer)unusedFields.elementAt(index)).intValue(); addField(field); } catch (IllegalArgumentException iae) { midlet.reportException(iae, ItemDisplayScreen.this); } try { getUserData(); populateForm(); } catch (Exception e) { midlet.reportException(e, ItemDisplayScreen.this); } } Display.getDisplay(midlet).setCurrent(ItemDisplayScreen.this); } }).start(); } }); Display.getDisplay(midlet).setCurrent(fieldList); } private void addField(int field) { switch (item.getPIMList().getFieldDataType(field)) { case PIMItem.STRING: item.addString(field, PIMItem.ATTR_NONE, ""); break; case PIMItem.STRING_ARRAY: { int[] supportedElements = item.getPIMList().getSupportedArrayElements(field); int arraySize = 0; for (int i = 0; i < supportedElements.length; i++) { arraySize = Math.max(arraySize, supportedElements[i] + 1); } String[] a = new String[arraySize]; for (int i = 0; i < a.length; i++) { a[i] = ""; } item.addStringArray(field, PIMItem.ATTR_NONE, a); break; } case PIMItem.BINARY: item.addBinary(field, PIMItem.ATTR_NONE, new byte[16], 0, 16); break; case PIMItem.BOOLEAN: item.addBoolean(field, PIMItem.ATTR_NONE, false); break; case PIMItem.DATE: item.addDate(field, PIMItem.ATTR_NONE, new Date().getTime()); break; case PIMItem.INT: item.addInt(field, PIMItem.ATTR_NONE, 0); } } private void showItem(final String format) { new Thread(new Runnable() { public void run() { try { getUserData(); populateForm(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); PIM.getInstance().toSerialFormat(item, baos, "UTF-8", format); String s = new String(baos.toByteArray(), "UTF-8"); Alert a = new Alert(format, s, null, AlertType.INFO); a.setTimeout(Alert.FOREVER); Display.getDisplay(midlet).setCurrent(a, ItemDisplayScreen.this); } catch (Exception e) { midlet.reportException(e, ItemDisplayScreen.this); } } }).start(); } private String joinStringArray(String[] a) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < a.length; i++) { if ((a[i] != null) && (a[i].length() > 0)) { if (sb.length() > 0) { sb.append(", "); } sb.append(a[i]); } } return sb.toString(); }}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -