与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消息处理流程。