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

📄 bsmainframe.java

📁 一款即时通讯软件
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
        messageMenuItem.addActionListener(this);
        prefsMenuItem.addActionListener(this);
        exitMenuItem.addActionListener(this);

        onlinePresenceMenuItem.addActionListener(this);
        chatPresenceMenuItem.addActionListener(this);
        elsePresenceMenuItem.addActionListener(this);
        busyPresenceMenuItem.addActionListener(this);
        awayPresenceMenuItem.addActionListener(this);
        xaPresenceMenuItem.addActionListener(this);
        dndPresenceMenuItem.addActionListener(this);
        customPresenceMenuItem.addActionListener(this);

        refreshRosterMenuItem.addActionListener(this);
        addContactMenuItem.addActionListener(this);
        changeContactMenuItem.addActionListener(this);
        deleteContactMenuItem.addActionListener(this);

        onlyOnlineMenuItem.addActionListener(this);
        autoPopupMenuItem.addActionListener(this);
        showMsgsMenuItem.addActionListener(this);
        forceMsgsIntoChatMenuItem.addActionListener(this);
        showStatusMenuItem.addActionListener(this);
        showDebugMenuItem.addActionListener(this);
        compactViewMenuItem.addActionListener(this);
        dockWindowsMenuItem.addActionListener(this);

        aboutMenuItem.addActionListener(this);
        updatesMenuItem.addActionListener(this);
    }


    /** Changes the GUI according to the connection state */
    protected void setGUIforConnectionState(boolean connected) {
        setConnectButton(connected);
        connectMenuItem.setEnabled(!connected);
        disconnectMenuItem.setEnabled(connected);
        enableMenus(connected);
        addContactButton.setEnabled(connected);
        delContactButton.setEnabled(connected);
        expandGroupsButton.setEnabled(connected);
    }


    /** Sets state of the button for expanding/colapsing groups */
    protected void setExpendGroupsButton(boolean expanded) {
        Icon icon = new ImageIcon(ClassLoader.getSystemResource(expanded?
                                "images/collapse2.gif" : "images/expand3.gif"));
        expandGroupsButton.setIcon(icon);
        expandGroupsButton.setSelected(!expanded);
        expandGroupsButton.setToolTipText(expanded?
                                   "Expand all groups" : "Collapse all groups");
    }


    /** Sets state of button for (dis)connecting */
    protected void setConnectButton(boolean connected) {
        Icon icon = new ImageIcon(ClassLoader.getSystemResource(connected?
                               "images/disconnect.gif" : "images/connect.gif"));
        connectButton.setIcon(icon);
        connectButton.setToolTipText(connected? "Disconnect" : "Connect");
        connectButton.setSelected(connected);
    }


    /**
     * En/disables menus (dependent on connection).
     */
    private void enableMenus(boolean enable) {
        connectMenuItem.setEnabled(!enable);
        disconnectMenuItem.setEnabled(enable);
        chatMenuItem.setEnabled(enable);
        messageMenuItem.setEnabled(enable);

        customPresenceMenuItem.setEnabled(enable);
        onlinePresenceMenuItem.setEnabled(enable);
        chatPresenceMenuItem.setEnabled(enable);
        elsePresenceMenuItem.setEnabled(enable);
        busyPresenceMenuItem.setEnabled(enable);
        awayPresenceMenuItem.setEnabled(enable);
        xaPresenceMenuItem.setEnabled(enable);
        dndPresenceMenuItem.setEnabled(enable);

        refreshRosterMenuItem.setEnabled(enable);
        addContactMenuItem.setEnabled(enable);
        changeContactMenuItem.setEnabled(enable);
        deleteContactMenuItem.setEnabled(enable);
    }


    /**
     * Inits the given look and feel.
     */
    private void initLAF() {
        if (currentLookAndFeel == null || currentLookAndFeel.equals("")) return;
        try {
            if (currentLookAndFeel.equals("aqua")) {
                Skin skin = SkinLookAndFeel.loadSkin("./aquatheme/gtk/gtkrc");
                SkinLookAndFeel.setSkin(skin);
                UIManager.setLookAndFeel("com.l2fprod.gui.plaf.skin.SkinLookAndFeel");
            }

            else {
                UIManager.setLookAndFeel(currentLookAndFeel);
                //added this to specifically set the scroll bar color - the scroll
                // bar was not always apparent - prob due to a swing bug in the way
                // the windows class sets the scroll bar color. - bz - 5/8/00
                /*if (currentLookAndFeel.equals(windowsClassName))
                UIManager.put("ScrollBar.track", new Color(224, 224, 224));    */
            }

            SwingUtilities.updateComponentTreeUI(this);
            if (msgWinMan != null)
                msgWinMan.updateLAF();
            if (chatWinMan != null)
                chatWinMan.updateLAF();
            if (plugins != null)
                plugins.updateLAF();
        }
        catch (Exception ex) {
            //ex.printStackTrace();
            System.err.println ("Could not swap LookAndFeel: " + currentLookAndFeel);
        }
    }


    /**
     * Handles action events from components.
     */
    public void actionPerformed(ActionEvent evt) {
        Object source = evt.getSource();

        // starts (dis)connecting
        if (source == connectButton ||
            source == connectMenuItem || source == disconnectMenuItem) {
            boolean connect;
            if (source == connectMenuItem) connect = true;
            else if (source == disconnectMenuItem) connect = false;
            else {
                if (core == null) return;
                ConnectionEvent.EState connState = core.getConnectionState();
                //if (connState == ConnectionEvent.STATE_CONNECTING) return;
                connect = (connState == ConnectionEvent.STATE_DISCONNECTED);
            }
            connect(connect);
        }

        // refreshes roster
        else if (/*source == rosterButton ||*/ source == refreshRosterMenuItem) {
            if (rosterBean != null) rosterBean.refreshRoster();
        }

        // expand roster tree groups
        else if (source == expandGroupsButton) {
            if (rosterTree != null) {
                if (expandGroups)
                    rosterTree.expandAllGroups();
                else
                    rosterTree.collapseAllGroups();
            }
            expandGroups = !expandGroups;
            setExpendGroupsButton(expandGroups);
        }

        // open dialog for adding contact
        else if (source == addContactButton || source == addContactMenuItem) {
            BSAddContactDialog dlg = new BSAddContactDialog(this, rosterBean, presenceBean);
            /*BSAddContactDialog dlg = new BSAddContactDialog(this, true, false,
                                                            rosterBean, presenceBean);*/
            dlg.setVisible(true);
        }

        // opens dialog for changing contact
        else if (source == changeContactMenuItem) {
            if (rosterTree != null)
                rosterTree.changeContact();
        }

        // deletes contact
        else if (source == deleteContactMenuItem || source == delContactButton) {
            if (rosterTree != null)
                rosterTree.deleteContact();
        }

        // opens dialog for opening chat and then the chat window
        else if (source == chatMenuItem) {
            Enumeration jids = (rosterBean != null)? rosterBean.entries():
                                                     new Vector().elements();
            BSChooseJIDDialog dlg = new BSChooseJIDDialog(this, "Open chat", jids);
            dlg.show();
            if (dlg.jid != null)
                openChatWindow(dlg.jid, true, true);
        }

        // opens compose message window
        else if (source == messageMenuItem) {
            msgWinMan.composeMessage(new Vector().elements(), new Vector().elements());
        }

        // opens dialog for custom presence specification
        else if (source == customPresenceMenuItem) {
            BSPresenceDialog dlg = new BSPresenceDialog(this, presenceBean);
            dlg.show();
            if (dlg.show != null) {
                setPresence(dlg.show, dlg.status, false);
            }
        }

        // changes onlyOnline displaying in roster tree
        else if (source == onlyOnlineButton || source == onlyOnlineMenuItem) {
            onlyOnline = !onlyOnline;
            onlyOnlineMenuItem.setSelected(onlyOnline);
            onlyOnlineButton.setSelected(onlyOnline);
            ImageIcon icon = new ImageIcon(ClassLoader.getSystemResource(onlyOnline?
                            "images/online_users.gif": "images/all_users.gif"));
            onlyOnlineButton.setIcon(icon);
            onlyOnlineButton.setToolTipText(onlyOnline?
                                   "Show all users" : "Show only online");
            rosterTree.setOnlyOnline(onlyOnline);
        }

        // switches between compact/full view
        else if (source == compactViewMenuItem || source == compactButton) {
            compactView = !compactView;
            compactViewMenuItem.setSelected(compactView);
            ImageIcon icon = new ImageIcon(ClassLoader.getSystemResource(compactView?
                            "images/compactview.gif" : "images/fullview.gif"));
            compactButton.setIcon(icon);
            compactButton.setSelected(compactView);
            compactButton.setToolTipText(compactView?
                                   "Full view" : "Compact view");
            changeViewType(compactView);
        }

        // changes layout for tabs
        else if (/*source == scrollTabsCheckBox ||*/ source == scrollTabsMenuItem) {
            scrollTabs = !scrollTabs;
            scrollTabsMenuItem.setSelected(scrollTabs);
            //scrollTabsCheckBox.setSelected(scrollTabs);
            if (OSVersion.isJava1Point4orHigher())
                mainTabbedPane.setTabLayoutPolicy(scrollTabs?
                   JTabbedPane.SCROLL_TAB_LAYOUT : JTabbedPane.WRAP_TAB_LAYOUT);
        }

        // changes autoPopup for messages
        else if (source == autoPopupMenuItem) {
            autoSelectChat = !autoSelectChat;
            autoPopupMenuItem.setSelected(autoSelectChat);
        }

        // exits the application
        else if (source == exitMenuItem) {
            close();
        }

        // sets presences
        else if (source == onlinePresenceMenuItem) {
            setPresence(SHOW_ONLINE_STR, null, true);
        }
        else if (source == chatPresenceMenuItem) {
            setPresence(SHOW_CHAT_STR, null, true);
        }
        else if (source == busyPresenceMenuItem) {
            setPresence(SHOW_ONLINE_STR, STATUS_BUSY_STR, true);
        }
        else if (source == elsePresenceMenuItem) {
            setPresence(SHOW_ONLINE_STR, STATUS_ELSE_STR, true);
        }
        else if (source == awayPresenceMenuItem) {
            setPresence(SHOW_AWAY_STR, null, true);
        }
        else if (source == xaPresenceMenuItem) {
            setPresence(SHOW_XA_STR, null, true);
        }
        else if (source == dndPresenceMenuItem) {
            setPresence(SHOW_DND_STR, null, true);
        }

        // changes docking of windows
        else if (source == dockWindowsMenuItem) {
            dockWindows = !dockWindows;
            dockWindowsMenuItem.setSelected(dockWindows);
        }

        // changes (not)displaying of debug tab
        else if (source == showDebugMenuItem) {
            showDebug = !showDebug;
            msgWinMan.showDebugWindow(showDebug, true, core, dockWindows);
        }

        // changes (not)displaying of messages tab
        else if (source == showMsgsMenuItem) {
            showMsgs = !showMsgs;
            msgWinMan.showMessagesWindow(showMsgs, true, dockWindows);
        }

        // changes (not)displaying of messages tab
        else if (source == forceMsgsIntoChatMenuItem) {
            forceMsgsIntoChat = !forceMsgsIntoChat;
            //msgWinMan.showMessagesWindow(showMsgs, true, dockWindows);
        }

        // changes (not)displaying of status tab
        else if (source == showStatusMenuItem) {
            showStatus = !showStatus;
            msgWinMan.showStatusWindow(showStatus, true, core, dockWindows);
        }

        // displays about dialog
        else if (source == aboutMenuItem) {
            BSAboutDialog dlg = new BSAboutDialog(this);
            dlg.show();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -