📄 treeviewdnd.xml
字号:
<?xml version="1.0"?><!-- This is a very simple test app using the dummy data model implemented by BiTreeViewDataModel--><Application> <Window caption="Tree View Test" width="500" height="400"> <SplitPane left="0" right="0" top="0" bottom="0" dividerLocation="250"> <Tree2 id="tree-1" showHeaders="true" showGridLines="false"> <Tree2Row> <Tree2Cell>Item 0</Tree2Cell> <Tree2Row> <Tree2Cell>Item 1</Tree2Cell> </Tree2Row> </Tree2Row> <Tree2Row> <Tree2Cell>Item 2</Tree2Cell> </Tree2Row> </Tree2> <Tree2 id="tree-2" showHeaders="true" showGridLines="false"> <Tree2Row> <Tree2Cell>Item 0</Tree2Cell> <Tree2Row> <Tree2Cell>Item 1</Tree2Cell> </Tree2Row> <Tree2Row> <Tree2Cell>Item 2</Tree2Cell> <Tree2Row> <Tree2Cell>Item 3</Tree2Cell> </Tree2Row> </Tree2Row> <Tree2Row> <Tree2Cell>Item 4</Tree2Cell> </Tree2Row> </Tree2Row> <Tree2Row> <Tree2Cell>Item 2</Tree2Cell> </Tree2Row> </Tree2> </SplitPane> </Window> <Resources> <Script><![CDATA[function TreeViewDnd(){ var t1 = application.getComponentById( "tree-1" ); var t2 = application.getComponentById( "tree-2" ); var dm1 = t1.getDataModel(); var dm2 = t2.getDataModel(); dm1.getDropDataTypes = dm2.getDropDataTypes = function ( x, y ) { if ( y >= 0 && y < this.getRowCount() ) return ["bindows/BiTree2Row" ]; return []; }; t1.addEventListener( "dragstart", this.onDragStart, this ); t2.addEventListener( "dragstart", this.onDragStart, this ); t1.addEventListener( "dragmove", this.onDragMove, this ); t2.addEventListener( "dragmove", this.onDragMove, this ); t1.addEventListener( "dragdrop", this.onDragDrop, this ); t2.addEventListener( "dragdrop", this.onDragDrop, this );}TreeViewDnd.main = function () { new TreeViewDnd; };_p = TreeViewDnd.prototype;_p.onDragStart = function ( e ){ var tree = e.getTarget(); var dm = tree.getDataModel(); var vm = tree.getViewManager(); var x = tree.getStateManager().getDragX(); var y = tree.getStateManager().getDragY(); if ( x != null && x != -1 && y >= 0 && y < dm.getRowCount() ) { e.addData( "bindows/BiTree2Row", dm.getNodeAt( y ) ); e.addData( "bindows/BiTree2Row.rowIndex", y ); e.addAction( "move" ); e.addAction( "copy" ); e.startDrag(); }};_p.onDragMove = function ( e ){ var tree = e.getTarget(); var vm = tree.getViewManager(); var mouseY = e.getOffsetY(); var y = vm.getRowAt( mouseY ); //document.title = y;};_p.onDragDrop = function ( e ){ var tree = e.getTarget(); var dm = tree.getDataModel(); var vm = tree.getViewManager(); var mouseY = e.getOffsetY(); var dstTree = e.getTarget(); var dstY = dstTree.getViewManager().getRowAt( mouseY ); var dstRow = dstTree.getDataModel().getNodeAt( dstY ); var srcY = e.getData( "bindows/BiTree2Row.rowIndex" ); var srcRow = e.getData( "bindows/BiTree2Row" ); var srcTree = srcRow.getTree(); var srcP = srcRow.getParent(); if ( srcTree == dstTree ) { // needs to test that we do not drop on self/child if ( containsNode( srcRow, dstRow ) ) return; // update the index as needed var dstChildrenCount = dstTree.getDataModel().getShownChildrenCount( dstY ); if ( srcY < dstY ) dstY -= dstChildrenCount + 1; } srcP.removeRow( srcRow ); srcTree.getDataModel().removeRowAt( srcY ); dstRow.addRow( srcRow ); dstTree.getDataModel().insertRowAt( srcRow, dstY ); dstTree.update(); if ( dstTree != srcTree ) srcTree.update();};function containsNode( self,node ){ if ( self == node ) return true; if ( node == null ) return false; return containsNode( self, node.getParent() );}; ]]></Script> </Resources></Application>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -