📄 grouppopupmenu.java
字号:
/* author: Lukasz Wiechec */package com.valhalla.jbother.menus;import java.awt.Component;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Locale;import java.util.ResourceBundle;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JPopupMenu;import javax.swing.JTree;import javax.swing.SwingUtilities;import org.jivesoftware.smack.RosterGroup;import com.valhalla.gui.Standard;import com.valhalla.jbother.*;import com.valhalla.jbother.jabber.BuddyGroup;/** * The menu that pops up when you right click on a group in roster * * @author Lukasz Wiechec * @created March 2, 2005 * @version 1.0 */public class GroupPopupMenu extends JPopupMenu { private ResourceBundle resources = ResourceBundle.getBundle( "JBotherBundle", Locale.getDefault()); private JMenuItem sendMessageToGroupItem = new JMenuItem(resources .getString("sendMessageToGroup")); private JMenuItem rename = new JMenuItem(resources.getString("renameGroup")); private String userList; private JTree tree; private BuddyGroup group; /** * Creates the menu */ public GroupPopupMenu() { MenuActionListener listener = new MenuActionListener(); sendMessageToGroupItem.addActionListener(listener); rename.addActionListener(listener); add(sendMessageToGroupItem); add(rename); } /** * Requests sending message to a group */ private void sendMessageToGroupHandler() { // question: how to handle users that not belong to any group? // they are displayed in BuddyListTree in group "Contacts" // 1) get it from the tree! com.valhalla.Logger.debug("message to group handler called!"); MessagePanel groupMessageWindow = new MessagePanel(); groupMessageWindow.setTo(userList.substring(0, userList.length() - 2)); // trim the last "; " groupMessageWindow.setVisible(true); MessageDelegator.getInstance().showPanel(groupMessageWindow); MessageDelegator.getInstance().frontFrame(groupMessageWindow); groupMessageWindow.getSubjectField().grabFocus(); } private void renameHandler() { RosterGroup g = ConnectorThread.getInstance().getRoster() .getGroup(group.getGroupName()); if (g == null) { Standard.warningMessage( BuddyList.getInstance().getContainerFrame(), resources .getString("renameGroup"), resources .getString("cannotRenameGroup")); return; } final String result = (String) JOptionPane.showInputDialog(BuddyList .getInstance().getContainerFrame(), resources .getString("newGroupName"), resources.getString("renameGroup"), JOptionPane.QUESTION_MESSAGE, null, null, ""); if (result == null || result.equals("")) return; new Thread(new RenameThread(result)).start(); } class RenameThread implements Runnable { private String newName; public RenameThread(String name) { this.newName = name; } public void run() { if (!BuddyList.getInstance().checkConnection()) return; RosterGroup g = ConnectorThread.getInstance().getRoster() .getGroup(group.getGroupName()); if (g == null) return; String error = null; try { g.setName(newName); } catch (Exception ex) { error = ex.getMessage(); } final String er = error; try { Thread.sleep(1000); } catch (Exception yo) { } SwingUtilities.invokeLater(new Runnable() { public void run() { if (er != null) { Standard.warningMessage(BuddyList.getInstance() .getContainerFrame(), resources .getString("renameGroup"), er); } BuddyList.getInstance().getBuddyListTree().reloadBuddies(); } }); } } /** * Listens for different items to get clicked on in the popup menu * * @author Adam Olsen * @created March 2, 2005 * @version 1.0 */ class MenuActionListener implements ActionListener { /** * Description of the Method * * @param e * Description of the Parameter */ public void actionPerformed(ActionEvent e) { if (e.getSource() == sendMessageToGroupItem) { sendMessageToGroupHandler(); } else if (e.getSource() == rename) { renameHandler(); } } } /** * Shows the popup menu * * @param tree * the tree to show the menu on * @param x * the x coordinate * @param y * the y coordinate * @param aUserList * the list of users (separated by '; ') to send the message to */ public void showMenu(Component tree, int x, int y, String aUserList, BuddyGroup group) { this.userList = aUserList; this.tree = (JTree) tree; this.group = group; validate(); show(tree, x, y); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -