zoukankan      html  css  js  c++  java
  • 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();
      }
     }

  • 相关阅读:
    jupyter同时使用python2、3
    [python之ipython] jupyter notebook在云端服务器上开启,本地访问
    Transformer的PyTorch实现--转载
    二叉树中和为某一值的路径
    hadoop初识笔记
    大数据初识笔记
    mysql快速入门笔记
    118.Java反射-工厂模式
    117.Java观察者设计模式
    116.Java对象的拷贝
  • 原文地址:https://www.cnblogs.com/CoffeeHome/p/3547516.html
Copyright © 2011-2022 走看看