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

📄 bsopenwindows.java

📁 一款即时通讯软件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package edu.ou.kmi.buddyspace.gui;

/*
 * BSOpenWindows.java
 *
 * Project: BuddySpace
 * (C) Copyright Knowledge Media Institute 2003
 *
 *
 * Created on 4 November 2003, 13:13
 */

import javax.swing.*;
import java.awt.event.*;
import java.beans.*; // Property change stuff
import java.util.*;
import java.awt.*;

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

import org.jabber.jabberbeans.util.*;

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

/**
 * Stores open windows on exit and restores them when starting.
 *
 * @author  Jiri Komzak, Knowledge Media Institute, Open University, United Kingdom
 */
public class BSOpenWindows implements ActionListener  {
                              
    public static final String PREF_NAME_CONNECTED_PREFIX      = "con-";
    public static final String PREF_NAME_DISCONNECTED_PREFIX   = "discon-";
    public static final String PREF_NAME_OPEN_WINDOW_NUM       = "openWindowNum";
    public static final String PREF_NAME_OPEN_WINDOW_JID       = "openWindowJid";
    public static final String PREF_NAME_OPEN_WINDOW_NAMESPACE = "openWindowNamespace";
    public static final String PREF_NAME_OPEN_WINDOW_WIDTH     = "openWindowWidth";
    public static final String PREF_NAME_OPEN_WINDOW_HEIGHT    = "openWindowHeight";
    public static final String PREF_NAME_OPEN_WINDOW_X         = "openWindowX";
    public static final String PREF_NAME_OPEN_WINDOW_Y         = "openWindowY";
    public static final String PREF_NAME_OPEN_WINDOW_DOCKED    = "openWindowDocked";
    
    private BSMainFrame mainFrame;
    
    private Vector conOpenWindows = null;
    private Vector disconOpenWindows = null;
    
    //private JMenuItem deleteMenuItem;
    
    /** Constructor */
    BSOpenWindows(BSMainFrame mainFrame) {
                    
        this.mainFrame = mainFrame;
        loadOpenWindows();
    }
    
    /** Loads open windows from properties file */
    public void loadOpenWindows() {
        conOpenWindows = new Vector();
        disconOpenWindows = new Vector();
        
        if (mainFrame == null) return;
        
        Properties props = new Properties();
        if (!mainFrame.loadPreferences(props))
            return;
        
        for (int connected = 0; connected <= 1; connected++) {
            String prefix = ((connected == 0)? 
                             PREF_NAME_DISCONNECTED_PREFIX : PREF_NAME_CONNECTED_PREFIX);
            int openWindowsNum = Integer.parseInt(props.getProperty(prefix + PREF_NAME_OPEN_WINDOW_NUM, "0"));
            for (int i=0; i < openWindowsNum; i++) {
                String prefName = new String (prefix + PREF_NAME_OPEN_WINDOW_NAMESPACE + Integer.toString(i+1));
                String namespace = props.getProperty(prefName, "");
                prefName = new String (prefix + PREF_NAME_OPEN_WINDOW_JID + Integer.toString(i+1));
                JID jid = JID.fromString(props.getProperty(prefName, ""));
                prefName = new String (prefix + PREF_NAME_OPEN_WINDOW_WIDTH + Integer.toString(i+1));
                int width = Integer.parseInt(props.getProperty(prefName, "0"));
                prefName = new String (prefix + PREF_NAME_OPEN_WINDOW_HEIGHT + Integer.toString(i+1));
                int height = Integer.parseInt(props.getProperty(prefName, "0"));
                prefName = new String (prefix + PREF_NAME_OPEN_WINDOW_X + Integer.toString(i+1));
                int x = Integer.parseInt(props.getProperty(prefName, "0"));
                prefName = new String (prefix + PREF_NAME_OPEN_WINDOW_Y + Integer.toString(i+1));
                int y = Integer.parseInt(props.getProperty(prefName, "0"));
                prefName = new String (prefix + PREF_NAME_OPEN_WINDOW_DOCKED + Integer.toString(i+1));
                boolean docked = "true".equals(props.getProperty(prefName, "true"));
                
                BSOpenWindow ow = new BSOpenWindow(jid, namespace, x, y, width, height, docked);
                
                if (connected == 0)
                    disconOpenWindows.addElement(ow);
                else
                    conOpenWindows.addElement(ow);
            }
        }
    }
    
    
    /** Saves open windows into properties file */
    protected boolean collectOpenWindows(boolean connected) {
        if (mainFrame == null) return false;
        
        if (connected) {
            conOpenWindows = new Vector();
            mainFrame.addOpenWindows(conOpenWindows, connected);
        }
        else {
            disconOpenWindows = new Vector();
            mainFrame.addOpenWindows(disconOpenWindows, connected);
        }
        
        return true;
    }
    
    
    /** Returns the open windows */
    public Vector getWindows(boolean connected) {
        return connected? conOpenWindows : disconOpenWindows;
    }
    
    
    /** Saves open windows into properties file */
    public boolean saveOpenWindows(boolean connected) {
        if (mainFrame == null) return false;
        
        collectOpenWindows(connected);
        
        Properties props = new Properties();
        if (!mainFrame.loadPreferences(props))
            return false;
        
        String prefix;
        Vector tmpOpenWindows;
        
        if (connected) {
            prefix = PREF_NAME_CONNECTED_PREFIX;
            tmpOpenWindows = conOpenWindows;
        }
        else {
            prefix = PREF_NAME_DISCONNECTED_PREFIX;
            tmpOpenWindows = disconOpenWindows;
        }
        
        int openWindowsNum = (tmpOpenWindows != null)? tmpOpenWindows.size() : 0;
        props.setProperty(prefix + PREF_NAME_OPEN_WINDOW_NUM, Integer.toString(openWindowsNum));
        
        for (int i=0; i < openWindowsNum; i++) {
            BSOpenWindow ow = (BSOpenWindow) tmpOpenWindows.elementAt(i);
            String prefName = new String (prefix + PREF_NAME_OPEN_WINDOW_NAMESPACE + Integer.toString(i+1));
            if (ow.namespace != null)
                props.setProperty(prefName, ow.namespace);
            prefName = new String (prefix + PREF_NAME_OPEN_WINDOW_JID + Integer.toString(i+1));
            if (ow.jid != null)
                props.setProperty(prefName, ow.jid.toString());
            prefName = new String (prefix + PREF_NAME_OPEN_WINDOW_WIDTH + Integer.toString(i+1));
            props.setProperty(prefName, Integer.toString(ow.width));
            prefName = new String (prefix + PREF_NAME_OPEN_WINDOW_HEIGHT + Integer.toString(i+1));
            props.setProperty(prefName, Integer.toString(ow.height));
            prefName = new String (prefix + PREF_NAME_OPEN_WINDOW_X + Integer.toString(i+1));
            props.setProperty(prefName, Integer.toString(ow.x));
            prefName = new String (prefix + PREF_NAME_OPEN_WINDOW_Y + Integer.toString(i+1));
            props.setProperty(prefName, Integer.toString(ow.y));
            prefName = new String (prefix + PREF_NAME_OPEN_WINDOW_DOCKED + Integer.toString(i+1));
            props.setProperty(prefName, (ow.docked? "true" : "false"));
        }
        
        return mainFrame.saveProperties(props);
    }
    
    
    /** Adds bookmark and saves it into preferences file */
    /*public boolean addBookmark(JID jid, String namespace, String name) {
        BSBookmark bm = new BSBookmark(jid, namespace, name);
        if (!bookmarks.contains(bm)) {
            bookmarks.addElement(bm);
            return saveBookmarks();
        }
        return true;
    }*/
    
    
    /** Removes bookmark and saves */
    /*public boolean removeBookmark(JID jid, String namespace) {
        BSBookmark bm = new BSBookmark(jid, namespace, null);
        if (bookmarks.contains(bm)) {
            bookmarks.remove(bm);
            return saveBookmarks();
        }
        return false;
    }*/
    
    
    /** Adds bookmarks int given menu */
    /*public void addBookmarkMenuItems(JMenu menu) {
        addMenuItem = new JMenuItem("Add bookmark...");
        addMenuItem.addActionListener(this);
        menu.add(addMenuItem);
        
        deleteMenuItem = new JMenuItem("Delete bookmark...");
        deleteMenuItem.addActionListener(this);
        menu.add(deleteMenuItem);
        
        menu.add(new JSeparator());
        
        if (bookmarks == null) return;
        /*Hashtable subMenus = new Hashtable();
        for (int i=0; i < bookmarks.size(); i++) {
            BSBookmark bm = (BSBookmark) bookmarks.elementAt(i);
            String friendlyNamespace = (bm.namespace!=null)? bm.namespace : "Others";
            JMenu subMenu = (JMenu) subMenus.get(friendlyNamespace);
            if (subMenu == null) {
                subMenu = new JMenu(friendlyNamespace);
                menu.add(subMenu);
                subMenus.put(friendlyNamespace, subMenu);
            }
            BSJIDActionMenuItem mi = new BSJIDActionMenuItem(bm.name, bm.jid, bm.namespace);
            subMenu.add(mi);
            mi.addActionListener(this);
        }* /
        TreeMap bms = new TreeMap();
        for (int i=0; i < bookmarks.size(); i++) {
            BSBookmark bm = (BSBookmark) bookmarks.elementAt(i);
            String name = bm.name + ((bm.namespace!=null)? bm.namespace : "")
                                  + ((bm.jid!=null)? bm.jid.toString() : "");
            bms.put(name, bm);
        }
        while (!bms.isEmpty()) {
            String name = (String) bms.firstKey();
            BSBookmark bm = (BSBookmark) bms.get(name);
            bms.remove(name);
            BSJIDActionMenuItem mi = new BSJIDActionMenuItem(bm.name, bm.jid, bm.namespace);
            menu.add(mi);
            mi.addActionListener(this);
        }
    }*/
    
    
    /** ActionListener implementation */
    public void actionPerformed(ActionEvent e) {
        /*if (e.getSource() instanceof BSJIDActionMenuItem) {
            if (mainFrame == null) return;
            BSJIDActionMenuItem mi = (BSJIDActionMenuItem) e.getSource();
            mainFrame.performAction(mi.getJID(), mi.getNamespace());
        }
        else if (e.getSource() == deleteMenuItem) {
            BSDeleteBookmarkDialog dlg = new BSDeleteBookmarkDialog(mainFrame, "Delete bookmark", bookmarks.elements());
            dlg.setVisible(true);
            if (dlg.bookmark != null)
                mainFrame.removeBookmark(dlg.bookmark.jid, dlg.bookmark.namespace);
        }
        else if (e.getSource() == addMenuItem) {
            BSAddBookmarkDialog dlg = new BSAddBookmarkDialog(mainFrame, "Add bookmark");
            dlg.setVisible(true);
            if (dlg.name != null)
                mainFrame.addBookmark(dlg.jid, dlg.namespace, dlg.name);
        }*/
    }
    

⌨️ 快捷键说明

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