added MuteObserver interface.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@1828 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -1,8 +1,9 @@
|
|||||||
//
|
//
|
||||||
// $Id: MuteDirector.java,v 1.2 2002/07/27 01:58:57 ray Exp $
|
// $Id: MuteDirector.java,v 1.3 2002/10/25 20:32:41 ray Exp $
|
||||||
|
|
||||||
package com.threerings.crowd.chat;
|
package com.threerings.crowd.chat;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
|
||||||
import com.threerings.crowd.util.CrowdContext;
|
import com.threerings.crowd.util.CrowdContext;
|
||||||
@@ -15,6 +16,18 @@ import com.threerings.crowd.util.CrowdContext;
|
|||||||
public class MuteDirector
|
public class MuteDirector
|
||||||
implements ChatValidator
|
implements ChatValidator
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* An interface that can be registered with the MuteDirector to
|
||||||
|
* receive notifications to the mutelist.
|
||||||
|
*/
|
||||||
|
public static interface MuteObserver
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The specified player was added or removed from the mutelist.
|
||||||
|
*/
|
||||||
|
public void muteChanged (String playername, boolean nowMuted);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Should be instantiated after the ChatDirector.
|
* Should be instantiated after the ChatDirector.
|
||||||
*/
|
*/
|
||||||
@@ -35,6 +48,24 @@ public class MuteDirector
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add the specified mutelist observer.
|
||||||
|
*/
|
||||||
|
public void addMuteObserver (MuteObserver obs)
|
||||||
|
{
|
||||||
|
if (!_observers.contains(obs)) {
|
||||||
|
_observers.add(obs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove the specified mutelist observer.
|
||||||
|
*/
|
||||||
|
public void removeMuteObserver (MuteObserver obs)
|
||||||
|
{
|
||||||
|
_observers.remove(obs);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check to see if the specified user is muted.
|
* Check to see if the specified user is muted.
|
||||||
*/
|
*/
|
||||||
@@ -48,10 +79,8 @@ public class MuteDirector
|
|||||||
*/
|
*/
|
||||||
public void setMuted (String username, boolean mute)
|
public void setMuted (String username, boolean mute)
|
||||||
{
|
{
|
||||||
if (mute) {
|
if (mute ? _mutelist.add(username) : _mutelist.remove(username)) {
|
||||||
_mutelist.add(username);
|
notifyObservers(username, mute);
|
||||||
} else {
|
|
||||||
_mutelist.remove(username);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -72,9 +101,22 @@ public class MuteDirector
|
|||||||
return true; // let it go through..
|
return true; // let it go through..
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Notify our observers of a change in the mutelist.
|
||||||
|
*/
|
||||||
|
protected void notifyObservers (String username, boolean muted)
|
||||||
|
{
|
||||||
|
for (int ii=0, nn=_observers.size(); ii < nn; ii++) {
|
||||||
|
((MuteObserver) _observers.get(ii)).muteChanged(username, muted);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** The chat director that we're working hard for. */
|
/** The chat director that we're working hard for. */
|
||||||
protected ChatDirector _chatdir;
|
protected ChatDirector _chatdir;
|
||||||
|
|
||||||
/** The mutelist. */
|
/** The mutelist. */
|
||||||
protected HashSet _mutelist = new HashSet();
|
protected HashSet _mutelist = new HashSet();
|
||||||
|
|
||||||
|
/** List of mutelist observers. */
|
||||||
|
protected ArrayList _observers = new ArrayList();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user