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

📄 bsplansplugin.java

📁 一款即时通讯软件
💻 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 + -