LIBOMV-686 Implements new event patterns based on the Microsoft Framework Design Guidelines in GroupManager

* BREAKING CHANGE * this is a major shift in the way events are internally handled.

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3162 52acb1d6-8a22-11de-b505-999d5b087335
This commit is contained in:
Jim Radford
2009-10-20 20:18:03 +00:00
parent 9f8d0d49f0
commit b0cb77e1e5
12 changed files with 869 additions and 408 deletions

View File

@@ -21,9 +21,9 @@ namespace groupmanager
Dictionary<UUID, GroupTitle> Titles = new Dictionary<UUID,GroupTitle>();
Dictionary<UUID, GroupMemberData> MemberData = new Dictionary<UUID, GroupMemberData>();
Dictionary<UUID, string> Names = new Dictionary<UUID, string>();
GroupManager.GroupProfileCallback GroupProfileCallback;
GroupManager.GroupMembersCallback GroupMembersCallback;
GroupManager.GroupTitlesCallback GroupTitlesCallback;
EventHandler<GroupProfileEventArgs> GroupProfileCallback;
EventHandler<GroupMembersReplyEventArgs> GroupMembersCallback;
EventHandler<GroupTitlesReplyEventArgs> GroupTitlesCallback;
AvatarManager.AvatarNamesCallback AvatarNamesCallback;
public frmGroupInfo(Group group, GridClient client)
@@ -37,18 +37,18 @@ namespace groupmanager
IntPtr temp = Handle;
}
GroupProfileCallback = new GroupManager.GroupProfileCallback(GroupProfileHandler);
GroupMembersCallback = new GroupManager.GroupMembersCallback(GroupMembersHandler);
GroupTitlesCallback = new GroupManager.GroupTitlesCallback(GroupTitlesHandler);
GroupMembersCallback = new EventHandler<GroupMembersReplyEventArgs>(GroupMembersHandler);
GroupProfileCallback = new EventHandler<GroupProfileEventArgs>(GroupProfileHandler);
GroupTitlesCallback = new EventHandler<GroupTitlesReplyEventArgs>(GroupTitlesHandler);
AvatarNamesCallback = new AvatarManager.AvatarNamesCallback(AvatarNamesHandler);
Group = group;
Client = client;
// Register the callbacks for this form
Client.Groups.OnGroupProfile += GroupProfileCallback;
Client.Groups.OnGroupMembers += GroupMembersCallback;
Client.Groups.OnGroupTitles += GroupTitlesCallback;
Client.Groups.GroupProfile += GroupProfileCallback;
Client.Groups.GroupMembersReply += GroupMembersCallback;
Client.Groups.GroupTitlesReply += GroupTitlesCallback;
Client.Avatars.OnAvatarNames += AvatarNamesCallback;
// Request the group information
@@ -60,15 +60,15 @@ namespace groupmanager
~frmGroupInfo()
{
// Unregister the callbacks for this form
Client.Groups.OnGroupProfile -= GroupProfileCallback;
Client.Groups.OnGroupMembers -= GroupMembersCallback;
Client.Groups.OnGroupTitles -= GroupTitlesCallback;
Client.Groups.GroupProfile -= GroupProfileCallback;
Client.Groups.GroupMembersReply -= GroupMembersCallback;
Client.Groups.GroupTitlesReply -= GroupTitlesCallback;
Client.Avatars.OnAvatarNames -= AvatarNamesCallback;
}
private void GroupProfileHandler(Group profile)
private void GroupProfileHandler(object sender, GroupProfileEventArgs e)
{
Profile = profile;
Profile = e.Group;
if (Group.InsigniaID != UUID.Zero)
Client.Assets.RequestImage(Group.InsigniaID, ImageType.Normal,
@@ -213,9 +213,9 @@ namespace groupmanager
}
}
private void GroupMembersHandler(UUID requestID, UUID groupID, Dictionary<UUID, GroupMember> members)
private void GroupMembersHandler(object sender, GroupMembersReplyEventArgs e)
{
Members = members;
Members = e.Members;
UpdateMembers();
}
@@ -256,9 +256,9 @@ namespace groupmanager
}
}
private void GroupTitlesHandler(UUID requestID, UUID groupID, Dictionary<UUID, GroupTitle> titles)
private void GroupTitlesHandler(object sender, GroupTitlesReplyEventArgs e)
{
Titles = titles;
Titles = e.Titles;
UpdateTitles();
}

View File

@@ -28,11 +28,18 @@ namespace groupmanager
Client.Network.OnLogin += new NetworkManager.LoginCallback(Network_OnLogin);
Client.Network.OnEventQueueRunning += new NetworkManager.EventQueueRunningCallback(Network_OnEventQueueRunning);
Client.Groups.OnCurrentGroups += new GroupManager.CurrentGroupsCallback(Groups_OnCurrentGroups);
Client.Groups.CurrentGroups += Groups_CurrentGroups;
InitializeComponent();
}
void Groups_CurrentGroups(object sender, CurrentGroupsEventArgs e)
{
Groups = e.Groups;
Invoke(new MethodInvoker(UpdateGroups));
}
private void UpdateGroups()
{
lock (lstGroups)
@@ -131,14 +138,7 @@ namespace groupmanager
});
}
}
private void Groups_OnCurrentGroups(Dictionary<UUID, Group> groups)
{
Groups = groups;
Invoke(new MethodInvoker(UpdateGroups));
}
private void Network_OnEventQueueRunning(Simulator simulator)
{
if (simulator == Client.Network.CurrentSim)