发明内容
为了解决上述问题,本发明提出了一种使用多视图的方法,该方法让用户既可以查看完整的树形结构数据,又可以单独查看其关心的树形结构分支,用户可以轻易地在各个视图间切换,相同数据在不同视图中的状态完全一致。
本发明采用的技术方案如下:
一种多视图浏览树形结构数据的方法,包括步骤:
1)使用树控件构造树形结构数据的主树,将对应该主树的主视图放入树浏览器内;
2)根据用户选择的子树构造对应该子树的子视图,将该子视图放入树浏览器内;
3)根据用户的切换命令在视图之间进行切换。
进一步地:
所述构建子视图步骤2)的详细步骤是:
2.1)用户选择子树;
2.2)构造一个包括用户所选的树节点及其下级节点的子树;
2.3)隐去当前显示的视图,将对应该子树的子视图放入树浏览器内。
所述切换视图步骤3)的详细步骤是:
3.1)将当前视图中子树的状态同步至主视图的主树上,使主视图中对应树节点及其分支的状态与当前视图中子树的状态一致;
3.2)构建子视图,加载用户所选的目标树节点及其下级节点数据,如果目标树节点确定的子视图已经存在,则本步骤省略;
3.3)从主视图的主树上恢复目标视图子树的状态;
3.4)隐藏当前视图并显示目标视图。
当用户的操作命令是向上时,则隐去当前显示的视图,转而显示当前视图中根节点的父节点所确定的子视图;
当操作命令是返回主视图时,则隐去当前显示的视图,转而显示主视图。
进一步包括记忆和恢复步骤4):当关闭树浏览器时,记忆当前浏览状态,再次打开树浏览器时,恢复记忆的浏览状态。
所述的记忆和恢复步骤4)的详细步骤是:
3.1)用户发出关闭树浏览器命令;
3.2)记录当前视图的根节点;
3.3)将当前视图的树状态同步至主视图树上;
3.4)记录主视图树的状态;
3.5)关闭树浏览器,至此视图已被记忆,下面是恢复步骤;
3.6)再次打开树浏览器;
3.7)加载主视图树,从记录里恢复主视图树的状态;
3.8)打开子视图,加载记录里的根节点,根据主视图树的状态恢复子视图树的状态。
本发明具有以下优点:
如果树型结构数据比较大,用户又往往只关心一个或某几个小分支,采用此种多视图方式浏览,用户既能够单独浏览某个树分支,又能够随时查看完整的树,这样就不会由于树太大而分散用户的注意力,同时,在视图间导航时,又能够保持树状态的一致性,过渡平滑,既增加浏览效率,又提高浏览体验。用户打开结构树后无需逐级展开找到其关注的树节点或视图,树浏览器会自动恢复至上次关闭时的状态,极大提高了用户的工作效率。
具体实施方式
本发明使用多视图加记忆来浏览树形结构数据,包括步骤:
1)使用树控件构造树形结构数据的主树,将对应该主树的主视图放入树浏览器内;
2)根据用户选择的子树构造对应该子树的子视图,将该子视图放入树浏览器内;
3)根据用户的切换命令在视图之间进行切换。
所述构建子视图步骤2)的详细步骤是:
2.1)用户选择子树;
2.2)构造一个包括用户所选的树节点及其下级节点的子树;
2.3)隐去当前显示的视图,将对应该子树的子视图放入树浏览器内。
所述切换视图步骤3)的详细步骤是:
3.1)将当前视图中子树的状态同步至主视图的主树上,使主视图中对应树节点及其分支的状态与当前视图中子树的状态一致;
3.2)构建子视图,加载用户所选的目标树节点及其下级节点数据,如果目标树节点确定的子视图已经存在,则本步骤省略;
3.3)从主视图的主树上恢复目标视图子树的状态;
3.4)隐藏当前视图并显示目标视图。
当用户的操作命令是向上时,则隐去当前显示的视图,转而显示当前视图中根节点的父节点所确定的子视图;当操作命令是返回主视图时,则隐去当前显示的视图,转而显示主视图。
本发明进一步包括记忆和恢复步骤4):当关闭树浏览器时,记忆当前浏览状态,再次打开树浏览器时,恢复记忆的浏览状态。其详细步骤是:
3.1)用户发出关闭树浏览器命令;
3.2)记录当前视图的根节点;
3.3)将当前视图的树状态同步至主视图树上;
3.4)记录主视图树的状态;
3.5)关闭树浏览器,至此视图已被记忆,下面是恢复步骤;
3.6)再次打开树浏览器;
3.7)加载主视图树,从记录里恢复主视图树的状态;
3.8)打开子视图,加载记录里的根节点,根据主视图树的状态恢复子视图树的状态。
下面详细说明
一、多视图浏览
一个完整的树形结构数据有许许多多的视图,树形结构上的每个树节点都能唯一确定一个视图,如图1所示,10所代表的是由树节点A确定的完整树形结构视图,即为主视图;20所代表的是由树节点F确定的子视图,该视图展示树节点F、G和H;30所代表的是由树节点C确定的子视图,该子视图展示树节点C及其下级节点。当然其它节点如B、D等也确定了自己的视图。
在本发明中,所有视图都在同一个窗口的同一个位置展示,且每次只能展示一个视图,当一个视图可见时,其它视图都处于隐藏状态,每个视图都有一个树控件与之对应,负责展示该视图中的数据。
由于背后存在多个视图,窗口每次又只显示一个视图,因此,必须提供多个命令,使用户能够在多个视图间自由切换,本发明提供如下3个视图切换命令:“进入”、“向上”和“返回主视图”。
“进入”命令用来显示当前视图选中节点所确定的子视图,以图1来说明,用户在10所示的视图中选中11所示的F树节点,执行12“进入”命令,窗口就显示20所示的视图,20所示的视图中21所指示的F树节点及其分支的状态与10所示的视图中11所指示的F节点及其分支的状态完全一致。同样,用户在30所示的视图中选中31所示的F树节点,执行33“进入”命令,窗口就显示20所示的视图,20所示的视图中21所指示的F树节点及其分支的状态与30所示的视图中31所指示的F节点及其分支的状态完全一致。
“向上”命令用来显示当前视图根节点的父节点所确定的子视图,可以用来扩大显示范围,以图1来说明,用户在20所示的视图中执行23“向上”命令,窗口就显示30所示的视图,该视图中32所示C树节点及其分支的状态与10所示的主视图中C树节点及其分支的状态完全一致。
“返回主视图”命令用来显示主视图,不管当前显示的是哪个子视图,用户都可以使用该命令显示主视图,查看完整树形结构数据,以图1来说明,如果当前显示的是20所示的视图,执行22所示的“返回主视图”命令即可显示主视图,如果当前显示的是30所示的视图,执行34所示的“返回主视图”命令也可显示主视图。
视图切换步骤如下:
步骤1:用户发出视图切换命令;
步骤2:将当前视图中子树的状态(包括展开和选中状态等)同步至主视图的主树上,使主视图中对应树节点及其分支的状态与当前视图中子树的状态一致;
步骤3:新建子视图,加载目标树节点及其下级节点数据,如果目标树节点确定的子视图已经存在,则本步骤省略;
步骤4:从主视图的主树上恢复目标视图子树的状态;
步骤5:隐藏当前视图并显示目标视图。
本方法的优点如下:如果树型结构数据比较大,用户又往往只关心一个或某几个小分支,采用此种多视图方式浏览,用户既能够单独浏览某个树分支,又能够随时查看完整的树,这样就不会由于树太大而分散用户的注意力,同时,在视图间导航时,又能够保持树状态的一致性,过渡平滑,既增加浏览效率,又提高浏览体验。
下面再对步骤2中出现的“同步”的概念进行解释并说明实现同步的做法:
状态同步:以图1的例子来解释,当浏览器显示子视图20时,用户可以单击F节点左边的“-”符号使G和H隐藏起来,这时子视图20将只显示F节点(用来显示子视图的树控件都拥有该功能),而处于后台隐藏状态的主视图10上,G和H节点却处于显示状态。因此,必须使主视图10上的F处于非展开状态,G和H节点隐藏,这样才能保证两个视图中相同节点的状态一致。
实现同步的做法:
首先记录子视图20各节点的状态:
F是否展开(否)是否选中(否)
G是否展开(否)是否选中(否)
H是否展开(否)是否选中(否)
然后设置主视图上对应节点的状态:
F收起F不选中
G收起G不选中
H收起H不选中
二、记忆与恢复浏览状态
采用本方法,树浏览器可以迅速恢复至上次关闭时的浏览状态,使用户避免每次打开树浏览器时都要逐级展开至其关注的树节点或打开相应的视图。
记忆与恢复步骤如下:
步骤1:用户发出关闭树浏览器命令;
步骤2:记录当前视图根节点;
步骤3:将当前视图的树状态同步至主视图树上;
步骤4:记录主视图树的状态;
步骤5:树浏览器关闭,至此视图已被记忆,下面是恢复步骤;
步骤6:再次打开树浏览器;
步骤7:加载主视图树,从记录里恢复主视图树的状态;
步骤8:打开子视图,加载记录里的根节点,根据主视图树的状态恢复子视图树的状态。
每次打开浏览时,各个树节点的展开和选中状态完全与上回关闭时一致,即自动记忆树的状态。