📄 bsplansplugin.java
字号:
package edu.ou.kmi.buddyspace.plugins.plans;
/*
* BSPlansPlugin.java
*
* Project: BuddySpace
* (C) Copyright Knowledge Media Institute 2003
*
*
* Created on 29 October 2003, 13:10
*/
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
import java.util.*;
import org.jabber.jabberbeans.util.*;
import edu.ou.kmi.buddyspace.core.*;
import edu.ou.kmi.buddyspace.gui.*;
import edu.ou.kmi.buddyspace.plugins.*;
import edu.ou.kmi.buddyspace.plugins.plans.gui.*;
/**
* <code>BSPlanPlugin</code> is main class of plans plugin to BuddySpace.
* It provides methods for plugin loading and user interaction.
*
* @author Jiri Komzak, Knowledge Media Institute, Open University, United Kingdom
*/
public class BSPlansPlugin extends BSPlugin
implements ActionListener, MenuListener {
final static String DEF_PUBSUB_JID_STR = "";
public static final String PREF_NAME_PUBSUB_JID = "planPubsubJID";
public static final String PREF_NAME_SHOW_UPDATES = "planShowUpdates";
public static final String PREF_NAME_ONLY_THIS_RESOURCE = "planOnlyThisResource";
protected JID pubsubJID;
protected boolean showUpdates;
protected boolean onlyThisResource;
private BSPlansBean plansBean;
//private BSMapWinManager mapWinMan;
private JMenu plansMenu;
private JMenuItem publishPlanMenuItem;
private JMenuItem getPlanMenuItem;
private JMenuItem subscribeToPlanMenuItem;
private JMenuItem initPlanMenuItem;
private JTextField pubsubJIDTextField;
private JCheckBox showUpdatesCheckBox;
private JCheckBox onlyThisResourceCheckBox;
/** Constructor */
public BSPlansPlugin(BSMainFrame mainFrame, JTabbedPane tabbedPane, BSCore core) {
super(mainFrame, tabbedPane, core);
}
/** Inits plugin core */
protected void initCore() {
plansBean = new BSPlansBean(mainFrame);
plansBean.setPubsubJID(pubsubJID);
plansBean.setShowUpdates(showUpdates);
plansBean.setOnlyThisResource(onlyThisResource);
}
/** Inits plugin GUI */
protected void initGUI() {
//mapWinMan = new BSMapWinManager(mainFrame, tabbedPane, mapPath);
//mapWinMan.setMapBean(mapBean);
}
protected void loadPreferences() {
String[] names = {PREF_NAME_PUBSUB_JID};
String[] defaults = {DEF_PUBSUB_JID_STR};
Vector prefs = mainFrame.loadPreferences(names, defaults);
if (prefs != null && prefs.size() == 1) {
String pubsubJidStr = (String) prefs.elementAt(0);
if (pubsubJidStr == null || "".equals(pubsubJidStr)) pubsubJID = null;
else pubsubJID = JID.fromString(pubsubJidStr);
}
names = new String[] {PREF_NAME_SHOW_UPDATES, PREF_NAME_ONLY_THIS_RESOURCE};
defaults = new String[] {"false", "false"};
prefs = mainFrame.loadPreferences(names, defaults);
if (prefs != null && prefs.size() == 2) {
String showUpdatesStr = (String) prefs.elementAt(0);
if (showUpdatesStr == null || "".equals(showUpdatesStr)) showUpdates = false;
else showUpdates = "true".equals(showUpdatesStr);
String onlyThisResourceStr = (String) prefs.elementAt(1);
if (onlyThisResourceStr == null || "".equals(onlyThisResourceStr)) onlyThisResource = false;
else onlyThisResource = "true".equals(onlyThisResourceStr);
}
if (plansBean != null) {
plansBean.setPubsubJID(pubsubJID);
plansBean.setShowUpdates(showUpdates);
plansBean.setOnlyThisResource(onlyThisResource);
}
}
/** Adds plugin GUI controls */
protected void addGUIControls() {
plansMenu = new JMenu("Plans");
plansMenu.setMnemonic('p');
//plansMenu.addMenuListener(this);
mainFrame.addPluginJabberMenuItem(plansMenu);
getPlanMenuItem = new JMenuItem("Get plan...");
getPlanMenuItem.addActionListener(this);
plansMenu.add(getPlanMenuItem);
subscribeToPlanMenuItem = new JMenuItem("Suscribe to plan...");
subscribeToPlanMenuItem.addActionListener(this);
plansMenu.add(subscribeToPlanMenuItem);
plansMenu.add(new JSeparator());
publishPlanMenuItem = new JMenuItem("Publish my plan");
publishPlanMenuItem.addActionListener(this);
plansMenu.add(publishPlanMenuItem);
initPlanMenuItem = new JMenuItem("Init my plan");
initPlanMenuItem.addActionListener(this);
plansMenu.add(initPlanMenuItem);
getPlanMenuItem.setEnabled(false);
subscribeToPlanMenuItem.setEnabled(false);
publishPlanMenuItem.setEnabled(false);
initPlanMenuItem.setEnabled(false);
plansMenu.setEnabled(false);
}
/** Connects underlying beans */
protected void connectBeans() {
//mapWinMan.setMapBean(mapBean);
if (core != null) {
//mapWinMan.setRosterBean(core.getRosterBean());
}
}
/** Handles connection change to connected */
public void connected() {
super.connected();
plansMenu.setEnabled(true);
publishPlanMenuItem.setEnabled(true);
getPlanMenuItem.setEnabled(true);
subscribeToPlanMenuItem.setEnabled(true);
initPlanMenuItem.setEnabled(true);
plansBean.conected();
plansBean.setRosterBean(core.getRosterBean());
}
/** Handles connection change to disconnected */
public void disconnected() {
getPlanMenuItem.setEnabled(false);
subscribeToPlanMenuItem.setEnabled(false);
publishPlanMenuItem.setEnabled(false);
initPlanMenuItem.setEnabled(false);
plansMenu.setEnabled(false);
//mapWinMan.closeAllWindows();
//confBean.disconnected();
}
/** Handles actions from GUI controls */
public void actionPerformed(ActionEvent evt) {
// a map menu item - load the map
if (evt.getSource() == publishPlanMenuItem) {
System.out.println("publishPlanMenuItem");
plansBean.publishPlan();
}
else if (evt.getSource() == getPlanMenuItem) {
System.out.println("getPlanMenuItem");
plansBean.getPlan(null);
}
else if (evt.getSource() == subscribeToPlanMenuItem) {
System.out.println("subscribeToPlanMenuItem");
plansBean.subscribeToPlan(null);
}
else if (evt.getSource() == initPlanMenuItem) {
System.out.println("initPlanMenuItem");
plansBean.initPlan();
}
}
/** Empty */
public void menuSelected(MenuEvent evt) { }
/** Empty */
public void menuCanceled(MenuEvent menuEvent) { }
/** Empty */
public void menuDeselected(MenuEvent menuEvent) { }
/** Returns components and their names for display in preferences dialog */
public void getPreferencesTab(Vector components, Vector names) {
GridBagConstraints gbc;
JPanel prefsPanel = new JPanel(new GridBagLayout());
JLabel label = new JLabel("JID of pubsub server component for plans:");
gbc = new GridBagConstraints();
gbc.gridy = 1;
gbc.anchor = GridBagConstraints.WEST;
prefsPanel.add(label, gbc);
pubsubJIDTextField = new JTextField(((pubsubJID == null)? "" : pubsubJID.toString()));
gbc = new GridBagConstraints();
gbc.gridy = 2;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.weightx = 1;
prefsPanel.add(pubsubJIDTextField, gbc);
showUpdatesCheckBox = new JCheckBox("Show plan updates", showUpdates);
gbc = new GridBagConstraints();
gbc.gridy = 3;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.weightx = 1;
prefsPanel.add(showUpdatesCheckBox, gbc);
onlyThisResourceCheckBox = new JCheckBox("Use only with this resource", onlyThisResource);
gbc = new GridBagConstraints();
gbc.gridy = 4;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.weightx = 1;
prefsPanel.add(onlyThisResourceCheckBox, gbc);
components.add(prefsPanel);
names.add("Plans");
}
/** Stores preferences from preferences tab.
*/
public boolean storePreferences() {
String pubsubJidStr = pubsubJIDTextField.getText();
if (pubsubJidStr == null || "".equals(pubsubJidStr)) pubsubJID = null;
else pubsubJID = JID.fromString(pubsubJidStr);
showUpdates = showUpdatesCheckBox.isSelected();
onlyThisResource = onlyThisResourceCheckBox.isSelected();
String[] names = {PREF_NAME_PUBSUB_JID,
PREF_NAME_SHOW_UPDATES,
PREF_NAME_ONLY_THIS_RESOURCE};
String[] values = {pubsubJidStr,
(showUpdates? "true" : "false"),
(onlyThisResource? "true" : "false")};
mainFrame.addAndSavePreferences(names, values);
plansBean.setPubsubJID(pubsubJID);
plansBean.setShowUpdates(showUpdates);
plansBean.setOnlyThisResource(onlyThisResource);
return true;
}
/** Updates LAF of all plug-ins */
public void updateLAF() {
//mapWinMan.updateLAF();
}
/**
* Performs action within given namespace for given JID.
* Returns if action was performed.
*/
public boolean performAction(JID jid, String namespace) {
if (namespace == null) return false;
if (namespace.equals("http://jabber.open.ac.uk/tags/plan#get")) {
return plansBean.getPlan(jid);
}
else if (namespace.equals("http://jabber.open.ac.uk/tags/plan#publish")) {
return plansBean.publishPlan();
}
else
return false;
}
/** Adds supported namespaces and their names */
public void getSupportedNamespaces(Vector namespaces, Vector names) {
namespaces.addElement(new String("http://jabber.open.ac.uk/tags/plan#get"));
names.addElement(new String("Get plan"));
namespaces.addElement(new String("http://jabber.open.ac.uk/tags/plan#publish"));
names.addElement(new String("Publish plan"));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -