TWaver HTML5学习笔记 —— 动态设置网元样式
2014-03-23 17:17
447 查看
一、学习内容概述:
学习如何在拓扑图中动态设置网元的样式。二、学习内容总结:
1、添加属性表格:
1)、属性表格定义:使用twaver.controls.PropertySheet类,例如:
var nodeStylePropertySheet = new twaver.controls.PropertySheet();
2)、设置属性表格可编辑:setEditable(true)
nodeStylePropertySheet.setEditable(true);
3)、添加属性表格关联的对象及关联事件:
var nodeStyleData = new twaver.Element(); var propertyBox = nodeStylePropertySheet.getPropertyBox(); topo.Util.addClientProperty(propertyBox, "label.color").setEnumInfo(['black', 'red']); nodeStyleData.setClient("label.color", "black"); nodeStylePropertySheet.getDataBox().add(nodeStyleData); nodeStylePropertySheet.getDataBox().getSelectionModel().setSelection(nodeStyleData); nodeStylePropertySheet.getDataBox().addDataPropertyChangeListener(function handlePropertyChange(e) { var name = topo.Util.getPropertyName(e); network.getElementBox().forEach(function(element) { if ( element instanceof twaver.Node || element instanceof twaver.Link) { element.setStyle(name, e.newValue); } }); }, this);4)、添加各种类型的属性参考(代码来源于demo):
var map = { '': 'None', 'default': 'Default', 'children': 'Children', 'descendant': 'Descendant', 'descendantAncestor': 'Descendant and Ancestor' }; demo.Util.addClientProperty(propertyBox, "check.mode") .setEnumInfo({ map: map, values: ['', 'default', 'children', 'descendant', 'descendantAncestor'] }); demo.Util.addClientProperty(propertyBox, "checkable.function").setEnumInfo(['Leaf', 'Category', 'Check Network', 'Check All']); demo.Util.addClientProperty(propertyBox, "unCheckable.style").setEnumInfo(['none', 'disabled']); demo.Util.addClientProperty(propertyBox, "show.icon").setValueType('boolean'); demo.Util.addClientProperty(propertyBox, "layout.type").setEnumInfo(demo.LAYOUT_TYPE); this.data.setClient("check.mode", this.tree.isCheckMode()); this.data.setClient("checkable.function", 'Check All'); this.data.setClient("unCheckable.style", this.tree.getUncheckableStyle()); this.data.setClient("show.icon", true); this.data.setClient("layout.type", 'round');
三、验证代码运行效果截图:
四、验证代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>动态设置网元样式</title> <script type="text/javascript" src="./js/twaver.js"></script> <script type="text/javascript" src="./js/topo.js"></script> <script type="text/javascript"> function init() { // 添加网元 var box = new twaver.ElementBox(); // 创建拓扑图 var network = new twaver.network.Network(box); // 注册图片 topo.Util.registerImage("./images/ne/route.png"); topo.Util.registerImage("./images/ne/route_icon.png"); var node = new twaver.Node(); node.setName("ne1"); node.setLocation(20, 30); node.setImage("route"); node.setIcon("route_icon"); box.add(node); var node2 = new twaver.Node(); node2.setName("ne2"); node2.setLocation(80, 150); node2.setImage("route"); node2.setStyle("label.color", "black"); node2.setIcon("route_icon"); box.add(node2); var link = new twaver.Link(node, node2); link.setName("ne1 -- ne2"); link.setToolTip("<b> ne1 -- ne2</b>"); box.add(link); // 创建网元树 var tree = new twaver.controls.Tree(box); tree.setCheckMode('descendantAncestor'); // 设置在网元树中只显示节点 tree.setVisibleFunction(function(element) { return element instanceof twaver.Node; }); // 存储网元样式的变更的sheet页 var nodeStyleData = new twaver.Element(); var nodeStylePropertySheet = new twaver.controls.PropertySheet(); nodeStylePropertySheet.setEditable(true); var propertyBox = nodeStylePropertySheet.getPropertyBox(); topo.Util.addClientProperty(propertyBox, "label.color").setEnumInfo(['black', 'red']); nodeStyleData.setClient("label.color", "black"); nodeStylePropertySheet.getDataBox().add(nodeStyleData); nodeStylePropertySheet.getDataBox().getSelectionModel().setSelection(nodeStyleData); nodeStylePropertySheet.getDataBox().addDataPropertyChangeListener(function handlePropertyChange(e) { var name = topo.Util.getPropertyName(e); network.getElementBox().forEach(function(element) { if ( element instanceof twaver.Node || element instanceof twaver.Link) { element.setStyle(name, e.newValue); } }); }, this); // 拓扑各视图布局 var rightSplit = new twaver.controls.SplitPane(network, nodeStylePropertySheet, 'vertical', 0.7); var mainSplitPane = new twaver.controls.SplitPane(tree, rightSplit, 'horizontal', 0.3); var networkDom = mainSplitPane.getView(); networkDom.style.width = "100%"; networkDom.style.height = "100%"; document.body.appendChild(networkDom); network.getView().style.backgroundColor = "#f3f3f3"; network.getView().style.cursor = "hand"; window.onresize = function() { mainSplitPane.invalidate(); }; } </script> </head> <body onload="init()" style="margin:0;"> </body> </html>
相关文章推荐
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- HTML5中在客户端验证文件上传的大小
- 2019年开发人员应该学习的8个JavaScript框架
- IE8开发人员工具教程(二)
- 在flex中执行一个javascript方法的简单方式
- Flex结合JavaScript读取本地路径的方法
- 样式表CSS布局经验
- javascript asp教程第六课-- response方法
- javascript asp教程More About Recordsets
- javascript asp教程第十二课---session对象
- javascript asp教程创建数据库连接
- javascript asp教程错误处理
- javascript asp教程第十课--global asa
- javascript asp教程第十一课--Application 对象
- javascript 获取特定的 CSS属性值
- 大家看了就明白了css样式中类class与标识id选择符的区别小结
- 重置默认样式 css reset第1/2页
- JAVASCRIPT IE 与 FF 中兼容写法记录