📄 chatmidlet.java
字号:
//// Copyright 2002 Nokia Corporation.//// THIS SOURCE CODE IS PROVIDED 'AS IS', WITH NO WARRANTIES WHATSOEVER,// EXPRESS OR IMPLIED, INCLUDING ANY WARRANTY OF MERCHANTABILITY, FITNESS// FOR ANY PARTICULAR PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE// OR TRADE PRACTICE, RELATING TO THE SOURCE CODE OR ANY WARRANTY OTHERWISE// ARISING OUT OF ANY PROPOSAL, SPECIFICATION, OR SAMPLE AND WITH NO// OBLIGATION OF NOKIA TO PROVIDE THE LICENSEE WITH ANY MAINTENANCE OR// SUPPORT. FURTHERMORE, NOKIA MAKES NO WARRANTY THAT EXERCISE OF THE// RIGHTS GRANTED HEREUNDER DOES NOT INFRINGE OR MAY NOT CAUSE INFRINGEMENT// OF ANY PATENT OR OTHER INTELLECTUAL PROPERTY RIGHTS OWNED OR CONTROLLED// BY THIRD PARTIES//// Furthermore, information provided in this source code is preliminary,// and may be changed substantially prior to final release. Nokia Corporation// retains the right to make changes to this source code at any time,// without notice. This source code is provided for informational// purposes only.//// Nokia and Nokia Connecting People are registered trademarks of Nokia// Corporation. Java and all Java-based marks are trademarks or registered// trademarks of Sun Microsystems, Inc. Other product and company names// mentioned herein may be trademarks or trade names of their respective owners.//// A non-exclusive, non-transferable, worldwide, limited license is hereby// granted to the Licensee to download, print, reproduce and modify the// source code. The licensee has the right to market, sell, distribute and// make available the source code in original or modified form only when// incorporated into the programs developed by the Licensee. No other// license, express or implied, by estoppel or otherwise, to any other// intellectual property rights is granted herein.//import javax.microedition.midlet.*;import javax.microedition.lcdui.*;public class ChatMIDlet extends MIDlet implements IncomingTextMessageListener, OutgoingTextMessageListener, CommandListener{ private final static PhoneBook phoneBook = PhoneBook.getPhoneBook(); private static SmsHandler smsHandler = null; private String port = null; private ChatScreen chatScreen = null; private WriteMessageScreen writeMessageScreen = null; private PeerList peerList = null; private PeerScreen peerScreen = null; private String phoneNumbers[]; private String prompt; public ChatMIDlet() { } public void startApp() { Displayable current = Display.getDisplay(this).getCurrent(); if (current == null) { if (setSmsHandler()) { InputNameScreen inputNameScreen = new InputNameScreen(this); Display.getDisplay(this).setCurrent(inputNameScreen); } else { Form quitScreen = new Form("Error"); quitScreen.append("Neither WMA nor " + "Nokia SMS API is available!"); quitScreen.addCommand(new Command("Quit", Command.EXIT, 2)); quitScreen.setCommandListener(this); Display.getDisplay(this).setCurrent(quitScreen); } } else { Display.getDisplay(this).setCurrent(current); } } private boolean setSmsHandler() { port = getAppProperty("Default-Port"); try { Class.forName("javax.wireless.messaging.Message"); smsHandler = (SmsHandler) Class.forName("WmaSmsHandler").newInstance(); } catch (Exception e) { } if (smsHandler == null) { try { Class.forName("com.nokia.mid.messaging.Message"); smsHandler = (SmsHandler) Class.forName("NokiaSmsHandler").newInstance(); } catch (Exception e) { } String attr = getAppProperty("Nokia-SMS-Handler-1"); if (attr != null) { port = attr.substring(attr.indexOf(':') + 4, attr.indexOf(',')); } } return (smsHandler != null); } public void commandAction(Command c, Displayable d) { exitRequested(); } // InputNameScreen Callbacks void inputNameScreenDone(String chatName) { if (smsHandler != null) { ErrorScreen.init(null, Display.getDisplay(this)); smsHandler.init(this, this, port); prompt = "<" + chatName + ": "; chatScreen = new ChatScreen(this, prompt); Display.getDisplay(this).setCurrent(chatScreen); } else { exitRequested(); } } void inputNameScreenQuit() { exitRequested(); } // ChatScreen Callbacks void chatScreenChoosePeer() { choosePeer(); } void chatScreenWriteMessage() { writeMessage(null); } void chatScreenQuit() { exitRequested(); } private void choosePeer() { String[] peerNames = phoneBook.getNames(); if (peerNames != null) { if (peerList == null) { peerList = new PeerList(this, peerNames); } else { peerList.init(peerNames); } Display.getDisplay(this).setCurrent(peerList); } else { updatePhoneBook(null); } } private void updatePhoneBook(String name) { if (peerScreen == null) { peerScreen = new PeerScreen(this); } String phoneNumber = (name == null) ? null : phoneBook.getPhoneNumber(name); peerScreen.init(name, phoneNumber); Display.getDisplay(this).setCurrent(peerScreen); } private void writeMessage(String[] peerNames) { if (writeMessageScreen == null) { writeMessageScreen = new WriteMessageScreen(this); } if (peerNames == null) { peerNames = phoneBook.getNames(phoneNumbers); } writeMessageScreen.setTitle(peerNames); Display.getDisplay(this).setCurrent(writeMessageScreen); } // PeerList screen Callbacks void peerListBack() { Display.getDisplay(this).setCurrent(chatScreen); } void peerListEdit(String name) { updatePhoneBook(name); } void peerListDone(String[] peerNames) { if (peerNames != null) { phoneNumbers = new String[peerNames.length]; for (int i = phoneNumbers.length - 1; i >= 0; i--) { phoneNumbers[i] = phoneBook.getPhoneNumber(peerNames[i]); } chatScreen.enableWriteCommand(); writeMessage(peerNames); } else { Display.getDisplay(this).setCurrent(chatScreen); } } void peerListNew() { updatePhoneBook(null); } void peerListRemove(String[] names) { phoneBook.removeEntries(names); } // PeerScreen callbacks void peerScreenDone(String name, String phoneNumber) { phoneBook.update(name, phoneNumber); choosePeer(); } void peerScreenBack() { if (peerList != null && peerList.size() > 0) { Display.getDisplay(this).setCurrent(peerList); } else { Display.getDisplay(this).setCurrent(chatScreen); } } // WriteMessageScreen callbacks void writeMessageScreenDone(String content) { Display.getDisplay(this).setCurrent(chatScreen); if (content != null) { String message = prompt + content; chatScreen.update(message); smsHandler.sendMessage(phoneNumbers, message); } } void writeMessageScreenBack() { Display.getDisplay(this).setCurrent(chatScreen); } // IncomingTextMessageListener interface methods public void handleIncomingMessage(String phoneNumber, String content) { String fromName = content.substring(1, content.indexOf(':')); fromName = phoneBook.validate(fromName, phoneNumber); chatScreen.update(">" + content.substring(1)); chatScreen.enableWriteCommand(); if (Display.getDisplay(this).getCurrent() != writeMessageScreen) { phoneNumbers = new String[1]; phoneNumbers[0] = phoneNumber; } } public void handleIncomingError(String errorStr) { ErrorScreen.showError(errorStr); } // OutgoingTextMessageListener interface methods public void handleOutgoingOk(OutgoingTextMessage message) { } public void handleOutgoingCancel(OutgoingTextMessage message, String type) { writeMessageScreen.setTitle(type); } public void handleOutgoingError(OutgoingTextMessage message, String errorStr) { ErrorScreen.showError(errorStr); } // MIDlet methods public void pauseApp() { } public void destroyApp(boolean unconditional) { } // A convienence method for exiting. void exitRequested() { if (smsHandler != null) { smsHandler.abort(); } destroyApp(true); notifyDestroyed(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -