Sparkplugin开发人员指南汉化版free.docx
《Sparkplugin开发人员指南汉化版free.docx》由会员分享,可在线阅读,更多相关《Sparkplugin开发人员指南汉化版free.docx(27页珍藏版)》请在冰豆网上搜索。
Sparkplugin开发人员指南汉化版free
Sparkplug开发人员指南(free)
Sparkplugs是什么?
Sparkplugs动态扩展Spark即时通讯客户端。
使用Sparkplugs定制Spark,为您的企业或组织开发即时通讯系统,我们希望通过插件的API的描述,让你在开发灵活的Spark客户端变得更加简单,并充满使用乐趣。
本指南提供了SparkAPI和几种常见的例子,如果想更深入的了解请直接转到Javadocs文档中。
我编译了它(Spark),然后呢?
当你编译了超酷的Sparkplug后,就可以很容易的发布给用户,只要将你开发的插件拖到Spark的插件安装路径下,如果你的Sparkplug是普遍有用的,我们希望您能将你的插件分享到Spark社区,将你的Sparkplug插件发送到plugins@jivesoftware.org中,建立jivesoftware.org公共信息库
内容
本文件包含以下信息:
✧Spark客户端概述
✧SparkplugAPI概述
✧Sparkplug的Java文档
✧插件结构
✧准备开始写你的第一个插件
✧Spark例子和使用方法。
在开发Spark的例子和常见的问题。
Spark客户端概述
Spark客户端的设计理念是让不同层次的用户熟悉和使用它,无论是Workspace还是ChatRoom,都可以根据您的需要访问它。
SparkAPI概述
SparkAPI提供了一个用于添加之上的协议和/或客户端UISpark扩展框架。
例如,你可以写自己的消息过滤器或添加一个按钮,一个聊天室和使用文件传输的API实现传送文件。
SparkAPI具有以下特征:
✧通过事件监听器拦截,得到通知,并响应特定事件IM的自定义代码。
✧允许定制用户界面,从简单的图标更改,添加按钮,以及添加自己的菜单项。
✧能够使用SMACKAPI添加自己的XMPP协议的功能。
✧管理器(Managers):
Spark客户端为开发插件提供延迟加载的接口。
相关的管理器的有:
⏹SparkManager—SparkManager的核心管理模块器。
你可以使用这个管理器来获得ChatManager,SessionManager,SoundManager和UserManager实例。
⏹ChatManager—负责处理大多数聊天Chat监听器和过滤器的注册,以及聊天室的创建和检索。
它也可以用来检索ChatFrame用户界面。
⏹SessionManager--包含有关当前会话信息,如连接到服务器,连接的错误和个人存在(presence)变动的通知处理。
⏹SoundManager--用于播放声音。
✧事件处理(EventHandlers):
Spark包含了大量的监听和处理程序,以便把更多插件可以嵌入到Sparkclient。
比较常见的监听和处理程序有:
⏹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的压缩文件,插件的文件结构如下:
PluginStructure(压缩包机构)
myplugin.jar!
/
|-plugin.xml<-Plugin定义文件
|-libs/<-运行插件(Plugin)所用到的类.
plugin.xml文件中指定的主要Plugin类。
样例文件如下所示:
plugin.xml样例
xmlversion="1.0"encoding="UTF-8"?
>
--GooglePluginStructure-->
GoogleDesktopPlugin
com.examples.plugins.GooglePlugin
DerekDeMoro
1.0
EnablesuserstofindfilesandemailsrelatingtousersusingGoogleDesktoptechnology.
ddman@
2.0.6
Plugin的安装
你只需要将要安装的插件JAR拖放到你的Spark客户端安装插件目录中。
目录机构
Spark/
|-plugins/<-将你的SparkPlug插件放到这里。
|-lib/<-运行你的插件需要的类和类库。
|-resources/<-资源文件夹,包括其他支持文档和类库.
|-docs/<-你自己的开发插件的帮助手册和的JavaDoc.
你的插件类必须实现从Spark客户端API插件接口。
该插件接口是用于初始化和关闭插件的方法。
开始编写Sparkplugs
为了建立自己的SparkPlugs,你需要将工程属性中的所有项目设置到ClassPath中,将Sparkplug.zip或Sparplug.tar.gz解压缩,你将看到以下内容:
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中;
✧MainClass-org.jivesoftware.Spark;
✧VM参数--Dplugin=path_to_your_plugin.xml文件,这使您的插件可以运行在IDE以外的环境中;
✧就这些。
我们提供了可以轻松的构建、部署你的插件到你的的Spark测试环境中。
在使用时
BuildingaSparkplug
ToeasilybuildaSparkplug,wehaveaddedasimpleANTscripttocreateadeployedplug.Tocreate,dothefollowing:
1)Copyyourjavasourcefilestothesrcdirectory.
2)Placeanydependencies(besidesSpark)intothelibdirectory.
3)Updatetheplugin.xmlfiletorepresentyourplugin.
4)Gotothebuilddirectory,andtypeantjartobuildyourpluginor
....type"antrun"tobuildanddeployyourplugindirectlytoSparkand
haveSparkstartuptotestyourpluginrightaway.
Yournewpluginwillbecalledmyplugin.jar.
Ifyouwishtodeployyourpluginlater,justcopyyournewmyplugin.jartothepluginsdirectoryofyourSparkplugdistrokit.
Enjoy!
Spark是如何做的呢?
所有代码示例可以在examples.jar文件找到。
✧如何创建一个简单的插件
✧如何将我自己的标签到Spark工作空间
✧如何添加一个上下文菜单监听到联系人列表
✧如何添加ContextMenu监听到一个聊天室
✧如何添加菜单到Spark
✧如何添加一个按钮到聊天室
✧如何添加自己喜欢的Spark搜索,比如用户搜索或谷歌搜索在Firefox
✧怎么能拦截文件传输请求
✧如何发送一个文件给其他用户
✧如何控制用户界面和事件的ContactItem处理
✧Spark发生变化时,怎么能通知用户更改时
✧如何添加消息筛选器
✧如何创建一个人对人的聊天室
✧如何创建一个公共会议室
✧如何添加自己的首选项
✧当有新消息是如果进行消息提示
如何创建一个简单的插件
1.实现Plugin
Plugin样例
packageorg.jivesoftware.spark.examples;
importorg.jivesoftware.spark.plugin.Plugin;
/**
*ImplementstheSparkPluginframeworktodisplaythedifferentpossibilitiesusing
*Spark.
*/
publicclassExamplePluginimplementsPlugin{
/**
*CalledafterSparkisloadedtoinitializethenewplugin.
*/
publicvoidinitialize(){
System.out.println("WelcomeToSpark");
}
/**
*CalledwhenSparkisshuttingdowntoallowforpersistenceofinformation
*orreleasingofresources.
*/
publicvoidshutdown(){
}
/**
*ReturntrueiftheSparkcanshutdownonusersrequest.
*@returntrueifSparkcanshutdownonusersrequest.
*/
publicbooleancanShutDown(){
returntrue;
}
/**
*Iscalledwhenauserexplicitlyaskedtouninstallthisplugin.
*Thepluginownerisresponsibletocleanupanyresourcesand
*removeanycomponentsinstallinSpark.
*/
publicvoiduninstall(){
//Removeallresourcesbelongingtothisplugin.
}
}
如何将我自己的标签到Spark工作空间
1.实现Plugin;
2.取得Spark用户界面:
Workspace;
3.取得WorkspacePane,这是Spark的Tab面板;
4.添加您自己的Tab
添加Tab到Spark
publicclassExamplePluginimplementsPlugin{..
/**
*AddsatabtoSpark
*/
privatevoidaddTabToSpark(){
//GetWorkspaceUIfromSparkManager
Workspaceworkspace=SparkManager.getWorkspace();
//RetrievetheTabbedPanefromtheWorkspaceUI.
JTabbedPanetabbedPane=workspace.getWorkspacePane();
//AddownTab.
tabbedPane.addTab("MyPlugin",newJButton("Hello"));
}.
}
如何在联系人列表中添加一个上下文菜单监听者
1.实现Plugin;
2.在Spark的Workspace中取得ContactList
3.添加ContactListListener
添加ContextMenu监听到ContactList
privatevoidaddContactListListener(){
//GetWorkspaceUIfromSparkManager
Workspaceworkspace=SparkManager.getWorkspace();
//RetrievetheContactListfromtheWorkspace
ContactListcontactList=workspace.getContactList();
//CreateanactiontoaddtotheContextMenu
finalActionsayHelloAction=newAbstractAction(){
publicvoidactionPerformed(ActionEventactionEvent){
JOptionPane.showMessageDialog(SparkManager.getMainWindow(),"WelcometoSpark");
}
};
sayHelloAction.putValue(Action.NAME,"SayHelloToMe");
//AddownTab.
contactList.addContextMenuListener(newContextMenuListener(){
publicvoidpoppingUp(Objectobject,JPopupMenupopup){
if(objectinstanceofContactItem){
popup.add(sayHelloAction);//在菜单上加个Action
}
}
publicvoidpoppingDown(JPopupMenupopup){
}
publicbooleanhandleDefaultAction(MouseEvente){
returnfalse;
}
});
}
如何在一个聊天室ChatRom中添加上下文菜单监听
1.实现Plugin
2.添加ChatRoomListener到ChatManager
3.从ChatRoom获取TranscriptWindow或ChatInputEditor
4.添加ContactMenuListener到ChatArea
添加ChatRoomListener到ChatManager,TranscriptWindoworChatInputEditor
privatevoidaddContactListenerToChatRoom(){
//RetrieveaChatManagerfromSparkManager
ChatManagerchatManager=SparkManager.getChatManager();
finalContextMenuListenerlistener=newContextMenuListener(){
publicvoidpoppingUp(Objectobject,JPopupMenupopup){
finalTranscriptWindowchatWindow=(TranscriptWindow)object;
ActionclearAction=newAbstractAction(){
publicvoidactionPerformed(ActionEventactionEvent){
try{
chatWindow.insert("Myowntext:
)");
}
catch(BadLocationExceptione){
e.printStackTrace();
}
}
};
clearAction.putValue(Action.NAME,"Insertmyowntext");
popup.add(clearAction);
}
publicvoidpoppingDown(JPopupMenupopup){
}
publicbooleanhandleDefaultAction(MouseEvente){
returnfalse;
}
};
//AddaChatRoomListenertotheChatManagertoallowfornotifications
//whenaroomisbeingopened.Note:
IwilluseaChatRoomListenerAdapterforbrevity.
chatManager.addChatRoomListener(newChatRoomListenerAdapter(){
publicvoidchatRoomOpened(ChatRoomroom){
room.getTranscriptWindow().addContextMenuListener(listener);
}
publicvoidchatRoomLeft(ChatRoomroom){
room.getTranscriptWindow().removeContextMenuListener(listener);
}
});
}
如何添加菜单到Spark
1.实现Plugin
2.从SparkManager取得MainWindow
3.创建一个菜单或是添加一个菜单项到现有的菜单中
添加菜单到Spark
/**
*AddsanewmenuandchildmenuitemtoSpark.
*/
privatevoidaddMenuToSpark(){
//RetrievetheMainWindowUIfromSpark.
finalMainWindowmainWindow=SparkManager.getMainWindow();
//CreatenewMenu
JMenumyPluginMenu=newJMenu("MyPluginMenu");
//CreateActiontotestMenuinstall.
ActionshowMessage=newAbstractAction(){
publicvoidactionPerformed(ActionEventactionEvent){
JOptionPane.showMessageDialog(mainWindow,"Yeah,Itworks.");
}
};
//Givethemenuitemaname.
showMessage.putValue(Action.NAME,"Checkifitworks");
//AddtoMenu
myPluginMenu.add(showMessage);
//AddMenuToSpark
mainWindow.getJMenuBar().add(myPluginMenu);
}
如何添加一个按钮到聊天室
1.实现Plugin
2.添加ChatRoomListener到ChatManager
3.当房间打开时,添加ChatRoomButton到ChatRoom的ToolBar上
新增一个按钮到ChatRoomButton
/**
*AddsabuttontoeachChatRoomthatisopened.
*/
privatevoidaddChatRoomButton(){
//RetrieveChatManagerfromtheSparkManager
ChatManagerchatManager=SparkManager.getChatManager();
//CreateanewChatRoomButton.
finalChatRoomButto