diff options
Diffstat (limited to 'indra/newview/llpanelgrouproles.h')
| -rw-r--r-- | indra/newview/llpanelgrouproles.h | 762 | 
1 files changed, 381 insertions, 381 deletions
diff --git a/indra/newview/llpanelgrouproles.h b/indra/newview/llpanelgrouproles.h index 3fa96213e5..cd995c874e 100644 --- a/indra/newview/llpanelgrouproles.h +++ b/indra/newview/llpanelgrouproles.h @@ -1,381 +1,381 @@ -/**  - * @file llpanelgrouproles.h - * @brief Panel for roles information about a particular group. - * - * $LicenseInfo:firstyear=2006&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -#ifndef LL_LLPANELGROUPROLES_H -#define LL_LLPANELGROUPROLES_H - -#include "llpanelgroup.h" - -class LLFilterEditor; -class LLNameListCtrl; -class LLPanelGroupSubTab; -class LLPanelGroupMembersSubTab; -class LLPanelGroupRolesSubTab; -class LLPanelGroupActionsSubTab; -class LLScrollListCtrl; -class LLScrollListItem; -class LLTextEditor; - -typedef std::map<std::string,std::string> icon_map_t; - - -class LLPanelGroupRoles : public LLPanelGroupTab -{ -public: -	LLPanelGroupRoles(); -	virtual ~LLPanelGroupRoles(); - -	// Allow sub tabs to ask for sibling controls. -	friend class LLPanelGroupMembersSubTab; -	friend class LLPanelGroupRolesSubTab; -	friend class LLPanelGroupActionsSubTab; - -	virtual bool postBuild(); -	virtual bool isVisibleByAgent(LLAgent* agentp); - -	 -	bool handleSubTabSwitch(const LLSD& data); - -	// Checks if the current tab needs to be applied, and tries to switch to the requested tab. -	bool attemptTransition(); -	 -	// Switches to the requested tab (will close() if requested is NULL) -	void transitionToTab(); - -	// Used by attemptTransition to query the user's response to a tab that needs to apply.  -	bool handleNotifyCallback(const LLSD& notification, const LLSD& response); -	bool onModalClose(const LLSD& notification, const LLSD& response); - -	// Most of these messages are just passed on to the current sub-tab. -	virtual void activate(); -	virtual void deactivate(); -	virtual bool needsApply(std::string& mesg); -	virtual bool hasModal(); -	virtual bool apply(std::string& mesg); -	virtual void cancel(); -	virtual void update(LLGroupChange gc); - -	virtual void setGroupID(const LLUUID& id); - -protected: -	LLPanelGroupTab*		mCurrentTab; -	LLPanelGroupTab*		mRequestedTab; -	LLTabContainer*	mSubTabContainer; -	bool					mFirstUse; - -	std::string				mDefaultNeedsApplyMesg; -	std::string				mWantApplyMesg; -}; - - -class LLPanelGroupSubTab : public LLPanelGroupTab -{ -public: -	LLPanelGroupSubTab(); -	virtual ~LLPanelGroupSubTab(); - -	virtual bool postBuild(); - -	// This allows sub-tabs to collect child widgets from a higher level in the view hierarchy. -	virtual bool postBuildSubTab(LLView* root); - -	virtual void setSearchFilter( const std::string& filter ); - -	virtual void activate(); -	virtual void deactivate(); - -	// Helper functions -	bool matchesActionSearchFilter(std::string action); - - -	void setFooterEnabled(bool enable); - -	virtual void setGroupID(const LLUUID& id); -protected: -	void buildActionsList(LLScrollListCtrl* ctrl, -								 U64 allowed_by_some, -								 U64 allowed_by_all, -						  		 LLUICtrl::commit_callback_t commit_callback, -								 bool show_all, -								 bool filter, -								 bool is_owner_role); -	void buildActionCategory(LLScrollListCtrl* ctrl, -									U64 allowed_by_some, -									U64 allowed_by_all, -									LLRoleActionSet* action_set, -									LLUICtrl::commit_callback_t commit_callback, -									bool show_all, -									bool filter, -									bool is_owner_role); - -protected: -	LLPanel* mHeader; // Might not be present in xui of derived class (NULL) -	LLPanel* mFooter; - -	LLFilterEditor*	mSearchEditor; -    boost::signals2::connection mSearchCommitConnection; - -	std::string mSearchFilter; - -	icon_map_t	mActionIcons; - -	bool mActivated; -	 -	bool mHasGroupBanPower; // Used to communicate between action sets due to the dependency between -							// GP_GROUP_BAN_ACCESS and GP_EJECT_MEMBER and GP_ROLE_REMOVE_MEMBER -	 -	void setOthersVisible(bool b); -}; - - -class LLPanelGroupMembersSubTab : public LLPanelGroupSubTab -{ -public: -	LLPanelGroupMembersSubTab(); -	virtual ~LLPanelGroupMembersSubTab(); - -	virtual bool postBuildSubTab(LLView* root); - -	static void onMemberSelect(LLUICtrl*, void*); -	void handleMemberSelect(); - -	static void onMemberDoubleClick(void*); -	void handleMemberDoubleClick(); - -	static void onInviteMember(void*); -	void handleInviteMember(); - -	static void onEjectMembers(void*); -	void handleEjectMembers(); -	void sendEjectNotifications(const LLUUID& group_id, const uuid_vec_t& selected_members); -	bool handleEjectCallback(const LLSD& notification, const LLSD& response); -	void confirmEjectMembers(); - -	static void onRoleCheck(LLUICtrl* check, void* user_data); -	void handleRoleCheck(const LLUUID& role_id, -						 LLRoleMemberChangeType type); - -	static void onBanMember(void* user_data); -	void handleBanMember(); -	bool handleBanCallback(const LLSD& notification, const LLSD& response); -	void confirmBanMembers(); - -	void updateActionDescription(); - -	void applyMemberChanges(); -	bool addOwnerCB(const LLSD& notification, const LLSD& response); - -	virtual void activate(); -	virtual void deactivate(); -	virtual void cancel(); -	virtual bool needsApply(std::string& mesg); -	virtual bool apply(std::string& mesg); -	virtual void update(LLGroupChange gc); -	void updateMembers(); - -	virtual void draw(); - -	virtual void setGroupID(const LLUUID& id); - -	void addMemberToList(LLGroupMemberData* data); -	void onNameCache(const LLUUID& update_id, LLGroupMemberData* member, const LLAvatarName& av_name, const LLUUID& av_id); - -protected: -	typedef std::map<LLUUID, LLRoleMemberChangeType> role_change_data_map_t; -	typedef std::map<LLUUID, role_change_data_map_t*> member_role_changes_map_t; - -	bool matchesSearchFilter(const std::string& fullname); - -	U64  getAgentPowersBasedOnRoleChanges(const LLUUID& agent_id); -	bool getRoleChangeType(const LLUUID& member_id, -						   const LLUUID& role_id, -						   LLRoleMemberChangeType& type); - -	LLNameListCtrl*		mMembersList; -	LLScrollListCtrl*	mAssignedRolesList; -	LLScrollListCtrl*	mAllowedActionsList; -	LLButton*           mEjectBtn; -	LLButton*			mBanBtn; - -	bool mChanged; -	bool mPendingMemberUpdate; -	bool mHasMatch; - -	LLTextEditor*	mActionDescription; - -	member_role_changes_map_t mMemberRoleChangeData; -	U32 mNumOwnerAdditions; - -	LLGroupMgrGroupData::member_list_t::iterator mMemberProgress; -	typedef std::map<LLUUID, boost::signals2::connection> avatar_name_cache_connection_map_t; -	avatar_name_cache_connection_map_t mAvatarNameCacheConnections; -}; - - -class LLPanelGroupRolesSubTab : public LLPanelGroupSubTab -{ -public: -	LLPanelGroupRolesSubTab(); -	virtual ~LLPanelGroupRolesSubTab(); - -	virtual bool postBuildSubTab(LLView* root); - -	virtual void activate(); -	virtual void deactivate(); -	virtual bool needsApply(std::string& mesg); -	virtual bool apply(std::string& mesg); -	virtual void cancel(); -	bool matchesSearchFilter(std::string rolename, std::string roletitle); -	virtual void update(LLGroupChange gc); - -	static void onRoleSelect(LLUICtrl*, void*); -	void handleRoleSelect(); -	void buildMembersList(); - -	static void onActionCheck(LLUICtrl*, void*); -	bool addActionCB(const LLSD& notification, const LLSD& response, LLCheckBoxCtrl* check); -	 -	static void onPropertiesKey(LLLineEditor*, void*); - -	void onDescriptionKeyStroke(LLTextEditor* caller); - -	static void onDescriptionCommit(LLUICtrl*, void*); - -	static void onMemberVisibilityChange(LLUICtrl*, void*); -	void handleMemberVisibilityChange(bool value); - -	static void onCreateRole(void*); -	void handleCreateRole(); - -	static void onCopyRole(void*); -	void handleCopyRole(); - -	static void onDeleteRole(void*); -	void handleDeleteRole(); - -	void updateActionDescription(); - -	void saveRoleChanges(bool select_saved_role); - -	virtual void setGroupID(const LLUUID& id); - -	bool	mFirstOpen; - -protected: -	void handleActionCheck(LLUICtrl* ctrl, bool force); -	LLSD createRoleItem(const LLUUID& role_id, std::string name, std::string title, S32 members); - -	LLScrollListCtrl* mRolesList; -	LLNameListCtrl* mAssignedMembersList; -	LLScrollListCtrl* mAllowedActionsList; -	LLTextEditor* mActionDescription; - -	LLLineEditor* mRoleName; -	LLLineEditor* mRoleTitle; -	LLTextEditor* mRoleDescription; - -	LLCheckBoxCtrl* mMemberVisibleCheck; -	LLButton*       mDeleteRoleButton; -	LLButton*       mCreateRoleButton; -	LLButton*       mCopyRoleButton; - -	LLUUID	mSelectedRole; -	bool	mHasRoleChange; -	std::string mRemoveEveryoneTxt; -}; - - -class LLPanelGroupActionsSubTab : public LLPanelGroupSubTab -{ -public: -	LLPanelGroupActionsSubTab(); -	virtual ~LLPanelGroupActionsSubTab(); - -	virtual bool postBuildSubTab(LLView* root); - - -	virtual void activate(); -	virtual void deactivate(); -	virtual bool needsApply(std::string& mesg); -	virtual bool apply(std::string& mesg); -	virtual void update(LLGroupChange gc); -	virtual void onFilterChanged(); - -	void handleActionSelect(); - -	virtual void setGroupID(const LLUUID& id); -protected: -	LLScrollListCtrl*	mActionList; -	LLScrollListCtrl*	mActionRoles; -	LLNameListCtrl*		mActionMembers; - -	LLTextEditor*	mActionDescription; -}; - - -class LLPanelGroupBanListSubTab : public LLPanelGroupSubTab -{ -public: -	LLPanelGroupBanListSubTab(); -	virtual ~LLPanelGroupBanListSubTab() {} - -	virtual bool postBuildSubTab(LLView* root); - -	virtual void activate(); -	virtual void update(LLGroupChange gc); -	virtual void draw(); - -	static void onBanEntrySelect(LLUICtrl* ctrl, void* user_data); -	void handleBanEntrySelect(); -	 -	static void onCreateBanEntry(void* user_data); -	void handleCreateBanEntry(); -	 -	static void onDeleteBanEntry(void* user_data); -	void handleDeleteBanEntry(); - -	static void onRefreshBanList(void* user_data); -	void handleRefreshBanList(); - -	void onBanListCompleted(bool isComplete); - -protected: -	void setBanCount(U32 ban_count); -	void populateBanList(); - -public: -	virtual void setGroupID(const LLUUID& id); - -protected: -	LLNameListCtrl* mBanList; -	LLButton* mCreateBanButton; -	LLButton* mDeleteBanButton; -	LLButton* mRefreshBanListButton; -	LLTextBase* mBanCountText; - -}; - -#endif // LL_LLPANELGROUPROLES_H +/**
 + * @file llpanelgrouproles.h
 + * @brief Panel for roles information about a particular group.
 + *
 + * $LicenseInfo:firstyear=2006&license=viewerlgpl$
 + * Second Life Viewer Source Code
 + * Copyright (C) 2010, Linden Research, Inc.
 + *
 + * This library is free software; you can redistribute it and/or
 + * modify it under the terms of the GNU Lesser General Public
 + * License as published by the Free Software Foundation;
 + * version 2.1 of the License only.
 + *
 + * This library is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 + * Lesser General Public License for more details.
 + *
 + * You should have received a copy of the GNU Lesser General Public
 + * License along with this library; if not, write to the Free Software
 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 + *
 + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
 + * $/LicenseInfo$
 + */
 +
 +#ifndef LL_LLPANELGROUPROLES_H
 +#define LL_LLPANELGROUPROLES_H
 +
 +#include "llpanelgroup.h"
 +
 +class LLFilterEditor;
 +class LLNameListCtrl;
 +class LLPanelGroupSubTab;
 +class LLPanelGroupMembersSubTab;
 +class LLPanelGroupRolesSubTab;
 +class LLPanelGroupActionsSubTab;
 +class LLScrollListCtrl;
 +class LLScrollListItem;
 +class LLTextEditor;
 +
 +typedef std::map<std::string,std::string> icon_map_t;
 +
 +
 +class LLPanelGroupRoles : public LLPanelGroupTab
 +{
 +public:
 +    LLPanelGroupRoles();
 +    virtual ~LLPanelGroupRoles();
 +
 +    // Allow sub tabs to ask for sibling controls.
 +    friend class LLPanelGroupMembersSubTab;
 +    friend class LLPanelGroupRolesSubTab;
 +    friend class LLPanelGroupActionsSubTab;
 +
 +    virtual bool postBuild();
 +    virtual bool isVisibleByAgent(LLAgent* agentp);
 +
 +
 +    bool handleSubTabSwitch(const LLSD& data);
 +
 +    // Checks if the current tab needs to be applied, and tries to switch to the requested tab.
 +    bool attemptTransition();
 +
 +    // Switches to the requested tab (will close() if requested is NULL)
 +    void transitionToTab();
 +
 +    // Used by attemptTransition to query the user's response to a tab that needs to apply.
 +    bool handleNotifyCallback(const LLSD& notification, const LLSD& response);
 +    bool onModalClose(const LLSD& notification, const LLSD& response);
 +
 +    // Most of these messages are just passed on to the current sub-tab.
 +    virtual void activate();
 +    virtual void deactivate();
 +    virtual bool needsApply(std::string& mesg);
 +    virtual bool hasModal();
 +    virtual bool apply(std::string& mesg);
 +    virtual void cancel();
 +    virtual void update(LLGroupChange gc);
 +
 +    virtual void setGroupID(const LLUUID& id);
 +
 +protected:
 +    LLPanelGroupTab*        mCurrentTab;
 +    LLPanelGroupTab*        mRequestedTab;
 +    LLTabContainer* mSubTabContainer;
 +    bool                    mFirstUse;
 +
 +    std::string             mDefaultNeedsApplyMesg;
 +    std::string             mWantApplyMesg;
 +};
 +
 +
 +class LLPanelGroupSubTab : public LLPanelGroupTab
 +{
 +public:
 +    LLPanelGroupSubTab();
 +    virtual ~LLPanelGroupSubTab();
 +
 +    virtual bool postBuild();
 +
 +    // This allows sub-tabs to collect child widgets from a higher level in the view hierarchy.
 +    virtual bool postBuildSubTab(LLView* root);
 +
 +    virtual void setSearchFilter( const std::string& filter );
 +
 +    virtual void activate();
 +    virtual void deactivate();
 +
 +    // Helper functions
 +    bool matchesActionSearchFilter(std::string action);
 +
 +
 +    void setFooterEnabled(bool enable);
 +
 +    virtual void setGroupID(const LLUUID& id);
 +protected:
 +    void buildActionsList(LLScrollListCtrl* ctrl,
 +                                 U64 allowed_by_some,
 +                                 U64 allowed_by_all,
 +                                 LLUICtrl::commit_callback_t commit_callback,
 +                                 bool show_all,
 +                                 bool filter,
 +                                 bool is_owner_role);
 +    void buildActionCategory(LLScrollListCtrl* ctrl,
 +                                    U64 allowed_by_some,
 +                                    U64 allowed_by_all,
 +                                    LLRoleActionSet* action_set,
 +                                    LLUICtrl::commit_callback_t commit_callback,
 +                                    bool show_all,
 +                                    bool filter,
 +                                    bool is_owner_role);
 +
 +protected:
 +    LLPanel* mHeader; // Might not be present in xui of derived class (NULL)
 +    LLPanel* mFooter;
 +
 +    LLFilterEditor* mSearchEditor;
 +    boost::signals2::connection mSearchCommitConnection;
 +
 +    std::string mSearchFilter;
 +
 +    icon_map_t  mActionIcons;
 +
 +    bool mActivated;
 +
 +    bool mHasGroupBanPower; // Used to communicate between action sets due to the dependency between
 +                            // GP_GROUP_BAN_ACCESS and GP_EJECT_MEMBER and GP_ROLE_REMOVE_MEMBER
 +
 +    void setOthersVisible(bool b);
 +};
 +
 +
 +class LLPanelGroupMembersSubTab : public LLPanelGroupSubTab
 +{
 +public:
 +    LLPanelGroupMembersSubTab();
 +    virtual ~LLPanelGroupMembersSubTab();
 +
 +    virtual bool postBuildSubTab(LLView* root);
 +
 +    static void onMemberSelect(LLUICtrl*, void*);
 +    void handleMemberSelect();
 +
 +    static void onMemberDoubleClick(void*);
 +    void handleMemberDoubleClick();
 +
 +    static void onInviteMember(void*);
 +    void handleInviteMember();
 +
 +    static void onEjectMembers(void*);
 +    void handleEjectMembers();
 +    void sendEjectNotifications(const LLUUID& group_id, const uuid_vec_t& selected_members);
 +    bool handleEjectCallback(const LLSD& notification, const LLSD& response);
 +    void confirmEjectMembers();
 +
 +    static void onRoleCheck(LLUICtrl* check, void* user_data);
 +    void handleRoleCheck(const LLUUID& role_id,
 +                         LLRoleMemberChangeType type);
 +
 +    static void onBanMember(void* user_data);
 +    void handleBanMember();
 +    bool handleBanCallback(const LLSD& notification, const LLSD& response);
 +    void confirmBanMembers();
 +
 +    void updateActionDescription();
 +
 +    void applyMemberChanges();
 +    bool addOwnerCB(const LLSD& notification, const LLSD& response);
 +
 +    virtual void activate();
 +    virtual void deactivate();
 +    virtual void cancel();
 +    virtual bool needsApply(std::string& mesg);
 +    virtual bool apply(std::string& mesg);
 +    virtual void update(LLGroupChange gc);
 +    void updateMembers();
 +
 +    virtual void draw();
 +
 +    virtual void setGroupID(const LLUUID& id);
 +
 +    void addMemberToList(LLGroupMemberData* data);
 +    void onNameCache(const LLUUID& update_id, LLGroupMemberData* member, const LLAvatarName& av_name, const LLUUID& av_id);
 +
 +protected:
 +    typedef std::map<LLUUID, LLRoleMemberChangeType> role_change_data_map_t;
 +    typedef std::map<LLUUID, role_change_data_map_t*> member_role_changes_map_t;
 +
 +    bool matchesSearchFilter(const std::string& fullname);
 +
 +    U64  getAgentPowersBasedOnRoleChanges(const LLUUID& agent_id);
 +    bool getRoleChangeType(const LLUUID& member_id,
 +                           const LLUUID& role_id,
 +                           LLRoleMemberChangeType& type);
 +
 +    LLNameListCtrl*     mMembersList;
 +    LLScrollListCtrl*   mAssignedRolesList;
 +    LLScrollListCtrl*   mAllowedActionsList;
 +    LLButton*           mEjectBtn;
 +    LLButton*           mBanBtn;
 +
 +    bool mChanged;
 +    bool mPendingMemberUpdate;
 +    bool mHasMatch;
 +
 +    LLTextEditor*   mActionDescription;
 +
 +    member_role_changes_map_t mMemberRoleChangeData;
 +    U32 mNumOwnerAdditions;
 +
 +    LLGroupMgrGroupData::member_list_t::iterator mMemberProgress;
 +    typedef std::map<LLUUID, boost::signals2::connection> avatar_name_cache_connection_map_t;
 +    avatar_name_cache_connection_map_t mAvatarNameCacheConnections;
 +};
 +
 +
 +class LLPanelGroupRolesSubTab : public LLPanelGroupSubTab
 +{
 +public:
 +    LLPanelGroupRolesSubTab();
 +    virtual ~LLPanelGroupRolesSubTab();
 +
 +    virtual bool postBuildSubTab(LLView* root);
 +
 +    virtual void activate();
 +    virtual void deactivate();
 +    virtual bool needsApply(std::string& mesg);
 +    virtual bool apply(std::string& mesg);
 +    virtual void cancel();
 +    bool matchesSearchFilter(std::string rolename, std::string roletitle);
 +    virtual void update(LLGroupChange gc);
 +
 +    static void onRoleSelect(LLUICtrl*, void*);
 +    void handleRoleSelect();
 +    void buildMembersList();
 +
 +    static void onActionCheck(LLUICtrl*, void*);
 +    bool addActionCB(const LLSD& notification, const LLSD& response, LLCheckBoxCtrl* check);
 +
 +    static void onPropertiesKey(LLLineEditor*, void*);
 +
 +    void onDescriptionKeyStroke(LLTextEditor* caller);
 +
 +    static void onDescriptionCommit(LLUICtrl*, void*);
 +
 +    static void onMemberVisibilityChange(LLUICtrl*, void*);
 +    void handleMemberVisibilityChange(bool value);
 +
 +    static void onCreateRole(void*);
 +    void handleCreateRole();
 +
 +    static void onCopyRole(void*);
 +    void handleCopyRole();
 +
 +    static void onDeleteRole(void*);
 +    void handleDeleteRole();
 +
 +    void updateActionDescription();
 +
 +    void saveRoleChanges(bool select_saved_role);
 +
 +    virtual void setGroupID(const LLUUID& id);
 +
 +    bool    mFirstOpen;
 +
 +protected:
 +    void handleActionCheck(LLUICtrl* ctrl, bool force);
 +    LLSD createRoleItem(const LLUUID& role_id, std::string name, std::string title, S32 members);
 +
 +    LLScrollListCtrl* mRolesList;
 +    LLNameListCtrl* mAssignedMembersList;
 +    LLScrollListCtrl* mAllowedActionsList;
 +    LLTextEditor* mActionDescription;
 +
 +    LLLineEditor* mRoleName;
 +    LLLineEditor* mRoleTitle;
 +    LLTextEditor* mRoleDescription;
 +
 +    LLCheckBoxCtrl* mMemberVisibleCheck;
 +    LLButton*       mDeleteRoleButton;
 +    LLButton*       mCreateRoleButton;
 +    LLButton*       mCopyRoleButton;
 +
 +    LLUUID  mSelectedRole;
 +    bool    mHasRoleChange;
 +    std::string mRemoveEveryoneTxt;
 +};
 +
 +
 +class LLPanelGroupActionsSubTab : public LLPanelGroupSubTab
 +{
 +public:
 +    LLPanelGroupActionsSubTab();
 +    virtual ~LLPanelGroupActionsSubTab();
 +
 +    virtual bool postBuildSubTab(LLView* root);
 +
 +
 +    virtual void activate();
 +    virtual void deactivate();
 +    virtual bool needsApply(std::string& mesg);
 +    virtual bool apply(std::string& mesg);
 +    virtual void update(LLGroupChange gc);
 +    virtual void onFilterChanged();
 +
 +    void handleActionSelect();
 +
 +    virtual void setGroupID(const LLUUID& id);
 +protected:
 +    LLScrollListCtrl*   mActionList;
 +    LLScrollListCtrl*   mActionRoles;
 +    LLNameListCtrl*     mActionMembers;
 +
 +    LLTextEditor*   mActionDescription;
 +};
 +
 +
 +class LLPanelGroupBanListSubTab : public LLPanelGroupSubTab
 +{
 +public:
 +    LLPanelGroupBanListSubTab();
 +    virtual ~LLPanelGroupBanListSubTab() {}
 +
 +    virtual bool postBuildSubTab(LLView* root);
 +
 +    virtual void activate();
 +    virtual void update(LLGroupChange gc);
 +    virtual void draw();
 +
 +    static void onBanEntrySelect(LLUICtrl* ctrl, void* user_data);
 +    void handleBanEntrySelect();
 +
 +    static void onCreateBanEntry(void* user_data);
 +    void handleCreateBanEntry();
 +
 +    static void onDeleteBanEntry(void* user_data);
 +    void handleDeleteBanEntry();
 +
 +    static void onRefreshBanList(void* user_data);
 +    void handleRefreshBanList();
 +
 +    void onBanListCompleted(bool isComplete);
 +
 +protected:
 +    void setBanCount(U32 ban_count);
 +    void populateBanList();
 +
 +public:
 +    virtual void setGroupID(const LLUUID& id);
 +
 +protected:
 +    LLNameListCtrl* mBanList;
 +    LLButton* mCreateBanButton;
 +    LLButton* mDeleteBanButton;
 +    LLButton* mRefreshBanListButton;
 +    LLTextBase* mBanCountText;
 +
 +};
 +
 +#endif // LL_LLPANELGROUPROLES_H
  | 
