diff options
| author | slewis | 2005-06-03 04:53:30 +0000 |
|---|---|---|
| committer | slewis | 2005-06-03 04:53:30 +0000 |
| commit | 85a2854cd7fb7301b0d30994ede4bc2ee05f9969 (patch) | |
| tree | e0bba04a3d8b77325cdbff1d745f710facfdba46 | |
| parent | 5b2572cfda7bd1079683d2ed069a58d57b638d4c (diff) | |
| download | org.eclipse.ecf-85a2854cd7fb7301b0d30994ede4bc2ee05f9969.tar.gz org.eclipse.ecf-85a2854cd7fb7301b0d30994ede4bc2ee05f9969.tar.xz org.eclipse.ecf-85a2854cd7fb7301b0d30994ede4bc2ee05f9969.zip | |
Fixes for xmpp subscribe dialog problems. Added documentation for org.eclipse.ecf.presence interfaces
9 files changed, 140 insertions, 36 deletions
diff --git a/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/Client.java b/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/Client.java index b9cba4370..8a05ad7c5 100644 --- a/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/Client.java +++ b/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/Client.java @@ -541,11 +541,11 @@ public class Client { } public void handleSubscribed(ID fromID, IPresence presence) { - System.out.println("subscribed from "+fromID); + //System.out.println("subscribed from "+fromID); } public void handleUnsubscribed(ID fromID, IPresence presence) { - System.out.println("unsubscribed from "+fromID); + //System.out.println("unsubscribed from "+fromID); } }); } diff --git a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IMessageListener.java b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IMessageListener.java index 2d707f01c..e51200ad1 100644 --- a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IMessageListener.java +++ b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IMessageListener.java @@ -13,9 +13,24 @@ package org.eclipse.ecf.presence; import org.eclipse.ecf.core.identity.ID; +/** + * Listener for text IM messages. Implementers of this interface are registered + * via the IPresenceContainer.addMessageListener interface + * + * @author slewis + * + */ public interface IMessageListener { - public void handleMessage(ID fromID, ID toID, Type type, String subject, String message); + /** + * Handle message from remote user + * @param fromID the ID of the user sending the message + * @param toID the ID of the user to receive the message + * @param type the Type of the message + * @param subject the subject of the message + * @param messageBody the message body + */ + public void handleMessage(ID fromID, ID toID, Type type, String subject, String messageBody); public static class Type { @@ -61,5 +76,4 @@ public interface IMessageListener { } } - } diff --git a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IMessageSender.java b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IMessageSender.java index f03d39583..7df3b4fab 100644 --- a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IMessageSender.java +++ b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IMessageSender.java @@ -13,7 +13,19 @@ package org.eclipse.ecf.presence; import org.eclipse.ecf.core.identity.ID; import org.eclipse.ecf.presence.IMessageListener.Type; +/** + * Interface for sending text messages (IM) between users. + * @author slewis + * + */ public interface IMessageSender { - - public void sendMessage(ID fromID, ID toID, Type type, String subject, String message); + /** + * Send text message + * @param fromID the user id of the sender. Cannot be null + * @param toID the user id of the target receiver of the message. Cannot be null + * @param type the Type of the message + * @param subject the subject of the message + * @param messageBody the message body + */ + public void sendMessage(ID fromID, ID toID, Type type, String subject, String messageBody); } diff --git a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceContainer.java b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceContainer.java index 65d71ca54..e0b735e97 100644 --- a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceContainer.java +++ b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceContainer.java @@ -10,21 +10,48 @@ *****************************************************************************/ package org.eclipse.ecf.presence; -import org.eclipse.ecf.core.ISharedObjectContainer; -import org.eclipse.ecf.core.SharedObjectContainerInstantiationException; +/** + * Top-level container interface for setting up listeners for presence messages, + * text messages, subscription requests, and for getting interfaces for message sending (IMessageSender) + * presence updates (IPresenceSender) and account management (IAccountManager) + * + * @author slewis + * + */ public interface IPresenceContainer { + /** + * Setup listener for handling subscription requests + * + * @param listener + */ public void addSubscribeListener(ISubscribeListener listener); - - public void addPresenceListener(IPresenceListener listener); - public void addMessageListener(IMessageListener listener); - public void addSharedObjectMessageListener(ISharedObjectMessageListener listener); + /** + * Setup listener for handling presence updates + * @param listener + */ + public void addPresenceListener(IPresenceListener listener); + /** + * Setup listener for handling IM messages + * @param listener + */ + public void addMessageListener(IMessageListener listener); - public IMessageSender getMessageSender(); + /** + * Get interface for sending presence updates + * @return + */ public IPresenceSender getPresenceSender(); + /** + * Get interface for sending messages + * @return + */ + public IMessageSender getMessageSender(); + /** + * Get interface for managing account + * @return + */ public IAccountManager getAccountManager(); - public ISharedObjectContainer makeSharedObjectContainer(Class [] types, Object [] args) throws SharedObjectContainerInstantiationException; - } diff --git a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceListener.java b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceListener.java index d17d4ac5e..9f2144e69 100644 --- a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceListener.java +++ b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceListener.java @@ -12,12 +12,42 @@ package org.eclipse.ecf.presence; import org.eclipse.ecf.core.identity.ID; +/** + * Listener for receiving and processing presence update events + * + * @author slewis + * + */ public interface IPresenceListener { + /** + * Notification that a new group member (i.e. the server) has + * successfully joined/connected + * @param joinedContainer + */ public void handleContainerJoined(ID joinedContainer); - public void handleRosterEntry(IRosterEntry entry); + /** + * Notification that a roster entry has been received + * @param entry + */ + public void handleRosterEntry(IRosterEntry entry); + /** + * Notification that a roster entry has been set + * @param entry + */ public void handleSetRosterEntry(IRosterEntry entry); + /** + * Notification that a presence update has been received + * @param fromID + * @param presence + */ public void handlePresence(ID fromID, IPresence presence); + /** + * Notification that a remote container (i.e. the server) has + * disconnected/left group + * + * @param departedContainer + */ public void handleContainerDeparted(ID departedContainer); } diff --git a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceSender.java b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceSender.java index e596e1d81..372f9fef0 100644 --- a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceSender.java +++ b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceSender.java @@ -12,9 +12,32 @@ package org.eclipse.ecf.presence; import org.eclipse.ecf.core.identity.ID; +/** + * Send presence change events to remotes on buddy list + * @author slewis + * + */ public interface IPresenceSender { + /** + * Send a presence update to a remote target user + * @param fromID the user the update is from + * @param toID the target user + * @param presence the presence information + */ public void sendPresenceUpdate(ID fromID, ID toID, IPresence presence); + /** + * Send a roster add request (subscribe) to a remote + * @param fromID the user the subscription request is from + * @param user the account name of the target user + * @param groups an array of group names that this use will belong to + * on the roster entry + */ public void sendRosterAdd(ID fromID, String user, String name, String [] groups); + /** + * Send roster remove request (unsubscribe) to a remote + * @param fromID the user id the request is from + * @param userID the user id the request it intended for + */ public void sendRosterRemove(ID fromID, ID userID); } diff --git a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/ISubscribeListener.java b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/ISubscribeListener.java index 74ffb74d6..2c91ad775 100644 --- a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/ISubscribeListener.java +++ b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/ISubscribeListener.java @@ -12,6 +12,11 @@ package org.eclipse.ecf.presence; import org.eclipse.ecf.core.identity.ID; +/** + * Listener for handling notifications of subscribe/unsubscribe requests + * @author slewis + * + */ public interface ISubscribeListener { public void handleSubscribeRequest(ID fromID, IPresence presence); diff --git a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/dialogs/AddBuddyDialog.java b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/dialogs/AddBuddyDialog.java index ce7f896a9..f410fcbda 100644 --- a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/dialogs/AddBuddyDialog.java +++ b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/dialogs/AddBuddyDialog.java @@ -65,7 +65,6 @@ public class AddBuddyDialog extends Dialog { usertext.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); if (user != null) { usertext.setText(user); - okButton.setEnabled(true); } usertext.addModifyListener(new ModifyListener() { @@ -100,6 +99,9 @@ public class AddBuddyDialog extends Dialog { final GridData gridData_1 = new GridData(GridData.FILL_HORIZONTAL); gridData_1.widthHint = 192; nicknametext.setLayoutData(gridData_1); + if (user != null) { + nicknametext.setFocus(); + } // return container; } @@ -111,7 +113,8 @@ public class AddBuddyDialog extends Dialog { IDialogConstants.CANCEL_LABEL, true); okButton = getButton(IDialogConstants.OK_ID); if (okButton != null) { - okButton.setEnabled(false); + if (user != null) okButton.setEnabled(true); + else okButton.setEnabled(false); } } public String getGroup() { diff --git a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/RosterView.java b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/RosterView.java index ec673eab0..cb83970a9 100644 --- a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/RosterView.java +++ b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/RosterView.java @@ -72,39 +72,23 @@ import org.eclipse.ui.part.ViewPart; public class RosterView extends ViewPart implements IPresenceListener, IMessageListener { public static final String DISCONNECT_ICON_DISABLED = "icons/disabled/terminate_co.gif"; - public static final String DISCONNECT_ICON_ENABLED = "icons/enabled/terminate_co.gif"; - public static final String INSTANT_MESSAGE_ICON = "icons/enabled/message.gif"; - public static final String ADDGROUP_ICON = "icons/enabled/addgroup.gif"; - public static final String ADDBUDDY_ICON = "icons/enabled/addbuddy.gif"; - public static final String UNFILED_GROUP_NAME = "Unfiled"; - protected static final int TREE_EXPANSION_LEVELS = 2; private TreeViewer viewer; - private Action chatAction; - private Action selectedChatAction; - private Action selectedDoubleClickAction; - private Action disconnectAction; - private Action addGroupAction; - private Action addBuddyAction; - protected IUser localUser; - protected ILocalInputHandler inputHandler; - protected Hashtable chatThreads = new Hashtable(); - protected ID groupID; protected IUser getLocalUser() { @@ -455,8 +439,15 @@ public class RosterView extends ViewPart implements IPresenceListener, // If entry already in tree, remove it from current position if (tb != null) { TreeParent tp = (TreeParent) tb.getParent(); - if (tp != null) + if (tp != null) { tp.removeChild(tb); + if (tp.getName().equals(UNFILED_GROUP_NAME)) { + if (!tp.hasChildren()) { + TreeParent tpp = tp.getParent(); + tpp.removeChild(tp); + } + } + } } // Create new buddy TreeBuddy newBuddy = createBuddy(tb, entry); @@ -754,7 +745,6 @@ public class RosterView extends ViewPart implements IPresenceListener, String[] sendGroups = new String[] { group }; // Finally, send the information and request subscription inputHandler.sendRosterAdd(user, nickname, sendGroups); - addPendingEntry(user, nickname, group); } } |
