groupchatparticipantlist.java.svn-base
来自「开源项目openfire的完整源程序」· SVN-BASE 代码 · 共 891 行 · 第 1/3 页
SVN-BASE
891 行
}
final ImageIcon inviteIcon = SparkRes.getImageIcon(SparkRes.USER1_BACK_16x16);
addUser(inviteIcon, nickname);
invitees.put(nickname, message);
}
private ImageIcon getImageIcon(String participantJID) {
String nickname = StringUtils.parseResource(participantJID);
ImageIcon icon = SparkRes.getImageIcon(SparkRes.GREEN_BALL);
icon.setDescription(nickname);
return icon;
}
private void addParticipant(String participantJID, Presence presence) {
// Remove reference to invitees
for (String nick : invitees.keySet()) {
String jid = SparkManager.getUserManager().getJIDFromNickname(nick);
Occupant occ = chat.getOccupant(participantJID);
if (occ != null) {
String actualJID = occ.getJid();
if (actualJID.equals(jid)) {
removeUser(nick);
}
}
}
String nickname = StringUtils.parseResource(participantJID);
Occupant occupant = SparkManager.getUserManager().getOccupant(groupChatRoom, nickname);
boolean isOwnerOrAdmin = SparkManager.getUserManager().isOwnerOrAdmin(occupant);
boolean isModerator = SparkManager.getUserManager().isModerator(occupant);
if (!exists(nickname)) {
Icon icon = null;
icon = PresenceManager.getIconFromPresence(presence);
if (icon == null) {
icon = SparkRes.getImageIcon(SparkRes.GREEN_BALL);
}
addUser(icon, nickname);
}
else {
Icon icon = PresenceManager.getIconFromPresence(presence);
if (icon == null) {
icon = SparkRes.getImageIcon(SparkRes.GREEN_BALL);
}
int index = getIndex(nickname);
if (index != -1) {
final JLabel userLabel = new JLabel(nickname, icon, JLabel.HORIZONTAL);
model.setElementAt(userLabel, index);
}
}
}
public void userHasLeft(ChatRoom room, String userid) {
if (room != groupChatRoom) {
return;
}
int index = getIndex(userid);
if (index != -1) {
removeUser(userid);
userMap.remove(userid);
}
}
private boolean exists(String nickname) {
for (int i = 0; i < model.getSize(); i++) {
final JLabel userLabel = (JLabel)model.getElementAt(i);
if (userLabel.getText().equals(nickname)) {
return true;
}
}
return false;
}
private String getSelectedUser() {
JLabel label = (JLabel)participantsList.getSelectedValue();
if (label != null) {
return label.getText();
}
return null;
}
private void startChat(ChatRoom groupChat, String groupJID) {
String userNickname = StringUtils.parseResource(groupJID);
String roomTitle = userNickname + " - " + StringUtils.parseName(groupChat.getRoomname());
String nicknameOfUser = StringUtils.parseResource(groupJID);
String nickname = groupChat.getNickname();
if (nicknameOfUser.equals(nickname)) {
return;
}
ChatRoom chatRoom = null;
try {
chatRoom = chatManager.getChatContainer().getChatRoom(groupJID);
}
catch (ChatRoomNotFoundException e) {
Log.debug("Could not find chat room - " + groupJID);
// Create new room
chatRoom = new ChatRoomImpl(groupJID, nicknameOfUser, roomTitle);
chatManager.getChatContainer().addChatRoom(chatRoom);
}
chatManager.getChatContainer().activateChatRoom(chatRoom);
}
public void tabSelected() {
//To change body of implemented methods use File | Settings | File Templates.
}
public String getTabTitle() {
return Res.getString("title.room.information");
}
public Icon getTabIcon() {
return SparkRes.getImageIcon(SparkRes.SMALL_BUSINESS_MAN_VIEW);
}
public String getTabToolTip() {
return Res.getString("title.room.information");
}
public JComponent getGUI() {
return this;
}
/**
* ****************************************************************
*/
/* MUC Functions */
private void kickUser(String nickname) {
try {
chat.kickParticipant(nickname, Res.getString("message.you.have.been.kicked"));
}
catch (XMPPException e) {
groupChatRoom.insertText(Res.getString("message.kicked.error", nickname));
}
}
private void banUser(String nickname) {
try {
Occupant occupant = chat.getOccupant((String)userMap.get(nickname));
if (occupant != null) {
String bareJID = StringUtils.parseBareAddress(occupant.getJid());
chat.banUser(bareJID, Res.getString("message.you.have.been.banned"));
}
}
catch (XMPPException e) {
Log.error(e);
}
}
private void unbanUser(String jid) {
try {
chat.grantMembership(jid);
}
catch (XMPPException e) {
Log.error(e);
}
}
private void grantVoice(String nickname) {
try {
chat.grantVoice(nickname);
}
catch (XMPPException e) {
Log.error(e);
}
}
private void revokeVoice(String nickname) {
try {
chat.revokeVoice(nickname);
}
catch (XMPPException e) {
Log.error(e);
}
}
private void grantModerator(String nickname) {
try {
chat.grantModerator(nickname);
}
catch (XMPPException e) {
Log.error(e);
}
}
private void revokeModerator(String nickname) {
try {
chat.revokeModerator(nickname);
}
catch (XMPPException e) {
Log.error(e);
}
}
/**
* Let's make sure that the panel doesn't strech past the
* scrollpane view pane.
*
* @return the preferred dimension
*/
public Dimension getPreferredSize() {
final Dimension size = super.getPreferredSize();
size.width = 150;
return size;
}
private void checkPopup(MouseEvent evt) {
Point p = evt.getPoint();
final int index = participantsList.locationToIndex(p);
final JPopupMenu popup = new JPopupMenu();
if (index != -1) {
participantsList.setSelectedIndex(index);
final JLabel userLabel = (JLabel)model.getElementAt(index);
final String selectedUser = userLabel.getText();
final String groupJID = (String)userMap.get(selectedUser);
String groupJIDNickname = StringUtils.parseResource(groupJID);
final String nickname = groupChatRoom.getNickname();
final Occupant occupant = userManager.getOccupant(groupChatRoom, selectedUser);
final boolean admin = SparkManager.getUserManager().isOwnerOrAdmin(groupChatRoom, chat.getNickname());
final boolean moderator = SparkManager.getUserManager().isModerator(groupChatRoom, chat.getNickname());
final boolean userIsAdmin = userManager.isOwnerOrAdmin(occupant);
final boolean userIsModerator = userManager.isModerator(occupant);
boolean isMe = nickname.equals(groupJIDNickname);
// Handle invites
if (groupJIDNickname == null) {
Action inviteAgainAction = new AbstractAction() {
public void actionPerformed(ActionEvent actionEvent) {
String message = invitees.get(selectedUser);
String jid = userManager.getJIDFromNickname(selectedUser);
chat.invite(jid, message);
}
};
inviteAgainAction.putValue(Action.NAME, "Invite Again");
popup.add(inviteAgainAction);
Action removeInvite = new AbstractAction() {
public void actionPerformed(ActionEvent actionEvent) {
int index = getIndex(selectedUser);
if (index != -1) {
model.removeElementAt(index);
}
}
};
removeInvite.putValue(Action.NAME, "Remove");
popup.add(removeInvite);
popup.show(participantsList, evt.getX(), evt.getY());
return;
}
if (isMe) {
Action changeNicknameAction = new AbstractAction() {
public void actionPerformed(ActionEvent actionEvent) {
String newNickname = JOptionPane.showInputDialog(groupChatRoom, Res.getString("label.new.nickname") + ":", Res.getString("title.change.nickname"), JOptionPane.QUESTION_MESSAGE);
if (ModelUtil.hasLength(newNickname)) {
while (true) {
newNickname = newNickname.trim();
String nick = chat.getNickname();
if (newNickname.equals(nick)) {
//return;
}
try {
chat.changeNickname(newNickname);
break;
}
catch (XMPPException e1) {
newNickname = JOptionPane.showInputDialog(groupChatRoom, Res.getString("message.nickname.in.use") + ":", Res.getString("title.change.nickname"), JOptionPane.QUESTION_MESSAGE);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?