Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorslewis2005-04-15 07:12:21 +0000
committerslewis2005-04-15 07:12:21 +0000
commit061a195edc4168a2de56c54a2dc47c00c4d3f2ed (patch)
tree9430a19accc4efb36a9198ff7d82a9801ec54e13
parentcde1859649def31e6d3cefd0f34c37715e102fad (diff)
downloadorg.eclipse.ecf-061a195edc4168a2de56c54a2dc47c00c4d3f2ed.tar.gz
org.eclipse.ecf-061a195edc4168a2de56c54a2dc47c00c4d3f2ed.tar.xz
org.eclipse.ecf-061a195edc4168a2de56c54a2dc47c00c4d3f2ed.zip
Fixed bugs in buddy list view. Added ability to handle iq set events properly.
-rw-r--r--examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/Client.java11
-rw-r--r--framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceListener.java1
-rw-r--r--framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/dialogs/AddBuddyDialog.java34
-rw-r--r--framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/RosterView.java183
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/container/XMPPClientSOContainer.java10
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/container/XMPPPresenceSharedObject.java11
6 files changed, 202 insertions, 48 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 818304003..6593fc7ac 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
@@ -433,6 +433,14 @@ public class Client {
messageSender = null;
rosterView = null;
}
+
+ public void handleSetRosterEntry(final IRosterEntry entry) {
+ Display.getDefault().syncExec(new Runnable() {
+ public void run() {
+ rosterView.handleSetRosterEntry(entry);
+ }
+ });
+ }
});
pc.addSubscribeListener(new ISubscribeListener() {
@@ -458,7 +466,7 @@ public class Client {
int selected = (selectedGroup==null)?-1:g.indexOf(selectedGroup);
AddBuddyDialog sg = new AddBuddyDialog(ww.getShell(),fromID.getName(),groupNames,selected);
sg.open();
- if (sg.getReturnCode() == Window.OK) {
+ if (sg.getResult() == Window.OK) {
String group = sg.getGroup();
String user = sg.getUser();
String nickname = sg.getNickname();
@@ -490,7 +498,6 @@ public class Client {
}
public void handleUnsubscribeRequest(ID fromID, IPresence presence) {
- System.out.println("unsubscribe request from "+fromID);
if (presenceSender != null) {
presenceSender.sendPresenceUpdate(localUser,fromID,new Presence(IPresence.Type.UNSUBSCRIBED));
}
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 347f847ba..d17d4ac5e 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
@@ -16,6 +16,7 @@ public interface IPresenceListener {
public void handleContainerJoined(ID joinedContainer);
public void handleRosterEntry(IRosterEntry entry);
+ public void handleSetRosterEntry(IRosterEntry entry);
public void handlePresence(ID fromID, IPresence presence);
public void handleContainerDeparted(ID departedContainer);
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 dc17b8c7e..da75ca73d 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
@@ -2,10 +2,16 @@ package org.eclipse.ecf.ui.dialogs;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
@@ -23,11 +29,13 @@ public class AddBuddyDialog extends Dialog {
private String [] existing = null;
private int selectedGroup = -1;
- private int result;
+ private int result = Window.CANCEL;
- private String userresult = null;
- private String nicknameresult = null;
- private String groupsresult = null;
+ private String userresult = "";
+ private String nicknameresult = "";
+ private String groupsresult = "";
+
+ Button okButton = null;
public AddBuddyDialog(Shell parentShell,String username, String [] existingGroups, int selectedGroup) {
super(parentShell);
@@ -56,6 +64,13 @@ public class AddBuddyDialog extends Dialog {
usertext.setText(user);
usertext.setEnabled(false);
}
+ usertext.addModifyListener(new ModifyListener() {
+
+ public void modifyText(ModifyEvent e) {
+ if (usertext.getText().length() > 3 && usertext.getText().indexOf("@") != -1) {
+ okButton.setEnabled(true);
+ }
+ }});
final Label label_1 = new Label(composite, SWT.NONE);
label_1.setText("Group:");
@@ -86,9 +101,13 @@ public class AddBuddyDialog extends Dialog {
protected void createButtonsForButtonBar(Composite parent) {
createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL,
- true);
+ false);
createButton(parent, IDialogConstants.CANCEL_ID,
- IDialogConstants.CANCEL_LABEL, false);
+ IDialogConstants.CANCEL_LABEL, true);
+ okButton = getButton(IDialogConstants.OK_ID);
+ if (okButton != null) {
+ okButton.setEnabled(false);
+ }
}
public String getGroup() {
return groupsresult;
@@ -109,6 +128,9 @@ public class AddBuddyDialog extends Dialog {
groupsresult = groups.getText();
close();
}
+ public int getResult() {
+ return result;
+ }
protected void configureShell(Shell newShell) {
super.configureShell(newShell);
newShell.setText("Add Buddy");
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 078112df5..592bc017f 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
@@ -32,6 +32,7 @@ import org.eclipse.ecf.presence.IPresenceListener;
import org.eclipse.ecf.presence.IRosterEntry;
import org.eclipse.ecf.presence.IRosterGroup;
import org.eclipse.ecf.presence.impl.RosterEntry;
+import org.eclipse.ecf.presence.impl.RosterGroup;
import org.eclipse.ecf.ui.UiPlugin;
import org.eclipse.ecf.ui.UiPluginConstants;
import org.eclipse.ecf.ui.dialogs.AddBuddyDialog;
@@ -75,6 +76,8 @@ public class RosterView extends ViewPart implements IPresenceListener, IMessageL
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 UNFILED_GROUP_NAME = "Unfiled";
+
protected static final int TREE_EXPANSION_LEVELS = 2;
private TreeViewer viewer;
private Action chatAction;
@@ -82,6 +85,7 @@ public class RosterView extends ViewPart implements IPresenceListener, IMessageL
private Action selectedDoubleClickAction;
private Action disconnectAction;
private Action addGroupAction;
+ private Action addBuddyAction;
protected IUser localUser;
protected ILocalInputHandler inputHandler;
@@ -128,7 +132,9 @@ public class RosterView extends ViewPart implements IPresenceListener, IMessageL
public String getName() {
return name;
}
-
+ public void setName(String name) {
+ this.name = name;
+ }
public ID getUserID() {
return userID;
}
@@ -303,7 +309,10 @@ public class RosterView extends ViewPart implements IPresenceListener, IMessageL
IPresence presence = entry.getPresenceState();
TreeBuddy newBuddy = null;
if (oldBuddy==null) newBuddy = new TreeBuddy(name,entry.getUserID(),presence);
- else newBuddy = oldBuddy;
+ else {
+ newBuddy = oldBuddy;
+ if (entry.getName() != null) newBuddy.setName(entry.getName());
+ }
if (presence != null) fillPresence(newBuddy, presence);
else if (oldBuddy == null) newBuddy.addChild(new TreeObject("Account: "+newBuddy.getUserID().getName()));
return newBuddy;
@@ -356,20 +365,17 @@ public class RosterView extends ViewPart implements IPresenceListener, IMessageL
return null;
}
- public TreeBuddy findAndReplaceEntry(TreeParent parent, IRosterEntry entry) {
+ public void addEntry(TreeParent parent, IRosterEntry entry) {
+
TreeBuddy tb = findBuddy(parent,entry);
- TreeBuddy result = createBuddy(tb,entry);
+ TreeBuddy newBuddy = createBuddy(tb,entry);
// If buddy found already, then remove old and add new
if (tb != null) {
TreeParent tbparent = tb.getParent();
tbparent.removeChild(tb);
- tbparent.addChild(result);
+ tbparent.addChild(newBuddy);
}
- return result;
- }
- public void addEntry(TreeParent parent, IRosterEntry entry) {
-
- TreeBuddy newBuddy = findAndReplaceEntry(parent,entry);
+
TreeParent buddyParent = newBuddy.getParent();
if (buddyParent == null) {
@@ -387,12 +393,43 @@ public class RosterView extends ViewPart implements IPresenceListener, IMessageL
parent.addChild(newgrp);
}
} else {
- TreeGroup tg = new TreeGroup("Unfiled");
+ TreeGroup tg = findGroup(parent,UNFILED_GROUP_NAME);
+ if (tg == null) tg = new TreeGroup(UNFILED_GROUP_NAME);
tg.addChild(newBuddy);
parent.addChild(tg);
}
}
}
+ public void replaceEntry(TreeParent parent, IRosterEntry entry) {
+
+ TreeBuddy tb = findBuddy(parent,entry);
+ // If entry already in tree, remove it from current position
+ if (tb != null) {
+ TreeParent tp = (TreeParent) tb.getParent();
+ if (tp != null) tp.removeChild(tb);
+ }
+ // Create new buddy
+ TreeBuddy newBuddy = createBuddy(tb,entry);
+
+ Iterator groups = entry.getGroups();
+ if (groups.hasNext()) {
+ // There's a group associated with entry...so add with group name
+ String groupName = ((IRosterGroup) groups.next()).getName();
+ TreeGroup oldgrp = findGroup(parent,groupName);
+ if (oldgrp != null) {
+ oldgrp.addChild(newBuddy);
+ } else {
+ TreeGroup newgrp = new TreeGroup(groupName);
+ newgrp.addChild(newBuddy);
+ parent.addChild(newgrp);
+ }
+ } else {
+ TreeGroup tg = findGroup(parent,UNFILED_GROUP_NAME);
+ if (tg == null) tg = new TreeGroup(UNFILED_GROUP_NAME);
+ tg.addChild(newBuddy);
+ parent.addChild(tg);
+ }
+ }
public void addGroup(String name) {
if (name == null) return;
@@ -424,6 +461,9 @@ public class RosterView extends ViewPart implements IPresenceListener, IMessageL
public void addEntry(IRosterEntry entry) {
addEntry(root, entry);
}
+ public void replaceEntry(IRosterEntry entry) {
+ replaceEntry(root, entry);
+ }
public void removeRosterEntry(ID entry) {
removeEntry(root,entry);
}
@@ -530,6 +570,8 @@ public class RosterView extends ViewPart implements IPresenceListener, IMessageL
}
private void fillLocalPullDown(IMenuManager manager) {
+ manager.add(addBuddyAction);
+ manager.add(new Separator());
manager.add(addGroupAction);
manager.add(new Separator());
manager.add(chatAction);
@@ -560,6 +602,16 @@ public class RosterView extends ViewPart implements IPresenceListener, IMessageL
tg = (TreeGroup) parent;
}
final TreeGroup treeGroup = tg;
+
+ Action requestAuthUserAction = new Action() {
+ public void run() {
+ requestAuthFrom(tb,treeGroup);
+ }
+ };
+ requestAuthUserAction.setText("Re-Request authorization from "+treeObject.getName());
+ manager.add(requestAuthUserAction);
+
+
Action removeUserAction = new Action() {
public void run() {
removeUserFromGroup(tb,treeGroup);
@@ -570,6 +622,9 @@ public class RosterView extends ViewPart implements IPresenceListener, IMessageL
} else {
removeUserAction.setText("Remove "+treeObject.getName());
}
+ removeUserAction.setImageDescriptor(PlatformUI.getWorkbench()
+ .getSharedImages().getImageDescriptor(
+ ISharedImages.IMG_TOOL_DELETE));
manager.add(removeUserAction);
} else if (treeObject instanceof TreeGroup) {
@@ -584,6 +639,19 @@ public class RosterView extends ViewPart implements IPresenceListener, IMessageL
addUserAction.setImageDescriptor(ImageDescriptor.createFromURL(
UiPlugin.getDefault().find(new Path(ADDGROUP_ICON))));
manager.add(addUserAction);
+
+ Action removeGroupAction = new Action() {
+ public void run() {
+ removeGroup(groupName);
+ }
+ };
+ removeGroupAction.setText("Remove "+treeObject.getName());
+ removeGroupAction.setEnabled(treeGroup.getTotalCount() == 0);
+ removeGroupAction.setImageDescriptor(PlatformUI.getWorkbench()
+ .getSharedImages().getImageDescriptor(
+ ISharedImages.IMG_TOOL_DELETE));
+ if (removeGroupAction.isEnabled()) manager.add(removeGroupAction);
+
}
}
@@ -591,29 +659,51 @@ public class RosterView extends ViewPart implements IPresenceListener, IMessageL
// Other plug-ins can contribute there actions here
manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
}
-
- protected void addUserToGroup(String groupName) {
- String [] groupNames = getGroupNames();
- String selected = getSelectedGroupName();
- int index = -1;
- if (selected != null && selected.equals(groupName)) {
- index = 0;
- }
- AddBuddyDialog sg = new AddBuddyDialog(viewer.getControl().getShell(),null,new String[] { groupName },index);
+
+ protected void openDialogAndSendRequest(String name, String groupName) {
+ String [] groupNames = this.getGroupNames();
+ List g = Arrays.asList(groupNames);
+ int selected = (groupName==null)?-1:g.indexOf(groupName);
+ AddBuddyDialog sg = new AddBuddyDialog(viewer.getControl().getShell(),name,groupNames,selected);
sg.open();
- if (sg.getReturnCode() == Window.OK) {
+ if (sg.getResult() == Window.OK) {
String group = sg.getGroup();
String user = sg.getUser();
String nickname = sg.getNickname();
sg.close();
if (!Arrays.asList(groupNames).contains(group)) {
// create group with name
- addGroup(group);
+ this.addGroup(group);
}
- inputHandler.sendRosterAdd(user,nickname,new String[] { group } );
+ String [] sendGroups = new String [] { group };
+ // Finally, send the information and request subscription
+ inputHandler.sendRosterAdd(user,nickname,sendGroups);
+ addPendingEntry(user,nickname,group);
+ }
+ }
+ protected void requestAuthFrom(TreeBuddy buddy,TreeGroup tg) {
+ if (buddy == null) return;
+ ID buddyID = buddy.getUserID();
+ String name = buddyID.getName();
+ String groupName = (tg==null)?null:tg.getName();
+ if (inputHandler != null) {
+ openDialogAndSendRequest(name,groupName);
}
}
+ protected void addUserToGroup(String groupName) {
+ openDialogAndSendRequest(null,groupName);
+ }
+ protected void addPendingEntry(String user,String nickname,String group) {
+ ID newID = null;
+ try {
+ newID = IDFactory.makeStringID(user);
+ } catch (Exception e) {
+ }
+ IRosterEntry newEntry = new RosterEntry(newID,nickname);
+ newEntry.add(new RosterGroup(group));
+ handleRosterEntry(newEntry);
+ }
protected void removeUserFromGroup(TreeBuddy buddy, TreeGroup group) {
if (inputHandler != null) {
inputHandler.sendRosterRemove(buddy.getUserID());
@@ -627,6 +717,8 @@ public class RosterView extends ViewPart implements IPresenceListener, IMessageL
return treeObject;
}
private void fillLocalToolBar(IToolBarManager manager) {
+ manager.add(addBuddyAction);
+ manager.add(new Separator());
manager.add(addGroupAction);
manager.add(new Separator());
manager.add(chatAction);
@@ -662,7 +754,7 @@ public class RosterView extends ViewPart implements IPresenceListener, IMessageL
}
};
chatAction.setText("Send Instant Message...");
- chatAction.setToolTipText("Send instant message to arbitrary user");
+ chatAction.setToolTipText("Send instant message");
chatAction.setImageDescriptor(ImageDescriptor.createFromURL(
UiPlugin.getDefault().find(new Path(INSTANT_MESSAGE_ICON))));
chatAction.setEnabled(false);
@@ -677,9 +769,7 @@ public class RosterView extends ViewPart implements IPresenceListener, IMessageL
public void run() {
if (inputHandler != null) {
inputHandler.disconnect();
- chatAction.setEnabled(false);
- addGroupAction.setEnabled(false);
- disconnectAction.setEnabled(false);
+ setToolbarEnabled(false);
this.setEnabled(false);
}
}
@@ -692,7 +782,6 @@ public class RosterView extends ViewPart implements IPresenceListener, IMessageL
disconnectAction.setDisabledImageDescriptor(ImageDescriptor.createFromURL(
UiPlugin.getDefault().find(new Path(DISCONNECT_ICON_DISABLED))));
-
addGroupAction = new Action() {
public void run() {
// handle add group operation here
@@ -725,7 +814,18 @@ public class RosterView extends ViewPart implements IPresenceListener, IMessageL
addGroupAction.setEnabled(false);
addGroupAction.setImageDescriptor(ImageDescriptor.createFromURL(
UiPlugin.getDefault().find(new Path(ADDGROUP_ICON))));
- }
+
+ addBuddyAction = new Action() {
+ public void run() {
+ addUserToGroup(null);
+ }
+ };
+ addBuddyAction.setText("Add Buddy...");
+ addBuddyAction.setToolTipText("Add buddy");
+ addBuddyAction.setEnabled(false);
+ addBuddyAction.setImageDescriptor(ImageDescriptor.createFromURL(
+ UiPlugin.getDefault().find(new Path(ADDGROUP_ICON))));
+}
protected ChatWindow openChatWindowForTarget(ID targetID) {
@@ -884,12 +984,15 @@ public class RosterView extends ViewPart implements IPresenceListener, IMessageL
public void setGroup(ID groupManager) {
if (groupManager != null) {
groupID = groupManager;
- disconnectAction.setEnabled(true);
- chatAction.setEnabled(true);
- addGroupAction.setEnabled(true);
+ setToolbarEnabled(true);
}
}
-
+ protected void setToolbarEnabled(boolean enabled) {
+ disconnectAction.setEnabled(enabled);
+ chatAction.setEnabled(enabled);
+ addGroupAction.setEnabled(enabled);
+ addBuddyAction.setEnabled(enabled);
+ }
public void memberDeparted(ID member) {
if (groupID != null) {
if (groupID.equals(member)) {
@@ -969,4 +1072,18 @@ public class RosterView extends ViewPart implements IPresenceListener, IMessageL
disconnectAction.setEnabled(false);
}
+ public void handleSetRosterEntry(IRosterEntry entry) {
+ if (entry == null)
+ return;
+ ViewContentProvider vcp = (ViewContentProvider) viewer
+ .getContentProvider();
+ if (vcp != null) {
+ if (entry.getInterestType() == IRosterEntry.InterestType.REMOVE ||
+ entry.getInterestType() == IRosterEntry.InterestType.NONE) {
+ vcp.removeRosterEntry(entry.getUserID());
+ } else vcp.replaceEntry(entry);
+ refreshView();
+ }
+ }
+
} \ No newline at end of file
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/container/XMPPClientSOContainer.java b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/container/XMPPClientSOContainer.java
index b90845ab1..74b08d705 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/container/XMPPClientSOContainer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/container/XMPPClientSOContainer.java
@@ -90,6 +90,11 @@ public class XMPPClientSOContainer extends ClientSOContainer {
fireContainerEvent(new SharedObjectContainerJoinedEvent(this
.getID(), originalTarget));
}
+ // If we've got the connection then pass it onto shared object also
+ ChatConnection conn = (ChatConnection) getConnection();
+ if (conn != null && sharedObject != null) {
+ sharedObject.setConnection(conn.getXMPPConnection());
+ }
// If we've got roster data then pass it onto shared object
if (serverData != null && serverData instanceof Roster) {
Roster roster = (Roster) serverData;
@@ -97,11 +102,6 @@ public class XMPPClientSOContainer extends ClientSOContainer {
sharedObject.handleRoster(roster);
}
}
- // If we've got the connection then pass it onto shared object also
- ChatConnection conn = (ChatConnection) getConnection();
- if (conn != null && sharedObject != null) {
- sharedObject.setConnection(conn.getXMPPConnection());
- }
return originalTarget;
}
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/container/XMPPPresenceSharedObject.java b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/container/XMPPPresenceSharedObject.java
index 38c417309..13a3cb2af 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/container/XMPPPresenceSharedObject.java
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/container/XMPPPresenceSharedObject.java
@@ -13,6 +13,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Vector;
+
import org.eclipse.ecf.core.ISharedObject;
import org.eclipse.ecf.core.ISharedObjectConfig;
import org.eclipse.ecf.core.ISharedObjectContext;
@@ -30,10 +31,10 @@ import org.eclipse.ecf.presence.IAccountManager;
import org.eclipse.ecf.presence.IMessageListener;
import org.eclipse.ecf.presence.IPresence;
import org.eclipse.ecf.presence.IPresenceListener;
-import org.eclipse.ecf.presence.ISubscribeListener;
import org.eclipse.ecf.presence.IRosterEntry;
import org.eclipse.ecf.presence.IRosterGroup;
import org.eclipse.ecf.presence.ISharedObjectMessageListener;
+import org.eclipse.ecf.presence.ISubscribeListener;
import org.eclipse.ecf.provider.xmpp.Trace;
import org.eclipse.ecf.provider.xmpp.events.IQEvent;
import org.eclipse.ecf.provider.xmpp.events.MessageEvent;
@@ -174,6 +175,12 @@ public class XMPPPresenceSharedObject implements ISharedObject, IAccountManager
}
}
+ protected void fireSetRosterEntry(IRosterEntry entry) {
+ for (Iterator i = presenceListeners.iterator(); i.hasNext();) {
+ IPresenceListener l = (IPresenceListener) i.next();
+ l.handleSetRosterEntry(entry);
+ }
+ }
protected void fireRosterEntry(IRosterEntry entry) {
for (Iterator i = presenceListeners.iterator(); i.hasNext();) {
IPresenceListener l = (IPresenceListener) i.next();
@@ -268,7 +275,7 @@ public class XMPPPresenceSharedObject implements ISharedObject, IAccountManager
for (Iterator i = rosterPacket.getRosterItems(); i.hasNext();) {
IRosterEntry entry = makeRosterEntry((RosterPacket.Item) i
.next());
- fireRosterEntry(entry);
+ fireSetRosterEntry(entry);
}
}
} else {

Back to the top