添加自定义面板

大屏中支持添加自定义面板,用户可通过二次开发的方式,自定义面板功能,满足用户不同场景的应用需求。

下文将以自定义树控件为例,介绍如定制开发树控件,且单击树节点时,地图同步定位显示对应的区域。实现流程如下:

CustomControlFlow

主要操作说明

1.定制开发实现树控件面板

(1)、继承DAbstactCustomPanel基类,基于封装好的模板构建自定义树控件在大屏中的面板。

public class DCustomTreePanel extends DAbstractCustomPanel

(2)、注册自定义树控件类型至下拉选项中,以供选择。注册后 属性 面板 自定义类型 下拉选项中,可选择 树控件 类型,如下图所示:

DashboardManger.getInstance().addCustomType(actionTreeType);

CustomTreeNode

3、根据树控件属性中的文本结构构建树,把每一行解析为一个树节点,行首的空格将解析为树的层级关系,例如:第二行B的行首较第一行A缩进一个空格,解析为树节点后,B为A的子节点。构建树节点的核心代码如下:

   final DefaultMutableTreeNode currentNode = new ScaleNode(s.trim());  
   final int nodeLevel = getNodeLevel(s);  
   if (nodeLevel == -1) {  
      continue;  
   }  
   if (nodeLevel == 0) {  
      root.add(currentNode);  
   } else {  
      getBeforeNode(root, nodes, nodeLevel).add(currentNode);  
   }  
   insertChildNode(currentNode, nodes, nodeLevel);

4、 响应树节点的选中事件,选中树节点时,根据树节点属性中指定的比例尺(scale)和地图范围(bounds),改变地图显示范围,实现地图定位。核心代码如下:

  DesktopMapControl mapControl = ((DMapPanel) ((FormDashboard) getFormDashboard()).getPanelGrid().getParameters(DParameterType.MAP).get(0)).getMapControl();  
  mapControl.getMap().setScale(scaleNode.scale);   
  mapControl.getMap().setViewBounds(scaleNode.bounds);   

mapControl.getMap().refresh();

2. 配置战区城市地图范围

在大屏中添加自定义面板,控件类型设置为 树控件 ,在 自定义控件属性中设置树控件的层级、名称、地图比例尺和显示范围,一个格则表示缩进一级,通过scale和bounds属性来设置地图的比例尺和显示范围。设置方式如下:

SettingNodeAttributes

3. 预览大屏

预览大屏,在自定义的树控件中选中不同城市,切换地图至指定的范围,切换下过如下图:

相关内容

添加地图

添加图表

添加信息板

添加图片

添加视频

添加分割线

添加按钮

添加下拉按钮