⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 buddylistpopupmenu.java

📁 JBother是纯Java开发的Jabber(即时消息开源软件)客户端。支持群组聊天
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            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 + -