亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sparkplug_dev_guide.html.svn-base

?? 開源項目openfire的完整源程序
?? SVN-BASE
?? 第 1 頁 / 共 3 頁
字號:
<html>
<head>
    <title>Sparkplug Development Guide</title>
    <link href="style.css" rel="stylesheet" type="text/css">
</head>

<body>
<div id="bannerbox">
<table cellpadding="0" cellspacing="0" border="0" width="100%">
    <tbody>
        <tr>
            <td width="99%" class="spring" title="Spark"></td>
            <td width="1%"><a href="spark" title="Developing Sparkplugs"><img src="images/banner-spark.gif" border="0" alt="Spark" /></a></td>
        </tr>
      </table>
</div>
<br/>
<h3>What Are Sparkplugs?</h3>

<p>Sparkplugs dynamically extend the features of the <a href="http://www.jivesoftware.org/spark">Spark</a> instant messaging client.
Use Sparkplugs to customize Spark for your business or organization or to add an innovative twist to instant messaging. The
extensive plugin API allows for complete client flexibility but is still simple and (we hope!) fun to use.</p>

<p>This guide provides a high level overview of the Sparkplug API and examples of several common client customizations. Or, jump
directly into the <a href="api/index.html">Javadocs</a>.
</p>

<h3>Once I Build It, Then What?</h3>
<p>After you've built your amazingly cool Sparkplug, it's easy to rollout to your users. Just have them drop it in the plugins directory of
their Spark installation. If your Sparkplug is generally useful, we hope you'll share it with the whole Spark community! To make your Sparkplug 
available via the <a href="http://www.jivesoftware.org/spark/sparkplugs">public repository</a> at jivesoftware.org, submit it to 
<a href="mailto:plugins@jivesoftware.org">plugins@jivesoftware.org</a>.</p>


<h3>Contents</h3>

This document contains the following information:
<ul>
<li><a href="#clientOverview">Overview of the Spark Client</a>
<li><a href="#overview">Overview of the Sparkplug API</a>
<li><a href="api/index.html">Sparkplug Javadocs</a>
<li><a href="#plugins">Structure Of A Plugin</a></li>
<li><a href="#gettingStarted">Getting started writing your first plugin</a></li>
<li><a href="#examples">Spark Examples and How-To's. Many examples of the most commonly asked questions when developing with Spark.</a>
</ul>

<h3><a id="clientOverview">Overview of the Spark Client</a></h3>
<p>
The Spark client is designed with the idea that most users find the different aspects of a chat client familiar and easy to use.
All components you see below are either accessible from the Workspace or ChatRoom object and can be manipulated based on your
needs.
</p>

<img src="images/contact-list.png" >
<br/>
<img src="images/chat-room.png">



<h3><a id="overview">Overview of the Spark API</a></h3>

The Spark API provides a framework for adding extensions on top of the protocol and/or UI of the Spark client. For example, you could write your own message filter or add a button to a chat room and send files using the File Transfer API. The Spark API has the following characteristics:
<ul>
<li>Several event listeners to either intercept, be informed of, or execute custom code in response to a particular IM event.
<li>Thorough tie-ins to the UI to allow for customization from simple icon changes, to adding buttons, to adding your own menu items.
<li>Ability to add your own XMPP functions using the SMACK API.
<li>Managers - Managers allow for better (lazy) loading of particular areas within the Spark client as well as providing access points to the system. Some of the more relevant managers are:
<ul>
<li> <a href="api/com/jivesoftware/spark/SparkManager.html">SparkManager</a> -- Acts as the central manager for all of Spark.  You use this manager to get instances of ChatManager, SessionManager, SoundManager, and UserManager.
<li> <a href="api/com/jivesoftware/spark/ChatManager.html">ChatManager</a> -- Handles registration of most chat listeners and filters, as well as creation and retrieval of chat rooms. It is also used to retrieve the UI of the ChatFrame.
<li> <a href="api/com/jivesoftware/spark/SessionManager.html">SessionManager</a> -- Contains the information about the current session, such as the server connected to, the handling of connection errors and notification of personal presence changes.
<li> <a href="api/com/jivesoftware/spark/SoundManager.html">SoundManager</a> -- Used to play sounds.
</ul>
<li> Event Handlers -- Spark contains numerous listeners and handlers to allow more pluggability into the Spark client. Some of the more common listeners and handlers are:
<ul>
<li> <a href="api/com/jivesoftware/spark/ui/ChatRoomListener.html">ChatRoomListener</a> (and ChatRoomListenerAdapter) -- Allows the plugin to listen for chat rooms being opened, closed and activated. You would generally use this to customize individual chat rooms.


<li> <a href="api/com/jivesoftware/spark/ui/MessageListener.html">MessageListener</a> -- Allows for notification when a message has been received or sent.
<li> <a href="api/com/jivesoftware/spark/ui/ContactGroupListener.html">ContactGroupListener</a> -- Allows for notification of changes to a Contact Group.
<li> <a href="api/com/jivesoftware/spark/ui/ContactListListener.html">ContactListListener</a> -- Allows for notification of changes to the Contact List.
<li> <a href="api/com/jivesoftware/spark/plugin/impl/filetransfer/transfer/TransferListener.html">TransferListener</a> -- Allows you to intercept File transfers.
<li> <a href="api/com/jivesoftware/spark/plugin/ContextMenuListener.html">ContextMenuListener</a> -- Allows for the addition or removal of actions or menu items to right-click (context menu) popups.
<li> <a href="api/com/jivesoftware/spark/ui/PresenceListener.html">PresenceListener</a> -- Allows for notification when Spark presence changes.
<li> <a href="api/com/jivesoftware/spark/ui/ContactItemHandler.html">ContactItemHandler</a> -- Allows the plugin to control the effects of presence changes within a ContactItem and the associated invoke call.
</ul>
<li> Components -- Spark contains many Swing components that will regularly be used during the creation of your plugin.  Some of the more commonly used components are :
<ul>
<li> <a href="api/com/jivesoftware/MainWindow.html">MainWindow</a> -- The frame containing the Contact List. You use MainWindow to add new tabs, menu items, or force focus.
<li> <a href="api/com/jivesoftware/spark/ui/ChatRoom.html">ChatRoom</a> -- The base abstract class of all chat rooms within Spark. Known implementations are ChatRoomImpl and GroupChatRoom.
<li> <a href="api/com/jivesoftware/spark/ui/ChatArea.html">ChatArea</a> -- The base chat viewer for both the TranscriptWindow and ChatInputEditor.
<li> <a href="api/com/jivesoftware/spark/ui/ContactList.html">ContactList</a> -- The ContactList UI in Spark.
<li> <a href="api/com/jivesoftware/spark/ui/ChatRoomButton.html">ChatRoomButton</a> -- The button that should be used to conform to the look and feel of other buttons within a ChatRoom.
</ul>
</ul>

<h3><a id="plugins">Structure of a Plugin</a></h3>

<p>Plugins are shipped as compressed JAR (Java Archive) files. The files in a plugin archive are as follows:</p>

<fieldset>
    <legend>Plugin Structure</legend>
<pre>myplugin.jar!/
 |- plugin.xml     &lt;- Plugin definition file
 |- libs/          &lt;- Contains all the class archives needed to run this plugin.

</pre>
</fieldset>

<p>
The <tt>plugin.xml</tt> file specifies the main Plugin class. A sample
file might look like the following:
</p>

<fieldset>
    <legend>Sample plugin.xml</legend>
<pre class="xml">
&lt;?xml version="1.0" encoding="UTF-8"?&gt;

  <span class="comment">&lt;!-- Google Plugin Structure --&gt;</span>
      &lt;plugin&gt;
        &lt;name&gt;Google Desktop Plugin&lt;/name&gt;
        &lt;class&gt;com.examples.plugins.GooglePlugin&lt;/class&gt;
        &lt;author&gt;Derek DeMoro&lt;/author&gt;
        &lt;version&gt;1.0&lt;/version&gt;
        &lt;description&gt;Enables users to find files and emails relating to users using Google Desktop technology.&lt;/description&gt;
        &lt;email&gt;ddman@jivesoftware.com&lt;/email&gt;
      &lt;/plugin&gt;
</pre>
</fieldset>

<h3>Installing your Plugin</h3>

<p>
You only need to drop your newly created <tt>jar file</tt> into the plugins directory of your Spark client install.

</p>

<fieldset>
    <legend>Directory Structure</legend>
<pre>Spark/
 |- plugins/     &lt;- Put your Sparkplug jar file here
 |- lib/       &lt;- The main classes and libraries needed to run Live Assistant
 |- resources/ &lt;- Contains other supportive documents and libraries
 |- docs/ &lt;- Help Manuals and the JavaDoc to help you develop your own plugins.
</pre>
</fieldset>


<p>Your plugin class must implement the
<tt><a href="api/com/jivesoftware/spark/plugin/plugin.html">Plugin</a></tt>

interface from the <a href="api/index.html">Spark Client API</a>. The Plugin interface has
methods for initializing and shutting down the plugin.
</p>

<h2><a id="gettingStarted">Getting Started Writing Sparkplugs</a></h2>
<p>
In order to build your own Sparkplugs, you will need to setup your project properly to have all items in your classpath. 

With the Sparkplug.zip or Sparplug.tar.gz you have just extracted, you should see the following contents:

<fieldset>
    <legend>Directory Structure</legend> 
<pre>Sparkplugs/
 |- build/     &lt;- Simple structure to allow you to easily build your plugins using ANT.
 |- images/       &lt;-  Images used in this guide.
 |- plugin_development_guide.html/ &lt;- The complete development guide (this document).
 |- api/  &lt;- Contains the Sparkplug Javadocs.
 |- spark/ &lt;- The spark build structure you will need for classpath purposes
    |-bin    &lt;- Contacts the startup.bat which starts up Spark for testing.
    |-lib    &lt;- Contains all the archives needed to run Spark.
    |-logs   &lt;- Where all logs are stored.
    |-plugins &lt;- Location where all plugins should be deployed to.
    |-resources &lt;- Contains native libraries for running OS specific operations.
</pre>
</fieldset>

<p>
To setup a project to run Spark within your IDE, you will need to the following:
</p>

<ul>
<li>It is required that you use the <b>1.4 JRE</b> to build Spark. 
<li>Add all *.jar files in the Sparkplugs/spark/lib and Sparkplugs/spark/lib/windows directories to your classpath.
<li>Add the resource directory (Sparkplugins/spark/resource) to your classpath for the native libraries.</li>
<li>Main Class - com.jivesoftware.Spark
<li>VM Parameters - -Dplugin=path_to_your_plugin.xml file.  This allows you to run your plugins within your IDE without deploying.
<li>That's it. 

</ul>
<p>We have also provided a build structure to easily build and deploy your own plugins directly into your Spark test bed. To use, read the <a href="builder/how-to-build.txt">how-to-build.txt</a> file in the builder/ directory.</p>


<h3><a id="examples">Spark How-To's</a></h3>

<p>
All code samples can be found in the <a href="examples.jar">examples.jar</a> file located here.
</p>

<ul>
<li><a href="#simplePlugin">How do I create a simple plugin?</a>
<li><a href="#addTab">How do I add my own Tab to the Spark Workspace?</a>
<li><a href="#addContactListContextListener">How do I add a context menu listener to the contact list?</a>
<li><a href="#addChatRoomContextListener">How do I add my own ContextMenu Listener to a ChatRoom?</a>
<li><a href="#addMenu">How do I add my own Menu to Spark?</a>
<li><a href="#addButton">How do I add a button to a Chat Room?</a>
<li><a href="#addSearch">How do I add my own searching feature in Spark like the User Search or Google Search in Firefox?</a>
<li><a href="#interceptFile">How can I intercept a File Transfer request?</a>
<li><a href="#sendFile">How can I send a file to another user?</a>
<li><a href="#contactUI">How can I control the UI and event handling of a ContactItem?</a>
<li><a href="#changePresence">How can I be notified when the Spark user changes their presence?</a>
<li><a href="#messageFilter">How can I add a message filter?</a>
<li><a href="#createChatRoom">How can I create a person-to-person Chat Room?</a>
<li><a href="#createConferenceRoom">How can I create a public Conference room?</a>
<li><a href="#addPreferences">How can I add my own Preferences?</a>
<li><a href="#showAlert">How can I flash the chat frame, like when a new message comes in?</a>
</ul>

<h3 id="simplePlugin">How do I create a simple plugin?</h3>

<ol>
  <li>Implement Plugin.
</ol>

<fieldset>

    <legend>Simple Plugin</legend>
<pre class="java">
package com.jivesoftware.spark.examples;

import com.jivesoftware.spark.plugin.Plugin;

/**
 * Implements the Spark Plugin framework to display the different possibilities using
 * Spark.
 */
public class ExamplePlugin implements Plugin {

    /**
     * Called after Spark is loaded to initialize the new plugin.
     */
    public void initialize() {
        System.out.println("Welcome To Spark");

    }

    /**
     * Called when Spark is shutting down to allow for persistence of information
     * or releasing of resources.
     */
    public void shutdown() {

    }

    /**
     * Return true if the Spark can shutdown on users request.
     * @return true if Spark can shutdown on users request.
     */
    public boolean canShutDown() {
        return true;
    }

    /**
    * Is called when a user explicitly asked to uninstall this plugin.
    * The plugin owner is responsible to clean up any resources and
    * remove any components install in Spark.
    */
    public void uninstall(){
       // Remove all resources belonging to this plugin.
    }
}

</pre>
</fieldset>

<h3 id="addTab">How to add your own Tab to the Spark Workspace?</h3>

<ol>
  <li>Implement Plugin.
  <li>Retrieve the Workspace which is the UI for Spark.
  <li>Retrieve the WorkspacePane which is the Tabbed Pane used by Spark.
  <li>Add your own tab.
</ol>

<fieldset>

    <legend>Add a Tab to Spark</legend>
<pre class="java">
public class ExamplePlugin implements Plugin {
.
.
.
    /**
     * Adds a tab to Spark
     */
    private void addTabToSpark(){
         // Get Workspace UI from SparkManager
        Workspace workspace = SparkManager.getWorkspace();

        // Retrieve the Tabbed Pane from the WorkspaceUI.
        JTabbedPane tabbedPane = workspace.getWorkspacePane();

        // Add own Tab.
        tabbedPane.addTab("My Plugin", new JButton("Hello"));
    }
.
.
.
}
</pre>
</fieldset>

<h3 id="addContactListContextListener">How do I add a context menu listener to the contact list?</h3>

<ol>
  <li>Implement Plugin.
  <li>Retrieve the ContactList which is part of Spark's Workspace.
  <li>Add ContactListListener.
</ol>

<fieldset>

    <legend>Add a ContextMenu Listener to ContactList</legend>
<pre class="java">
  private void addContactListListener(){
         // Get Workspace UI from SparkManager
        Workspace workspace = SparkManager.getWorkspace();

        // Retrieve the ContactList from the Workspace
        ContactList contactList = workspace.getContactList();

        // Create an action to add to the Context Menu
        final Action sayHelloAction = new AbstractAction() {
            public void actionPerformed(ActionEvent actionEvent) {
                JOptionPane.showMessageDialog(SparkManager.getMainWindow(), "Welcome to Spark");
            }
        };

        sayHelloAction.putValue(Action.NAME, "Say Hello To Me");


        // Add own Tab.
        contactList.addContextMenuListener(new ContextMenuListener() {
            public void poppingUp(Object object, JPopupMenu popup) {

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产自产v一区二区三区c| 91在线播放网址| 欧美日韩国产一二三| 亚洲欧洲日韩av| 99视频在线精品| 亚洲欧洲在线观看av| 99精品1区2区| 一区二区三区四区不卡视频| 不卡影院免费观看| 亚洲乱码中文字幕| 91亚洲永久精品| 一区二区三区精品视频在线| 91视频www| 日本vs亚洲vs韩国一区三区二区| 91麻豆精品国产91久久久久久久久| 三级精品在线观看| 日韩一区二区在线免费观看| 蜜桃视频免费观看一区| 国产视频一区不卡| 日本高清不卡一区| 日韩福利电影在线| 日本一二三不卡| 欧美日韩一区二区电影| 精一区二区三区| 中文字幕一区二区日韩精品绯色| 色菇凉天天综合网| 久久爱另类一区二区小说| 国产精品无遮挡| 欧美日韩在线播放三区| 国产在线播放一区| 一区二区激情小说| 精品成人一区二区三区四区| av成人动漫在线观看| 六月丁香婷婷久久| 亚洲黄一区二区三区| 中文一区在线播放| 久久亚洲免费视频| 欧美二区三区91| 欧美午夜宅男影院| 99这里只有久久精品视频| 狠狠v欧美v日韩v亚洲ⅴ| 五月激情综合网| 国产亚洲va综合人人澡精品| 大胆欧美人体老妇| 国产精品中文字幕日韩精品| 奇米一区二区三区av| 亚洲尤物在线视频观看| 国产精品久久久久桃色tv| xvideos.蜜桃一区二区| 欧美电影免费提供在线观看| 91.com在线观看| 678五月天丁香亚洲综合网| 欧洲av一区二区嗯嗯嗯啊| 91久久精品网| 一本色道久久加勒比精品| 欧美在线观看视频一区二区三区| 久久人人爽人人爽| 久久久亚洲综合| 国产精品理论片| 国产一区二区三区日韩| 欧美天堂亚洲电影院在线播放| 亚洲一区在线电影| 日韩成人dvd| 91久久精品一区二区二区| 久久蜜桃av一区二区天堂| 性欧美疯狂xxxxbbbb| 色综合天天做天天爱| 久久奇米777| 久久机这里只有精品| 93久久精品日日躁夜夜躁欧美| 欧美一级黄色大片| 亚洲一级二级三级在线免费观看| 成人国产精品免费| 国产性色一区二区| 免费高清不卡av| 99精品国产99久久久久久白柏| 日韩免费看的电影| 日韩精品欧美成人高清一区二区| 色综合久久久久综合| 夜夜精品视频一区二区| 成人小视频免费在线观看| 久久久精品黄色| 久久精品99国产精品日本| 欧美精品xxxxbbbb| 亚洲成人av一区二区三区| 成人福利在线看| 国产欧美日韩麻豆91| 精品一区二区免费看| 日韩一区二区在线播放| 一区二区三区色| 色综合久久久网| 中文字幕一区免费在线观看| 久久99国产精品久久99| 日韩免费观看2025年上映的电影| 免费人成在线不卡| 欧美蜜桃一区二区三区| 亚洲线精品一区二区三区| 日本电影亚洲天堂一区| 中文字幕在线观看一区| 99视频在线精品| 午夜精品免费在线观看| 久久综合狠狠综合| www.久久精品| 国产精品水嫩水嫩| 欧美色区777第一页| 久久成人免费日本黄色| 中文字幕乱码亚洲精品一区| 91日韩一区二区三区| 午夜成人免费电影| 日韩午夜在线影院| 国产精品99久久久久久有的能看 | 性感美女久久精品| 欧美亚洲综合在线| 久久激情综合网| 亚洲三级电影全部在线观看高清| 欧美视频一区二区三区在线观看| 日韩av电影免费观看高清完整版在线观看| 欧美日韩一区在线观看| 久久精品噜噜噜成人av农村| 国产精品嫩草影院com| 欧美精品久久一区二区三区| 国产成人亚洲综合a∨婷婷图片 | 首页国产欧美久久| 国产三级精品三级在线专区| 欧美三级一区二区| 国产69精品久久99不卡| 激情综合网av| 日韩制服丝袜av| 亚洲乱码精品一二三四区日韩在线 | 亚洲人xxxx| 欧美国产欧美综合| 2023国产精品视频| 精品成人私密视频| 欧美精品一区二区三区视频| 日韩你懂的在线播放| 欧美国产日韩a欧美在线观看| 亚洲女爱视频在线| 日韩专区欧美专区| 国产·精品毛片| 欧美日韩高清影院| 久久女同互慰一区二区三区| 亚洲色图制服丝袜| 美女在线视频一区| 精品写真视频在线观看| 懂色av噜噜一区二区三区av | 亚洲码国产岛国毛片在线| 中文字幕巨乱亚洲| 亚洲精品国产品国语在线app| 亚洲卡通欧美制服中文| 亚洲地区一二三色| 美日韩黄色大片| 国产精品69毛片高清亚洲| 国产69精品久久久久毛片| 91视视频在线直接观看在线看网页在线看 | 国产精品视频免费| 中文字幕在线不卡视频| 亚洲福利一区二区| 国产一区二区精品在线观看| 99免费精品在线| 3d成人动漫网站| 国产精品免费网站在线观看| 亚洲乱码日产精品bd| 久久66热偷产精品| 91香蕉视频mp4| 日韩欧美一二三| 国产精品福利一区| 麻豆成人久久精品二区三区红| 激情综合色播激情啊| 这里只有精品99re| 国产精品国产自产拍高清av| 日韩激情av在线| 成人avav影音| 国产欧美一区二区精品忘忧草| 亚洲一区二区欧美激情| 欧美国产激情二区三区| 六月丁香婷婷色狠狠久久| 国产福利91精品| 国产日韩精品一区二区浪潮av| 精品一区精品二区高清| 久久久久久**毛片大全| 韩国av一区二区三区四区| 国产亚洲欧美日韩日本| 在线亚洲精品福利网址导航| 狠狠色丁香婷婷综合久久片| 欧美精选午夜久久久乱码6080| 亚洲国产精品久久人人爱蜜臀| 日本久久电影网| 一区二区三区资源| 9191国产精品| 国产美女视频一区| 国产精品久久久一区麻豆最新章节| 99久久国产综合色|国产精品| 亚洲免费毛片网站| 这里只有精品免费| 国产91丝袜在线播放| 亚洲一区在线观看网站| 日韩欧美国产一区二区三区| 成人av先锋影音| 视频在线观看91| 国产无人区一区二区三区|