📄 buddylistpopupmenu.java
字号:
return; } BuddyList.getInstance().getBuddyListTree().removeBuddy(buddy, buddy.getGroup(), true); Standard.noticeMessage(null, resources.getString("blockUser"), resources.getString("userHasBeenBlocked")); } /** * Opens the AddBuddyDialog to modify a buddy */ protected void modifyBuddyHandler() { AddBuddyDialog buddyDialog = new AddBuddyDialog(); buddyDialog.setBuddy(buddy.getRosterEntry()); buddyDialog.setVisible(true); } /** * Confirms buddy removal, and then removes the buddy */ protected void removeBuddyHandler() { if (!BuddyList.getInstance().checkConnection()) { BuddyList.getInstance().connectionError(); return; } int result = 1; result = JOptionPane.showConfirmDialog(null, resources.getString("sureRemoveContact"), resources.getString("removeFromRoster"), JOptionPane.YES_NO_OPTION); if (result != 0) { return; } RosterEntry entry = buddy.getRosterEntry(); buddy.setRemoved(true); String gp = buddy.getGroup(); if (entry != null) { com.valhalla.Logger.debug("Remove entry user: " + entry.getUser()); BuddyList.getInstance().getBuddyListTree().removeBuddy(buddy, gp, true); try { BuddyList.getInstance().getConnection().getRoster().removeEntry(entry); } catch(XMPPException ex) { } RosterPacket packet = new RosterPacket(); packet.setType(IQ.Type.SET); RosterPacket.Item item = new RosterPacket.Item(entry.getUser(), entry.getName()); item.setItemType(RosterPacket.ItemType.REMOVE); packet.addRosterItem(item); // if this buddy is a transport, unregister from it if(entry.getUser().indexOf("@") == -1 ) { Registration r = new Registration(); r.setTo(entry.getUser()); r.setFrom(BuddyList.getInstance().getConnection().getUser()); r.setType(IQ.Type.SET); HashMap map = new HashMap(); map.put("remove", ""); r.setAttributes(map); BuddyList.getInstance().getConnection().sendPacket(r); } BuddyList.getInstance().getConnection().sendPacket(packet); } else { BuddyList.getInstance().getBuddyListTree().removeBuddy(buddy, gp, true); } } /** * Updates the resources menu */ private void updateResourceMenu() { ResourceActionListener listener = new ResourceActionListener(buddy); SendFileActionListener sendListener = new SendFileActionListener(buddy); resourceMenu.removeAll(); sendFileMenu.removeAll(); Set keys = buddy.keySet(); int fileItem = getComponentIndex(sendFileItem); int menu = getComponentIndex(sendFileMenu); if(buddy.size() <= 1 && menu > -1) { remove(menu); insert(sendFileItem, menu); } else if(buddy.size() > 1 && fileItem > -1) { remove(fileItem); insert(sendFileMenu, fileItem); } Iterator i = keys.iterator(); while (i.hasNext()) { boolean na = false; String key = (String) i.next(); if (key.equals("N/A")) { na = true; key = "None"; } JMenuItem item = new JMenuItem(key); JMenuItem item2 = new JMenuItem(key); if (!na) { Presence.Mode mode; if (buddy.size() == 0) { mode = null; item.setForeground(Color.GRAY); item2.setForeground(Color.GRAY); } else { mode = buddy.getPresence(key); } ImageIcon icon = StatusIconCache.getStatusIcon(mode); if (icon != null) { item.setIcon(icon); item2.setIcon(icon); } item.addActionListener(listener); item2.addActionListener(sendListener); } else { item.setEnabled(false); item2.setEnabled(false); } resourceMenu.add(item); if(buddy.size() > 1) sendFileMenu.add(item2); } } private void updateMucMenu() { MUCActionListener listener = new MUCActionListener(buddy); invite.removeAll(); TabFrame frame = BuddyList.getInstance().getTabFrame(); if(frame == null) { invite.add(noItem); return; } TabbedPanel pane = frame.getTabPane(); for( int i = 0; i < pane.getTabCount(); i++ ) { TabFramePanel panel = (TabFramePanel)pane.getTabAt(i).getContentComponent(); if( panel instanceof ChatRoomPanel ) { JMenuItem item = new JMenuItem( ((ChatRoomPanel)panel).getRoomName() ); item.addActionListener(listener); invite.add(item); } } } class MUCActionListener implements ActionListener { BuddyStatus buddy; public MUCActionListener(BuddyStatus b) { this.buddy = b; } public void actionPerformed(ActionEvent e) { JMenuItem item = (JMenuItem)e.getSource(); String room = item.getText(); TabFrame frame = BuddyList.getInstance().getTabFrame(); if(frame == null) return; ChatRoomPanel window = frame.getChatPanel(room); if(window == null) return; window.usersChosen(new String[] { buddy.getUser() }); } } /** * lets user choose the file to send and send it */ private void sendFileHandler() { new FileSendDialog(buddy.getAddress()); } /** * binds Public Key to buddy */ private void bindPubKeyHandler() { KeySelectDialog dialog = new KeySelectDialog("pub"); dialog.showDialog(); if (dialog.getID() != null) { buddy.setPubKey(dialog.getID()); } } /** * unbinds Public Key from buddy */ private void unbindPubKeyHandler() { buddy.setPubKey(null); } /** * Shows the popup menu * *@param tree the tree to show the menu on *@param x the x coordinate *@param y the y coordinate *@param buddy the buddy that this menu should show up on */ public void showMenu(Component tree, int x, int y, BuddyStatus buddy) { this.buddy = buddy; this.tree = (JTree) tree; updateResourceMenu(); updateMucMenu(); updateRosterMenu(); validate(); if (JBotherLoader.isGPGEnabled()) { remove(unbindPubKeyItem); remove(bindPubKeyItem); if (buddy.getPubKey() != null) { add(unbindPubKeyItem); } else { add(bindPubKeyItem); } } show(tree, x, y); } private void updateRosterMenu() { MyExchangeListener listener = new MyExchangeListener(); rosterExchange.removeAll(); rosterExchange.add(entireRoster); rosterExchange.add(individualItems); rosterExchange.addSeparator(); Roster roster = BuddyList.getInstance().getConnection().getRoster(); Iterator i = roster.getGroups(); while(i.hasNext()) { RosterGroup group = (RosterGroup)i.next(); JMenuItem item = new JMenuItem(resources.getString("sendGroup") + ": " + group.getName()); item.addActionListener(listener); rosterExchange.add(item); } } class MyExchangeListener implements ActionListener { public void actionPerformed(ActionEvent e) { Roster roster = BuddyList.getInstance().getConnection().getRoster(); JMenuItem item = (JMenuItem)e.getSource(); RosterExchangeManager manager = ConnectorThread.getInstance().getExchangeManager(); manager.send(roster.getGroup(item.getText().replaceAll("^" + resources.getString("sendGroup") + ": ", "")), buddy.getUser()); } } /** * Listens for a resource to get clicked in the ResourceMenu * *@author synic *@created June 23, 2005 */ class SendFileActionListener implements ActionListener { private BuddyStatus buddy; /** * Constructor for the ResourceActionListener object * *@param buddy Description of the Parameter */ public SendFileActionListener(BuddyStatus buddy) { this.buddy = buddy; } /** * Description of the Method * *@param e Description of the Parameter */ public void actionPerformed(ActionEvent e) { JMenuItem item = (JMenuItem) e.getSource(); new FileSendDialog(buddy.getUser() + "/" + item.getText()); } } /** * Listens for a resource to get clicked in the ResourceMenu * *@author synic *@created June 23, 2005 */ class ResourceActionListener implements ActionListener { private BuddyStatus buddy; /** * Constructor for the ResourceActionListener object * *@param buddy Description of the Parameter */ public ResourceActionListener(BuddyStatus buddy) { this.buddy = buddy; } /** * Description of the Method * *@param e Description of the Parameter */ public void actionPerformed(ActionEvent e) { JMenuItem item = (JMenuItem) e.getSource(); BuddyList.getInstance().getBuddyListTree().initiateConversation(buddy); ChatPanel window = (ChatPanel) buddy.getConversation(); window.getResourceBox().setSelectedItem(item.getText()); window.getResourceBox().validate(); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -