• mxGraph学习笔记--设置节点鼠标事件


    //创建显示流程图的画布
     createEdit: function() {
      var self = this;
      //创建流程图编辑器,先检查加载图形库
      JxUtil.loadJxGraph();
      self.editor = new mxCanvas('public/lib/graph/config/showeditor_nav.xml');
      var graph = self.editor.graph;
      //设置编辑器为只读
      //由于设置setEnabled为false,分组块不能收缩了,所以采用下面的组合
      graph.setCellsEditable(false);
      graph.setCellsSelectable(false);
      graph.setConnectable(false);
      graph.setCellsMovable(false);
      
      //设置导航图的任务节点的鼠标与移入移出效果
      var track = new mxCellTracker(graph);
      track.mouseMove = function(sender, me) {
       var cell = this.getCell(me);
       if (cell && self.isTask(cell)) {
        //设置鼠标为样式为手状
        me.getState().setCursor('pointer');
        if (this.cur_cell == null) {
         this.cur_cell = cell;
         //设置鼠标移入节点效果
         self.moveNode(cell, true);
        }
       } else {
        //设置鼠标移出节点效果
        self.moveNode(this.cur_cell, false);
        this.cur_cell = null;
       }
      };
      
      //捕获任务节点的鼠标点击事件
      graph.addListener(mxEvent.CLICK, function(sender, evt) {
       var cell = evt.getProperty('cell');
       var nodeId = self.getTaskId(cell);
       if (nodeId.length > 0) {
        self.clickCell(self.graphId, nodeId);
       }
      });
     },

     //private 检查是否为任务节点
     isTask: function(cell) {
      if (cell == null) return false;
      
      var enc = new mxCodec();
      var node = enc.encode(cell);
      var nodetype = node.getAttribute('nodetype');
      if (nodetype == 'task') {
       return true;
      }
      return false;
     },

     /**
      * 给指定的节点设置背景色
      * cell -- 当前节点
      * isin -- true 表示鼠标在节点上,false 表示鼠标没在节点上
      **/
     moveNode: function(cell, isin) {
      //为空与灰色的节点都不处理鼠标事件
      if (cell == null) return;
      if (cell.is_disabled) return;
      
      var self = this;
      var model = self.editor.graph.getModel();
      model.beginUpdate();
      try {
       self.editor.graph.setCellStyles("strokeColor", isin?"#A1A1FF":"#C3D9FF", [cell]);
       self.editor.graph.setCellStyles("fillColor", isin?"#A1A1FF":"#C3D9FF", [cell]);
      } finally {
       model.endUpdate();
      }
     }

  • 相关阅读:
    DevExpress GridControl用法----SearchLookUpEdit,单选框,图片,颜色,进度条,分页查询
    EasyUi之Datagrid行拖放冲突处理
    [LeetCode No.1] 两数之和
    [LeetCode No.2] 两数相加
    注册定义文件扩展名图标和关联相应的应用程序
    加载进度-【圆圈+百分比】
    .net core + eureka + spring boot 服务注册与调用
    一个Java类的加载
    Nifi:nifi内置处理器Processor的开发
    Nifi:nifi的基本使用
  • 原文地址:https://www.cnblogs.com/CoffeeHome/p/3547516.html
Copyright © 2020-2023  润新知