Sparkplug开发人员指南
Sparkplugs是什么?
Sparkplugs动态扩展Spark即时通讯客户端。使用Sparkplugs定制Spark,为您的企业或组织开发即时通讯系统,我们希望通过插件的API的描述,让你在开发灵活的Spark客户端变得更加简单,并充满使用乐趣。
本指南提供了SparkAPI和几种常见的例子,如果想更深入的了解请直接转到Javadocs文档中。
我编译了它(Spark),然后呢?
当你编译了超酷的Sparkplug后,就可以很容易的发布给用户,只要将你开发的插件拖到Spark的插件安装路径下,如果你的Sparkplug是普遍有用的,我们希望您能将你的插件分享到Spark社区,将你的Sparkplug插件发送到中,建立公共信息库
内容
本文件包含以下信息:
Spark客户端概述
Sparkplug API概述
Sparkplug的Java文档
插件结构
准备开始写你的第一个插件
Spark例子和使用方法。在开发Spark的例子和常见的问题。
Spark客户端概述
Spark客户端的设计理念是让不同层次的用户熟悉和使用它,无论是Workspace还是ChatRoom,都可以根据您的需要访问它。

editor版本
Spark API概述
Spark API提供了一个用于添加之上的协议和/或客户端UI Spark扩展框架。例如,你可以写自己的消息过滤器或添加一个按钮,一个聊天室和使用文件传输的API实现传送文件。Spark API具有以下特征:
通过事件拦截,得到通知,并响应特定事件IM的自定义代码。
允许定制用户界面,从简单的图标更改,添加按钮,以及添加自己的菜单项。
能够使用SMACK API添加自己的XMPP协议的功能。
管理器(Managers):Spark客户端为开发插件提供延迟加载的接口。相关的管理器的有:
SparkManager—SparkManager的核心管理模块器。你可以使用这个管理器来获得ChatManager,SessionManager,SoundManager和UserManager实例。
ChatManager—负责处理大多数聊天Chat和过滤器的注册,以及聊天室的创建
和检索。它也可以用来检索ChatFrame用户界面。
SessionManager --包含有关当前会话信息,如连接到服务器,连接的错误和个人存在(presence)变动的通知处理。
SoundManager --用于播放声音。
事件处理 (Event Handlers):Spark包含了大量的监听和处理程序,以便把更多插件可以嵌入到Spark client。比较常见的监听和处理程序有:
ChatRoomListener(和ChatRoomListenerAdapter)- 允许的插件监听聊天室被打开,关闭和启动。通常你会使用这个自定义的个人聊天室。
MessageListener --消息接收或发送
ContactGroupListener --联络组变动。
ContactListListener --联系人列表变动。
FileTransferListener --拦截文件传输。
ContextMenuListener --右键弹出菜单(上下文菜单),允许添加、删除动作或添加删除菜单项。
PresenceListener –人员状态变化。
ContactItemHandler – ContactItem在线状态变化控制监听。
组件(Components):Spark包含了需要在你开发插件时使用的Swing组件,较为常用的有:
MainWindow --该框架包含联系人列表。您可以使用MainWindow添加新的标签,菜单项或焦点控件。
ChatRoom –聊天室基础的抽象类。它的实现是ChatRoomImpl和GroupChatRoom。
ChatArea –为TranscriptWindow和ChatInputEditor的基本聊天视图控件。
ContactList –Spark的联系人列表界面控件
ChatRoomButton –聊天室的外观按钮,用于适应聊天室的主题。
Plugin的结构
Plugins是JAR的压缩文件,插件的文件结构如下:
Plugin Structure(压缩包机构)
myplugin.jar!/
|- l    <- Plugin 定义文件
|- libs/          <- 运行插件(Plugin)所用到的类.
l文件中指定的主要Plugin类。样例文件如下所示:
l样例
<?xml version="1.0" encoding="UTF-8"?>
 
      <plugin>
        <name>Google Desktop Plugin</name>
        <class&les.plugins.GooglePlugin</class>
        <author>Derek DeMoro</author>
        <version>1.0</version>
        <description>Enables users to find files and emails relating to users using Google Desktop technology.</description>
        <email>ddman@jivesoftware</email>
        <minSparkVersion>2.0.6</minSparkVersion>
      </plugin>
Plugin的安装
你只需要将要安装的插件JAR拖放到你的Spark客户端安装插件目录中。
目录机构
Spark/
|- plugins/      <- 将你的SparkPlug插件放到这里。
|- lib/          <-运行你的插件需要的类和类库。
|- resources/    <- 资源文件夹,包括其他支持文档和类库.
|- docs/        <-你自己的开发插件的帮助手册和的JavaDoc.
你的插件类必须实现从Spark客户端API插件接口。该插件接口是用于初始化和关闭插件的方法。
开始编写Sparkplugs
为了建立自己的SparkPlugs,你需要将工程属性中的所有项目设置到ClassPath中,将Sparkplug.zip 或解压缩,你将看到以下内容:
Sparkplugs/
|- build/                            <-使用ANT让你轻松的构建你的插件。
|- images/                          <- 文档使用的图像文件夹。
|- plugin_development_guide.html/      <-完整的开发指南(本文档)。
|- api/                              <- Sparkplug包含的Javadoc文档。
|- spark/                            <- spark构建结构,你需要设置Classpath。
    |-bin                            <- 启动文件startup.bat,用于测试Spark。
    |-lib                            <- 包含所有Spark运行需要的包。
    |-logs                          <- 所有的日志存储。
    |-plugins                        <- 所有的插件(plugins)部署到这里。
    |-resources                      <- 包含用于运行在具体操作系统上的本机库。
要设置一个Spark项目,运行在你的IDE,您将需要以下几件事:
编译Spark,需要1.4以上版本的JRE;
将Sparkplugs/spark/lib和Sparkplugs/spark/lib/windows文件夹添加到Classpath;
添加资源目录(Sparkplugins/spark/resource)到本地Classpath中;
Main Class - org.jivesoftware.Spark;
VM参数--Dplugin=path_to_l文件,这使您的插件可以运行在IDE以外的环境中;
就这些。
我们提供了可以轻松的构建、部署你的插件到你的的Spark测试环境中。
在使用时
Building a Sparkplug
To easily build a Sparkplug, we have added a simple ANT script to create a deployed plug.  To create, do the following:
1) Copy your java source files to the src directory.
2) Place any dependencies (besides Spark) into the lib directory.
3) Update l file to represent your plugin.
4) Go to the build directory, and type ant jar to build your plugin or
.... type "ant run" to build and deploy your plugin directly to Spark and
have Spark startup to test your plugin right away.
Your new plugin will be called myplugin.jar. 
If you wish to deploy your plugin later, just copy your new myplugin.jar to the plugins directory of your Sparkplug distro kit.
Enjoy!
Spark是如何做的呢?