]> 91.132.146.200 Git - klimbim.git/commitdiff
tree drag and drop working
authorBanana <banana@starscream.de>
Mon, 1 Aug 2011 10:57:25 +0000 (12:57 +0200)
committerBanana <banana@starscream.de>
Mon, 1 Aug 2011 10:57:25 +0000 (12:57 +0200)
javascript/mif-tree/Demos/DragAndDrop/demo.css [new file with mode: 0755]
javascript/mif-tree/Demos/DragAndDrop/demo.js [new file with mode: 0755]
javascript/mif-tree/Demos/DragAndDrop/index.html [new file with mode: 0755]
javascript/mif-tree/Demos/index.html

diff --git a/javascript/mif-tree/Demos/DragAndDrop/demo.css b/javascript/mif-tree/Demos/DragAndDrop/demo.css
new file mode 100755 (executable)
index 0000000..0c404c1
--- /dev/null
@@ -0,0 +1,299 @@
+.container{
+height:250px;
+width:200px;
+position:relative;
+border:solid 1px #cecece;
+float:left;
+margin-left:10px;
+}
+
+#informer{
+clear:both;
+}
+
+#informer p{
+font-weight:bold;
+}
+
+#informer span{
+font-weight:normal;
+}
+
+
+/*@global*/
+
+.mif-tree-wrapper{
+position: absolute;
+width: 100%;
+height:100%;
+margin:0;
+padding:0;
+overflow:auto;
+font-family:sans-serif;
+font-size:11px;
+line-height:18px;/******Tree node height******/
+white-space:nowrap;
+cursor:default;
+}
+
+.mif-tree-bg{
+width:100%;
+height:100%;
+position:absolute;
+overflow:hidden;
+}
+
+.mif-tree-bg-container{
+width:100%;
+display:none;
+}
+
+.mif-tree-bg-node{
+width:100%;
+height:18px;
+}
+
+.mif-tree-bg-selected{
+background-color:#dcd7ab;
+}
+
+.mif-tree-wrapper:focus{
+outline:0;
+}
+
+.mif-tree-wrapper span{
+padding-bottom:2px;
+padding-top:2px;
+cursor:inherit;
+}
+
+.mif-tree-children{
+padding-left:18px;
+width:18px;
+}
+
+.mif-tree-node{
+width:18px;
+background:url('../assets/images/line.gif') repeat-y 8px 0px;
+}
+
+.mif-tree-node-last{
+background:url('../assets/images/line.gif') no-repeat 8px 0px;
+}
+
+.mif-tree-name{
+cursor: default;
+overflow:hidden;
+margin-left:4px;
+}
+
+.mif-tree-name a{
+color:red;
+}
+
+.mif-tree-name a:hover{
+color:blue;
+}
+
+
+.mif-tree-node-wrapper{
+background:url('../assets/images/horizontal-line.gif') no-repeat 9px center;
+}
+
+/*@gadjets*/
+
+.mif-tree-gadjet{
+background-image:url('../assets/images/gadjets.gif');
+padding-right: 16px;
+z-index:1;
+overflow:hidden;
+background-repeat:no-repeat;
+cursor:default;
+}
+
+.mif-tree-gadjet-none{
+background:none;
+}
+
+.mif-tree-gadjet-minus{
+background-position: 0px 50%;
+}
+
+.mif-tree-gadjet-plus{
+background-position: -18px 50%;
+}
+
+
+
+.mif-tree-gadjet-hover .mif-tree-gadjet-minus{
+background-position: -54px 50%;
+}
+
+.mif-tree-gadjet-hover .mif-tree-gadjet-plus{
+background-position: -72px 50%;
+}
+
+
+
+/*.mif-tree-gadjet-hover{
+background-image:url('../assets/images/gadjets-hover.gif');
+}*/
+
+
+
+
+/*@icons*/
+.mif-tree-icon{
+padding-right:18px;
+background-position:0 50%;
+background-repeat:no-repeat;
+cursor:inherit;
+}
+
+.mif-tree-open-icon{
+background-image:url('../assets/images/openicon.gif')
+}
+
+.mif-tree-close-icon{
+background-image:url('../assets/images/closeicon.gif')
+}
+
+
+.mif-tree-loader-open-icon,.mif-tree-loader-close-icon{
+background-image:url('../assets/images/mootree_loader.gif');
+}
+
+.mif-tree-book-icon{
+background-image:url('../assets/images/book_icon.gif');
+}
+
+.mif-tree-bin-open-icon{
+background-image:url('../assets/images/bin_open_icon.gif');
+}
+
+.mif-tree-bin-close-icon{
+background-image:url('../assets/images/bin_close_icon.gif');
+}
+
+
+
+/*@selection*/
+
+.mif-tree-node-selected .mif-tree-name{
+background-color: #010161;
+color:#fff;
+text-transform:italic;
+}
+
+.mif-tree-highlighter{
+height:18px;
+overflow:hidden;
+width:100%;
+background:#b64553;
+position:absolute;
+}
+
+
+
+/*@d'n'd*/
+.mif-tree-pointer{
+height:1px;
+overflow: hidden;
+position: absolute;
+background-image:url('../assets/images/1.gif');
+background-repeat:repeat-x;
+background-color:#292fef;
+}
+
+
+.mif-tree-ghost{
+background-color:#fff;
+border:solid 2px #e8e8f7;
+padding-left:2px;
+}
+
+.mif-tree-ghost span{
+padding-top:2px;
+padding-bottom:2px;
+}
+
+.mif-tree-ghost .mif-tree-node-wrapper{
+background:none;
+}
+
+.mif-tree-ghost span.mif-tree-text{
+padding-top:1px;
+padding-bottom:1px;
+}
+
+.mif-tree-ghost-icon{
+padding-left:16px;
+background-color:#fff;
+background-repeat:no-repeat;
+background-image:url('../assets/images/dropzone.gif');
+}
+
+.mif-tree-ghost-after{
+background-position:-64px 2px;
+}
+
+.mif-tree-ghost-before{
+background-position:-48px 2px;
+}
+
+.mif-tree-ghost-between{
+background-position:-16px 2px;
+}
+
+.mif-tree-ghost-inside{
+background-position:-0px 2px;
+}
+
+.mif-tree-ghost-notAllowed{
+background-position:-32px 2px;
+}
+
+.mif-tree-drag-current{
+background-color:#cfcfd8;
+}
+
+.mif-tree-replace{
+background-color:#99c8fb;
+}
+
+
+/*@checkbox*/
+.mif-tree-checkbox{
+padding-left:18px;
+}
+
+.mif-tree-node-checked, .mif-tree-node-checked .mif-tree-checkbox{
+background:url('../assets/images/checked.gif') center 2px no-repeat;
+}
+
+.mif-tree-node-unchecked, .mif-tree-node-unchecked .mif-tree-checkbox{
+background:url('../assets/images/unchecked.gif') center 2px no-repeat;
+}
+
+.mif-tree-node-checked-selected{
+background:url('../assets/images/checked_selected.gif') center 2px no-repeat;
+}
+
+.mif-tree-node-unchecked-selected{
+background:url('../assets/images/unchecked_selected.gif') center 2px no-repeat;
+}
+
+
+
+/*@rename*/
+.mif-tree-rename{
+display: inline;
+line-height: 14px;
+height:14px;
+cursor: default;
+overflow:hidden;
+font-family:sans-serif;
+font-size:11px;
+padding:1px 0;
+border:solid 1px black;
+}
\ No newline at end of file
diff --git a/javascript/mif-tree/Demos/DragAndDrop/demo.js b/javascript/mif-tree/Demos/DragAndDrop/demo.js
new file mode 100755 (executable)
index 0000000..9054fc3
--- /dev/null
@@ -0,0 +1,186 @@
+window.addEvent('domready',function(){\r
+       tree = new Mif.Tree({\r
+               container: $('tree_container'),\r
+               forest: true,\r
+               initialize: function(){\r
+                       new Mif.Tree.KeyNav(this);\r
+                       new Mif.Tree.Drag(this, {\r
+                               onDrag: function(){\r
+                                       //inject book inside book not allowed;\r
+                                       if(this.target && this.target.type == 'book' && this.current.type == 'book' && this.where == 'inside'){\r
+                                               this.where = 'notAllowed';\r
+                                       }\r
+                                       $('destination').innerHTML = this.target ? this.target.name : '';\r
+                                       $('where').innerHTML = this.where;\r
+                               },\r
+                               onStart: function(){\r
+                                       $('source').innerHTML = this.current.name;\r
+                               },\r
+                               onComplete: function(){\r
+                                       $('destination').innerHTML = '';\r
+                                       $('where').innerHTML = '';\r
+                                       $('source').innerHTML = '';\r
+                               }\r
+                       });\r
+               },\r
+               types: {\r
+                       folder: {\r
+                               openIcon: 'mif-tree-open-icon',\r
+                               closeIcon: 'mif-tree-close-icon'\r
+                       },\r
+                       loader: {\r
+                               openIcon: 'mif-tree-loader-open-icon',\r
+                               closeIcon: 'mif-tree-loader-close-icon',\r
+                               dropDenied: ['inside','after']\r
+                       },\r
+                       disabled: {\r
+                               openIcon: 'mif-tree-open-icon',\r
+                               closeIcon: 'mif-tree-close-icon',\r
+                               dragDisabled: true,\r
+                               cls: 'disabled'\r
+                       },\r
+                       book: {\r
+                               openIcon: 'mif-tree-book-icon',\r
+                               closeIcon: 'mif-tree-book-icon',\r
+                               loadable: true\r
+                       },\r
+                       bin: {\r
+                               openIcon: 'mif-tree-bin-open-icon',\r
+                               closeIcon: 'mif-tree-bin-close-icon'\r
+                       }\r
+               },\r
+               dfltType: 'folder',\r
+               height: 18,\r
+               onCopy: function(from, to, where, copy){\r
+                       if(from.getParent() == copy.getParent()){\r
+                               copy.set({\r
+                                       property: {\r
+                                               name: 'copy ' + from.name\r
+                                       }\r
+                               });\r
+                       }\r
+               }\r
+       });\r
+\r
+       //tree.initSortable();\r
+       tree.load({\r
+               url: '../assets/files/forest.json'\r
+       });\r
+\r
+       tree.loadOptions = function(node){\r
+               // if node name 'empty' load from url 'empty.json'\r
+               if(node.name == 'empty'){\r
+                       return {\r
+                               url: '../assets/files/empty.json'\r
+                       };\r
+               }\r
+               return {\r
+                       url: '../assets/files/mediumTree.json'\r
+               };\r
+       };\r
+       \r
+       tree2 = new Mif.Tree({\r
+               container: $('tree_container2'),\r
+               initialize: function(){\r
+                       new Mif.Tree.KeyNav(this);\r
+                       new Mif.Tree.Drag(this, {\r
+                               onDrag: function(){\r
+                                       $('destination').innerHTML = this.target ? this.target.name : '';\r
+                                       $('where').innerHTML = this.where;\r
+                               },\r
+                               onStart: function(){\r
+                                       $('source').innerHTML = this.current.name;\r
+                               },\r
+                               onComplete: function(){\r
+                                       $('destination').innerHTML = '';\r
+                                       $('where').innerHTML = '';\r
+                                       $('source').innerHTML = '';\r
+                               }\r
+                       });\r
+               },\r
+               types: {\r
+                       folder: {\r
+                               openIcon: 'mif-tree-open-icon',\r
+                               closeIcon: 'mif-tree-close-icon'\r
+                       },\r
+                       loader: {\r
+                               openIcon: 'mif-tree-loader-open-icon',\r
+                               closeIcon: 'mif-tree-loader-close-icon',\r
+                               dropDenied: ['inside','after']\r
+                       },\r
+                       disabled: {\r
+                               openIcon: 'mif-tree-open-icon',\r
+                               closeIcon: 'mif-tree-close-icon',\r
+                               dragDisbled: true,\r
+                               cls: 'disabled'\r
+                       },\r
+                       book: {\r
+                               openIcon: 'mif-tree-book-icon',\r
+                               closeIcon: 'mif-tree-book-icon',\r
+                               loadable: true\r
+                       },\r
+                       bin: {\r
+                               openIcon: 'mif-tree-bin-open-icon',\r
+                               closeIcon: 'mif-tree-bin-close-icon'\r
+                       }\r
+               },\r
+               dfltType: 'folder',\r
+               height: 18,\r
+               onCopy: function(from, to, where, copy){\r
+                       if(from.getParent() == copy.getParent()){\r
+                               copy.set({\r
+                                       property: {\r
+                                               name: 'copy ' + from.name\r
+                                       }\r
+                               });\r
+                       }\r
+               }\r
+       });\r
+\r
+       var json = [    \r
+               {\r
+                       "property": {\r
+                               "name": "root"\r
+                       },\r
+                       "children": [\r
+                               {\r
+                                       "property": {\r
+                                               "name": "node1"\r
+                                       }\r
+                               },\r
+                               {\r
+                                       "property": {\r
+                                               "name": "node2"\r
+                                       },\r
+                                       "children":[\r
+                                               {\r
+                                                       "property": {\r
+                                                               "name": "node2.1"\r
+                                                       }\r
+                                               },\r
+                                               {\r
+                                                       "property": {\r
+                                                               "name": "node2.2"\r
+                                                       }\r
+                                               }\r
+                                       ]\r
+                               },\r
+                               {\r
+                                       "property": {\r
+                                               "name": "node4"\r
+                                       }\r
+                               },\r
+                               {\r
+                                       "property": {\r
+                                               "name": "node3"\r
+                                       }\r
+                               }\r
+                       ]\r
+               }\r
+       ];\r
+       \r
+       tree2.load({\r
+               json: json\r
+       });\r
+       \r
+});
\ No newline at end of file
diff --git a/javascript/mif-tree/Demos/DragAndDrop/index.html b/javascript/mif-tree/Demos/DragAndDrop/index.html
new file mode 100755 (executable)
index 0000000..3ff260d
--- /dev/null
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+       <link rel="stylesheet" href="../assets/styles/demos.css" type="text/css" />
+       <link rel="stylesheet" href="demo.css" type="text/css" />
+       <script type="text/javascript" src="../../mootools-core-1.3.2-full-nocompat.js"></script>
+       <script type="text/javascript" src="../../mootools-more-1.3.2.1.js"></script>
+       <script type="text/javascript" src="../../mif.tree_for-mt-1.3.2.js"></script>
+       <script type="text/javascript" src="demo.js"></script>
+       <title>Mif.Tree Demo</title>
+</head>
+<body>
+       <h1>Tree complexe example</h1>
+       <div id="tree_container" class="container"></div>
+       <div id="tree_container2" class="container"></div>
+       <div id="informer">
+               <p>source: <span id="source"></span></p>
+               <p>destination: <span id="destination"></span></p>
+               <p>where: <span id="where"></span></p>
+       </div>
+       <div style="clear:both"></div>
+       <p>
+               <a href="../index.html">Back</a>
+       </p>
+</body>
+</html>
index 26b326d4c0d3f9eb20c897886705aa7f472bd4cc..2f0a058b4a3141547e5a6db15d6a9bb16ae2ec14 100755 (executable)
@@ -33,6 +33,7 @@
                                        <li><a href="KeyNav/index.html">Key navigation implementation demo</a></li>
                                        <li><a href="CheckboxSimple/index.html">Tree simple checkboxes</a></li>
                                        <li><a href="CheckboxDeps/index.html">Tree dependences checkboxes</a></li>
+                                       <li><a href="DragAndDrop/index.html">Tree drag'n'drop</a></li>
                                        
                                </ul>
                        </div>