根据选中不同的图元来显示不同的属性面板changePropertyPane.html
在现实生活中,我们有很多时候需要根据选中不同的东西来获取不同的属性,并且就算是同类型的东西我们有时也希望显示不同的属性,就像每个人都有不同的个性,可能会有相同点,但是不可能完全相同。
根据这个思想,我写了一个小例子一共还不到一百行,用的是HT For Web,通过选中不同的图元来展现不同的属性。
先来看看效果图:

ht的包里面封装了很多很有用的函数和组件以及对象,非常方便,如:创建一个节点,只需要new ht.Node(),再将这个节点添加到数据容器中去即可。在这边我自定义了一个属性“serveType”,用来判断是哪一个节点。中间的连线也是ht自带的,只需要new ht.Edge(source, target),再将这个连线添加到数据容器中。你们会注意到我一直有提到数据容器,数据容器在ht中是最基础也是最重要的一个知识点,这里我不多说,大家可以参考HT for Web 数据模型手册。
在这个例子中我将左右两边分开来,用的是ht.widget.SplitView()组件来分开的,具体可参考HT for Web 分割组件手册,一般也是声明一下,再添加到底层div中去。ht所有的操作都是基于d底层div的,然后在底层div上的canvas上绘图。
要说属性面板,ht中的property(HT for Web 属性组件手册)是真的很方便,声明之后直接调用封装好的方法即可获得我们默认的样式和位置, 上图中右边部分即属性面板。
属性面板中有一个方法setProperties,当设置这个函数的参数为空时,当前属性就会被全部清空,这样在我切换不同的图元时,属性列表不会把不属于这个图元的属性也添加上去。我是如何将同一类型的图元分到一起的呢?通过判断当前选中的图元是ht.Node还是ht.Edge类型,我用了instanceof来判断。
if(data instanceof ht.Node){
//...
}
else if(data instanceof ht.Edge){
//...
}
因为各个图元的属性在这个例子中是没有共同性的,所以必须自己一个一个写,属性的添加方式如下:
property = new ht.Property();
property.setName('name');
property.setDisplayName('Name');
propertyModel.add(property);//属性模型,属性是添加到属性模型上再添加到属性面板上的
根据选中不同的图元来显示不同的属性面板changePropertyPane.html的更多相关文章
- Revit中如何控制图元的显示与隐藏
Revit建模过程中经常会遇到图元的相互遮挡的情况,为了将一些图元显示出来,就需要将一些不需要显示的图元隐藏掉,这就需要用到"隐藏/重置"工具,在Revit绘图窗口左下角提供了一排 ...
- WinForm(C#)CheckedlistBox绑定数据,并获得选中的值(ValueMember)和显示文本(DisplayMember)
本文中我将和大家讨论关于在WinForm开发中给CheckedlistBox空间绑定数据源,并获取控件中选中的所有元素的显示文本(DisplayMember)和对应的实际值(ValueMember)的 ...
- tableview 选中一行后,不显示选中颜色
tableview 选中一行后,不显示选中颜色 千万不要将tableview的allowsSelection设置成NO,那样的话可能导致tableview不能响应点击动作. 应该使用:cell.sel ...
- 5.用JQuery实现选中select里面的option显示对应的div
用JQuery实现选中select里面的option显示对应的div HTML: <select name="" onchange="select(this)&q ...
- C# 如何定义让PropertyGrid控件显示[...]按钮,并且点击后以下拉框形式显示自定义控件编辑属性值
关于PropertyGrid控件的详细用法请参考文献: 1.C# PropertyGrid控件应用心得 2.C#自定义PropertyGrid属性 首先定义一个要在下拉框显示的控件: using Sy ...
- Freemarker不显示对象的属性
Freemarker不显示对象的属性 今天使用Freemarker在springboot项目中通过模板生成一些html文件.但是发现没有显示对象的属性. 找了很长时间,终于发现不显示对象的属性可能是两 ...
- WPF一个对象显示多个属性
一个对象显示多个属性使用模板的方法: 如图: <dataTemplate x:key="MyDataTemplate">
- 定义一个Person类,其中包括:1.定义属性:姓名、年龄、民族作为成员变量。定义静态成员变量:人数2.定义构造方法:对成员变量进行初始化。3.定义多个方法:分别显示相应的属性值,例如getName(){System.out.print("名称="+name+";"); }4.定义一个方法“成长”:实现年龄的增加,每执行一次年龄增加1
题目显示不全,完整题目描述: (1)定义一个Person类,其中包括:1.定义属性:姓名:年龄:民族作为成员变量.定义静态成员变量:人数2.定义构造方法:对成员变量进行初始化.3.定义多个方法:分别显 ...
- echarts —— tooltip 鼠标悬浮显示提示框属性
最近一直在使用echarts,当然也被其中的各种属性整的头大,记录一下其中遇到的问题. tooltip:鼠标悬浮时显示的提示框. 今天想要记录的是[自定义提示框的内容],如下图,鼠标悬浮时提示框内显示 ...
随机推荐
- 201521123112《Java程序设计》第4周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点 1.2 使用常规方法总结其他上课内容 关于多态,多态性就是相同的形态,不同的定义.在简单点说的话就是不同类的对象对同一个消息作出的相应 ...
- 【干货】教你如何利用fullPage.js以及move.js插件打造高端大气的网站效果!
前言: 如今我们经常能见到全屏网站,尤其是国外网站.这些网站用几幅很大的图片或色块做背景,再添加一些简单的内容,显得格外的高端大气上档次. 在学习过jQuery插件之后,才发现之前的很多网站特效完全可 ...
- Rabbitmq集群安装配置
Rabbitmq集群安装与配置 一.rabbitmq安装环境准备 1.安装环境准备 这里,我们以两个节点为例进行安装,一个节点为内存节点,另一个节点为硬盘节点,具体可根据自己需要分配节点. 安装系统 ...
- 市场主流5款HTML5开发框架详解
我们经常听见的前端框架是一个非常大的范词,因为前端框架都是基于JS.CSS.HTML5技术开发实现的,不过选择一个HTML5开发框架需要考虑哪些方面,首先就是需要什么样的功能,其次就是技术实现,不过当 ...
- 笔记1 linux 多线程 互斥锁
//mutex lock #include<stdio.h> #include<unistd.h> #include<pthread.h> struct test ...
- python之面向对象2
一.类命名空间与对象.实例的命名空间 常见一个类就会创建一个类的名称空间,用来储存类中定义的所有名字,这些名字成为类的属性 而类有两种属性:静态属性和动态属性 静态属性就是直接在类中定义的变量 ...
- Hibernate由model类自动同步数据库表结构
在开发中遇到了个问题,每次测试数据库增加表结构的时候,本地pull下最新代码导致启动报错,上网搜了快速解决办法---->hibernate 配置属性中,hibernate.hbm2ddl.aut ...
- 框架应用:Mybatis(二) - 动态SQL
MybatisUtil工具类 在实际开发中,我们可以编写一个MybatisUtil辅助类来进行对进行操作. 1)在静态初始化块中加载mybatis配置文件和StudentMapper.xml文件一次 ...
- CSS的常用属性
刚开始学习前段的我,还处于初级阶段,一些东西还是会有搞不明白的时候,还是要大家多多理解.今说就一些关于CSS的常用属性吧! 一.CSS常用选择器 CSS选择器应该说是一个非常重要的工具吧,选择器用得好 ...
- WebSocket部署服务器外网无法连接解决方案
首先要说的是我遇见的问题: WebSocket connection to 'ws://www.xxxx.com/xxx/xx' failed: Error during WebSocket hand ...