From 586b29fa09c5d41de77e62a3087e8359b6a1f777 Mon Sep 17 00:00:00 2001 From: Michael Bayne Date: Thu, 14 Oct 2010 15:45:06 +0000 Subject: [PATCH] The ChatDirector requires a MessageManager, so let's promote that to a real CrowdContext service instead of sneaking it into the ChatDirector's constructor. That way other CrowdContext users can make use of the MessageManager as well. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6192 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- .../crowd/chat/client/ChatDirector.java | 17 ++++++----------- .../com/threerings/crowd/util/CrowdContext.java | 8 ++++++++ .../threerings/crowd/client/JabberClient.java | 7 ++++++- .../com/threerings/crowd/client/TestClient.java | 9 ++++++++- 4 files changed, 28 insertions(+), 13 deletions(-) diff --git a/src/java/com/threerings/crowd/chat/client/ChatDirector.java b/src/java/com/threerings/crowd/chat/client/ChatDirector.java index ef7873945..04b64b713 100644 --- a/src/java/com/threerings/crowd/chat/client/ChatDirector.java +++ b/src/java/com/threerings/crowd/chat/client/ChatDirector.java @@ -41,7 +41,6 @@ import com.samskivert.util.ResultListener; import com.samskivert.util.StringUtil; import com.threerings.util.MessageBundle; -import com.threerings.util.MessageManager; import com.threerings.util.Name; import com.threerings.util.TimeUtil; @@ -136,20 +135,19 @@ public class ChatDirector extends BasicDirector * @param msgmgr the message manager via which we do our translations. * @param bundle the message bundle from which we obtain our chat-related translation strings. */ - public ChatDirector (CrowdContext ctx, MessageManager msgmgr, String bundle) + public ChatDirector (CrowdContext ctx, String bundle) { super(ctx); // keep the context around _ctx = ctx; - _msgmgr = msgmgr; _bundle = bundle; // register ourselves as a location observer _ctx.getLocationDirector().addLocationObserver(this); // register our default chat handlers - if (_bundle == null || _msgmgr == null) { + if (_bundle == null || _ctx.getMessageManager() == null) { log.warning("Null bundle or message manager given to ChatDirector"); return; } @@ -161,7 +159,7 @@ public class ChatDirector extends BasicDirector */ protected void registerCommandHandlers () { - MessageBundle msg = _msgmgr.getBundle(_bundle); + MessageBundle msg = _ctx.getMessageManager().getBundle(_bundle); registerCommandHandler(msg, "help", new HelpHandler()); registerCommandHandler(msg, "clear", new ClearHandler()); registerCommandHandler(msg, "speak", new SpeakHandler()); @@ -906,7 +904,7 @@ public class ChatDirector extends BasicDirector */ protected StringBuffer translatedReplacements (String key, StringBuffer buf) { - MessageBundle bundle = _msgmgr.getBundle(_bundle); + MessageBundle bundle = _ctx.getMessageManager().getBundle(_bundle); if (!bundle.exists(key)) { return buf; } @@ -1027,8 +1025,8 @@ public class ChatDirector extends BasicDirector */ protected String xlate (String bundle, String message) { - if (bundle != null && _msgmgr != null) { - MessageBundle msgb = _msgmgr.getBundle(bundle); + if (bundle != null && _ctx.getMessageManager() != null) { + MessageBundle msgb = _ctx.getMessageManager().getBundle(bundle); if (msgb == null) { log.warning("No message bundle available to translate message", "bundle", bundle, "message", message); @@ -1405,9 +1403,6 @@ public class ChatDirector extends BasicDirector /** Provides access to chat-related server-side services. */ protected ChatService _cservice; - /** The message manager. */ - protected MessageManager _msgmgr; - /** The bundle to use for our own internal messages. */ protected String _bundle; diff --git a/src/java/com/threerings/crowd/util/CrowdContext.java b/src/java/com/threerings/crowd/util/CrowdContext.java index 5cca91dbb..7b3ec3ae2 100644 --- a/src/java/com/threerings/crowd/util/CrowdContext.java +++ b/src/java/com/threerings/crowd/util/CrowdContext.java @@ -21,6 +21,8 @@ package com.threerings.crowd.util; +import com.threerings.util.MessageManager; + import com.threerings.presents.util.PresentsContext; import com.threerings.crowd.chat.client.ChatDirector; @@ -49,6 +51,12 @@ public interface CrowdContext extends PresentsContext */ ChatDirector getChatDirector (); + /** + * Returns a reference to the message manager used by the client to generate localized + * messages. + */ + MessageManager getMessageManager (); + /** * When the client enters a new place, the location director creates a * place controller which then creates a place view to visualize the diff --git a/tests/src/java/com/threerings/crowd/client/JabberClient.java b/tests/src/java/com/threerings/crowd/client/JabberClient.java index 081e76808..668fb33d6 100644 --- a/tests/src/java/com/threerings/crowd/client/JabberClient.java +++ b/tests/src/java/com/threerings/crowd/client/JabberClient.java @@ -157,7 +157,7 @@ public class JabberClient _locdir = new LocationDirector(_ctx); _occdir = new OccupantDirector(_ctx); _msgmgr = new MessageManager(MESSAGE_MANAGER_PREFIX); - _chatdir = new ChatDirector(_ctx, _msgmgr, null); + _chatdir = new ChatDirector(_ctx, null); } /** @@ -206,6 +206,11 @@ public class JabberClient return _chatdir; } + public MessageManager getMessageManager () + { + return _msgmgr; + } + public void setPlaceView (PlaceView view) { JPanel panel = (JPanel)view; diff --git a/tests/src/java/com/threerings/crowd/client/TestClient.java b/tests/src/java/com/threerings/crowd/client/TestClient.java index 9c92cae2b..d638cc842 100644 --- a/tests/src/java/com/threerings/crowd/client/TestClient.java +++ b/tests/src/java/com/threerings/crowd/client/TestClient.java @@ -49,7 +49,8 @@ public class TestClient _client = new Client(new UsernamePasswordCreds(new Name(username), "test"), _rqueue); _locdir = new LocationDirector(_ctx); _occdir = new OccupantDirector(_ctx); - _chatdir = new ChatDirector(_ctx, new MessageManager("rsrc"), "global"); + _msgmgr = new MessageManager("rsrc"); + _chatdir = new ChatDirector(_ctx, "global"); // we want to know about logon/logoff _client.addClientObserver(this); @@ -157,6 +158,11 @@ public class TestClient return _chatdir; } + public MessageManager getMessageManager () + { + return _msgmgr; + } + public void setPlaceView (PlaceView view) { // nothing to do because we don't create views @@ -173,6 +179,7 @@ public class TestClient protected LocationDirector _locdir; protected OccupantDirector _occdir; + protected MessageManager _msgmgr; protected ChatDirector _chatdir; protected BasicRunQueue _rqueue = new BasicRunQueue();