You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bd...@apache.org on 2014/10/17 14:17:40 UTC

svn commit: r1632548 [6/10] - in /sling/trunk/contrib/explorers/resourceeditor: ./ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/sling/ src/main/java/org/apache/sling/reseditor/ src/main/less/ src/m...

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/css/browser_ie.css
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/css/browser_ie.css?rev=1632548&view=auto
==============================================================================
--- sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/css/browser_ie.css (added)
+++ sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/css/browser_ie.css Fri Oct 17 12:17:38 2014
@@ -0,0 +1,50 @@
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ 
+ 
+
+/* ################################################################# */
+/* --- Main-Seperator ---  */
+/* ################################################################# */
+    
+/* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
+/* --- Sub-Seperator  ---*/
+/* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
+ 
+ 
+#header
+{
+	color: #c0c0c0;
+}
+
+.plate {
+    zoom: 1;
+    position: relative;
+}
+
+#tree a.jstree-hovered { 
+	color: #c0c0c0;
+	border:1px solid #c0c0c0; 
+}
+
+#tree a.jstree-clicked 
+{
+	color: #c0c0c0;
+	border:1px solid #c0c0c0; 
+}
\ No newline at end of file

Propchange: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/css/browser_ie.css
------------------------------------------------------------------------------
    svn:executable = *

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/css/font.css
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/css/font.css?rev=1632548&view=auto
==============================================================================
--- sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/css/font.css (added)
+++ sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/css/font.css Fri Oct 17 12:17:38 2014
@@ -0,0 +1,6 @@
+@font-face {
+  font-family: 'Michroma';
+  font-style: normal;
+  font-weight: 400;
+  src: local('Michroma'), url(../font/Michroma.woff) format('woff');
+}
\ No newline at end of file

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/css/font_ie.css
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/css/font_ie.css?rev=1632548&view=auto
==============================================================================
--- sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/css/font_ie.css (added)
+++ sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/css/font_ie.css Fri Oct 17 12:17:38 2014
@@ -0,0 +1,7 @@
+@font-face {
+  font-family: 'Michroma';
+  font-style: normal;
+  font-weight: 400;
+  src: url(../font/Michroma.eot);
+  src: local('Michroma'), url(../font/Michroma.eot) format('embedded-opentype'), url(../font/Michroma.woff) format('woff');
+}

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/css/shake.css
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/css/shake.css?rev=1632548&view=auto
==============================================================================
--- sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/css/shake.css (added)
+++ sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/css/shake.css Fri Oct 17 12:17:38 2014
@@ -0,0 +1,64 @@
+/*
+Animate.css - http://daneden.me/animate
+LICENSED UNDER THE  MIT LICENSE (MIT)
+
+Copyright (c) 2012 Dan Eden
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+.animated {
+	-webkit-animation-fill-mode: both;
+	-moz-animation-fill-mode: both;
+	-ms-animation-fill-mode: both;
+	-o-animation-fill-mode: both;
+	animation-fill-mode: both;
+	-webkit-animation-duration: 1s;
+	-moz-animation-duration: 1s;
+	-ms-animation-duration: 1s;
+	-o-animation-duration: 1s;
+	animation-duration: 1s;
+}
+
+.animated.hinge {
+	-webkit-animation-duration: 2s;
+	-moz-animation-duration: 2s;
+	-ms-animation-duration: 2s;
+	-o-animation-duration: 2s;
+	animation-duration: 2s;
+}
+
+@-webkit-keyframes shake {
+	0%, 100% {-webkit-transform: translateX(0);}
+	10%, 30%, 50%, 70%, 90% {-webkit-transform: translateX(-10px);}
+	20%, 40%, 60%, 80% {-webkit-transform: translateX(10px);}
+}
+
+@-moz-keyframes shake {
+	0%, 100% {-moz-transform: translateX(0);}
+	10%, 30%, 50%, 70%, 90% {-moz-transform: translateX(-10px);}
+	20%, 40%, 60%, 80% {-moz-transform: translateX(10px);}
+}
+
+@-o-keyframes shake {
+	0%, 100% {-o-transform: translateX(0);}
+	10%, 30%, 50%, 70%, 90% {-o-transform: translateX(-10px);}
+	20%, 40%, 60%, 80% {-o-transform: translateX(10px);}
+}
+
+@keyframes shake {
+	0%, 100% {transform: translateX(0);}
+	10%, 30%, 50%, 70%, 90% {transform: translateX(-10px);}
+	20%, 40%, 60%, 80% {transform: translateX(10px);}
+}
+
+.shake {
+	-webkit-animation-name: shake;
+	-moz-animation-name: shake;
+	-o-animation-name: shake;
+	animation-name: shake;
+}

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/css/style.css
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/css/style.css?rev=1632548&view=auto
==============================================================================
--- sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/css/style.css (added)
+++ sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/css/style.css Fri Oct 17 12:17:38 2014
@@ -0,0 +1,888 @@
+/* jsTree default theme */
+.jstree-node,
+.jstree-children,
+.jstree-container-ul {
+  display: block;
+  margin: 0;
+  padding: 0;
+  list-style-type: none;
+  list-style-image: none;
+}
+.jstree-node {
+  white-space: nowrap;
+}
+.jstree-anchor {
+  display: inline-block;
+  color: black;
+  white-space: nowrap;
+  padding: 0 4px 0 1px;
+  margin: 0;
+  vertical-align: top;
+}
+.jstree-anchor:focus {
+  outline: 0;
+}
+.jstree-anchor,
+.jstree-anchor:link,
+.jstree-anchor:visited,
+.jstree-anchor:hover,
+.jstree-anchor:active {
+  text-decoration: none;
+  color: inherit;
+}
+.jstree-icon {
+  display: inline-block;
+  text-decoration: none;
+  margin: 0;
+  padding: 0;
+  vertical-align: top;
+  text-align: center;
+}
+.jstree-icon:empty {
+  display: inline-block;
+  text-decoration: none;
+  margin: 0;
+  padding: 0;
+  vertical-align: top;
+  text-align: center;
+}
+.jstree-ocl {
+  cursor: pointer;
+}
+.jstree .jstree-open > .jstree-children {
+  display: block;
+}
+.jstree .jstree-closed > .jstree-children,
+.jstree .jstree-leaf > .jstree-children {
+  display: none;
+}
+.jstree-no-icons .jstree-themeicon,
+.jstree-anchor > .jstree-themeicon-hidden {
+  display: none;
+}
+.jstree-rtl .jstree-anchor {
+  padding: 0 1px 0 4px;
+}
+.jstree-rtl .jstree-anchor > .jstree-themeicon {
+  margin-left: 2px;
+  margin-right: 0;
+}
+.jstree-rtl .jstree-node {
+  margin-left: 0;
+}
+.jstree-rtl .jstree-container-ul > .jstree-node {
+  margin-right: 0;
+}
+.jstree-wholerow-ul {
+  position: relative;
+  display: inline-block;
+  min-width: 100%;
+}
+.jstree-wholerow-ul .jstree-anchor,
+.jstree-wholerow-ul .jstree-icon {
+  position: relative;
+}
+.jstree-wholerow-ul .jstree-wholerow {
+  width: 100%;
+  cursor: pointer;
+  position: absolute;
+  left: 0;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+.vakata-context {
+  display: none;
+}
+.vakata-context,
+.vakata-context ul {
+  margin: 0;
+  padding: 2px;
+  position: absolute;
+  background: #f5f5f5;
+  border: 1px solid #979797;
+  -moz-box-shadow: 5px 5px 4px -4px #666666;
+  -webkit-box-shadow: 2px 2px 2px #999999;
+  box-shadow: 2px 2px 2px #999999;
+}
+.vakata-context ul {
+  list-style: none;
+  left: 100%;
+  margin-top: -2.7em;
+  margin-left: -4px;
+}
+.vakata-context .vakata-context-right ul {
+  left: auto;
+  right: 100%;
+  margin-left: auto;
+  margin-right: -4px;
+}
+.vakata-context li {
+  list-style: none;
+  display: inline;
+}
+.vakata-context li a {
+  display: block;
+  padding: 0 2em 0 2em;
+  text-decoration: none;
+  width: auto;
+  color: black;
+  white-space: nowrap;
+  line-height: 2.4em;
+  -moz-text-shadow: 1px 1px 0 white;
+  -webkit-text-shadow: 1px 1px 0 white;
+  text-shadow: 1px 1px 0 white;
+  -moz-border-radius: 1px;
+  -webkit-border-radius: 1px;
+  border-radius: 1px;
+}
+.vakata-context li a:hover {
+  position: relative;
+  background-color: #e8eff7;
+  -moz-box-shadow: 0 0 2px #0a6aa1;
+  -webkit-box-shadow: 0 0 2px #0a6aa1;
+  box-shadow: 0 0 2px #0a6aa1;
+}
+.vakata-context li a.vakata-context-parent {
+  background-image: url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw==");
+  background-position: right center;
+  background-repeat: no-repeat;
+}
+.vakata-context .vakata-context-hover > a {
+  position: relative;
+  background-color: #e8eff7;
+  -moz-box-shadow: 0 0 2px #0a6aa1;
+  -webkit-box-shadow: 0 0 2px #0a6aa1;
+  box-shadow: 0 0 2px #0a6aa1;
+}
+.vakata-context .vakata-context-separator a,
+.vakata-context .vakata-context-separator a:hover {
+  background: white;
+  border: 0;
+  border-top: 1px solid #e2e3e3;
+  height: 1px;
+  min-height: 1px;
+  max-height: 1px;
+  padding: 0;
+  margin: 0 0 0 2.4em;
+  border-left: 1px solid #e0e0e0;
+  -moz-text-shadow: 0 0 0 transparent;
+  -webkit-text-shadow: 0 0 0 transparent;
+  text-shadow: 0 0 0 transparent;
+  -moz-box-shadow: 0 0 0 transparent;
+  -webkit-box-shadow: 0 0 0 transparent;
+  box-shadow: 0 0 0 transparent;
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  border-radius: 0;
+}
+.vakata-context .vakata-contextmenu-disabled a,
+.vakata-context .vakata-contextmenu-disabled a:hover {
+  color: silver;
+  background-color: transparent;
+  border: 0;
+  box-shadow: 0 0 0;
+}
+.vakata-context li a ins {
+  text-decoration: none;
+  display: inline-block;
+  width: 2.4em;
+  height: 2.4em;
+  background: transparent;
+  margin: 0 0 0 -2em;
+}
+.vakata-context li a span {
+  display: inline-block;
+  width: 1px;
+  height: 2.4em;
+  background: white;
+  margin: 0 0.5em 0 0;
+  border-left: 1px solid #e2e3e3;
+}
+.vakata-context-rtl ul {
+  left: auto;
+  right: 100%;
+  margin-left: auto;
+  margin-right: -4px;
+}
+.vakata-context-rtl li a.vakata-context-parent {
+  background-image: url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAINjI+AC7rWHIsPtmoxLAA7");
+  background-position: left center;
+  background-repeat: no-repeat;
+}
+.vakata-context-rtl .vakata-context-separator a {
+  margin: 0 2.4em 0 0;
+  border-left: 0;
+  border-right: 1px solid #e2e3e3;
+}
+.vakata-context-rtl .vakata-context-left ul {
+  right: auto;
+  left: 100%;
+  margin-left: -4px;
+  margin-right: auto;
+}
+.vakata-context-rtl li a ins {
+  margin: 0 -2em 0 0;
+}
+.vakata-context-rtl li a span {
+  margin: 0 0 0 0.5em;
+  border-left-color: white;
+  background: #e2e3e3;
+}
+#jstree-marker {
+  position: absolute;
+  top: 0;
+  left: 0;
+  margin: 0;
+  padding: 0;
+  border-right: 0;
+  border-top: 5px solid transparent;
+  border-bottom: 5px solid transparent;
+  border-left: 5px solid;
+  width: 0;
+  height: 0;
+  font-size: 0;
+  line-height: 0;
+}
+#jstree-dnd {
+  line-height: 16px;
+  margin: 0;
+  padding: 4px;
+}
+#jstree-dnd .jstree-icon,
+#jstree-dnd .jstree-copy {
+  display: inline-block;
+  text-decoration: none;
+  margin: 0 2px 0 0;
+  padding: 0;
+  width: 16px;
+  height: 16px;
+}
+#jstree-dnd .jstree-ok {
+  background: green;
+}
+#jstree-dnd .jstree-er {
+  background: red;
+}
+#jstree-dnd .jstree-copy {
+  margin: 0 2px 0 2px;
+}
+.jstree-default .jstree-node,
+.jstree-default .jstree-icon {
+  background-repeat: no-repeat;
+  background-color: transparent;
+}
+.jstree-default .jstree-anchor,
+.jstree-default .jstree-wholerow {
+  transition: background-color 0.15s, box-shadow 0.15s;
+}
+.jstree-default .jstree-hovered {
+  background: #e7f4f9;
+  border-radius: 2px;
+  box-shadow: inset 0 0 1px #ccc;
+}
+.jstree-default .jstree-clicked {
+  background: #beebff;
+  border-radius: 2px;
+  box-shadow: inset 0 0 1px #999;
+}
+.jstree-default .jstree-no-icons .jstree-anchor > .jstree-themeicon {
+  display: none;
+}
+.jstree-default .jstree-disabled {
+  background: transparent;
+  color: #666;
+}
+.jstree-default .jstree-disabled.jstree-hovered {
+  background: transparent;
+  box-shadow: none;
+}
+.jstree-default .jstree-disabled.jstree-clicked {
+  background: #efefef;
+}
+.jstree-default .jstree-disabled > .jstree-icon {
+  opacity: 0.8;
+  filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'jstree-grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#jstree-grayscale");
+  /* Firefox 10+ */
+  filter: gray;
+  /* IE6-9 */
+  -webkit-filter: grayscale(100%);
+  /* Chrome 19+ & Safari 6+ */
+}
+.jstree-default .jstree-search {
+  font-style: italic;
+  color: #8b0000;
+  font-weight: bold;
+}
+.jstree-default .jstree-no-checkboxes .jstree-checkbox {
+  display: none !important;
+}
+.jstree-default.jstree-checkbox-no-clicked .jstree-clicked {
+  background: transparent;
+  box-shadow: none;
+}
+.jstree-default.jstree-checkbox-no-clicked .jstree-clicked.jstree-hovered {
+  background: #e7f4f9;
+}
+.jstree-default.jstree-checkbox-no-clicked > .jstree-wholerow-ul .jstree-wholerow-clicked {
+  background: transparent;
+}
+.jstree-default.jstree-checkbox-no-clicked > .jstree-wholerow-ul .jstree-wholerow-clicked.jstree-wholerow-hovered {
+  background: #e7f4f9;
+}
+#jstree-dnd.jstree-default .jstree-ok,
+#jstree-dnd.jstree-default .jstree-er {
+  background-image: url("../img/32px.png");
+  background-repeat: no-repeat;
+  background-color: transparent;
+}
+#jstree-dnd.jstree-default i {
+  background: transparent;
+  width: 16px;
+  height: 16px;
+}
+#jstree-dnd.jstree-default .jstree-ok {
+  background-position: -9px -71px;
+}
+#jstree-dnd.jstree-default .jstree-er {
+  background-position: -39px -71px;
+}
+.jstree-default > .jstree-striped {
+  background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAMAAAB/qqA+AAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMNAMM9s3UAAAAXSURBVHjajcEBAQAAAIKg/H/aCQZ70AUBjAATb6YPDgAAAABJRU5ErkJggg==") left top repeat;
+}
+.jstree-default > .jstree-wholerow-ul .jstree-hovered,
+.jstree-default > .jstree-wholerow-ul .jstree-clicked {
+  background: transparent;
+  box-shadow: none;
+  border-radius: 0;
+}
+.jstree-default .jstree-wholerow {
+  -moz-box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+  box-sizing: border-box;
+}
+.jstree-default .jstree-wholerow-hovered {
+  background: #e7f4f9;
+}
+.jstree-default .jstree-wholerow-clicked {
+  background: #beebff;
+  background: -moz-linear-gradient(top, #beebff 0%, #a8e4ff 100%);
+  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #beebff), color-stop(100%, #a8e4ff));
+  background: -webkit-linear-gradient(top, #beebff 0%, #a8e4ff 100%);
+  background: -o-linear-gradient(top, #beebff 0%, #a8e4ff 100%);
+  background: -ms-linear-gradient(top, #beebff 0%, #a8e4ff 100%);
+  background: linear-gradient(to bottom, #beebff 0%, #a8e4ff 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='@color1', endColorstr='@color2', GradientType=0);
+}
+.jstree-default .jstree-node {
+  min-height: 24px;
+  line-height: 24px;
+  margin-left: 24px;
+  min-width: 24px;
+}
+.jstree-default .jstree-anchor {
+  line-height: 24px;
+  height: 24px;
+}
+.jstree-default .jstree-icon {
+  width: 24px;
+  height: 24px;
+  line-height: 24px;
+}
+.jstree-default .jstree-icon:empty {
+  width: 16px;
+  height: 24px;
+  line-height: 24px;
+}
+.jstree-default.jstree-rtl .jstree-node {
+  margin-right: 24px;
+}
+.jstree-default .jstree-wholerow {
+  height: 24px;
+}
+.jstree-default .jstree-node,
+.jstree-default .jstree-icon {
+  background-image: url("../img/32px.png");
+}
+.jstree-default .jstree-node {
+  background-position: -292px -4px;
+  background-repeat: repeat-y;
+}
+.jstree-default .jstree-last {
+  background: transparent;
+}
+.jstree-default .jstree-open > .jstree-ocl {
+  background-position: -132px -4px;
+}
+.jstree-default .jstree-closed > .jstree-ocl {
+  background-position: -100px -4px;
+}
+.jstree-default .jstree-leaf > .jstree-ocl {
+  background-position: -68px -4px;
+}
+.jstree-default .jstree-loading > .jstree-ocl {
+  background: url("../img/throbber.gif") center center no-repeat;
+}
+.jstree-default .jstree-anchor > .jstree-themeicon {
+  background-position: -260px -4px;
+}
+.jstree-default > .jstree-no-dots .jstree-node,
+.jstree-default > .jstree-no-dots .jstree-leaf > .jstree-ocl {
+  background: transparent;
+}
+.jstree-default > .jstree-no-dots .jstree-open > .jstree-ocl {
+  background-position: -36px -4px;
+}
+.jstree-default > .jstree-no-dots .jstree-closed > .jstree-ocl {
+  background-position: -4px -4px;
+}
+.jstree-default .jstree-disabled {
+  background: transparent;
+}
+.jstree-default .jstree-disabled.jstree-hovered {
+  background: transparent;
+}
+.jstree-default .jstree-disabled.jstree-clicked {
+  background: #efefef;
+}
+.jstree-default .jstree-checkbox {
+  background-position: -164px -4px;
+}
+.jstree-default .jstree-checkbox:hover {
+  background-position: -164px -36px;
+}
+.jstree-default .jstree-clicked > .jstree-checkbox {
+  background-position: -228px -4px;
+}
+.jstree-default .jstree-clicked > .jstree-checkbox:hover {
+  background-position: -228px -36px;
+}
+.jstree-default .jstree-anchor > .jstree-undetermined {
+  background-position: -196px -4px;
+}
+.jstree-default .jstree-anchor > .jstree-undetermined:hover {
+  background-position: -196px -36px;
+}
+.jstree-default > .jstree-striped {
+  background-size: auto 48px;
+}
+.jstree-default.jstree-rtl .jstree-node {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==");
+  background-position: 100% 1px;
+}
+.jstree-default.jstree-rtl .jstree-last {
+  background: transparent;
+}
+.jstree-default.jstree-rtl .jstree-open > .jstree-ocl {
+  background-position: -132px -36px;
+}
+.jstree-default.jstree-rtl .jstree-closed > .jstree-ocl {
+  background-position: -100px -36px;
+}
+.jstree-default.jstree-rtl .jstree-leaf > .jstree-ocl {
+  background-position: -68px -36px;
+}
+.jstree-default.jstree-rtl > .jstree-no-dots .jstree-node,
+.jstree-default.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl {
+  background: transparent;
+}
+.jstree-default.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl {
+  background-position: -36px -36px;
+}
+.jstree-default.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl {
+  background-position: -4px -36px;
+}
+.jstree-default .jstree-themeicon-custom {
+  background-color: transparent;
+  background-image: none;
+}
+.jstree-default.jstree-rtl .jstree-node {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==");
+  background-position: 100% 1px;
+}
+.jstree-default-small .jstree-node {
+  min-height: 18px;
+  line-height: 18px;
+  margin-left: 18px;
+  min-width: 18px;
+}
+.jstree-default-small .jstree-anchor {
+  line-height: 18px;
+  height: 18px;
+}
+.jstree-default-small .jstree-icon {
+  width: 18px;
+  height: 18px;
+  line-height: 18px;
+}
+.jstree-default-small .jstree-icon:empty {
+  width: 18px;
+  height: 18px;
+  line-height: 18px;
+}
+.jstree-default-small.jstree-rtl .jstree-node {
+  margin-right: 18px;
+}
+.jstree-default-small .jstree-wholerow {
+  height: 18px;
+}
+.jstree-default-small .jstree-node,
+.jstree-default-small .jstree-icon {
+  background-image: url("../img/32px.png");
+}
+.jstree-default-small .jstree-node {
+  background-position: -295px -7px;
+  background-repeat: repeat-y;
+}
+.jstree-default-small .jstree-last {
+  background: transparent;
+}
+.jstree-default-small .jstree-open > .jstree-ocl {
+  background-position: -135px -7px;
+}
+.jstree-default-small .jstree-closed > .jstree-ocl {
+  background-position: -103px -7px;
+}
+.jstree-default-small .jstree-leaf > .jstree-ocl {
+  background-position: -71px -7px;
+}
+.jstree-default-small .jstree-loading > .jstree-ocl {
+  background: url("../img/throbber.gif") center center no-repeat;
+}
+.jstree-default-small .jstree-anchor > .jstree-themeicon {
+  background-position: -263px -7px;
+}
+.jstree-default-small > .jstree-no-dots .jstree-node,
+.jstree-default-small > .jstree-no-dots .jstree-leaf > .jstree-ocl {
+  background: transparent;
+}
+.jstree-default-small > .jstree-no-dots .jstree-open > .jstree-ocl {
+  background-position: -39px -7px;
+}
+.jstree-default-small > .jstree-no-dots .jstree-closed > .jstree-ocl {
+  background-position: -7px -7px;
+}
+.jstree-default-small .jstree-disabled {
+  background: transparent;
+}
+.jstree-default-small .jstree-disabled.jstree-hovered {
+  background: transparent;
+}
+.jstree-default-small .jstree-disabled.jstree-clicked {
+  background: #efefef;
+}
+.jstree-default-small .jstree-checkbox {
+  background-position: -167px -7px;
+}
+.jstree-default-small .jstree-checkbox:hover {
+  background-position: -167px -39px;
+}
+.jstree-default-small .jstree-clicked > .jstree-checkbox {
+  background-position: -231px -7px;
+}
+.jstree-default-small .jstree-clicked > .jstree-checkbox:hover {
+  background-position: -231px -39px;
+}
+.jstree-default-small .jstree-anchor > .jstree-undetermined {
+  background-position: -199px -7px;
+}
+.jstree-default-small .jstree-anchor > .jstree-undetermined:hover {
+  background-position: -199px -39px;
+}
+.jstree-default-small > .jstree-striped {
+  background-size: auto 36px;
+}
+.jstree-default-small.jstree-rtl .jstree-node {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==");
+  background-position: 100% 1px;
+}
+.jstree-default-small.jstree-rtl .jstree-last {
+  background: transparent;
+}
+.jstree-default-small.jstree-rtl .jstree-open > .jstree-ocl {
+  background-position: -135px -39px;
+}
+.jstree-default-small.jstree-rtl .jstree-closed > .jstree-ocl {
+  background-position: -103px -39px;
+}
+.jstree-default-small.jstree-rtl .jstree-leaf > .jstree-ocl {
+  background-position: -71px -39px;
+}
+.jstree-default-small.jstree-rtl > .jstree-no-dots .jstree-node,
+.jstree-default-small.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl {
+  background: transparent;
+}
+.jstree-default-small.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl {
+  background-position: -39px -39px;
+}
+.jstree-default-small.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl {
+  background-position: -7px -39px;
+}
+.jstree-default-small .jstree-themeicon-custom {
+  background-color: transparent;
+  background-image: none;
+}
+.jstree-default-small.jstree-rtl .jstree-node {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg==");
+  background-position: 100% 0px;
+}
+.jstree-default-large .jstree-node {
+  min-height: 32px;
+  line-height: 32px;
+  margin-left: 32px;
+  min-width: 32px;
+}
+.jstree-default-large .jstree-anchor {
+  line-height: 32px;
+  height: 32px;
+}
+.jstree-default-large .jstree-icon {
+  width: 32px;
+  height: 32px;
+  line-height: 32px;
+}
+.jstree-default-large .jstree-icon:empty {
+  width: 32px;
+  height: 32px;
+  line-height: 32px;
+}
+.jstree-default-large.jstree-rtl .jstree-node {
+  margin-right: 32px;
+}
+.jstree-default-large .jstree-wholerow {
+  height: 32px;
+}
+.jstree-default-large .jstree-node,
+.jstree-default-large .jstree-icon {
+  background-image: url("../img/32px.png");
+}
+.jstree-default-large .jstree-node {
+  background-position: -288px 0px;
+  background-repeat: repeat-y;
+}
+.jstree-default-large .jstree-last {
+  background: transparent;
+}
+.jstree-default-large .jstree-open > .jstree-ocl {
+  background-position: -128px 0px;
+}
+.jstree-default-large .jstree-closed > .jstree-ocl {
+  background-position: -96px 0px;
+}
+.jstree-default-large .jstree-leaf > .jstree-ocl {
+  background-position: -64px 0px;
+}
+.jstree-default-large .jstree-loading > .jstree-ocl {
+  background: url("../img/throbber.gif") center center no-repeat;
+}
+.jstree-default-large .jstree-anchor > .jstree-themeicon {
+  background-position: -256px 0px;
+}
+.jstree-default-large > .jstree-no-dots .jstree-node,
+.jstree-default-large > .jstree-no-dots .jstree-leaf > .jstree-ocl {
+  background: transparent;
+}
+.jstree-default-large > .jstree-no-dots .jstree-open > .jstree-ocl {
+  background-position: -32px 0px;
+}
+.jstree-default-large > .jstree-no-dots .jstree-closed > .jstree-ocl {
+  background-position: 0px 0px;
+}
+.jstree-default-large .jstree-disabled {
+  background: transparent;
+}
+.jstree-default-large .jstree-disabled.jstree-hovered {
+  background: transparent;
+}
+.jstree-default-large .jstree-disabled.jstree-clicked {
+  background: #efefef;
+}
+.jstree-default-large .jstree-checkbox {
+  background-position: -160px 0px;
+}
+.jstree-default-large .jstree-checkbox:hover {
+  background-position: -160px -32px;
+}
+.jstree-default-large .jstree-clicked > .jstree-checkbox {
+  background-position: -224px 0px;
+}
+.jstree-default-large .jstree-clicked > .jstree-checkbox:hover {
+  background-position: -224px -32px;
+}
+.jstree-default-large .jstree-anchor > .jstree-undetermined {
+  background-position: -192px 0px;
+}
+.jstree-default-large .jstree-anchor > .jstree-undetermined:hover {
+  background-position: -192px -32px;
+}
+.jstree-default-large > .jstree-striped {
+  background-size: auto 64px;
+}
+.jstree-default-large.jstree-rtl .jstree-node {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==");
+  background-position: 100% 1px;
+}
+.jstree-default-large.jstree-rtl .jstree-last {
+  background: transparent;
+}
+.jstree-default-large.jstree-rtl .jstree-open > .jstree-ocl {
+  background-position: -128px -32px;
+}
+.jstree-default-large.jstree-rtl .jstree-closed > .jstree-ocl {
+  background-position: -96px -32px;
+}
+.jstree-default-large.jstree-rtl .jstree-leaf > .jstree-ocl {
+  background-position: -64px -32px;
+}
+.jstree-default-large.jstree-rtl > .jstree-no-dots .jstree-node,
+.jstree-default-large.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl {
+  background: transparent;
+}
+.jstree-default-large.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl {
+  background-position: -32px -32px;
+}
+.jstree-default-large.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl {
+  background-position: 0px -32px;
+}
+.jstree-default-large .jstree-themeicon-custom {
+  background-color: transparent;
+  background-image: none;
+}
+.jstree-default-large.jstree-rtl .jstree-node {
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg==");
+  background-position: 100% 1px;
+}
+@media (max-width: 768px) {
+  .jstree-default {
+    /*
+		.jstree-open > .jstree-ocl,
+		.jstree-closed > .jstree-ocl { border-radius:20px; background-color:white; }
+		*/
+  }
+  .jstree-default .jstree-icon {
+    background-image: url("../img/40px.png");
+  }
+  .jstree-default .jstree-node,
+  .jstree-default .jstree-leaf > .jstree-ocl {
+    background: transparent;
+  }
+  .jstree-default .jstree-node {
+    min-height: 40px;
+    line-height: 40px;
+    margin-left: 40px;
+    min-width: 40px;
+    white-space: nowrap;
+  }
+  .jstree-default .jstree-anchor {
+    line-height: 40px;
+    height: 40px;
+  }
+  .jstree-default .jstree-icon,
+  .jstree-default .jstree-icon:empty {
+    width: 40px;
+    height: 40px;
+    line-height: 40px;
+  }
+  .jstree-default > .jstree-container-ul > .jstree-node {
+    margin-left: 0;
+  }
+  .jstree-default.jstree-rtl .jstree-node {
+    margin-left: 0;
+    margin-right: 40px;
+  }
+  .jstree-default.jstree-rtl .jstree-container-ul > .jstree-node {
+    margin-right: 0;
+  }
+  .jstree-default .jstree-ocl,
+  .jstree-default .jstree-themeicon,
+  .jstree-default .jstree-checkbox {
+    background-size: 120px 200px;
+  }
+  .jstree-default .jstree-leaf > .jstree-ocl {
+    background: transparent;
+  }
+  .jstree-default .jstree-open > .jstree-ocl {
+    background-position: 0 0px !important;
+  }
+  .jstree-default .jstree-closed > .jstree-ocl {
+    background-position: 0 -40px !important;
+  }
+  .jstree-default.jstree-rtl .jstree-closed > .jstree-ocl {
+    background-position: -40px 0px !important;
+  }
+  .jstree-default .jstree-anchor > .jstree-themeicon {
+    background-position: -40px -40px;
+  }
+  .jstree-default .jstree-checkbox,
+  .jstree-default .jstree-checkbox:hover {
+    background-position: -40px -80px;
+  }
+  .jstree-default .jstree-clicked > .jstree-checkbox,
+  .jstree-default .jstree-clicked > .jstree-checkbox:hover {
+    background-position: 0 -80px;
+  }
+  .jstree-default .jstree-anchor > .jstree-undetermined,
+  .jstree-default .jstree-anchor > .jstree-undetermined:hover {
+    background-position: 0 -120px;
+  }
+  .jstree-default .jstree-anchor {
+    font-weight: bold;
+    font-size: 1.1em;
+    text-shadow: 1px 1px white;
+  }
+  .jstree-default > .jstree-striped {
+    background: transparent;
+  }
+  .jstree-default .jstree-wholerow {
+    border-top: 1px solid rgba(255, 255, 255, 0.7);
+    border-bottom: 1px solid rgba(64, 64, 64, 0.2);
+    background: #ebebeb;
+    height: 40px;
+  }
+  .jstree-default .jstree-wholerow-hovered {
+    background: #e7f4f9;
+  }
+  .jstree-default .jstree-wholerow-clicked {
+    background: #beebff;
+  }
+  .jstree-default .jstree-children .jstree-last > .jstree-wholerow {
+    box-shadow: inset 0 -6px 3px -5px #666666;
+  }
+  .jstree-default .jstree-children .jstree-open > .jstree-wholerow {
+    box-shadow: inset 0 6px 3px -5px #666666;
+    border-top: 0;
+  }
+  .jstree-default .jstree-children .jstree-open + .jstree-open {
+    box-shadow: none;
+  }
+  .jstree-default .jstree-node,
+  .jstree-default .jstree-icon,
+  .jstree-default .jstree-node > .jstree-ocl,
+  .jstree-default .jstree-themeicon,
+  .jstree-default .jstree-checkbox {
+    background-image: url("../img/40px.png");
+    background-size: 120px 200px;
+  }
+  .jstree-default .jstree-node {
+    background-position: -80px 0;
+    background-repeat: repeat-y;
+  }
+  .jstree-default .jstree-last {
+    background: transparent;
+  }
+  .jstree-default .jstree-leaf > .jstree-ocl {
+    background-position: -40px -120px;
+  }
+  .jstree-default .jstree-last > .jstree-ocl {
+    background-position: -40px -160px;
+  }
+  .jstree-default .jstree-themeicon-custom {
+    background-color: transparent;
+    background-image: none;
+  }
+}
+.jstree-default > .jstree-container-ul > .jstree-node {
+  margin-left: 0;
+  margin-right: 0;
+}

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/font/Michroma.eot
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/font/Michroma.eot?rev=1632548&view=auto
==============================================================================
Binary file - no diff available.

Propchange: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/font/Michroma.eot
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/font/Michroma.woff
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/font/Michroma.woff?rev=1632548&view=auto
==============================================================================
Binary file - no diff available.

Propchange: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/font/Michroma.woff
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/32px.png
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/32px.png?rev=1632548&view=auto
==============================================================================
Binary file - no diff available.

Propchange: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/32px.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/40px.png
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/40px.png?rev=1632548&view=auto
==============================================================================
Binary file - no diff available.

Propchange: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/40px.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/add.png
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/add.png?rev=1632548&view=auto
==============================================================================
Binary file - no diff available.

Propchange: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/add.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/alu.gif
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/alu.gif?rev=1632548&view=auto
==============================================================================
Binary file - no diff available.

Propchange: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/alu.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/file.png
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/file.png?rev=1632548&view=auto
==============================================================================
Binary file - no diff available.

Propchange: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/file.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/folder_lightgray.png
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/folder_lightgray.png?rev=1632548&view=auto
==============================================================================
Binary file - no diff available.

Propchange: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/folder_lightgray.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/remove.png
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/remove.png?rev=1632548&view=auto
==============================================================================
Binary file - no diff available.

Propchange: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/remove.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/right_arrow_lightgray.png
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/right_arrow_lightgray.png?rev=1632548&view=auto
==============================================================================
Binary file - no diff available.

Propchange: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/right_arrow_lightgray.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/root.png
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/root.png?rev=1632548&view=auto
==============================================================================
Binary file - no diff available.

Propchange: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/root.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/throbber.gif
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/throbber.gif?rev=1632548&view=auto
==============================================================================
Binary file - no diff available.

Propchange: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/throbber.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/js/JSTreeAdapter.reseditor.js
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/js/JSTreeAdapter.reseditor.js?rev=1632548&view=auto
==============================================================================
--- sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/js/JSTreeAdapter.reseditor.js (added)
+++ sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/js/JSTreeAdapter.reseditor.js Fri Oct 17 12:17:38 2014
@@ -0,0 +1,170 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+// creating the namespace
+var org = org || {};
+org.apache = org.apache || {};
+org.apache.sling = org.apache.sling || {};
+org.apache.sling.reseditor = org.apache.sling.reseditor || {};
+
+
+/*
+ JSTreeAdapter - It adapts the JSTree library for the use in the Sling Resource Editor.
+ This JSTreeAdapter contains as less logic as needed to configure the JSTree for the Sling Resource Editor. For 
+ everything that goes beyond that and contains more functionality, the other Sling Resource Editor controllers are called.
+*/
+
+//defining the module
+org.apache.sling.reseditor.JSTreeAdapter = (function() {
+
+	function JSTreeAdapter(settings, treeController, mainController){
+		this.settings = settings;
+		this.treeController = treeController;
+		this.mainController = mainController;
+		
+var currentNodePath = this.mainController.encodeToHTML(settings.resourcePath);
+var paths = currentNodePath.substring(1).split("/");
+var selectingNodeWhileOpeningTree=true;
+
+var thisJSTreeAdapter = this;
+
+$(document).ready(function() {
+	$(window).resize( function() {
+		thisJSTreeAdapter.mainController.adjust_height();
+	});
+	
+	var selectorFromCurrentPath = treeController.getSelectorFromPath(currentNodePath);
+	
+	var scrollToPathFinished=false;
+	
+	thisJSTreeAdapter.mainController.adjust_height();
+	
+	
+	// TO CREATE AN INSTANCE
+	// select the tree container using jQuery
+	$("#tree")
+	.bind("loaded.jstree", function (event, data) {
+		if (currentNodePath != "/") {
+			treeController.openElement($("#tree > ul > li[nodename=''] > ul"), paths);
+		}
+		selectingNodeWhileOpeningTree=false;
+	})
+	// call `.jstree` with the options object
+	.jstree({
+		"core"      : {
+		    "check_callback" : true,
+		    multiple: true,
+			animation: 600,
+			'data' : {
+				'url' : function (liJson) {
+					// initial call for the root element
+					if (liJson.id === '#'){
+						return settings.contextPath+"/.reseditor.rootnodes.json";
+					} else {
+						// the li the user clicked on.
+						var li = $('#'+liJson.id);
+						return treeController.get_uri_from_li(li,".reseditor.nodes.json");
+					}
+				},
+			    'data' : function (node) {
+			        return { 'id' : node.id };
+			      }
+			}
+		},
+		"ui"      : {
+			"select_limit" : 2
+		},
+		"crrm"      : {
+			"move" : {
+				"always_copy" : false,
+		        "check_move"  : function (m) {
+			        // you find the member description here
+			        // http://www.jstree.com/documentation/core.html#_get_move
+			        var src_li = m.o;
+			        var src_nt = mainController.getNTFromLi(src_li);
+			        var src_nodename = src_li.attr("nodename");
+			        
+			        var new_parent_ul = m.np.children("ul");
+			        var calculated_position = m.cp;
+			        var liAlreadySelected = new_parent_ul.length==0 && m.np.prop("tagName").toUpperCase() == 'LI';
+			        var dest_li = liAlreadySelected ? m.np : new_parent_ul.children("li:eq("+(calculated_position-1)+")");
+			        var dest_nt = mainController.getNTFromLi(dest_li);
+					var result;
+					if (dest_nt != null){ 
+						result = dest_nt.canAddChildNode(src_nodename, src_nt);
+					}
+                    return result;
+                  }
+			}
+		},
+		"dnd" : {
+			"drop_finish" : function () {
+				console.log("drop");
+				alert("DROP"); 
+			},
+			"drag_finish" : function (data) {
+				console.log("drag");
+				alert("DRAG OK"); 
+			}
+		},
+		// the `plugins` array allows you to configure the active plugins on this instance
+		"plugins" : [ "themes", "ui", "core", "hotkeys", "crrm", "dnd"]
+    }).bind("rename_node.jstree", function (e, data) {
+    	treeController.renameNode(e, data);
+    }).bind("move_node.jstree", function (e, data) {
+    	// see http://www.jstree.com/documentation/core ._get_move()
+    	var src_li = data.rslt.o;
+    	var src_path = ""+settings.contextPath+src_li.children("a").attr("target");
+    	var dest_li = data.rslt.np; // new parent .cr - same as np, but if a root node is created this is -1
+    	var dest_li_path = dest_li.children("a").attr("target") == "/" ? "" : dest_li.children("a").attr("target");
+    	var dest_path = ""+settings.contextPath+dest_li_path+"/"+src_li.attr("nodename");
+    	var original_parent = data.rslt.op;
+    	var is_copy = data.rslt.cy;
+    	var position = data.rslt.cp;
+    	$.ajax({
+      	  type: 'POST',
+			  url: src_path,
+      	  success: function(server_data) {
+        		var target = ""+settings.contextPath+dest_path;
+            	location.href=target+".reseditor.html";
+    		  },
+      	  error: function(server_data) {
+      			displayAlert(server_data.responseText);
+    		  },
+      	  data: { 
+       		":operation": "move",
+//          	":order": position,
+      		":dest": dest_path
+      		  }
+      	});
+    }).on('hover_node.jstree', function (event, nodeObj) {
+        $('#'+nodeObj.node.id+' a:first').focus();
+    }).on('keydown.jstree', '.jstree-anchor', function (e) {
+    	// see http://www.javascripter.net/faq/keycodes.htm
+    	if (46==e.which) {
+    		treeController.deleteNodes();
+    	}
+    }).on('select_node.jstree', function (e, data) {
+    	;
+    });
+});
+
+	};
+	return JSTreeAdapter;
+}());

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/js/LoginController.reseditor.js
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/js/LoginController.reseditor.js?rev=1632548&view=auto
==============================================================================
--- sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/js/LoginController.reseditor.js (added)
+++ sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/js/LoginController.reseditor.js Fri Oct 17 12:17:38 2014
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/*
+ * As the name implies, the LoginController contains functionality for the user login.
+ */
+
+// creating the namespace
+var org = org || {};
+org.apache = org.apache || {};
+org.apache.sling = org.apache.sling || {};
+org.apache.sling.reseditor = org.apache.sling.reseditor || {};
+
+//defining the module
+org.apache.sling.reseditor.LoginController = (function() {
+
+	function LoginController(settings, mainController){
+		var authorized = settings.authorized;
+		$(document).ready(function() {
+			setLoginTabLabel(settings.authorizedUser);
+			
+			$('#login_tab').click(function(e) {	
+				if (authorized) {
+					//@TODO: Use real <a href="/system/sling/logout.html"... instead
+					//make sure the context path is used
+					//check if there is a settings.requestURI, if not redirect to "/"
+		        	location.href='/system/sling/logout.html?resource='+settings.requestURI;
+				} else {
+					$('#login_tab_content').slideToggle(function() {mainController.adjust_height();});
+					$("#login_form input[name='j_username']").focus();
+				}
+			});
+
+			$('#login_form input').keydown(function(event) {
+		        if (event.keyCode == 13/*Return key*/) {	
+		    		submitForm();
+		            return false;
+		         }
+		    });
+			
+			$('#login_submit').click(function(e) {	
+				submitForm();
+			});
+		});
+		
+
+		function setLoginTabLabel(authorizedUser){
+			$('#login_tab').text(authorized ? 'Logout '+authorizedUser : authorizedUser);
+			if (authorized) {
+				$('#login .nav-tabs').removeClass('nav-tabs').addClass('logout');
+			}
+		}
+
+		function submitForm(){
+			$('#login').removeClass('animated shake');
+			$('#login .form-group.error').hide();
+			
+			$.ajax({
+		  	  type: 'POST',
+				  url: settings.contextPath + $('#login_form').attr('action') + '?' + $('#login_form').serialize(),
+		  	  success: function(data, textStatus, jqXHR) {
+		  		authorized=true;
+		  		$('#login_tab_content').slideToggle(function() {
+		  			mainController.adjust_height();
+		  			setLoginTabLabel($('#login_form input[name="j_username"]').val());
+		  		});
+			  },
+		  	  error: function(data) {
+		  			$('#login_error').text(data.responseText);
+		  			$('#login .form-group.error').slideToggle();
+		  			$('#login').addClass('animated shake');
+			  }
+		  	});
+		}
+	};
+
+	return LoginController;
+}());

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/js/MainController.reseditor.js
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/js/MainController.reseditor.js?rev=1632548&view=auto
==============================================================================
--- sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/js/MainController.reseditor.js (added)
+++ sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/js/MainController.reseditor.js Fri Oct 17 12:17:38 2014
@@ -0,0 +1,107 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+// creating the namespace
+var org = org || {};
+org.apache = org.apache || {};
+org.apache.sling = org.apache.sling || {};
+org.apache.sling.reseditor = org.apache.sling.reseditor || {};
+
+/*
+ * The MainController is responsible for every functionality 
+ * that is not handled by other, more specific controllers.
+ */
+
+//defining the module
+org.apache.sling.reseditor.MainController = (function() {
+
+	function MainController(settings, ntManager){
+		this.ntManager = ntManager;
+		this.settings = settings;
+		
+		var thisMainController = this;
+		
+		$(document).ready(function() {
+			$('#alertClose').click(function () {
+				$("#alert").slideUp(function() {
+					thisMainController.adjust_height();
+					$('#alertMsg #Message').remove();
+				});
+			})
+		});
+	};
+
+	MainController.prototype.encodeURL = function(unencodedURL){
+		url = encodeURIComponent(unencodedURL);
+		return url.replace(/%2F/g, "/");
+	}
+
+	MainController.prototype.encodeToHTML = function(unencodedHTML){
+		//create a in-memory div, set it's inner text(which jQuery automatically encodes)
+		//then grab the encoded contents back out.The div never exists on the page.
+		return $('<div/>').text(unencodedHTML).html();
+	}
+
+	MainController.prototype.decodeFromHTML = function(encodedHTML){
+		return $("<div/>").html(encodedHTML).text();
+	}
+	
+	
+	MainController.prototype.adjust_height = function(objectId){
+		var login_height = $("#login").outerHeight(true);
+		var header_height = $("#header").outerHeight(true);
+		var alert_height = $("#alerts").outerHeight(true);
+		var footer_height = $("#footer").outerHeight(true);
+		var sidebar_margin = $("#sidebar").outerHeight(true)-$("#sidebar").outerHeight(false);
+		var usable_height = $(window).height() - login_height - header_height - alert_height - sidebar_margin - 1;
+		
+	// activate again if the footer is needed	
+//	 	var usable_height = $(window).height() - header_height - footer_height - sidebar_margin - 1;
+		$("#sidebar").height( usable_height );
+		$("#outer_content").height( usable_height );
+	}
+
+	MainController.prototype.displayAlert = function(errorMsg, resourcePath){
+		var thisMainController = this;
+		// Let jQuery parse the error message from the html 
+		// by using an id selector.
+		var errorMessage = $("#Message",errorMsg).html();
+		if (resourcePath) {
+			errorMessage = "'"+resourcePath+"': "+errorMessage;
+		}
+		$('#alertMsg').append($("<div id='Message'>").append(errorMessage));
+		$("#alert").slideDown(function() {
+			thisMainController.adjust_height();
+		});
+	}
+
+
+	MainController.prototype.getNTFromLi = function(li){
+		var nt_name = $(li).children("a").find("span span.node-type").text();
+	    return this.ntManager.getNodeType(nt_name);	
+	}
+	
+	MainController.prototype.redirectTo = function(unencodedTargetPath){
+		var newURIencoded = this.encodeURL(unencodedTargetPath);
+  	  	var target = this.settings.contextPath+newURIencoded;
+  	  	location.href=target+".reseditor.html";
+	}
+	
+	return MainController;
+}());

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/js/TreeController.reseditor.js
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/js/TreeController.reseditor.js?rev=1632548&view=auto
==============================================================================
--- sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/js/TreeController.reseditor.js (added)
+++ sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/js/TreeController.reseditor.js Fri Oct 17 12:17:38 2014
@@ -0,0 +1,241 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+// creating the namespace
+var org = org || {};
+org.apache = org.apache || {};
+org.apache.sling = org.apache.sling || {};
+org.apache.sling.reseditor = org.apache.sling.reseditor || {};
+
+/*
+ * The TreeController is responsible for the node tree functionality of the Sling Resource Editor
+ * that is not specific for a 3rd party library.
+ * JSTree-specific functionality is implemented in the JSTreeAdapter instead.
+ */
+
+//defining the module
+org.apache.sling.reseditor.TreeController = (function() {
+
+	function TreeController(settings, mainController){
+		var thatTreeController = this;
+		this.settings = settings;
+		this.mainController = mainController;
+		
+		$(document).ready(function() {
+			$("#tree").on("click", "li.jstree-node>a.jstree-anchor>i.open-icon",function(e, data) {
+				thatTreeController.openNodeTarget(e);
+			});
+			$("#tree").on("click", "li.jstree-node>a.jstree-anchor>i.add-icon",function(e, data) {
+				thatTreeController.addNode($(e.target).parents("li"));
+			});
+			$("#tree").on("click", "li.jstree-node>a.jstree-anchor>i.remove-icon",function(e, data) {
+				thatTreeController.deleteSingleNode($(e.target).parents("li"));
+			});
+	
+			$("#tree").on("dblclick", "li.jstree-node>a.jstree-anchor",function(e, data) {
+				var id = $(e.target).parents("li:first").attr("id");
+				thatTreeController.openRenameNodeDialog(id);
+			});
+		});
+	};
+
+	TreeController.prototype.openNodeTarget = function(e) {
+		var url = $(e.target).parent().attr("href");
+		url = this.mainController.decodeFromHTML(url);
+		url = this.mainController.encodeURL(url);
+		location.href=url;
+	}
+
+	TreeController.prototype.openRenameNodeDialog = function(id) {
+		var liElement = $('#'+id);
+		$("#tree").jstree("edit", $('#'+id), this.mainController.decodeFromHTML(liElement.attr("nodename")));
+	}
+	
+	TreeController.prototype.renameNode = function(e, data) {
+		var thatTreeController = this;
+		var newName = this.mainController.decodeFromHTML(data.text);
+		var oldName = data.old;
+		if (oldName!==newName){
+			var currentURL = this.getPathFromLi($('#'+data.node.id));
+			var unencodedURI = currentURL;
+			var decodedCurrentURI = this.mainController.decodeFromHTML(unencodedURI);
+			var newURI = decodedCurrentURI.replace(oldName, newName);
+			currentURL = this.mainController.encodeURL(decodedCurrentURI);
+			$.ajax({
+		  	  type: 'POST',
+				  url: currentURL,
+		  	  success: function(server_data) {
+		  		  thatTreeController.mainController.redirectTo(newURI);
+			  },
+		  	  error: function(server_data) {
+		  		  thatTreeController.mainController.displayAlert(server_data.responseText);
+			  },
+			  contentType : 'application/x-www-form-urlencoded; charset=UTF-8',
+		  	  data: { 
+		  		":operation": "move",
+		  		"_charset_": "utf-8",
+		  		":dest": newURI
+		  		  }
+		  	});
+		}
+	}
+	
+	TreeController.prototype.getSelectorFromPath = function(path){
+		var paths = path.substring(1).split("/");
+		return "#tree > ul [nodename='"+paths.join("'] > ul > [nodename='")+"']";
+	}
+
+	TreeController.prototype.getPathFromLi = function(li){
+		var path = $(li).parentsUntil(".root").andSelf().map(
+				function() {
+					return this.tagName == "LI"
+							? $(this).attr("nodename") 
+							: null;
+				}
+			).get().join("/");
+		return "" == path ? "/" : path;
+	};
+
+	TreeController.prototype.getURLEncodedPathFromLi = function(li){
+		return this.mainController.encodeURL(this.getPathFromLi(li));
+	};
+
+	TreeController.prototype.openElement = function(root, paths) {
+		var thisTreeController = this;
+		var pathElementName = paths.shift();
+		var pathElementLi = root.children("[nodename='"+pathElementName+"']");
+		if (pathElementLi.length === 0){
+			alert("Couldn't find "+pathElementName+" under the path "+this.getPathFromLi(root.parent()));
+		} else {
+			$('#tree').jstree('open_node', pathElementLi,
+					function(){
+						if (paths.length>0){
+							thisTreeController.openElement($("#"+pathElementLi.attr('id')).children("ul"), paths);
+						} else  {
+							selectingNodeWhileOpeningTree=true;
+							$('#tree').jstree('select_node', pathElementLi.attr('id'), 'true'/*doesn't seem to work*/);
+							selectingNodeWhileOpeningTree=false;
+					        var target = $('#'+pathElementLi.attr('id')+' a:first');
+					        target.focus();
+						}
+					}
+				);
+		}
+	}
+
+	TreeController.prototype.get_uri_from_li = function(li, extension){
+		var path = this.getPathFromLi(li);
+		path = this.mainController.decodeFromHTML(path);
+		path = this.mainController.encodeURL(path);
+		return this.settings.contextPath+path+extension;
+	}
+
+	TreeController.prototype.deleteNodes = function() {
+		var thatTreeController = this;
+		var lastDeletedLI;
+		var selectedIds = $("#tree").jstree('get_selected');
+		var firstId = selectedIds[0];
+		var parentLi = $('#'+firstId).parents('li');
+		var parentPath = this.getURLEncodedPathFromLi(parentLi);
+		var otherPathsToDelete = [];
+		var otherPathsToDeleteDecoded = [];
+		for (var i=0; i<selectedIds.length; i++){
+			var id = selectedIds[i];
+			var li = $('#'+id);
+			var resourcePathToDelete = this.getPathFromLi(li);
+			otherPathsToDelete.push(resourcePathToDelete);
+			var decodedResourcePath = this.mainController.decodeFromHTML(resourcePathToDelete);
+			otherPathsToDeleteDecoded.push(decodedResourcePath);
+		}
+		var confirmationMsg = "You are about to delete '"+otherPathsToDelete+"' and all its sub nodes. Are you sure?";
+		bootbox.confirm(confirmationMsg, function(result) {
+			if (result){
+					//http://www.jstree.com/api/#/?q=delete&f=delete_node.jstree
+			    	$.ajax({
+			        	  type: 'POST',
+						  url: parentPath,
+			        	  success: function(server_data) {
+							var tree = $('#tree').jstree(true);
+							for (var i=0; i<selectedIds.length; i++){
+								var id = selectedIds[i];
+								tree.delete_node(id);
+							}
+			      		  },
+			        	  error: function(server_data) {
+			        		thatTreeController.mainController.displayAlert(server_data.responseText);
+			      		  },
+			      		  traditional: true,
+						  contentType : 'application/x-www-form-urlencoded; charset=UTF-8',
+			        	  data: { 
+			        		  ":operation": "delete",
+			  		  		  "_charset_": "utf-8",
+			            	  ":applyTo": otherPathsToDeleteDecoded        		
+			        	  }
+			        });
+			}
+		});
+	}
+
+	TreeController.prototype.deleteSingleNode = function(li) {
+		var thatTreeController = this;
+		var resourcePathToDelete = this.getPathFromLi(li);
+		var confirmationMsg = "You are about to delete '"+resourcePathToDelete+"' and all its sub nodes. Are you sure?";
+		var decodedResourcePath = this.mainController.decodeFromHTML(resourcePathToDelete);
+		var encodedResourcePathToDelete = this.mainController.encodeURL(decodedResourcePath);
+		bootbox.confirm(confirmationMsg, function(result) {
+			if (result){
+		    	$.ajax({
+		        	  type: 'POST',
+					  url: encodedResourcePathToDelete,
+		        	  success: function(server_data) {
+		        		var id = li.attr("id");
+						var tree = $('#tree').jstree(true);
+						tree.delete_node(id);
+		      		  },
+		        	  error: function(server_data) {
+		        		thatTreeController.mainController.displayAlert(server_data.responseText);
+		      		  },
+		        	  data: { 
+		        		  ":operation": "delete"
+		        	  }
+		        });
+			}
+		});
+	}
+
+	TreeController.prototype.addNode = function(li) {
+		var thatTreeController = this;
+		var resourcePath = this.getPathFromLi(li);
+		var confirmationMsg = "This is a mock dialog for the adding nodes at "+resourcePath+".";
+		var encodedresourcePath = this.mainController.encodeURL(resourcePath);
+		bootbox.confirm(confirmationMsg, function(result){
+			if (result){
+				bootbox.alert("Confirmed.");
+			}
+		});
+	}
+
+	/*
+	function isModifierPressed(e){
+		return (e.shiftKey || e.altKey || e.ctrlKey);
+	}
+	*/
+
+	return TreeController;
+}());

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/js/bootbox.min.js
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/js/bootbox.min.js?rev=1632548&view=auto
==============================================================================
--- sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/js/bootbox.min.js (added)
+++ sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/js/bootbox.min.js Fri Oct 17 12:17:38 2014
@@ -0,0 +1,6 @@
+/**
+ * bootbox.js v4.3.0
+ *
+ * http://bootboxjs.com/license.txt
+ */
+!function(a,b){"use strict";"function"==typeof define&&define.amd?define(["jquery"],b):"object"==typeof exports?module.exports=b(require("jquery")):a.bootbox=b(a.jQuery)}(this,function a(b,c){"use strict";function d(a){var b=q[o.locale];return b?b[a]:q.en[a]}function e(a,c,d){a.stopPropagation(),a.preventDefault();var e=b.isFunction(d)&&d(a)===!1;e||c.modal("hide")}function f(a){var b,c=0;for(b in a)c++;return c}function g(a,c){var d=0;b.each(a,function(a,b){c(a,b,d++)})}function h(a){var c,d;if("object"!=typeof a)throw new Error("Please supply an object of options");if(!a.message)throw new Error("Please specify a message");return a=b.extend({},o,a),a.buttons||(a.buttons={}),a.backdrop=a.backdrop?"static":!1,c=a.buttons,d=f(c),g(c,function(a,e,f){if(b.isFunction(e)&&(e=c[a]={callback:e}),"object"!==b.type(e))throw new Error("button with key "+a+" must be an object");e.label||(e.label=a),e.className||(e.className=2>=d&&f===d-1?"btn-primary":"btn-default")}),a}function i(a,b){var c=a.
 length,d={};if(1>c||c>2)throw new Error("Invalid argument length");return 2===c||"string"==typeof a[0]?(d[b[0]]=a[0],d[b[1]]=a[1]):d=a[0],d}function j(a,c,d){return b.extend(!0,{},a,i(c,d))}function k(a,b,c,d){var e={className:"bootbox-"+a,buttons:l.apply(null,b)};return m(j(e,d,c),b)}function l(){for(var a={},b=0,c=arguments.length;c>b;b++){var e=arguments[b],f=e.toLowerCase(),g=e.toUpperCase();a[f]={label:d(g)}}return a}function m(a,b){var d={};return g(b,function(a,b){d[b]=!0}),g(a.buttons,function(a){if(d[a]===c)throw new Error("button key "+a+" is not allowed (options are "+b.join("\n")+")")}),a}var n={dialog:"<div class='bootbox modal' tabindex='-1' role='dialog'><div class='modal-dialog'><div class='modal-content'><div class='modal-body'><div class='bootbox-body'></div></div></div></div></div>",header:"<div class='modal-header'><h4 class='modal-title'></h4></div>",footer:"<div class='modal-footer'></div>",closeButton:"<button type='button' class='bootbox-close-button close' d
 ata-dismiss='modal' aria-hidden='true'>&times;</button>",form:"<form class='bootbox-form'></form>",inputs:{text:"<input class='bootbox-input bootbox-input-text form-control' autocomplete=off type=text />",textarea:"<textarea class='bootbox-input bootbox-input-textarea form-control'></textarea>",email:"<input class='bootbox-input bootbox-input-email form-control' autocomplete='off' type='email' />",select:"<select class='bootbox-input bootbox-input-select form-control'></select>",checkbox:"<div class='checkbox'><label><input class='bootbox-input bootbox-input-checkbox' type='checkbox' /></label></div>",date:"<input class='bootbox-input bootbox-input-date form-control' autocomplete=off type='date' />",time:"<input class='bootbox-input bootbox-input-time form-control' autocomplete=off type='time' />",number:"<input class='bootbox-input bootbox-input-number form-control' autocomplete=off type='number' />",password:"<input class='bootbox-input bootbox-input-password form-control' autocom
 plete='off' type='password' />"}},o={locale:"en",backdrop:!0,animate:!0,className:null,closeButton:!0,show:!0,container:"body"},p={};p.alert=function(){var a;if(a=k("alert",["ok"],["message","callback"],arguments),a.callback&&!b.isFunction(a.callback))throw new Error("alert requires callback property to be a function when provided");return a.buttons.ok.callback=a.onEscape=function(){return b.isFunction(a.callback)?a.callback():!0},p.dialog(a)},p.confirm=function(){var a;if(a=k("confirm",["cancel","confirm"],["message","callback"],arguments),a.buttons.cancel.callback=a.onEscape=function(){return a.callback(!1)},a.buttons.confirm.callback=function(){return a.callback(!0)},!b.isFunction(a.callback))throw new Error("confirm requires a callback");return p.dialog(a)},p.prompt=function(){var a,d,e,f,h,i,k;if(f=b(n.form),d={className:"bootbox-prompt",buttons:l("cancel","confirm"),value:"",inputType:"text"},a=m(j(d,arguments,["title","callback"]),["cancel","confirm"]),i=a.show===c?!0:a.show,
 a.message=f,a.buttons.cancel.callback=a.onEscape=function(){return a.callback(null)},a.buttons.confirm.callback=function(){var c;switch(a.inputType){case"text":case"textarea":case"email":case"select":case"date":case"time":case"number":case"password":c=h.val();break;case"checkbox":var d=h.find("input:checked");c=[],g(d,function(a,d){c.push(b(d).val())})}return a.callback(c)},a.show=!1,!a.title)throw new Error("prompt requires a title");if(!b.isFunction(a.callback))throw new Error("prompt requires a callback");if(!n.inputs[a.inputType])throw new Error("invalid prompt type");switch(h=b(n.inputs[a.inputType]),a.inputType){case"text":case"textarea":case"email":case"date":case"time":case"number":case"password":h.val(a.value);break;case"select":var o={};if(k=a.inputOptions||[],!k.length)throw new Error("prompt with select requires options");g(k,function(a,d){var e=h;if(d.value===c||d.text===c)throw new Error("given options in wrong format");d.group&&(o[d.group]||(o[d.group]=b("<optgroup/>"
 ).attr("label",d.group)),e=o[d.group]),e.append("<option value='"+d.value+"'>"+d.text+"</option>")}),g(o,function(a,b){h.append(b)}),h.val(a.value);break;case"checkbox":var q=b.isArray(a.value)?a.value:[a.value];if(k=a.inputOptions||[],!k.length)throw new Error("prompt with checkbox requires options");if(!k[0].value||!k[0].text)throw new Error("given options in wrong format");h=b("<div/>"),g(k,function(c,d){var e=b(n.inputs[a.inputType]);e.find("input").attr("value",d.value),e.find("label").append(d.text),g(q,function(a,b){b===d.value&&e.find("input").prop("checked",!0)}),h.append(e)})}return a.placeholder&&h.attr("placeholder",a.placeholder),a.pattern&&h.attr("pattern",a.pattern),f.append(h),f.on("submit",function(a){a.preventDefault(),a.stopPropagation(),e.find(".btn-primary").click()}),e=p.dialog(a),e.off("shown.bs.modal"),e.on("shown.bs.modal",function(){h.focus()}),i===!0&&e.modal("show"),e},p.dialog=function(a){a=h(a);var c=b(n.dialog),d=c.find(".modal-dialog"),f=c.find(".moda
 l-body"),i=a.buttons,j="",k={onEscape:a.onEscape};if(g(i,function(a,b){j+="<button data-bb-handler='"+a+"' type='button' class='btn "+b.className+"'>"+b.label+"</button>",k[a]=b.callback}),f.find(".bootbox-body").html(a.message),a.animate===!0&&c.addClass("fade"),a.className&&c.addClass(a.className),"large"===a.size&&d.addClass("modal-lg"),"small"===a.size&&d.addClass("modal-sm"),a.title&&f.before(n.header),a.closeButton){var l=b(n.closeButton);a.title?c.find(".modal-header").prepend(l):l.css("margin-top","-10px").prependTo(f)}return a.title&&c.find(".modal-title").html(a.title),j.length&&(f.after(n.footer),c.find(".modal-footer").html(j)),c.on("hidden.bs.modal",function(a){a.target===this&&c.remove()}),c.on("shown.bs.modal",function(){c.find(".btn-primary:first").focus()}),c.on("escape.close.bb",function(a){k.onEscape&&e(a,c,k.onEscape)}),c.on("click",".modal-footer button",function(a){var d=b(this).data("bb-handler");e(a,c,k[d])}),c.on("click",".bootbox-close-button",function(a){e
 (a,c,k.onEscape)}),c.on("keyup",function(a){27===a.which&&c.trigger("escape.close.bb")}),b(a.container).append(c),c.modal({backdrop:a.backdrop,keyboard:!1,show:!1}),a.show&&c.modal("show"),c},p.setDefaults=function(){var a={};2===arguments.length?a[arguments[0]]=arguments[1]:a=arguments[0],b.extend(o,a)},p.hideAll=function(){return b(".bootbox").modal("hide"),p};var q={br:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Sim"},cs:{OK:"OK",CANCEL:"Zrušit",CONFIRM:"Potvrdit"},da:{OK:"OK",CANCEL:"Annuller",CONFIRM:"Accepter"},de:{OK:"OK",CANCEL:"Abbrechen",CONFIRM:"Akzeptieren"},el:{OK:"Εντάξει",CANCEL:"Ακύρωση",CONFIRM:"Επιβεβαίωση"},en:{OK:"OK",CANCEL:"Cancel",CONFIRM:"OK"},es:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Aceptar"},et:{OK:"OK",CANCEL:"Katkesta",CONFIRM:"OK"},fi:{OK:"OK",CANCEL:"Peruuta",CONFIRM:"OK"},fr:{OK:"OK",CANCEL:"Annuler",CONFIRM:"D'accord"},he:{OK:"אישור",CANCEL:"ביטול",CONFIR
 M:"אישור"},id:{OK:"OK",CANCEL:"Batal",CONFIRM:"OK"},it:{OK:"OK",CANCEL:"Annulla",CONFIRM:"Conferma"},ja:{OK:"OK",CANCEL:"キャンセル",CONFIRM:"確認"},lt:{OK:"Gerai",CANCEL:"Atšaukti",CONFIRM:"Patvirtinti"},lv:{OK:"Labi",CANCEL:"Atcelt",CONFIRM:"Apstiprināt"},nl:{OK:"OK",CANCEL:"Annuleren",CONFIRM:"Accepteren"},no:{OK:"OK",CANCEL:"Avbryt",CONFIRM:"OK"},pl:{OK:"OK",CANCEL:"Anuluj",CONFIRM:"Potwierdź"},pt:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Confirmar"},ru:{OK:"OK",CANCEL:"Отмена",CONFIRM:"Применить"},sv:{OK:"OK",CANCEL:"Avbryt",CONFIRM:"OK"},tr:{OK:"Tamam",CANCEL:"İptal",CONFIRM:"Onayla"},zh_CN:{OK:"OK",CANCEL:"取消",CONFIRM:"确认"},zh_TW:{OK:"OK",CANCEL:"取消",CONFIRM:"確認"}};return p.init=function(c){return a(c||b)},p});
\ No newline at end of file