首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

mxGraph替读取出来的mxe或xml图添加cell事件(禁止cell拖拽修改)

2012-11-23 
mxGraph为读取出来的mxe或xml图添加cell事件(禁止cell拖拽修改)???为了模仿mxGraph中javascript里面的例子

mxGraph为读取出来的mxe或xml图添加cell事件(禁止cell拖拽修改)

?

?

?为了模仿mxGraph中javascript里面的例子中的userobject.html展示出来的效果,可费了不少功夫,花费了大半天的时间,先总结如下:

? 其一:userobject.html中的并没有读取任何mxe或者xml文件,它里面的都是自己造的XML文件,我要做的是先用CS端的Graph画好一张图生成mxe然后进行处理在读出来

? 其二:userobject.html显示出来的效果图有单击事件,每单击一个cell(vertex或者edge)都会在右边显示出来一个表单用来展现其全部属性内容。它的缺陷就是,看图的人可以随便拖动并修改cell中的内容,所以我要做的是,能单击事件但不要进行拖动

? 其三:mxGraph的拖动效果与graph.setEnabled(false)这个方法是挂钩的,设置true就表示可拖拽修改,反之就不可以,需要说明的是,我们单击的时候肯定是要获取每个cell的内容的,然而,如果你在设置为false的情况下使用

?graph.getSelectionModel().addListener(mxEvent.CHANGE, function(sender, evt)
????{
?????selectionChanged(graph);//显示属性面板
????});

这个监听器就获取不到CELL的值,因为我的selectionChanged方法中使用到了cell,之前我在selectionChanged方法里面是通过var cell = graph.getSelectionCell()来获取cell的,这种情况下如果我利用了上面的那个监听器并且设置

graph.setEnabled(false)那么肯定不会触发事件并显示表单,如果在这种情况下设置graph.setEnabled(true)那么一定可以触发得到表单,之后我有试了其他的监听器

??? graph.addListener(mxEvent.CLICK, function(sender, evt)
????{
?????selectionChanged(graph);
???? });

前提是graph.setEnabled(false)了也是不行的,后来这样试了双击的都不可以于是我就想这中间肯定是cell获取不对的问题,后来参考了script其他的两个例子如overlays的单击监听器中

?graph.addListener(mxEvent.CLICK, function(sender, evt)
????{
?????var cell = evt.getProperty('cell');

??? 。。。

??? }

?大家发现什么了吗?对了可以通过evt来获取到单击时的cell而不必像原来那样graph.getSelectionCell()来获取选中的了,这样修改下
?graph.addListener(mxEvent.CLICK, function(sender, evt)
????{
?????cell= evt.getProperty('cell');
?????selectionChanged(graph,cell);
????});
????selectionChanged(graph,cell);

哈哈哈,终于成功了,终于在禁用托债修改cell的情况下触发事件并显示表单详细内容了,现在贡献代码如下

??

?

?

      <mxGeometry x="0" y="0" width="80" height="70" as="geometry"/>
    </mxCell>


      <mxCell style="symbol;image=images/img/server.jpg" vertex="1" parent="1">        <mxGeometry x="310" y="290" width="32" height="32" as="geometry"/>      </mxCell> 5 楼 JavaCrazyer 2010-04-12   我的主要是读取CS端JGRAPH画出来的图的,你参考下fileio.html或许会有所收获 6 楼 zxh168 2010-04-12   JavaCrazyer 写道我的主要是读取CS端JGRAPH画出来的图的,你参考下fileio.html或许会有所收获

你是用JGRAPH生成的图呀,我是用自己带的那个editor里面的画的,所以形成的图可能和那个格式不一样吧 7 楼 JavaCrazyer 2010-04-12   你如果用grapheditor那个程序里面画的生成的图形就我的程序就能读取出来 8 楼 zxh168 2010-04-13   就JavaCrazyer 写道你如果用grapheditor那个程序里面画的生成的图形就我的程序就能读取出来
你的程序?你自己写的,还是用mxgraph的。能不能给我一份呢?O(∩_∩)O~ 9 楼 JavaCrazyer 2010-04-13   晕倒,我意思是说mxGraph源代码示例中不是有个grapheditor的JAVA程序吗,你将它运行起来然后画张图,之后保存,我上面写的代码就能读取出来了 10 楼 xiaotiantian-58 2012-02-11   想请教一下,页面上老是弹出来this.undomanager为空或不是对象是什么原因?
mxEditor.prototype.resetHistory = function() {
    this.lastSnapshot = new Date().getTime();
    this.undoManager.clear();
    this.ignoredChanges = 0;
    this.setModified(false);
};

把这个方法重写注释掉this.undoManager.clear();这句,有影响嚒? 11 楼 donggongai 2012-02-21   直接用graph的setcellslocked不就行吗?

热点排行