You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by vv...@apache.org on 2015/01/13 09:23:57 UTC

svn commit: r1651300 [2/2] - in /felix/trunk/webconsole-plugins/useradmin: ./ src/main/appended-resources/META-INF/ src/main/java/org/apache/felix/webconsole/plugins/useradmin/internal/ src/main/resources/OSGI-INF/l10n/ src/main/resources/res/ src/main...

Added: felix/trunk/webconsole-plugins/useradmin/src/main/resources/res/jstree-3.0.9/themes/default/style.min.css
URL: http://svn.apache.org/viewvc/felix/trunk/webconsole-plugins/useradmin/src/main/resources/res/jstree-3.0.9/themes/default/style.min.css?rev=1651300&view=auto
==============================================================================
--- felix/trunk/webconsole-plugins/useradmin/src/main/resources/res/jstree-3.0.9/themes/default/style.min.css (added)
+++ felix/trunk/webconsole-plugins/useradmin/src/main/resources/res/jstree-3.0.9/themes/default/style.min.css Tue Jan 13 08:23:56 2015
@@ -0,0 +1 @@
+.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:#000;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-leaf>.jstree-ocl{cursor:default}.jstree .jstree-open>.jstree-children{display:block}.jstree .jstree-closed>.jstree-children,.jstree .jstree-leaf>.jstree-children{display:none}.jstree-anchor>.jstree-themeicon{margin-right:2px}.jstree-no-icons .jstree-themeicon,.jstree-anchor>.jstree-themeicon-h
 idden{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-leaf>.jstree-ocl{cursor:pointer}.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 #666;-webkit-box-shadow:2px 2px 2px #999;box-shadow:2px 2px 2px #999}.vakata-context ul{list-style:none;left:100%;margin-top:-2.7em;margin-left:-4px}.vakata-context .vakata-context-r
 ight 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;text-decoration:none;width:auto;color:#000;white-space:nowrap;line-height:2.4em;-moz-text-shadow:1px 1px 0 #fff;-webkit-text-shadow:1px 1px 0 #fff;text-shadow:1px 1px 0 #fff;-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 li>a:focus{outline:0}.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 2p
 x #0a6aa1}.vakata-context .vakata-context-separator>a,.vakata-context .vakata-context-separator>a:hover{background:#fff;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>i{text-decoration:none;display:inline-block;width:2.4em;height:2.4em;background:0 0;margin:0 0 0 -2em;vertical-align:top;text-align:center;line-height:2.4em}.vakata-context li>a>i:empty{width:2.4em;line-height:2.4em}.vakata-context li>a .vakata-contextmenu-sep{display:inline-block;widt
 h:1px;height:2.4em;background:#fff;margin:0 .5em 0 0;border-left:1px solid #e2e3e3}.vakata-context .vakata-contextmenu-shortcut{font-size:.8em;color:silver;opacity:.5;display:none}.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>i{margin:0 -2em 0 0}.vakata-context-rtl li>a .vakata-contextmenu-sep{margin:0 0 0 .5em;border-left-color:#fff;background:#e2e3e3}#jstree-marker{position:absolute;top:0;left:0;margin:-5px 0 0 0;padding:0;border-right:0;border-top:5px solid transparent;border-bottom:5px solid tr
 ansparent;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}.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 .15s,box-shadow .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:0 0;color:#666}.jstree-default .jstree-disabled.jstree-hovered{ba
 ckground:0 0;box-shadow:none}.jstree-default .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default .jstree-disabled>.jstree-icon{opacity:.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");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default .jstree-search{font-style:italic;color:#8b0000;font-weight:700}.jstree-default .jstree-no-checkboxes .jstree-checkbox{display:none!important}.jstree-default.jstree-checkbox-no-clicked .jstree-clicked{background:0 0;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:0 0}.jstree-default.jstree-checkbox-no-clicked>.jstree-wholerow-ul .jstree-wholerow-click
 ed.jstree-wholerow-hovered{background:#e7f4f9}.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:0 0;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%)}.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:24px;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(32px.png)}.jstree-default .jstree-node{background-position:-292px -4px;background-repeat:repeat-y}.jstree-default .jstree-last{background:0 0}.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-themeicon{background-position:-260px -4px}.jstree-defau
 lt>.jstree-no-dots .jstree-node,.jstree-default>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.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:0 0}.jstree-default .jstree-disabled.jstree-hovered{background:0 0}.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-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default .jstree-checked>.jstree-checkbox{background-position:-228px -4px}.jstree-default.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default .jstree-checked>.jstree-checkbox:hover{background-position:-228px -36px}.jstree-default .jstree-anchor>.jstree-undetermined{background-position:-196
 px -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;background-repeat:repeat-y}.jstree-default.jstree-rtl .jstree-last{background:0 0}.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:0 0}.jstree-default.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-36px -36px}.jstree-defau
 lt.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-4px -36px}.jstree-default .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default .jstree-file{background:url(32px.png) -100px -68px no-repeat}.jstree-default .jstree-folder{background:url(32px.png) -260px -4px no-repeat}.jstree-default>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default{line-height:24px;padding:0 4px}#jstree-dnd.jstree-default .jstree-ok,#jstree-dnd.jstree-default .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default i{background:0 0;width:24px;height:24px;line-height:24px}#jstree-dnd.jstree-default .jstree-ok{background-position:-4px -68px}#jstree-dnd.jstree-default .jstree-er{background-position:-36px -6
 8px}.jstree-default.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==)}.jstree-default.jstree-rtl .jstree-last{background:0 0}.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(32px.png)}.jstree-default-small .jstree-node{background-position:-295px -7px;background-repeat:repeat-y}.jstree-default-small .jstree-last{background:0 0}.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-themeicon{background-position:-263px -7px}.jstree-default-small>.jstree-no-dots .jstree-node,.jstree-default-small>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.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:0 0}.jstree-default-small .jstree-disabled.jstree-hovered{background:0 0}.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-checkbox-selection .jstree-cli
 cked>.jstree-checkbox,.jstree-default-small .jstree-checked>.jstree-checkbox{background-position:-231px -7px}.jstree-default-small.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-small .jstree-checked>.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;background-repeat:repeat-y}.jstree-default-small.jstree-rtl .jstree-last{background:0 0}.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:0 0}.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;background-position:0 0}.jstree-default-small>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default-small .jstree-file{background:url(32px.png) -103px -71px no-repeat}.jstree-default-small .jstree-folder{background:url(32px.png) -263px -7px no-repeat}.jstree-default-small>.jstree-container-ul>.jstree-node{ma
 rgin-left:0;margin-right:0}#jstree-dnd.jstree-default-small{line-height:18px;padding:0 4px}#jstree-dnd.jstree-default-small .jstree-ok,#jstree-dnd.jstree-default-small .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default-small i{background:0 0;width:18px;height:18px;line-height:18px}#jstree-dnd.jstree-default-small .jstree-ok{background-position:-7px -71px}#jstree-dnd.jstree-default-small .jstree-er{background-position:-39px -71px}.jstree-default-small.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg==)}.jstree-default-small.jstree-rtl .jstree-last{background:0 0}.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(32px.png)}.jstree-default-large .jstree-node{background-position:-288px 0;background-repeat:repeat-y}.jstree-default-large .jstree-last{background:0 0}.jstree-default-large .jstree-open>.jstree-ocl{background-position:-128px 0}.jstree-default-large .jstree-closed>.jstree-ocl{background-position:-96px 0}.jstree-default-large .jstree-leaf>.jstree-ocl{background-position:-64px 0}.jstree-default-large .jstree-themeicon{background-position:-256px 0}.jstree-default-large>.jstree-no-dots .jstree-node,.jstree-default-large>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-large>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-32px 0}.j
 stree-default-large>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:0 0}.jstree-default-large .jstree-disabled{background:0 0}.jstree-default-large .jstree-disabled.jstree-hovered{background:0 0}.jstree-default-large .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-large .jstree-checkbox{background-position:-160px 0}.jstree-default-large .jstree-checkbox:hover{background-position:-160px -32px}.jstree-default-large.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-large .jstree-checked>.jstree-checkbox{background-position:-224px 0}.jstree-default-large.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-large .jstree-checked>.jstree-checkbox:hover{background-position:-224px -32px}.jstree-default-large .jstree-anchor>.jstree-undetermined{background-position:-192px 0}.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;background-repeat:repeat-y}.jstree-default-large.jstree-rtl .jstree-last{background:0 0}.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:0 0}.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:0
  -32px}.jstree-default-large .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-large>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default-large .jstree-file{background:url(32px.png) -96px -64px no-repeat}.jstree-default-large .jstree-folder{background:url(32px.png) -256px 0 no-repeat}.jstree-default-large>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default-large{line-height:32px;padding:0 4px}#jstree-dnd.jstree-default-large .jstree-ok,#jstree-dnd.jstree-default-large .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default-large i{background:0 0;width:32px;height:32px;line-height:32px}#jstree-dnd.jstree-default-large .jstree-ok{background-position:0 -64px}#jstree-dnd.jstree-default-large .jstree-er{background-position:-32px -64px}.jstree-default-la
 rge.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg==)}.jstree-default-large.jstree-rtl .jstree-last{background:0 0}@media (max-width:768px){#jstree-dnd.jstree-dnd-responsive{line-height:40px;font-weight:700;font-size:1.1em;text-shadow:1px 1px #fff}#jstree-dnd.jstree-dnd-responsive>i{background:0 0;width:40px;height:40px}#jstree-dnd.jstree-dnd-responsive>.jstree-ok{background-image:url(40px.png);background-position:0 -200px;background-size:120px 240px}#jstree-dnd.jstree-dnd-responsive>.jstree-er{background-image:url(40px.png);background-position:-40px -200px;background-size:120px 240px}#jstree-marker.jstree-dnd-responsive{border-left-width:10px;border-top-width:10px;border-bottom-width:10px;margin-top:-10px}}@media (max-width:768px){.jstree-default-responsive .jstree-icon{background-image:url(40px.png)}.jstree-default-responsive .j
 stree-node,.jstree-default-responsive .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-responsive .jstree-node{min-height:40px;line-height:40px;margin-left:40px;min-width:40px;white-space:nowrap}.jstree-default-responsive .jstree-anchor{line-height:40px;height:40px}.jstree-default-responsive .jstree-icon,.jstree-default-responsive .jstree-icon:empty{width:40px;height:40px;line-height:40px}.jstree-default-responsive>.jstree-container-ul>.jstree-node{margin-left:0}.jstree-default-responsive.jstree-rtl .jstree-node{margin-left:0;margin-right:40px}.jstree-default-responsive.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0}.jstree-default-responsive .jstree-ocl,.jstree-default-responsive .jstree-themeicon,.jstree-default-responsive .jstree-checkbox{background-size:120px 240px}.jstree-default-responsive .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-responsive .jstree-open>.jstree-ocl{background-position:0 0!important}.jstree-default-responsive .jstree-closed>.j
 stree-ocl{background-position:0 -40px!important}.jstree-default-responsive.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-40px 0!important}.jstree-default-responsive .jstree-themeicon{background-position:-40px -40px}.jstree-default-responsive .jstree-checkbox,.jstree-default-responsive .jstree-checkbox:hover{background-position:-40px -80px}.jstree-default-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-responsive .jstree-checked>.jstree-checkbox,.jstree-default-responsive .jstree-checked>.jstree-checkbox:hover{background-position:0 -80px}.jstree-default-responsive .jstree-anchor>.jstree-undetermined,.jstree-default-responsive .jstree-anchor>.jstree-undetermined:hover{background-position:0 -120px}.jstree-default-responsive .jstree-anchor{font-weight:700;font-size:1.1em;text-shadow:1px 1px #fff}.jstree-default-responsive>.jstree-striped{backgrou
 nd:0 0}.jstree-default-responsive .jstree-wholerow{border-top:1px solid rgba(255,255,255,.7);border-bottom:1px solid rgba(64,64,64,.2);background:#ebebeb;height:40px}.jstree-default-responsive .jstree-wholerow-hovered{background:#e7f4f9}.jstree-default-responsive .jstree-wholerow-clicked{background:#beebff}.jstree-default-responsive .jstree-children .jstree-last>.jstree-wholerow{box-shadow:inset 0 -6px 3px -5px #666}.jstree-default-responsive .jstree-children .jstree-open>.jstree-wholerow{box-shadow:inset 0 6px 3px -5px #666;border-top:0}.jstree-default-responsive .jstree-children .jstree-open+.jstree-open{box-shadow:none}.jstree-default-responsive .jstree-node,.jstree-default-responsive .jstree-icon,.jstree-default-responsive .jstree-node>.jstree-ocl,.jstree-default-responsive .jstree-themeicon,.jstree-default-responsive .jstree-checkbox{background-image:url(40px.png);background-size:120px 240px}.jstree-default-responsive .jstree-node{background-position:-80px 0;background-repeat:r
 epeat-y}.jstree-default-responsive .jstree-last{background:0 0}.jstree-default-responsive .jstree-leaf>.jstree-ocl{background-position:-40px -120px}.jstree-default-responsive .jstree-last>.jstree-ocl{background-position:-40px -160px}.jstree-default-responsive .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-responsive .jstree-file{background:url(40px.png) 0 -160px no-repeat;background-size:120px 240px}.jstree-default-responsive .jstree-folder{background:url(40px.png) -40px -40px no-repeat;background-size:120px 240px}.jstree-default-responsive>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}}
\ No newline at end of file

Propchange: felix/trunk/webconsole-plugins/useradmin/src/main/resources/res/jstree-3.0.9/themes/default/style.min.css
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: felix/trunk/webconsole-plugins/useradmin/src/main/resources/res/jstree-3.0.9/themes/default/throbber.gif
URL: http://svn.apache.org/viewvc/felix/trunk/webconsole-plugins/useradmin/src/main/resources/res/jstree-3.0.9/themes/default/throbber.gif?rev=1651300&view=auto
==============================================================================
Binary file - no diff available.

Propchange: felix/trunk/webconsole-plugins/useradmin/src/main/resources/res/jstree-3.0.9/themes/default/throbber.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: felix/trunk/webconsole-plugins/useradmin/src/main/resources/res/plugin.css
URL: http://svn.apache.org/viewvc/felix/trunk/webconsole-plugins/useradmin/src/main/resources/res/plugin.css?rev=1651300&r1=1651299&r2=1651300&view=diff
==============================================================================
--- felix/trunk/webconsole-plugins/useradmin/src/main/resources/res/plugin.css (original)
+++ felix/trunk/webconsole-plugins/useradmin/src/main/resources/res/plugin.css Tue Jan 13 08:23:56 2015
@@ -14,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+@import url("jstree-3.0.9/themes/default/style.min.css");
 #userTree { width: 20% }
 #userTree li a { padding-left: 12px ! important}
 .header ul { float: right }
@@ -22,4 +23,4 @@ input.k, input.v { width: 100% }
 #roleDetails .property-type {width: 5em}
 .actions ul { float : right }
 #newDialogRole select { width : 100% }
-.required { font-style:italic }
+li.required > a { font-style:italic }

Modified: felix/trunk/webconsole-plugins/useradmin/src/main/resources/res/plugin.html
URL: http://svn.apache.org/viewvc/felix/trunk/webconsole-plugins/useradmin/src/main/resources/res/plugin.html?rev=1651300&r1=1651299&r2=1651300&view=diff
==============================================================================
--- felix/trunk/webconsole-plugins/useradmin/src/main/resources/res/plugin.html (original)
+++ felix/trunk/webconsole-plugins/useradmin/src/main/resources/res/plugin.html Tue Jan 13 08:23:56 2015
@@ -1,4 +1,7 @@
-<script type="text/javascript" src="${pluginRoot}/res/jsTree.v.0.9.9a/jquery.tree.min.js"></script>
+<!--
+<script type="text/javascript" src="${pluginRoot}/res/jsTree.v.0.9.9a/jquery.tree.min.js"></script>
+-->
+<script type="text/javascript" src="${pluginRoot}/res/jstree-3.0.9/jstree.min.js"></script>
 <script type="text/javascript" src="${pluginRoot}/res/plugin.js"></script>
 <script type="text/javascript">
 // <![CDATA[
@@ -42,6 +45,7 @@ var i18n = {
 						<td colspan="4">
 							<button id="delRole">${delete}</button> 
 							<button id="savRole">${save}</button>
+							<button id="toggleRequiredRole">${toggleRequired}</button>
 						</td>
 					</tr>
 				</tfoot>

Modified: felix/trunk/webconsole-plugins/useradmin/src/main/resources/res/plugin.js
URL: http://svn.apache.org/viewvc/felix/trunk/webconsole-plugins/useradmin/src/main/resources/res/plugin.js?rev=1651300&r1=1651299&r2=1651300&view=diff
==============================================================================
--- felix/trunk/webconsole-plugins/useradmin/src/main/resources/res/plugin.js (original)
+++ felix/trunk/webconsole-plugins/useradmin/src/main/resources/res/plugin.js Tue Jan 13 08:23:56 2015
@@ -19,6 +19,7 @@ jQuery.curCSS = jQuery.css;
 
 var userTree = false;
 var selectedRole = false;
+var selectedParent = false;
 var newDialogRole = false;
 var roleDetails = false;
 var roleDetailsHelp = false;
@@ -34,80 +35,106 @@ function roleObj(node) {
 }
 
 var treeSettings = {
-	data : {
-		type : 'json',
-		opts : { 'static' : [] }
-	},
-	ui       : { theme_name : 'themeroller' },
-	rules    : { multiple : false, valid_children: ['root'] },
-	types    : {
-		root : { valid_children: ['t0', 't1', 't2'] },
-		t2   : { valid_children: ['t0', 't1', 't2'] },
-		t1   : { valid_children: 'none' },
-		t0   : { valid_children: 'none' }
+	core    : {
+		data           : [], // will be set on load
+		multiple       : false,
+		themes         : { stripes : true },
+		check_callback : function (operation, node, node_parent, node_position, more) {
+			// disable copy to root node
+			if ('#' === node_parent.id) return false;
+			if (operation === 'copy_node' && 'root' === node_parent.id) return false;
+
+			if (operation === 'move_node' || operation === 'copy_node') {
+				// don't copy/move things around the same/root level
+				if (node.parent === node_parent.id) return false;
+
+				// don't copy/move if target alreay contains the same member
+				var target = node_parent.original.role;
+				if (target && isMember(node.original.role, target)) return false;
+			}
+			return true;
+		}
 	},
-	callback : {
-		onselect : function(node) {
-			var _role = $(node).attr('role');
-			if (_role) {
-				var role = JSON.parse( _role );
-				onSelectNode(role.name);
-				$(node).children('a').addClass('ui-priority-primary');
+	plugins : [ 'dnd', 'types', 'sort' ],
+	types   : {
+		root : { valid_children: ['t0', 't1', 't2'], icon : pluginRoot + '/res/book-2.png' },
+		t2   : { valid_children: ['t0', 't1', 't2'], icon : pluginRoot + '/res/group.png' },
+		t1   : { valid_children: [], icon : pluginRoot + '/res/user.png'  },
+		t0   : { valid_children: [], icon : pluginRoot + '/res/role.png' }
+	}
+}
+
+function initTree(data) {
+	// show help message
+	roleDetailsHelp.removeClass('ui-helper-hidden');
+	roleDetailsTable.addClass('ui-helper-hidden');
+
+	var openNodes = [];
+
+	// recreate tree, because reload doesn't work
+	var userTreeRef = $.jstree.reference('#userTree');
+	if (userTreeRef) {
+		userTreeRef.destroy();
+
+		// save state
+		$.each(userTreeRef.get_node('root').children_d, function(idx, child) {
+			var node = userTreeRef.get_node(child);
+			if ( node.state.opened ) openNodes.push(node.text);
+		});
+	}
+
+	// prepare data
+	var sortedGroups = sortGroups(data);
+	treeSettings.core['data'] = buildTree(sortedGroups);
+
+	// build tree
+	userTree = $('#userTree')
+		.on('select_node.jstree', function(e, data) {
+			var role = data.node.original.role;
+			if (role) {
+				var parent = data.node.parent;
+				var parent_name = parent === '#' || parent === 'root' ? false : data.instance.get_node(parent).text;
+				onSelectNode(role.name, parent_name);
 			} else {
 				roleDetailsHelp.removeClass('ui-helper-hidden');
 				roleDetailsTable.addClass('ui-helper-hidden');
 			}
-		},
-		onparse : function (s, t) {
-			return $(s)
-					.find('li[rel=t2] > a > ins').addClass('ui-icon ui-icon-contact').end()
-					.find('li[rel=t1] > a > ins').addClass('ui-icon ui-icon-person').end()
-					.find('li[rel=t0] > a > ins').addClass('ui-icon ui-icon-bullet').end();
-		},
-		ondeselect : function(node) { $(node).children('a').removeClass('ui-priority-primary') },
-		ondblclk   : function(node, tree_obj) {
-			var n = $(node);
-			var pp = tree_obj.parent(node);
-			var r = roleObj(n);
-			var g = roleObj(pp);
-			console.log(r, g);
-			if (r && g) {
-				if( isInMemberArray(r, g.members, 1) ) {
-					$.post(pluginRoot, { action: 'removeMember', role: r.name, group: g.name });
-					$.post(pluginRoot, { action: 'addRequiredMember', role: r.name, group: g.name }, function(data) {
-						pp.attr('role', JSON.stringify(data));
-					}, 'json');
-					n.addClass('required');
-				} else if( isInMemberArray(r, g.rmembers, 1) ) {
-					$.post(pluginRoot, { action: 'removeMember', role: r.name, group: g.name });
-					$.post(pluginRoot, { action: 'addMember', role: r.name, group: g.name }, function(data) {
-						pp.attr('role', JSON.stringify(data));
-					}, 'json');
-					n.removeClass('required');
-				}
+		})
+		.on('move_node.jstree', function(e, data) {
+			var role = data.node.original.role;
+			var parent = data.parent;
+			var parent_name = parent === '#' || parent === 'root' ? false : data.instance.get_node(parent).text;
+			var old_parent = data.old_parent;
+			var old_parent_name = old_parent === '#' || old_parent === 'root' ? false : data.instance.get_node(old_parent).text;
+
+			if (parent_name) {
+				//console.log('move: adding role', role, 'to group', parent);
+				$.post(pluginRoot, {'action': 'addMember', 'role' : role.name, 'group' : parent_name});
 			}
-		},
-		beforemove : function(node, ref_node, type, tree_obj, is_copy) {
-			var _ = dragObj(node, ref_node, type, tree_obj);
-			// --- check if the move is valid:
-			// don't move things around the same/root level
-			if (_.to == false && _.from == false) return false;
-			// no copy to the root folder
-			if (is_copy && _.to == false) return false;
-			// no rearrange withing the folder
-			if (_.to != false && _.from != false && _.to.name == _.from.name) return false;
-			// already contains such a member
-			if (_.to != false && isMember(_.node, _.to)) return false;
-
-			// do copy-move
-			// unassign from the old group, if it is move
-			if (!is_copy && _.from) $.post(pluginRoot, {'action': 'removeMember', 'role' : _.node.name, 'group' : _.from.name} , function(data) {}, 'json');
-			// assign to the new group
-			if (_.to) $.post(pluginRoot, {'action': 'addMember', 'role' : _.node.name, 'group' : _.to.name} , function(data) {}, 'json');
+			if (old_parent_name) {
+				//console.log('move: removed role', role, 'to group', old_parent);
+				$.post(pluginRoot, {'action': 'removeMember', 'role' : role.name, 'group' : old_parent_name});
+			}
+			$('#reload').click();
+		})
+		.on('copy_node.jstree', function(e, data) {
+			var role = data.original.original.role;
+			var parent_name = data.instance.get_node(data.parent).text;
+
+			if (parent_name) {
+				//console.log('copy: copying role', role, 'to group', parent);
+				$.post(pluginRoot, {'action': 'addMember', 'role' : role.name, 'group' : parent_name});
+			}
+			$('#reload').click();
+		})
+		.on('ready.jstree', function(e, data) { // restore state
+			var _ = data.instance;
+			if (openNodes.length) $.each(_.get_node('root').children_d, function(idx, child) {
+				var node = _.get_node(child);
+				if ($.inArray(node.text, openNodes) > -1) _.open_node(node, false, false);
+			});
 
-			return true;
-		}
-	}
+		}).jstree(treeSettings);
 }
 
 $(function() {
@@ -126,7 +153,6 @@ $(function() {
 		}
 	});
 
-	userTree = $('#userTree');
 	roleDetails = $('#roleDetails');
 	roleDetailsTable = roleDetails.find('table');
 	roleDetailsHelp = roleDetails.find('#roleDetailsHelp');
@@ -174,6 +200,12 @@ $(function() {
 		});
 	});
 	$('#savRole').click( doSaveRole );
+	$('#toggleRequiredRole').click( function() {
+		if (selectedRole && selectedParent)
+		$.post(pluginRoot, { action: 'toggleMembership', role: selectedRole, group: selectedParent }, function() {
+			$('#reload').click()
+		});
+	});
 
 	// top-frame buttons
 	$('#newRole').click( function() {
@@ -181,16 +213,7 @@ $(function() {
 		return false;
 	});
 	$('#reload').click( function() {
-		$.post(pluginRoot, {'action': 'list'} , function(data) {
-			roleDetailsHelp.removeClass('ui-helper-hidden');
-			roleDetailsTable.addClass('ui-helper-hidden');
-
-			var sortedGroups = sortGroups(data);
-			var treeRoot = buildTree(sortedGroups);
-
-			treeSettings.data.opts['static'] = treeRoot;
-			userTree.empty().tree(treeSettings);
-		}, 'json');
+		$.post(pluginRoot, {'action': 'list'} , initTree, 'json');
 		return false;
 	}).click();
 });
@@ -202,8 +225,8 @@ function digest(val, alg) {
 		url     : pluginRoot,
 		async   : false,
 		data    : {
-			'action': 'digest', 
-			'data' : val, 
+			'action': 'digest',
+			'data' : val,
 			'algorithm' : alg
 		},
 		dataType: 'json',
@@ -255,16 +278,14 @@ function doSaveRole() {
 			var k = _.find('.k').val();
 			var v = _.find('.v').val();
 			var t = _.find('select').val();
-			
+
 			if (t.indexOf('password-') == 0) {
 				var hash = digest(v, t.substring(9));
-				//CryptoJS[t.substring(9)](v).toString(CryptoJS.enc.Hex);
-				//v = hashToArray(hash);
 				v = hash;
 			} else if (t == 'byte[]') {
 				v = strToArray(v);
 			}
-			
+
 			if (doProps) data.properties[k] = v;
 			else data.credentials[k] = v;
 		}
@@ -286,31 +307,30 @@ function isMember(role, group) {
 
 function buildTree(sortedGroups) {
 	var treeRoot = {
-		data : i18n.root,
-		state: 'open',
-		attributes : { 'rel' : 'root' },
+		text : i18n.root,
+		id   : 'root',
+		type : 'root',
+		state: { opened : true },
 		children: []
 	};
 	var treeNode = function(name, role, parent, req) {
 		if (!role) return;
 		if (!parent) parent = treeRoot.children;
 		var node = {
-			data  : role.name,
-			attributes : {
-				'rel'   : 't' + role.type,
-				'role'  : JSON.stringify(role)
-			}
+			'text' : role.name,
+			'type' : 't' + role.type,
+			'role' : role,
 		}
-		if (req) node.attributes['class'] = 'required';
+		if (req) node.li_attr = { 'class' : 'required' };
 		parent.push(node);
 		if (role.type == 2) {
 			node['children'] = [];
 			node = node['children'];
-			if (role.members) $.each(role.members, function(idx, role) {
-				treeNode(role.name, role, node, 0);
+			if (role.members) $.each(role.members, function(idx, xrole) {
+				treeNode(xrole.name, xrole, node, 0);
 			});
-			if (role.rmembers) $.each(role.rmembers, function(idx, role) {
-				treeNode(role.name, role, node, 1);
+			if (role.rmembers) $.each(role.rmembers, function(idx, xrole) {
+				treeNode(xrole.name, xrole, node, 1);
 			});
 		}
 	}
@@ -364,9 +384,16 @@ function sortGroups(data) {
 	return $.extend(rootGroups, unassigned);
 }
 
-function onSelectNode(role) {
+function onSelectNode(role, parent) {
+	if (parent) {
+		$('#toggleRequiredRole').removeClass('ui-state-disabled');
+	} else {
+		$('#toggleRequiredRole').addClass('ui-state-disabled')
+	}
+
 	$.post(pluginRoot, {'action': 'get', 'role' : role} , function(data) {
 		selectedRole = role;
+		selectedParent = parent;
 		roleDetailsHelp.addClass('ui-helper-hidden');
 		roleDetailsTable.removeClass('ui-helper-hidden');
 		roleDetailsBody.find('tr').not('.header').remove();
@@ -399,26 +426,3 @@ function onSelectNode(role) {
 	return false;
 }
 
-function dragObj(node, ref_node, type, tree_obj) {
-    // determine the destination folder
-	var _role = false;
-	if ('inside' == type) {
-		_role = $(ref_node).attr('role');
-	} else {
-		_role = tree_obj.parent(ref_node)
-		_role = _role.attr ? _role.attr('role') : false;
-	}
-	var to = _role ? JSON.parse(_role) : false;
-	// determine object to move
-	_role = $(node).attr('role');
-	var source =  JSON.parse(_role);
-	// determine the previous location (in case it is move, not copy)
-	_role = tree_obj.parent(node);
-	var from = _role.attr && _role.attr('role') ? JSON.parse(_role.attr('role')) : false;
-
-	return {
-		'to' : to,
-		'from' : from,
-		'node' : source
-	}
-}

Added: felix/trunk/webconsole-plugins/useradmin/src/main/resources/res/role.png
URL: http://svn.apache.org/viewvc/felix/trunk/webconsole-plugins/useradmin/src/main/resources/res/role.png?rev=1651300&view=auto
==============================================================================
Binary file - no diff available.

Propchange: felix/trunk/webconsole-plugins/useradmin/src/main/resources/res/role.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: felix/trunk/webconsole-plugins/useradmin/src/main/resources/res/user.png
URL: http://svn.apache.org/viewvc/felix/trunk/webconsole-plugins/useradmin/src/main/resources/res/user.png?rev=1651300&view=auto
==============================================================================
Binary file - no diff available.

Propchange: felix/trunk/webconsole-plugins/useradmin/src/main/resources/res/user.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream