diff options
| author | slewis | 2005-02-15 06:50:52 +0000 |
|---|---|---|
| committer | slewis | 2005-02-15 06:50:52 +0000 |
| commit | 389107a73aeb45eaf103309690c37a3883bff869 (patch) | |
| tree | 1af5e78782c18306507c786d6cf74ac9ee877e84 | |
| parent | f1effd7530b148fdbd9658f57ef779e39a8988b4 (diff) | |
| download | org.eclipse.ecf-389107a73aeb45eaf103309690c37a3883bff869.tar.gz org.eclipse.ecf-389107a73aeb45eaf103309690c37a3883bff869.tar.xz org.eclipse.ecf-389107a73aeb45eaf103309690c37a3883bff869.zip | |
New IPresenceViewer interface and IRosterViewer interface. Additions/changes Presence class. Added RosterEntry and RosterGroup implementation classes
8 files changed, 263 insertions, 3 deletions
diff --git a/framework/bundles/org.eclipse.ecf.ui/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.ui/META-INF/MANIFEST.MF index f634ebe7d..4e2793b90 100644 --- a/framework/bundles/org.eclipse.ecf.ui/META-INF/MANIFEST.MF +++ b/framework/bundles/org.eclipse.ecf.ui/META-INF/MANIFEST.MF @@ -10,3 +10,5 @@ Require-Bundle: org.eclipse.ui, org.eclipse.ecf, org.eclipse.core.runtime Eclipse-AutoStart: true +Provide-Package: org.eclipse.ecf.ui.presence + diff --git a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/presence/IPresenceViewer.java b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/presence/IPresenceViewer.java new file mode 100644 index 000000000..cc4f61e43 --- /dev/null +++ b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/presence/IPresenceViewer.java @@ -0,0 +1,12 @@ +/* + * Created on Feb 14, 2005 + * + */ +package org.eclipse.ecf.ui.presence; + +import org.eclipse.ecf.core.identity.ID; + +public interface IPresenceViewer extends IRosterViewer { + + public void receivePresence(ID userID, IPresence presence); +} diff --git a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/presence/IRosterEntry.java b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/presence/IRosterEntry.java index 81b6eee6d..272cb3b58 100644 --- a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/presence/IRosterEntry.java +++ b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/presence/IRosterEntry.java @@ -9,12 +9,15 @@ import org.eclipse.ecf.core.identity.ID; public interface IRosterEntry { + public void add(IRosterGroup group); + public void remove(IRosterGroup group); public Iterator getGroups(); public String getName(); public ID getUserID(); public void setName(String name); public InterestType getInterestType(); public IPresence getPresenceState(); + public void setPresenceState(IPresence presence); public static class InterestType { diff --git a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/presence/IRosterGroup.java b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/presence/IRosterGroup.java index 03d6c01c4..47f684783 100644 --- a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/presence/IRosterGroup.java +++ b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/presence/IRosterGroup.java @@ -5,11 +5,12 @@ package org.eclipse.ecf.ui.presence; import java.util.Iterator; -import org.eclipse.ecf.core.identity.ID; +import java.util.Map; public interface IRosterGroup { - public IRosterEntry add(ID entryID, IRosterEntry entry); - public IRosterEntry contains(ID entryID); + public IRosterEntry add(IRosterEntry entry); + public void addAll(Map existing); + public IRosterEntry contains(IRosterEntry entry); public Iterator getRosterEntries(); public int size(); public String getName(); diff --git a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/presence/IRosterViewer.java b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/presence/IRosterViewer.java new file mode 100644 index 000000000..10f98661b --- /dev/null +++ b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/presence/IRosterViewer.java @@ -0,0 +1,10 @@ +/* + * Created on Feb 14, 2005 + * + */ +package org.eclipse.ecf.ui.presence; + +public interface IRosterViewer { + + public void receiveRosterEntry(IRosterEntry entry); +} diff --git a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/presence/Presence.java b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/presence/Presence.java index f586949ae..78578b84a 100644 --- a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/presence/Presence.java +++ b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/presence/Presence.java @@ -56,4 +56,14 @@ public class Presence implements IPresence { return null; } + public String toString() { + StringBuffer sb = new StringBuffer("Presence["); + sb.append("type=").append(type).append(";"); + sb.append("mode=").append(mode).append(";"); + sb.append("priority=").append(priority).append(";"); + sb.append("status=").append(status).append(";"); + sb.append("props=").append(properties).append(";"); + sb.append("]"); + return sb.toString(); + } } diff --git a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/presence/RosterEntry.java b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/presence/RosterEntry.java new file mode 100644 index 000000000..c3d5ab4e7 --- /dev/null +++ b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/presence/RosterEntry.java @@ -0,0 +1,119 @@ +/* + * Created on Feb 14, 2005 + * + */ +package org.eclipse.ecf.ui.presence; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import org.eclipse.ecf.core.identity.ID; + +public class RosterEntry implements IRosterEntry { + + protected ID userID; + protected String name; + protected IPresence presenceState; + protected InterestType interestType; + protected List groups; + + public RosterEntry(ID userID, String name, IPresence presenceState, InterestType interestType, Collection grps) { + this.userID = userID; + this.name = name; + this.presenceState = presenceState; + this.interestType = interestType; + this.groups = new ArrayList(); + if (grps != null) this.groups.addAll(groups); + } + + public RosterEntry(ID userID, String name) { + this(userID,name,null,InterestType.BOTH,null); + } + + public RosterEntry(ID userID, String name, IPresence presenceState) { + this(userID,name,presenceState,InterestType.BOTH,null); + } + public RosterEntry(ID userID, String name, InterestType interestType) { + this(userID,name,null,interestType,null); + } + + /* (non-Javadoc) + * @see org.eclipse.ecf.ui.presence.IRosterEntry#getGroups() + */ + public Iterator getGroups() { + return groups.iterator(); + } + + /* (non-Javadoc) + * @see org.eclipse.ecf.ui.presence.IRosterEntry#getName() + */ + public String getName() { + return name; + } + + /* (non-Javadoc) + * @see org.eclipse.ecf.ui.presence.IRosterEntry#getUserID() + */ + public ID getUserID() { + return userID; + } + + /* (non-Javadoc) + * @see org.eclipse.ecf.ui.presence.IRosterEntry#setName(java.lang.String) + */ + public void setName(String name) { + this.name = name; + } + + /* (non-Javadoc) + * @see org.eclipse.ecf.ui.presence.IRosterEntry#getInterestType() + */ + public InterestType getInterestType() { + return interestType; + } + + /* (non-Javadoc) + * @see org.eclipse.ecf.ui.presence.IRosterEntry#getPresenceState() + */ + public IPresence getPresenceState() { + return presenceState; + } + + /* (non-Javadoc) + * @see org.eclipse.ecf.ui.presence.IRosterEntry#setPresenceState(org.eclipse.ecf.ui.presence.IPresence) + */ + public void setPresenceState(IPresence presence) { + this.presenceState = presence; + } + + /* (non-Javadoc) + * @see org.eclipse.ecf.ui.presence.IRosterEntry#addGroup(org.eclipse.ecf.ui.presence.IRosterGroup) + */ + public void add(IRosterGroup group) { + groups.add(group); + } + + public void addAll(Collection grps) { + groups.addAll(grps); + } + + /* (non-Javadoc) + * @see org.eclipse.ecf.ui.presence.IRosterEntry#remvoe(org.eclipse.ecf.ui.presence.IRosterGroup) + */ + public void remove(IRosterGroup group) { + groups.remove(group); + } + + public String toString() { + StringBuffer sb = new StringBuffer("RosterEntry["); + sb.append("userID=").append(userID).append(";"); + sb.append("name=").append(name).append(";"); + sb.append("presence=").append(presenceState).append(";"); + sb.append("interest=").append(interestType).append(";"); + sb.append("groups=").append(groups).append(";"); + sb.append("]"); + return sb.toString(); + } + +} diff --git a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/presence/RosterGroup.java b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/presence/RosterGroup.java new file mode 100644 index 000000000..03fa37c27 --- /dev/null +++ b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/presence/RosterGroup.java @@ -0,0 +1,103 @@ +/* + * Created on Feb 14, 2005 + * + */ +package org.eclipse.ecf.ui.presence; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import org.eclipse.ecf.core.identity.ID; + +public class RosterGroup implements IRosterGroup { + + protected Map entries; + protected String name; + + public RosterGroup(String name, Map existing) { + super(); + this.name = name; + entries = new HashMap(); + if (existing != null) addAll(existing); + } + + public RosterGroup(String name) { + this(name,null); + } + /* (non-Javadoc) + * @see org.eclipse.ecf.ui.presence.IRosterGroup#add(org.eclipse.ecf.core.identity.ID, org.eclipse.ecf.ui.presence.IRosterEntry) + */ + public IRosterEntry add(IRosterEntry entry) { + if (entry != null) { + synchronized (entries) { + IRosterEntry res = (IRosterEntry) entries.put(entry.getUserID(),entry); + entry.add(this); + return res; + } + } else return null; + } + public void addAll(Map existing) { + synchronized (entries) { + for(Iterator i=existing.entrySet().iterator(); i.hasNext(); ) { + IRosterEntry entry = (IRosterEntry) i.next(); + add(entry); + } + } + } + /* (non-Javadoc) + * @see org.eclipse.ecf.ui.presence.IRosterGroup#contains(org.eclipse.ecf.core.identity.ID) + */ + public IRosterEntry contains(IRosterEntry entry) { + if (entry == null) return null; + synchronized (entries) { + ID uID = entry.getUserID(); + boolean has = entries.containsKey(uID); + if (has) { + return (IRosterEntry) entries.get(uID); + } + } + return null; + } + + /* (non-Javadoc) + * @see org.eclipse.ecf.ui.presence.IRosterGroup#getRosterEntries() + */ + public Iterator getRosterEntries() { + return entries.values().iterator(); + } + + /* (non-Javadoc) + * @see org.eclipse.ecf.ui.presence.IRosterGroup#size() + */ + public int size() { + return entries.size(); + } + + /* (non-Javadoc) + * @see org.eclipse.ecf.ui.presence.IRosterGroup#getName() + */ + public String getName() { + return this.name; + } + + /* (non-Javadoc) + * @see org.eclipse.ecf.ui.presence.IRosterGroup#removeEntry(org.eclipse.ecf.ui.presence.IRosterEntry) + */ + public IRosterEntry removeEntry(IRosterEntry entry) { + synchronized (entries) { + boolean hasEntry = entries.containsValue(entry); + IRosterEntry res = (IRosterEntry) entries.remove(entry.getUserID()); + return res; + } + } + + public String toString() { + StringBuffer sb = new StringBuffer("RosterGroup["); + sb.append("name=").append(name).append(";"); + sb.append("entries=").append(entries).append(";"); + sb.append("]"); + return sb.toString(); + } + + +} |
