CN102214090B - 一种创建会话窗口的方法及装置 - Google Patents
一种创建会话窗口的方法及装置 Download PDFInfo
- Publication number
- CN102214090B CN102214090B CN201010144498.0A CN201010144498A CN102214090B CN 102214090 B CN102214090 B CN 102214090B CN 201010144498 A CN201010144498 A CN 201010144498A CN 102214090 B CN102214090 B CN 102214090B
- Authority
- CN
- China
- Prior art keywords
- child control
- motherboard
- child
- control
- interface portion
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种创建会话窗口的方法及装置,属于计算机领域。所述方法包括:接收创建请求,所述创建请求中携带会话类型;创建母板以及获取所述会话类型对应的脚本描述,所述脚本描述中至少包括会话区子控件;将所述脚本描述中描述的每个子控件填充在所述母板中;在所述母板中注册所述每个子控件,使所述每个子控件与所述母板交互,将所述母板粘贴在窗口得到会话窗口,并为所述会话窗口建立聊天通道。所述装置包括:接收模块、创建模块、填充模块和注册模块。本发明能够减轻开发新会话窗口的难度以及减少开发成本。
Description
技术领域
本发明涉及计算机领域,特别涉及一种创建会话窗口的方法及装置。
背景技术
会话窗口是即时通信软件的重要组成部分。在即时通信软件中,会话窗口的基本功能是为联系人提供信息交流的界面。
其中,建立一个窗口并在该窗口中设置编辑区域,再为该窗口建立聊天信道,就得到具有基本功能的会话窗口。另外,如果需要在会话窗口中承载丰富的应用,则在具有基本功能的会话窗口上加载实现应用的插件并设置每个插件之间进行交互的交互代码。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
如果需要改变会话窗口的布局、升级会话窗口中的部分插件或通过修改原会话窗口的部分插件开发出新的会话窗口,则需要修改原会话窗口中的每个插件之间的交互代码,如此增加了开发难度和成本。
发明内容
为了能够减轻开发难度以及减少开发成本,本发明提供了一种创建会话窗口的方法及装置。所述技术方案如下:
一种创建会话窗口的方法,其特征在于,所述方法包括:
接收创建请求,所述创建请求中携带会话类型;
创建母板以及获取所述会话类型对应的脚本描述,所述脚本描述中至少包括会话区子控件;
将所述脚本描述中描述的每个子控件填充在所述母板中;
在所述母板中注册所述每个子控件,使所述每个子控件与所述母板交互,将所述母板粘贴在窗口得到会话窗口,并为所述会话窗口建立聊天通道;其中,在所述母板中注册所述每个子控件为:在所述母板的逻辑部分中为每个子控件设置一个指针,所述指针用于所述母板与子控件进行交互。
所述将所述脚本描述中描述的每个子控件填充在所述母板中,具体包括:
通过对所述脚本描述进行解析,获取所述每个子控件的标识和所述每个子控件的布局信息;
根据所述会话类型和所述每个子控件的标识,获取所述每个子控件的界面部分和逻辑部分;
根据所述每个子控件的布局信息,将所述每个子控件的界面部分填充在所述母板中,并对所述每个子控件的界面部分和逻辑部分进行绑定。
所述根据所述会话类型和所述每个子控件的标识,获取所述每个子控件的界面部分和逻辑部分,具体包括:
根据所述每个子控件的标识,从标识与界面部分的对应关系中查找所述每个子控件的界面部分;
根据所述会话类型和所述每个子控件的标识,从标识、会话类型与逻辑部分的对应关系中查找所述每个子控件的逻辑部分。
所述子控件包括界面部分和逻辑部分,且任意两个子控件通过所述母板进行交互。
所述方法还包括:
在所述会话窗口中,如果所述母板接收到事件,查询所述母板中的每个子控件,如果查询出能够处理所述事件的子控件,则将所述事件交于所述查询的子控件处理。
一种创建会话窗口的装置,所述装置包括:
接收模块,用于接收创建请求,所述创建请求中携带会话类型;
创建模块,用于创建母板以及获取所述会话类型对应的脚本描述,所述脚本描述中至少包括会话区子控件;
填充模块,用于将所述脚本描述中描述的每个子控件填充在所述母板中;
注册模块,用于在所述母板中注册所述每个子控件,使所述每个子控件与所述母板交互,将所述母板粘贴在窗口得到会话窗口,并为所述会话窗口建立聊天通道;其中,在所述母板中注册所述每个子控件为:在所述母板的逻辑部分中为每个子控件设置一个指针,所述指针用于所述母板与子控件进行交互。
所述填充模块具体包括:
第一获取单元,用于通过对所述脚本描述进行解析,获取所述每个子控件的标识和所述每个子控件的布局信息;
第二获取单元,用于根据所述会话类型和所述每个子控件的标识,获取所述每个子控件的界面部分和逻辑部分;
填充单元,用于根据所述每个子控件的布局信息,将所述每个子控件的界面部分填充在所述母板中,并对所述每个子控件的界面部分和逻辑部分进行绑定。
所述第二获取单元具体包括:
第一查找子单元,用于根据所述每个子控件的标识,从标识与界面部分的对应关系中查找所述每个子控件的界面部分;
第二查找子单元,用于根据所述会话类型和所述每个子控件的标识,从标识、会话类型与逻辑部分的对应关系中查找所述每个子控件的逻辑部分。
所述子控件包括界面部分和逻辑部分,且任意两个子控件通过所述母板进行交互。
所述装置还包括:
查询模块,用于在所述会话窗口中,如果所述母板接收到事件,查询所述母板中的每个子控件,如果查询出能够处理所述事件的子控件,则将所述事件交于所述查询的子控件处理。
通过创建母板,并将脚本描述中描述的每个子控件填充在母板中,通过将每个子控件注册在母板中,使得每个子控件与母板直接互交,再将母板放置在窗口中得到会话窗口,其中,会话窗口中的每个子控件相互独立,任意两个子控件通过母板进行交互,还可以通过子控件承载插件使会话窗口具有丰富的应用。由于会话窗口中任意两个子控件之间不存在交互代码,因此改变原会话窗口的布局时,不需要修改每个子控件之间的交互代码;如果升级原会话窗口或在原会话窗口中开发新会话窗口,则只要对升级的部分或修改的部分所在的子控件进行修改,而该子控件与其他子控件相互独立,所以其他部分继承原会话窗口,如此减轻开发难度和减少开发成本。
附图说明
图1是本发明实施例1提供的一种创建会话窗口的方法流程图;
图2是本发明实施例2提供的一种创建会话窗口的方法流程图;
图3是本发明实施例2提供的第一种母板示意图;
图4是本发明实施例2提供的第二种母板示意图;
图5是本发明实施例3提供的一种创建会话窗口的方法流程图;
图6是本发明实施例4提供的一种创建会话窗口的装置示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例1
如图1所示,本发明实施例1提供了一种创建会话窗口的方法,包括:
步骤101:接收创建请求,其中,该创建请求中携带会话类型;
步骤102:创建母板并获取该会话类型对应的脚本描述,其中,脚本描述中至少包括ChatMsg(会话区)子控件;
步骤103:将该脚本描述中描述的每个子控件填充在母板中;
步骤104:通过在母板中注册每个子控件使每个子控件与母板交互,将母板粘贴在窗口得到会话窗口,并为会话窗口建立聊天通道。
其中,母板中的任意两个子控件都相互独立且不可以直接交互。ChatMsg具有实现编辑界面的功能,在母板中填充ChatMsg子控件,可以使创建的会话窗口具有编辑界面,联系人可以在该编辑界面中进行信息交流。
在本发明实施例中,通过创建母板,并将脚本描述中描述的每个子控件填充在母板中,通过将每个子控件注册在母板中,使得每个子控件与母板直接互交,再将母板放置在窗口中得到会话窗口,其中,会话窗口中的每个子控件相互独立,任意两个子控件通过母板进行交互,还可以通过子控件承载插件使会话窗口具有丰富的应用。由于会话窗口中任意两个子控件之间不存在交互代码,因此改变原会话窗口的布局时,不需要修改每个子控件之间的交互代码;如果升级原会话窗口或在原会话窗口中开发新会话窗口,则只要对升级的部分或修改的部分所在的子控件进行修改,而该子控件与其他子控件相互独立,所以其他部分继承原会话窗口,如此减轻开发难度和减少开发成本,且使得会话窗口具有高内聚低耦合的特性。
实施例2
如图2所示,本发明实施例提供了一种创建会话窗口的方法,包括:
步骤201:接收会话请求,其中,该会话请求中携带会话类型;
其中,会话请求是由外部事件引起的,会话类型包括好友类型、群类型、讨论组类型或临时会话类型等。例如,对于用于聊天的即时通信软件,在该即时通信软件的主面板的好友列表中,用户利用鼠标等双击某个好友的头像,该主面板生成会话请求并在会话请求中携带会话类型为好友类型。其中,外部事件为用户双击该好友的头像。
步骤202:创建母板,根据会话请求中携带的会话类型获取该会话类型对应的脚本描述,其中,母板包括界面部分和逻辑部分;
其中,母板为一个控件,在母板中可以填充其他的子控件。在本实施例中,分别以对象的形式实现母板中的界面部分和逻辑部分,界面部分提供了会话窗口的轮廓,如图3所示的一种母板的界面部分。
其中,技术人员事先建立并存储每种会话类型对应的脚本描述。在脚本描述中事先规定用于填充母板的每个子控件的控件名,以及在母板中各子控件的布局信息。因此,脚本描述包括两部分内容:一部分规定用于填充母板的所有子控件的控件名,另一部分为每个子控件的布局信息包括位置、大小、间隙或底图等。脚本描述可以是XML(ExtensibleMarkupLanguage,可扩展标记语言)代码,并以XML文件的形式存在。如下所示的即时通信软件中的好友类型所对应的脚本描述,该脚本描述的代码为:
上述脚本描述中描述了六个子控件的控件名分别为“Profile”、“Toolbar”、“Sidebar”、“Prompt”、“BottomFrame”和“ChatMsg”,以及每个子控件在母板中的位置分别为“Top”、“Top”、“Right”、“Top”、“Bottom”和“Fill”。
其中,在本实施例中,技术人员可以根据不同的即时通信软件产品的要求,在脚本描述中设置用于填充母板的子控件以及每个子控件的布局,从而能够满足即时通信软件产品的个性化要求。
步骤203:通过对获取的脚本描述进行解析,获取用于填充母板的所有子控件的控件名,以及每个子控件的布局信息;
其中,由于会话窗口的基本功能是为联系人提供信息交流的界面,因此,每种会话类型对应的脚本描述都存在实现基本功能的ChatMsg子控件。
例如,从步骤202中的好友类型对应的脚本描述中获取用于填充母板的每个子控件的控件名分别为Profile”、“Toolbar”、“Sidebar”、“Prompt”、“BottomFrame”和“ChatMsg”,以及每个子控件在母板中的位置分别为“Top”、“Top”、“Right”、“Top”、“Bottom”和“Fill”。
步骤204:根据获取的每个控件名,获取每个子控件的界面部分,并利用每个子控件的界面部分填充母板;
具体地,根据获取的每个控件名,从控件名与界面部分的对应关系中查找每个子控件的界面部分,根据每个子控件的布局信息,将每个子控件的界面部分填充在母板中。
其中,参照脚本描述中描述的每个子控件的顺序,依次将每个子控件的界面部分填充在母板中。另外,每个子控件包括界面部分和逻辑部分,在本实施例中以对象的数据结构来实现界面部分和逻辑部分。
其中,对于同一控件名可以对应多种会话类型的子控件,但每个子控件的界面部分都相同而逻辑部分都互不相同。例如,对于“Profile”子控件,好友类型的“Profile”子控件和群类型的“Profile”子控件的界面部分都相同而逻辑部分互不相同。技术人员事先开发每个子控件对应的一个界面部分和对应的一个或多个逻辑部分;并将界面部分和逻辑部分分开存储。其中,技术人员事先存储控件名与界面部分的对应关系如表1所示,以及控件名、会话类型与逻辑部分的三者对应关系如表2所示。
表1
控件名 | 界面部分 |
Profile | Profile的界面部分 |
Sidebar | Sidebar的界面部分 |
…… | …… |
表2
控件名 | 会话类型 | 逻辑部分 |
Profile | 好友类型 | 好友类型的Profile的逻辑部分 |
Sidebar | 好友类型 | 好友类型的Sidebar的逻辑部分 |
Profile | 群类型 | 群类类型的Profile的逻辑部分 |
…… | …… | …… |
其中,通过将每个子控件的界面部分填充整个母板,使得整个母板被划分成多个区域,每个子控件即为一个区域。
例如,根据控件名“Profile”、“Toolbar”、“Sidebar”、“Prompt”、“BottomFrame”和“ChatMsg”从如表1所示的控件名与界面部分,分别获取“Profile”子控件、“Toolbar”子控件、“Sidebar”子控件、“Prompt”子控件、“BottomFrame”子控件和“ChatMsg”子控件的界面部分;然后参照脚本描述中的每个子控件的顺序,首先根据“Profile”子控件的位置“Top”,将“Profile”子控件的界面部分填充在如图3所示母板的顶部;然后根据“Toolbar”子控件的位置“Top”,将“Toolbar”子控件的界面部分填充在母板的剩下部分的顶部;再根据“Sidebar”子控件的位置“Right”,将“Sidebar”子控件的界面部分填充在母板的剩下部分的右边。按上述相同的方法分别将剩下的每个子控件的界面部分填充在如图3所示的母板中,得到的填充后的母板如图4所示。其中,在如图4所示的母板中,Profile为资料区,Toolbar为顶部按扭区,Sidebar为扩展区,Prompt为提示区和ChatMsgCtrl为会话区。
步骤205:根据获取的每个控件名和携带的会话类型,获取每个子控件的逻辑部分,并将每个子控件的逻辑部分绑定在其自身的界面部分上;
具体地,根据获取的每个控件名和携带的会话类型,从控件名、会话类型与逻辑部分的三者对应关系中查找每个子控件的逻辑部分,在母板中将每个子控件的逻辑部分与其自身的界面部分进行绑定。
例如,根据获取的控件名“Profile”,从如表2所示的控件名、会话类型和逻辑部分的三者对应关系中,查找“Profile”子控件的逻辑部分,在如图4所示的母板中将“Profile”子控件的逻辑部分与界面部分进行绑定。按上述相同的方法对剩下的每个子控件的界面部分和逻辑部分进行绑定。
其中,在实现具体的某个即时通信软件产品时,为了能够使会话窗口承载更多丰富的应用,将实现应用的插件加载到母板中的子控件上。其中,子控件的界面部分可以承载插件的图标等,子控件的逻辑部分提供接口功能,可以与插件进行交互。将子控件的界面部分与逻辑部分绑定在一起,就可以实现当用户单击界面部分承载的插件的图标时,逻辑部分与插件进行交互并运行插件。
步骤206:通过在母板中注册每个子控件,使每个子控件能够与母板直接交互,建立窗口,并将母板放置在建立的窗口中,得到会话窗口;
其中,在母板中注册每个子控件的步骤具体为:在母板的逻辑部分中为每个子控件设置一个指针,该指针用于母板与子控件进行交互。在本实施例中,母板中的每个子控件都是相互独立地,任意两个子控件不可以直接进行交互。如果两个子控件需要交互信息,则其中一个子控件先与母板的逻辑部分进行交互信息,母板的逻辑部分通过指针调用另一个子控件,再与另一个子控件进行交互信息,如此完成该两子控件进行交互信息。
其中,在本实施例中,每个子控件都为自定义控件,在母板中每个子控件都相互独立且不可以直接交互,而通过将每个子控件注册在母板中,使得每个子控件都可以直接与母板交互,而任意两个子控件都通过母板进行交互。
其中,由于控件不能够单独显示,所以母板以及母板中填充的子控件不能单独地显示,因此,必须将母板放置在窗口中,才能以会话窗口的形式显示。另外,在本实施例中,也可以当接收到会话请求后就建立窗口,如此,在本步骤中当在母板注册完每个子控件后,直接将母板放置在会话窗口中。
步骤207:为该会话窗口建立聊天信道,其中,该会话窗口至少能够为联系人提供信息交流的界面。
其中,先建立一个Session(会话),将整个会话窗口粘贴在建立的Session中,由Session建立聊天信道并维护聊天信道。另外,Session还负责会话窗口与即时通信软件的主面板之间的信息交互。
进一步地,对于即时通信软件,由于可以同时存在多个会话窗口,每个会话窗口对应一个Session,为了便于管理每个Session,因此设置Session管理器并将建立的新Session注册在该Session管理器中。
进一步地,当会话窗口的母板接收到某个事件时,母板根据注册在自身的每个子控件的指针,查询每个子控件,如果查询出能够处理该事件的子控件,则将该事件交于查询出的子控件处理。
进一步地,如果需要使会话窗口中具有丰富的应用,则可以将插件加载到会话窗口中的子控件中,使会话窗口承载更多丰富的应用。例如,需要在会话窗口中承载联系人的虚拟形象这个应用,则在会话窗口中,只要将联系人的虚拟形象加载到Sidebar的界面部分,并通过Sidebar的逻辑部分与实现虚拟形象的插件进行交互。
其中,由于会话窗口中的每个子控件是互相独立且不可以直接交互,所以会话窗口中的任意一个子控件中的插件与其他子控件中的插件相互独立且不可以直接交互,任意两子控件通过母板进行交互,所以当需要改变会话窗口的布局时,只要改变会话窗口中的子控件的布局,且改变布局后不需要对会话窗口中各插件的交互代码进行修改,如此减少开发成本;当对某个即时通信软件产品的会话窗口进行升级时,只需要对升级的部分所在的子控件进行修改,其他的部分继承原会话窗口,如此减轻新功能开发难度且减少开发成本;当在某个即时通信软件产口的会话窗口的基础上开发另一个会话窗口时,只要对修改的部分所在的子控件进行修改,而其他的部分继承原会话窗口,如此减轻新产品开发难度且减少开发成本。
其中,在即时通信软件中,可以同时创建多个会话窗口,每个会话窗口的会话类型可以不全相同,在本实施例中,可以为该即时通信软件创建一个树,在该树中,每个叶子节点用于标识创建的会话窗口;会话类型都相同的叶子节点具有公共的父节点,该父节点用于标识这些叶子节点所属的会话类型;每个用于标识会话类型的节点具有公共的父节点,该父节点用于标识该即时通信软件。其中,树中的每个节点的数据结构可以为接口。
其中,在本实施例中,可以对创建的母板进行横向切割,采用分层的方式将母板分解成展示层、逻辑层和数据通信层等,然后,通过展示层承载每个子控件的界面部分,数据通信层负责与子控件交互并进行会话消息的收发,逻辑层负责将展示层和数据通信层连接起来。
在本发明实施例中,在脚本描述中设置用于填充母板的每个子控件,并将每个子控件填充在母板中,将母板放置在窗口中得到会话窗口。由于会话窗口中的每个子控件相互独立,任意两个子控件中承载的插件也相互独立,因此改变原会话窗口的布局时,不需要修改每个插件之间的交互代码,在原会话窗口中开发新会话窗口,则只要对修改的部分所在的子控件进行修改,而其他的部分继承原会话窗口,如此减轻开发难度和减少开发成本,且使得会话窗口具有高内聚低耦合的特性。
实施3
如图5所示,本发明实施例提供了一种创建会话窗口的方法,包括:
步骤301:接收创建请求,其中,该创建请求中携带会话类型;
其中,会话请求是由外部事件引起的,会话类型包括好友类型、群类型、讨论组类型或临时会话类型等。例如,对于用于聊天的即时通信软件,在该即时通信软件的主面板的好友列表中,用户利用鼠标等双击某个好友的头像,该主面板生成会话请求并在会话请求中携带会话类型为好友类型。其中,外部事件为用户双击该好友的头像。
步骤302:根据创建请求中携带的会话类型创建对应的母板,以及获取该会话类型对应的脚本描述;
其中,技术人员事先建立并存储每种会话类型对应的脚本描述。在脚本描述中事先规定用于填充母板的每个子控件的控件ID,以及每个子控件在母板中的布局信息。所以在本实施例中,脚本描述包括两部分内容分别为:一部分为用于填充母板的每个子控件的控件ID,另一部分为每个子控件的布局信息包括位置、大小、间隙或底图等。如下所示的即时通信软件中的好友类型所对应的脚本描述,该脚本描述的代码为:
上述脚本描述中描述了六个子控件的控件ID分别为“ID1”、“ID2”、“ID3”、“ID4”、“ID5”和“ID6”,以及每个子控件在母板中的位置分别为“Top”、“Top”、“Right”、“Top”、“Bottom”和“Fill”。另外,在脚本描述中至少包括实现会话窗口的基本功能的子控件ChatMsg。
步骤303:通过对获取的脚本描述进行解析,获取用于填充母板的每个子控件的ID,以及每个子控件的布局信息;
例如,从步骤302中的好友类型对应的脚本描述中获取用于填充母板的每个子控件的控件ID分别为“ID1”、“ID2”、“ID3”、“ID4”、“ID5”和“ID6”,以及每个子控件在母板中的位置分别为“Top”、“Top”、“Right”、“Top”、“Bottom”和“Fill”。
步骤304:根据每个控件ID,获取每个子控件的界面部分,并利用每个子控件的界面部分填充母板;
具体地,根据获取的每个控件ID,从控件ID与界面部分的对应关系中查找每个子控件的界面部分,根据获取的每个子控件的布局信息,将每个子控件的界面部分填充在母板的界面部分中。
其中,每个子控件包括界面部分和逻辑部分,同一个控件ID可以对应多个不同会话类型的子控件,且每个子控件的界面部分都相同而逻辑部分互不相同。技术人员事先开发每个子控件的界面部分和其对应的一个或多个逻辑部分。另外,技术人员事先存储控件ID与控件的逻辑部分的对应关系如表3所示,以及控件ID、会话类型与逻辑部分的三者对应关系如表4所示。
表3
控件ID | 界面部分 |
ID1 | Profile的界面部分 |
ID2 | Sidebar的界面部分 |
…… | …… |
表4
控件ID | 会话类型 | 逻辑部分 |
ID1 | 好友类型 | 好友类型的Profile的逻辑部分 |
ID2 | 好友类型 | 好友类型的Sidebar的逻辑部分 |
ID1 | 群类型 | 群类型的Profile的逻辑部分 |
…… | …… | …… |
例如,根据控件“ID1”、“ID2”、“ID3”、“ID3”、“ID4”、“ID5”和“ID6”从如表3所示的控件ID与界面部分,分别获取“Profile”子控件、“Toolbar”子控件、“Sidebar”子控件、“Prompt”子控件、“BottomFrame”子控件和“ChatMsg”子控件的界面部分的界面部分;然后参照脚本描述中的每个子控件的顺序,首先根据“Profile”子控件的位置“Top”,将“Profile”子控件的界面部分填充在如图3所示母板的顶部;然后根据“Toolbar”子控件的位置“Top”,将“Toolbar”子控件的界面部分填充在母板的剩下部分的顶部;再根据“Sidebar”子控件的位置“Right”,将“Sidebar”子控件的界面部分填充在母板的剩下部分的右边。按上述相同的方法分别将剩下的每个子控件的界面部分填充在如图3所示的母板中,得到的填充后的母板如图4所示。
步骤305:根据获取的每个控件ID和携带的会话类型,获取每个子控件的逻辑部分,并将每个子控件逻辑部分绑定在其自身的界面部分上;
具体地,根据获取的每个控件ID和携带的会话类型,从控件ID、会话类型与逻辑部分的三者对应关系中查找每个子控件的逻辑部分,并在母板中将每个子控件的界面部分与逻辑部分进行绑定。
例如,根据获取的控件ID为“ID1”,从如表4所示的控件ID、会话类型和逻辑部分的三者对应关系中,查找“Profile”子控件的逻辑部分,在如图4所示的母板中将“Profile”子控件的逻辑部分与界面部分进行绑定。按上述相同的方法对母板中剩下的每个子控件的界面部分和逻辑部分进行绑定。
步骤306:通过在母板中的注册每个子控件,使每个子控件能够与母板进行交互,建立窗口,并将母板承载在建立的窗口中,得到会话窗口。
其中,由于控件不能够单独显示,所以母板以及母板中填充的子控件不能单独地显示,因此,必须将母板放置在窗口中,才能以会话窗口的形式显示。
步骤307:为该会话窗口建立聊天信道,其中,该会话窗口至少能够为联系人提供信息交流的界面。
其中,由于会话窗口中的每个子控件是互相独立且不可以直接交互,所以会话窗口中的任意一个子控件中的插件与其他子控件中的插件相互独立且不可以直接交互,任意两子控件通过母板进行交互。
进一步地,如果需要使会话窗口中具有丰富的应用,则可以将插件加载到会话窗口中的子控件中,使会话窗口承载更多丰富的应用。
在本发明实施例中,在脚本描述中设置用于填充母板的每个子控件,并将每个子控件填充在母板中,将母板放置在窗口中得到会话窗口。由于会话窗口中的每个子控件相互独立,任意两个子控件中承载的插件也相互独立,因此改变原会话窗口的布局时,不需要修改每个插件之间的交互代码,在原会话窗口中开发新会话窗口,则只要对修改的部分所在的子控件进行修改,而其他的部分继承原会话窗口,如此减轻开发难度和减少开发成本,且使得会话窗口具有高内聚低耦合的特性。
实施例4
如图6所示,本发明实施例提供了一种创建会话窗口的装置,包括:
接收模块401,用于接收创建请求,该创建请求中携带会话类型;
创建模块402,用于创建母板以及获取携带的会话类型对应的脚本描述,该脚本描述中至少包括会话区子控件;
填充模块403,用于将该脚本描述中描述的每个子控件填充在创建的母板中;
注册模块404,用于在创建的母板中注册每个子控件,使每个子控件与创建的母板交互,将创建的母板粘贴在窗口得到会话窗口,并为会话窗口建立聊天通道。
其中,填充模块403具体包括:
第一获取单元,用于通过对该脚本描述进行解析,获取每个子控件的标识和每个子控件的布局信息;
第二获取单元,用于根据携带的会话类型和每个子控件的标识,获取每个子控件的界面部分和逻辑部分;
填充单元,用于根据每个子控件的布局信息,将每个子控件的界面部分填充在创建的母板中,并对每个子控件的界面部分和逻辑部分进行绑定;
其中,第二获取单元具体包括:
第一查找子单元,用于根据每个子控件的标识,从标识与界面部分的对应关系中查找每个子控件的界面部分;
第二查找子单元,用于根据携带的会话类型和每个子控件的标识,从标识、会话类型与逻辑部分的对应关系中查找每个子控件的逻辑部分;
其中,子控件包括界面部分和逻辑部分,且任意两个子控件通过创建的母板进行交互;
进一步地,该装置还包括:
查询模块,用于在会话窗口中,如果创建的母板接收到事件,查询创建的母板中的每个子控件,如果查询出能够处理该事件的子控件,则将该事件交于查询的子控件处理。
其中,在本实施例中,子控件的标识包括控件名或控件ID。
在本发明实施例中,在脚本描述中设置用于填充母板的每个子控件,并将每个子控件填充在母板中,将母板放置在窗口中得到会话窗口。由于会话窗口中的每个子控件相互独立,任意两个子控件中承载的插件也相互独立,因此改变原会话窗口的布局时,不需要修改每个插件之间的交互代码,在原会话窗口中开发新会话窗口,则只要对修改的部分所在的子控件进行修改,而其他的部分继承原会话窗口,如此减轻开发难度和减少开发成本,且使得会话窗口具有高内聚低耦合的特性。
以上实施例提供的技术方案中的全部或部分内容可以通过软件编程实现,其软件程序存储在可读取的存储介质中,存储介质例如:计算机中的硬盘、光盘或软盘。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种创建会话窗口的方法,其特征在于,所述方法包括:
接收创建请求,所述创建请求中携带会话类型;
创建母板以及获取所述会话类型对应的脚本描述,所述脚本描述中至少包括会话区子控件;
将所述脚本描述中描述的每个子控件填充在所述母板中;
在所述母板中注册所述每个子控件,使所述每个子控件与所述母板交互,将所述母板粘贴在窗口得到会话窗口,并为所述会话窗口建立聊天通道;其中,在所述母板中注册所述每个子控件为:在所述母板的逻辑部分中为每个子控件设置一个指针,所述指针用于所述母板与子控件进行交互;
其中,所述将所述脚本描述中描述的每个子控件填充在所述母板中,具体包括:
通过对所述脚本描述进行解析,获取所述每个子控件的标识和所述每个子控件的布局信息;
根据所述会话类型和所述每个子控件的标识,获取所述每个子控件的界面部分和逻辑部分;
根据所述每个子控件的布局信息,将所述每个子控件的界面部分填充在所述母板中,并对所述每个子控件的界面部分和逻辑部分进行绑定;
其中,所述根据所述会话类型和所述每个子控件的标识,获取所述每个子控件的界面部分和逻辑部分,具体包括:
根据所述每个子控件的标识,从标识与界面部分的对应关系中查找所述每个子控件的界面部分;
根据所述会话类型和所述每个子控件的标识,从标识、会话类型与逻辑部分的对应关系中查找所述每个子控件的逻辑部分。
2.如权利要求1所述的方法,其特征在于,所述子控件包括界面部分和逻辑部分,且任意两个子控件通过所述母板进行交互。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:
在所述会话窗口中,如果所述母板接收到事件,查询所述母板中的每个子控件,如果查询出能够处理所述事件的子控件,则将所述事件交于所述查询的子控件处理。
4.一种创建会话窗口的装置,其特征在于,所述装置包括:
接收模块,用于接收创建请求,所述创建请求中携带会话类型;
创建模块,用于创建母板以及获取所述会话类型对应的脚本描述,所述脚本描述中至少包括会话区子控件;
填充模块,用于将所述脚本描述中描述的每个子控件填充在所述母板中;
注册模块,用于在所述母板中注册所述每个子控件,使所述每个子控件与所述母板交互,将所述母板粘贴在窗口得到会话窗口,并为所述会话窗口建立聊天通道;其中,在所述母板中注册所述每个子控件为:在所述母板的逻辑部分中为每个子控件设置一个指针,所述指针用于所述母板与子控件进行交互;
其中,所述填充模块具体包括:
第一获取单元,用于通过对所述脚本描述进行解析,获取所述每个子控件的标识和所述每个子控件的布局信息;
第二获取单元,用于根据所述会话类型和所述每个子控件的标识,获取所述每个子控件的界面部分和逻辑部分;
填充单元,用于根据所述每个子控件的布局信息,将所述每个子控件的界面部分填充在所述母板中,并对所述每个子控件的界面部分和逻辑部分进行绑定;
其中,所述第二获取单元具体包括:
第一查找子单元,用于根据所述每个子控件的标识,从标识与界面部分的对应关系中查找所述每个子控件的界面部分;
第二查找子单元,用于根据所述会话类型和所述每个子控件的标识,从标识、会话类型与逻辑部分的对应关系中查找所述每个子控件的逻辑部分。
5.如权利要求4所述的装置,其特征在于,所述子控件包括界面部分和逻辑部分,且任意两个子控件通过所述母板进行交互。
6.如权利要求4所述的装置,其特征在于,所述装置还包括:
查询模块,用于在所述会话窗口中,如果所述母板接收到事件,查询所述母板中的每个子控件,如果查询出能够处理所述事件的子控件,则将所述事件交于所述查询的子控件处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010144498.0A CN102214090B (zh) | 2010-04-09 | 2010-04-09 | 一种创建会话窗口的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010144498.0A CN102214090B (zh) | 2010-04-09 | 2010-04-09 | 一种创建会话窗口的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102214090A CN102214090A (zh) | 2011-10-12 |
CN102214090B true CN102214090B (zh) | 2015-11-25 |
Family
ID=44745413
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010144498.0A Active CN102214090B (zh) | 2010-04-09 | 2010-04-09 | 一种创建会话窗口的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102214090B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103428073B (zh) * | 2012-05-24 | 2015-06-17 | 腾讯科技(深圳)有限公司 | 一种基于用户界面的即时通信方法及装置 |
CN104298495B (zh) * | 2013-07-19 | 2018-07-20 | 桥弘数控科技(上海)有限公司 | 一种基于脚本语言的程序开发方法及*** |
CN104699363B (zh) * | 2013-12-10 | 2018-09-21 | 阿里巴巴集团控股有限公司 | 一种窗口界面展现方法及*** |
CN104270427B (zh) * | 2014-09-18 | 2018-01-12 | 用友优普信息技术有限公司 | 会话控制方法与会话控制装置 |
CN111277615B (zh) * | 2018-12-04 | 2022-01-11 | 阿里巴巴集团控股有限公司 | 基于浏览器的用户行为追踪方法、终端设备及服务器 |
CN111209000B (zh) * | 2020-01-08 | 2024-01-26 | 网易(杭州)网络有限公司 | 自定义控件的处理方法、装置、电子设备及存储介质 |
CN111726395B (zh) * | 2020-05-29 | 2023-01-31 | 广州奇芯机器人技术有限公司 | 一种数控***自动通讯机制 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101127736A (zh) * | 2007-09-26 | 2008-02-20 | 腾讯科技(深圳)有限公司 | 一种即时通讯***及其处理子面板的方法 |
CN101677298A (zh) * | 2008-09-17 | 2010-03-24 | 多友科技(北京)有限公司 | 一种企业即时通讯***的多方会话实现方法 |
-
2010
- 2010-04-09 CN CN201010144498.0A patent/CN102214090B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101127736A (zh) * | 2007-09-26 | 2008-02-20 | 腾讯科技(深圳)有限公司 | 一种即时通讯***及其处理子面板的方法 |
CN101677298A (zh) * | 2008-09-17 | 2010-03-24 | 多友科技(北京)有限公司 | 一种企业即时通讯***的多方会话实现方法 |
Non-Patent Citations (2)
Title |
---|
大规模软件架构的MVC统一框架的设计与实现;万凯;《中国优秀硕士学位论文全文数据库》;20090831;第3节 * |
安全即时通信***的改进性研究、设计与实现;左志斌;《中国优秀硕士学位论文全文数据库》;20090731;第5节 * |
Also Published As
Publication number | Publication date |
---|---|
CN102214090A (zh) | 2011-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102214090B (zh) | 一种创建会话窗口的方法及装置 | |
CN110310088B (zh) | 工作流配置方法及相关产品 | |
US7496890B2 (en) | Generation of configuration instructions using an abstraction technique | |
CN101216862B (zh) | 无纸化三维装配工艺文件的实现方法 | |
CN105700888A (zh) | 一种基于jbpm工作流引擎的可视化快速开发平台 | |
CN105117835A (zh) | 一种基于b/s架构的电网信息机房三维可视化管理平台 | |
CN104123227A (zh) | 一种自动生成测试用例的方法 | |
CN110457891A (zh) | 一种权限配置界面显示方法、装置、终端以及存储介质 | |
CN103714492A (zh) | 符合配电网管理特定数据标准的自动报告生成方法 | |
CN107704243A (zh) | 前端界面的构建方法及装置、计算机设备和存储介质 | |
CN100465882C (zh) | 为全球应用创建文化敏感控件的方法和*** | |
CN103150154B (zh) | 一种应用程序插件的实现方法及装置 | |
CN108399072A (zh) | 应用页面更新方法和装置 | |
CN112232047A (zh) | 一种多维数据采集和自动汇总方法、***、设备和介质 | |
CN103186632A (zh) | 一种运维表单定制的方法及装置 | |
CN104008441A (zh) | 一种自动提交版本库归档的任务管理***及方法 | |
CN107357952A (zh) | 一种基于网络的自动装配及三维交互方法与*** | |
CN109558191A (zh) | 一种配置页面的方法、装置、存储介质及计算机设备 | |
CN113031936A (zh) | 一种自动搭建页面并即时发布的方法及*** | |
CN102097015A (zh) | 一种作业指导书处理***及方法 | |
CN107436785B (zh) | 基于信息***的Revit软件信息交互***及交互方法 | |
CN110889013B (zh) | 一种基于xml的数据关联方法、装置、服务器及存储介质 | |
CN112580143A (zh) | 一种基于bim的装配式建筑协同云平台 | |
CN109783596B (zh) | 一种基于Angular组件的ArcGIS地图配置预览方法 | |
CN107872483A (zh) | 媒体内容的推送方法、装置及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |