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

📄 bsbookmarks.java

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

/*
 * BSBookmarks.java
 *
 * Project: BuddySpace
 * (C) Copyright Knowledge Media Institute 2003
 *
 *
 * Created on 1 April 2003, 16:27
 */

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.*;

/**
 * Maintains bookmarks.
 *
 * @author  Jiri Komzak, Knowledge Media Institute, Open University, United Kingdom
 */
public class BSBookmarks implements ActionListener  {
                              
    public static final String PREF_NAME_BOOKMARK_JID       = "bookmarkJid";
    public static final String PREF_NAME_BOOKMARK_NAMESPACE = "bookmarkNamespace";
    public static final String PREF_NAME_BOOKMARK_NAME      = "bookmarkName";
    public static final String PREF_NAME_BOOKMARK_NUM       = "bookmarkNum";
    
    private BSMainFrame mainFrame;
    
    private Vector bookmarks = null;
    
    private JMenuItem deleteMenuItem;
    private JMenuItem addMenuItem;
    
    /** Constructor */
    BSBookmarks(BSMainFrame mainFrame) {
                    
        this.mainFrame = mainFrame;
        loadBookmarks();
    }
    
    /** Loads bookmarks from properties file */
    public void loadBookmarks() {
        bookmarks = new Vector();
        if (mainFrame == null) return;
        
        Properties props = new Properties();
        if (!mainFrame.loadPreferences(props))
            return;
        
        int bookmarksNum = Integer.parseInt(props.getProperty(PREF_NAME_BOOKMARK_NUM, "0"));
        for (int i=0; i < bookmarksNum; i++) {
            String prefName = new String (PREF_NAME_BOOKMARK_NAMESPACE + Integer.toString(i+1));
            String namespace = props.getProperty(prefName, "");
            prefName = new String (PREF_NAME_BOOKMARK_JID + Integer.toString(i+1));
            JID jid = JID.fromString(props.getProperty(prefName, ""));
            prefName = new String (PREF_NAME_BOOKMARK_NAME + Integer.toString(i+1));
            String name = props.getProperty(prefName, namespace + " to " + jid.toString());
            BSBookmark bm = new BSBookmark(jid, namespace, name);
            bookmarks.addElement(bm);
        }
    }
    
    
    /** Saves bookmarks into properties file */
    public boolean saveBookmarks() {
        if (mainFrame == null) return false;
        
        Properties props = new Properties();
        if (!mainFrame.loadPreferences(props))
            return false;
        
        int bookmarksNum = (bookmarks != null)? bookmarks.size() : 0;
        props.setProperty(PREF_NAME_BOOKMARK_NUM, Integer.toString(bookmarksNum));
        
        for (int i=0; i < bookmarksNum; i++) {
            BSBookmark bm = (BSBookmark) bookmarks.elementAt(i);
            String prefName = new String (PREF_NAME_BOOKMARK_NAMESPACE + Integer.toString(i+1));
            if (bm.namespace != null)
                props.setProperty(prefName, bm.namespace);
            prefName = new String (PREF_NAME_BOOKMARK_NAME + Integer.toString(i+1));
            if (bm.name != null)
                props.setProperty(prefName, bm.name);
            prefName = new String (PREF_NAME_BOOKMARK_JID + Integer.toString(i+1));
            if (bm.jid != null)
                props.setProperty(prefName, bm.jid.toString());
        }
        
        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);
        }
    }
    
    
    public class BSBookmark {
        public JID jid = null;
        public String namespace = null;
        public String name = null;
        
        public BSBookmark(JID jid, String namespace, String name) {
            this.jid = jid;
            this.namespace = namespace;
            this.name = name;
        }
        
        public boolean equals(Object o) {
            if (o == null || !(o instanceof BSBookmark)) return false;
            
            BSBookmark bm = (BSBookmark) o;
            // if just one of jids is null
            if (jid != bm.jid && (jid == null || bm.jid == null)) return false;
            boolean result = (jid == null && bm.jid == null) ||
                             jid.toString().equals(bm.jid.toString());

⌨️ 快捷键说明

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