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

📄 bsstatuswin.java

📁 一款即时通讯软件
💻 JAVA
字号:
package edu.ou.kmi.buddyspace.gui;

/*
 * BSStatusWin.java
 *
 * Project: BuddySpace
 * (C) Copyright Knowledge Media Institute 2002
 *
 *
 * Created on 26 November 2002, 17:56
 */

/*

import org.jabber.jabberbeans.util.*;
*/

import java.util.*;

import org.jabber.jabberbeans.*;
import org.jabber.jabberbeans.Extension.*;

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.border.*;

import edu.ou.kmi.buddyspace.core.*;
import edu.ou.kmi.buddyspace.utils.*;

/**
 * Window for displaying status information.
 * Uses <code>BSMsgWinManager</code> as the manager.
 *
 * @author  Jiri Komzak, Knowledge Media Institute, Open University, United Kingdom
 */
public class BSStatusWin extends DockableWindow 
                         implements ActionListener, BSLogListener {
                                    //RosterListener {
                              
    BSCore core = null;
    //BSRosterBean rosterBean = null;
    
    JPanel mainPanel;
    BSAutoScrollTextPane statusTextPane;
    BSAutoScrollTextPane msgsTextPane;
    //BSAutoScrollTextPane rosterTextPane;
    JButton closeButton;
    JButton dockButton;
    
    /** Constructor */
    BSStatusWin(Frame parent, BSMsgWinManager winMan, String ID, String title,
                Image icon, BSCore core, boolean docked) {
                    
        super(ID, title, icon, docked, winMan);
        
        this.core = core;
        
        if (core != null) {
            core.addLogListener(this);
            /*rosterBean = core.getRosterBean();
            if (rosterBean != null)
                rosterBean.addRosterListener(this);*/
        }
        
        initComponents();
    }
    
    /** Inits components */
    private void initComponents() {
        
        mainPanel = new JPanel(new BorderLayout());
        
        statusTextPane = new BSAutoScrollTextPane(true);
        JScrollPane statusScrollPane = new JScrollPane(statusTextPane);
        //statusScrollPane.setPreferredSize(new Dimension(10, 200));
        statusScrollPane.setBorder(new TitledBorder("Events & Connection"));
        
        msgsTextPane = new BSAutoScrollTextPane(true);
        JScrollPane msgsScrollPane = new JScrollPane(msgsTextPane);
        msgsScrollPane.setBorder(new TitledBorder("Messages"));
        //msgsScrollPane.setPreferredSize(new Dimension(100, 10));
        
        /*rosterTextPane = new BSAutoScrollTextPane(true);
        JScrollPane rosterScrollPane = new JScrollPane(rosterTextPane);
        rosterScrollPane.setBorder(new TitledBorder("Roster"));
        
        JSplitPane bottomSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
                                                    msgsScrollPane, rosterScrollPane);
        bottomSplitPane.setDividerLocation(100);
        JSplitPane mainSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
                                                  statusScrollPane, bottomSplitPane);*/
        JSplitPane mainSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
                                                  statusScrollPane, msgsScrollPane);
        mainSplitPane.setDividerLocation(200);
        
        JPanel buttonsPanel = new JPanel();
        closeButton = new JButton("Close");
        closeButton.addActionListener(this);
        buttonsPanel.add(closeButton);
        
        JPanel checkBoxesPanel = new JPanel();
        Icon icon = new ImageIcon(ClassLoader.getSystemResource(!docked?
                                "images/dock.gif" : "images/float.gif"));
        dockButton = new JButton(icon);
        dockButton.setToolTipText(docked? "Float" : "Dock");
        dockButton.addActionListener(this);
        checkBoxesPanel.add(dockButton);
        if (!OSVersion.isJava1Point4orHigher())
            dockButton.setEnabled(false);
        
        mainPanel.add(mainSplitPane, BorderLayout.CENTER);
        mainPanel.add(checkBoxesPanel, BorderLayout.NORTH);
        mainPanel.add(buttonsPanel, BorderLayout.SOUTH);
        
        setLayout(new BorderLayout());
        add(mainPanel, BorderLayout.CENTER);
    }
    
    /** Handles actions from buttons */
    public void actionPerformed(ActionEvent evt) {
        if (evt.getSource() == closeButton) {
            close();
        }
        
        else if (evt.getSource() == dockButton) {
            if (winMan != null) {
                winMan.setWindowDocked(this, !docked, true);
                Icon icon = new ImageIcon(ClassLoader.getSystemResource(!docked?
                                "images/dock.gif" : "images/float.gif"));
                dockButton.setIcon(icon);
                dockButton.setToolTipText(docked? "Float" : "Dock");
                winMan.selectWindow(this);
            }
        }
    }
    
    public void close() {
        if (winMan != null)
            ((BSMsgWinManager)winMan).showStatusWindow(false, false, null, false);
    }
    
    public void cancelListening() {
        if (core != null)
            core.removeLogListener(this);
        /*if (rosterBean != null)
            rosterBean.removeRosterListener(this);*/
    }
    
    /** Called to log status change or event  */
    public void logStatus(String source, String message) { 
        statusTextPane.append("[" + source + "] ", 
                              BSAutoScrollTextPane.BUDDY_NICK_STYLE);
        statusTextPane.append(message + "\n", 
                              BSAutoScrollTextPane.REGULAR_STYLE);
    }
    /** Called to log received message  */
    public void logMessage(String from, String subject, String body) { 
        msgsTextPane.append("<" + from + "> ", 
                              BSAutoScrollTextPane.MY_NICK_STYLE);
        msgsTextPane.append("[" + subject + "] ", 
                              BSAutoScrollTextPane.BUDDY_NICK_STYLE);
        msgsTextPane.append(body + "\n", 
                              BSAutoScrollTextPane.REGULAR_STYLE);
    }
    
    /** <code>RosterListener</code> function. 
     * Refreshes roster in status window
     */
    /*public void changedRoster(Roster roster) {
        showRoster(roster.items());
    }*/
    
    /** <code>RosterListener</code> function. 
     * Refreshes roster in status window
     */
    /*public void replacedRoster(Roster roster) {
        showRoster(roster.items());
    }*/
    
    /**
     * Displayes roster items in status window.
     */
    /*public void showRoster(Enumeration items) {
        rosterTextPane.clear();
        //Enumeration items = rosterBean.items();
        while (items != null && items.hasMoreElements()) {
            RosterItem ri = (RosterItem) items.nextElement();
            Enumeration groups = ri.enumerateGroups();
            // if no group
            if (groups == null || !groups.hasMoreElements()) {
                rosterTextPane.append("<top level> ", BSAutoScrollTextPane.MY_NICK_STYLE);
                rosterTextPane.append(rosterBean.getFriendlyName(ri.getJID()) +
                                      " (" + ri.getJID().toString() + ")\n",
                                      BSAutoScrollTextPane.REGULAR_STYLE);
            }
            // for all groups of roster element
            while (groups != null && groups.hasMoreElements()) {
                String gr = (String) groups.nextElement();
                rosterTextPane.append("<" + gr + "> ", BSAutoScrollTextPane.MY_NICK_STYLE);
                rosterTextPane.append(rosterBean.getFriendlyName(ri.getJID()) +
                                      " (" + ri.getJID().toString() + ")\n",
                                      BSAutoScrollTextPane.REGULAR_STYLE);
            }
        }
    }*/
    
    /** Called to log received packet  */
    public void logReceivedXML(String message) { }
    /** Called to log packet sent failure  */
    public void logSendFailedXML(String message) { }
    /** Called to log sent packet  */
    public void logSentXML(String message) { }
    
}

⌨️ 快捷键说明

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