与Spark聊天窗口构造相关的类有:
/spark/src/java/org/jivesoftware/spark/ui/ChatRoom.java
/spark/src/java/org/jivesoftware/spark/ui/rooms/ChatRoomImpl.java
/spark/src/java/org/jivesoftware/spark/ui/rooms/GroupChatRoom.java
其中ChatRoom类是所有聊天窗口的基本实现,即所有聊天窗口共有的面板和方法都在该类里进行构造和定义。ChatRoomImpl类是对ChatRoom类的单聊窗口的实现,GroupChatRoom类是对ChatRoom类的会议室窗口的实现。
如果我们要在聊天窗口增加或者修改一些东西,比如添加图片发送按钮,就需要知道各个组件间的关系才能够在需要的地方进行添加,ChatRoom类实现了聊天窗口的基本框架,各个组件之间的关系如下图所示:
对比单聊和会议室的窗口,可以很容易知道相互对应关系。
整体的框架已经可以对上号了,但是发送表情,发送文件这些按钮的构造又在什么地方呢?
区域1对应组件editorBarLeft,区域2对应组件editorBarRight,区域3对应组件toolBar,所以想在这三个位置修改就很容易了。
区域1表情按钮、表情面板在org.jivesoftware.sparkimpl.plugin.emoticons 包里构造;
区域2是否窗口总在最前按钮在ChatRoom.java里构造;
区域3联系人信息按钮在ChatRoomImpl.java里构造;
区域3文件发送、屏幕截图按钮在/spark/src/java/org/jivesoftware/spark/filetransfer/ChatRoomTransferDecorator.java里构造。
大致知道了每个区域的功能按钮在什么地方进行构造,对其进行修改也会变得容易很多,而且顺着按钮的构造、添加的监听、处理函数能够慢慢摸清spark如何处理各类消息,系统的整体框架是什么样的。
下一篇介绍spark消息处理流程。

本文详细介绍了Spark聊天软件中聊天窗口的构造原理及各部分组件的实现方式,包括单聊窗口、会议室窗口以及表情、文件发送等附加功能的实现路径。
——聊天窗口构造&spm=1001.2101.3001.5002&articleId=51966487&d=1&t=3&u=c68737205c96414cb7b4f3a8f76cef60)
407

被折叠的 条评论
为什么被折叠?



