Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorslewis2005-06-03 04:53:30 +0000
committerslewis2005-06-03 04:53:30 +0000
commit85a2854cd7fb7301b0d30994ede4bc2ee05f9969 (patch)
treee0bba04a3d8b77325cdbff1d745f710facfdba46
parent5b2572cfda7bd1079683d2ed069a58d57b638d4c (diff)
downloadorg.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
-rw-r--r--examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/Client.java4
-rw-r--r--framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IMessageListener.java18
-rw-r--r--framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IMessageSender.java16
-rw-r--r--framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceContainer.java45
-rw-r--r--framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceListener.java32
-rw-r--r--framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceSender.java23
-rw-r--r--framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/ISubscribeListener.java5
-rw-r--r--framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/dialogs/AddBuddyDialog.java7
-rw-r--r--framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/RosterView.java26
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);
}
}

Back to the top