<!DOCTYPE html>
<html>
<head>
<title>spark 二次开发--源码结构</title>
<meta charset="utf-8">
<link type="text/css" rel="stylesheet" href="../../css/markdown.css"/>
</head>
<body>
<div class="markdown-post">
<h1 id="spark-">spark 二次开发--源码结构</h1>
<h2 id="spark-">spark源码结构</h2>
<ul>
<li>spark的UI是使用java swing做的。</li>
</ul>
<h3 id="1-">1、结构总图</h3>
<ul>
<li>源码环境配置好以后,eclispe的项目树会是这样子的:</li>
</ul>
<p><img src="10001.png" alt=""></p>
<ul>
<li><p>这是Package视图</p>
</li>
<li><p>可以切换到Project视图,那么是这样子的</p>
</li>
</ul>
<p><img src="10002.png" alt=""><br><img src="10003.png" alt=""></p>
<ul>
<li>spark的内置插件<br><img src="10004.png" alt=""></li>
</ul>
<h3 id="2-build">2、Build</h3>
<p><strong>展开Build如下:</strong><br><img src="10005.png" alt=""></p>
<ul>
<li>点进去源码,这是介绍如何写spark插件的</li>
</ul>
<pre><code>public class ExamplePlugin implements Plugin{
//每个plugin都必须实现Plugin
public void initialize(){
//初始化方法
};
public void shutdown(){
//关闭方法
};
public boolean canShutDown(){
//插件是否是一个可以被关闭的插件
};
public void uninstall(){
//插件卸载方法
}
}
</code></pre><ul>
<li>以后写插件就按照这样子就对了。 </li>
<li>还有一个插件的属性类</li>
</ul>
<pre><code>public class ExamplePreference implements Preference{
// 这里面都是定义插件的一些属性,实现了Preference接口。里面方法有:
String getTitle(); // 相当于要显示的插件名
Icon getIcon(); // 插件的图标
String getTooltip(); // 插件被选中的提示
... ...
// 自己看英文解释就行。
}
</code></pre><ul>
<li>这就是一个插件要实现的东西 </li>
<li>总体上,Build展开就是一个插件例子</li>
</ul>
<h3 id="3-src-java">3、src/java</h3>
<p><strong>src/java展开结构如图:</strong><br><img src="10006-1.png" alt=""><br><img src="10006-2.png" alt=""></p>
<ul>
<li>代码整齐的规则,通俗的命名方式。基本一看就知道它们是干嘛的。</li>
</ul>
<h4 id="-1-org-jivesoftware">(1)、org.jivesoftware</h4>
<p><img src="10007.png" alt=""></p>
<pre><code>AccountCreationWizard.java 用户创建向导
GSSAPIConfiguration.java 应用程序配置
LoginDialog.java 登陆对话框
LoginSettingDialog.java 登陆框配置
MainWindow.java 主窗口
MainWindowListener.java 主窗口事件监听器
Restarter.java spark重启类
Spark.java spark主类
SparkCompatibility.java spark兼容性类
SparkStartupListener.java spark启动监听器
</code></pre><h4 id="-2-org-jivesoftware-launcher">(2)、org.jivesoftware.launcher</h4>
<p><img src="10008.png" alt=""></p>
<pre><code>Installer.java install4j安装打包spark
JiveClassLoader.java 应用程序的类加载器
Startup.java 这就是spark的启动主函数,之前配置spark的run configuration的时候就是它
</code></pre><h4 id="-3-org-jivesoftware-resource">(3)、org.jivesoftware.resource</h4>
<ul>
<li>这是spark的资源总类,相当于资源管理器。获取相应的资源,如图片、声音、图标、配置信息等<br><img src="10009.png" alt=""></li>
</ul>
<pre><code>ConfigurationRes.java 配置信息的资源管理器,管理configuration.properties
Default.java 默认的配置信息资源管理器。管理default.properties
Res.java spark_i18n的资源管理器。管理i18n资源下的spark_i18n.properties
SoundsRes.java 声音资源管理器。管理sounds.properties
SparkRes.java spark软件的资源管理器,包括spark的各种小图标,按钮,等。管理spark.propertie
configuration.properties
default.properties
sounds.properties
spark.properties 上面四个都是对应的被管理的资源。如果要修改某个icon,按钮显示文本,提示音等。都在这里修改就是
</code></pre><blockquote>
<p><strong>特别值得注意的是</strong>:在default.properties里面有一行配置。叫做<br><em>DEFAULT_LOOK_AND_FEEL = com.jtattoo.plaf.luna.LunaLookAndFeel
</em>因为spark引入了substance.jar,而这个jar就是著名的主题包,里面有很多主题,很多的LookAndFeel<br>*我们只需要修改这一行配置,spark整个画风都变了。<br>下面请看操作。找到引入的substance.jar,展开如图<br><img src="10010.png" alt=""></p>
<p>找到org.jvnet.substance.skin。展开如图<br><img src="10011.png" alt=""></p>
<p>所有的xxxLookAndFeel都是可以用的主题。现在我们把default.properties中的DEFAULT_LOOK_AND_FEEL修改一下。改变为</p>
<pre><code>DEFAULT_LOOK_AND_FEEL = org.jvnet.substance.skin.SubstanceDustCoffeeLookAndFeel
</code></pre><p>然后运行spark。效果图如下<br><img src="10012.png" alt=""><br><img src="10013.png" alt=""></p>
</blockquote>
<h4 id="-4-org-jivesoftware-spark">(4)、org.jivesoftware.spark</h4>
<p><img src="10014.png" alt=""></p>
<pre><code>'ChatAreaSendField.java' 聊天域定义
'ChatManager.java' 聊天管理器,创建聊天,获取聊天,创建会议室等都在这里
'ChatNotFoundException.java' 自定义异常。
'DataManager.java' 数据管理器,其实是房间信息的元数据管理器。单例的。
'NativeHandler.java ' 本地处理器,这是个接口,主要方法有处理通知消息,窗口闪现功能。窗口闪现的函数是使用jni编写的。要加载FlashWindow.dll文件,在src/plugins/flashing/build/lib下面,有个64位的和32位的。org.jivesoftware.spark.plugin.flashing.FlashWindow这个类是实现窗口闪现的类,你可以在/spark/src/plugins/flashing/src/c下找到.c和.h文件,熟悉jni的同学可以测试一下。
'NativeManager.java' 对要闪现的窗口进行管理,让他们闪现或者停止闪现的功能
'PluginManager.java' 插件管理器,里面有增加,加载,移除插件的方法
'PresenceManager.java' 用户状态管理器,在线、离线、离开等等。里面的方法有根据jid获取用户是否在线、离线等。获取状态对应的图标。
'SessionManager.java' 他实现了ConnectionListener,也就是当连接状态变化时,会保存或者清空相应的信息。关闭连接后发送presence状态……
'SoundManager.java' 声音管理器,主要加载一些声音资源以及播放声音等功能。
'UserManager.java' 用户管理器。这里面功能比较多。可以获取用户昵称(是根据vcard的信息获取),获取房间里面的所有用户jid,判断用户是否房间创建者/成员/管理员,构造联系人列表,并添加事件监听(双击打开聊天,右键菜单,esc关闭聊天窗口等)
'SparkManager.java' 前面那么多的Manager都是一些使用中的功能api,从代码可以看出sparkManager是内聚了所有的Manager。
public final class SparkManager 可以看出他是个final类,不能被继承也不会有子类,所有的成员也都是静态的,构造函数私有的,也是不允许外部创建。一个spark程序就这么一个类,总的资源管理器。final确保内部东西不会被改变。
'Workspace.java' 这里主要是spark启动时加载所有的插件方法,还有处理数据包方法。单例模式,私有构造方法,只会创建一次。创建的时候会添加各种组件。拼装spark工作台界面。
</code></pre><h4 id="-5-org-jivesoftware-spark-component">(5)、org.jivesoftware.spark.component</h4>
<ul>
<li>各种组件<br><img src="10015.png" alt=""></li>
</ul>
<pre><code>'AutoCompleteDocument.java' 实现自动完成功能的组件,里面有main()函数
没有合适的资源?快使用搜索试试~ 我知道了~
IM(Spark+Smack+Openfire)开发资料详细说明文档
共107个文件
png:71个
md:16个
html:12个
1星 需积分: 9 15 下载量 124 浏览量
2018-10-16
14:06:19
上传
评论
收藏 5.44MB ZIP 举报
温馨提示
个人总结的IM(Spark+Smack+Openfire)开发资料详细说明文档,非常详细的文档,说明每个包有什么用的,每个包的说明
资源推荐
资源详情
资源评论
收起资源包目录
IM(Spark+Smack+Openfire)开发资料详细说明文档 (107个子文件)
30001spark.md.bak 20KB
md2html.bat 61B
markdown.css 6KB
node.exe 5.52MB
spark.html 23KB
deploy.html 9KB
openfire.html 6KB
smack.html 6KB
parameter.html 2KB
index.html 643B
index.html 451B
index.html 394B
index.html 391B
index.html 373B
index.html 338B
template.html 251B
marked.js 29KB
marked.min.js 19KB
md2html.js 6KB
30001spark.md 20KB
10001deploy.md 7KB
20001openfire.md 4KB
40001smack.md 4KB
00000parameter.md 1KB
index.md 46B
index.md 39B
index.md 27B
index.md 24B
index.md 21B
index.md 10B
index.md 10B
index.md 10B
index.md 10B
index.md 10B
index.md 8B
0005.png 215KB
00015.png 173KB
00027.png 144KB
0001.png 137KB
00029.png 133KB
00028.png 125KB
0002.png 121KB
0004.png 119KB
0003.png 119KB
00026.png 113KB
00014.png 109KB
00023.png 89KB
0007.png 89KB
00031.png 86KB
00016.png 83KB
00013.png 77KB
00030.png 74KB
00036.png 73KB
00021.png 70KB
00020.png 67KB
00024.png 67KB
00025.png 63KB
00037.png 63KB
00018.png 53KB
10012.png 48KB
00017.png 48KB
00019.png 42KB
00012.png 41KB
0006.png 26KB
00022.png 25KB
10003.png 24KB
10013.png 24KB
00011.png 24KB
10028-1.png 23KB
10015.png 23KB
00033.png 22KB
10001.png 22KB
10002.png 22KB
0008.png 21KB
00035.png 21KB
00034.png 20KB
10017.png 20KB
10011.png 20KB
10006-1.png 20KB
10010.png 19KB
10030.png 19KB
10005.png 19KB
10004.png 17KB
00032.png 17KB
10006-2.png 15KB
10029.png 14KB
0009.png 13KB
10014.png 11KB
10031.png 11KB
10028-2.png 11KB
10016.png 9KB
10009.png 8KB
10007.png 8KB
10025.png 8KB
10032.png 8KB
10019.png 7KB
10023.png 7KB
10021.png 6KB
10020.png 6KB
10026.png 6KB
共 107 条
- 1
- 2
资源评论
- M_Anonymous2020-04-29哪里详细了emmm,没啥用
蓝天1111
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功