📄 bsbookmarks.java
字号:
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 + -