public void run() { try { // start logging in plugin.addMessagingNetworkListener( new MessagingNetworkListener() { public void messageReceived(byte networkId, String from, String to, String text) { CAT.info( "incoming message from " + from + " to " + to + " (len: " + text.length() + "):\r\n\"" + text + "\""); log( "incoming message from " + from + " to " + to + (text == null ? ": null (BUGGG!!)" : " (" + text.length() + " chars):\r\n\"" + text + "\"")); } public void contactsReceived( byte networkId, String from, String to, String[] contactsUins, String[] contactsNicks) { StringBuffer sb = new StringBuffer( "incoming contacts from " + from + " to " + to + ", number of contacts=" + contactsNicks.length + ":\r\n"); int i = 0; while (i < contactsNicks.length) { sb.append( " nick=" + StringUtil.toPrintableString(contactsNicks[i]) + "\r\n" + " uin =" + StringUtil.toPrintableString(contactsUins[i]) + "\r\n"); i++; } String s = sb.toString(); CAT.info(s); log(s); } public void statusChanged( byte networkId, String srcLoginId, String dstLoginId, int status, int reasonCategory, String reasonMessage) { String status_s = "invalid: " + status + " (BUGGG!)"; switch (status) { case MessagingNetwork.STATUS_OFFLINE: status_s = "offline"; break; case MessagingNetwork.STATUS_ONLINE: status_s = "online"; break; case MessagingNetwork.STATUS_BUSY: status_s = "busy"; break; } if (srcLoginId.equals(dstLoginId)) log( srcLoginId + " changed its client status to " + status_s + " [" + (reasonMessage == null ? "no reason given" : "reason: " + reasonMessage) + "]"); else log(srcLoginId + " reports: " + dstLoginId + " changed status to " + status_s); // java.awt.Toolkit.getDefaultToolkit().beep(); if (getMyLoginId().equals(srcLoginId) && srcLoginId.equals(dstLoginId)) { switch (status) { case MessagingNetwork.STATUS_OFFLINE: clientStatus.select("Offline"); enableLoginUI(); break; case MessagingNetwork.STATUS_ONLINE: clientStatus.select("Online"); break; case MessagingNetwork.STATUS_BUSY: clientStatus.select("Busy"); break; } } } }); login(); thread = null; } catch (Throwable tr) { printException(tr); } }