')
- .addClass('v-block actions'))
- return browser
-}
-
-// low level update...
-function update(browser, path, list){
- browser = browser || $('.browse')
- var p = browser.find('.path').empty()
- var l = browser.find('.list').empty()
-
- path.forEach(function(e){
- p.append($('
')
- .addClass('dir')
- .click(popDir)
- .text(e))
- })
- list.forEach(function(e){
- l.append($('
')
- .click(pushDir)
- .text(e))
- })
- return browser
-}
-
-
-function showPath(browser, path, tree, skip){
- // XXX remove for pruduction...
- skip = skip || skipFiles
-
- browser = browser || $('.browse')
- path = path.constructor !== Array ? path.split(/[\\\/]+/g) : path
- path = path.filter(function(e){ return e != '' })
-
- var dir = tree
- path.forEach(function(d){
- dir = dir[d]
- })
-
- // XXX do error checking...
-
- dir = skip != null
- // skip files....
- ? Object.keys(dir).filter(function(e){ return skip(e, dir[e]) })
- : Object.keys(dir)
-
- update(browser, path, dir)
-}
-
-// XXX this will skip incuding the current dir...
-// ...this might work and might not work...
-function getPath(browser, to){
- var skip = false
- return browser.find('.path .dir')
- .filter(function(i, e){
- if(e === to){
- skip = true
- }
- return !skip
- })
- .map(function(i, e){ return $(e).text() })
- .toArray()
-}
-
-
-function pushDir(){
- var dir = $(this).text()
- var browser = $(this).parents('.browse')
- var path = getPath(browser)
- path.push(dir)
-
- showPath(browser, path, TREE)
-}
-function popDir(){
- var dir = $(this).text()
- var browser = $(this).parents('.browse')
- var path = getPath(browser, this)
-
- showPath(browser, path, TREE)
-
- select('"'+dir+'"')
-}
-
-
-// base control actions...
-// XXX add keywords:
-// 'first'
-// 'prev'
-// 'next'
-// 'last'
-// 'none' -- deselect
-// '!' -- return selected element if it exists...
-// -- select by sequence number...
-// -- select a specific element...
-function select(elem, browser){
- browser = browser || $('.browse')
- var elems = browser.find('.list div')
-
- if(elems.length == 0){
- return $()
- }
-
- elem = elem || select('!')
- // if none selected get the first...
- elem = elem.length == 0 ? 'first' : elem
-
- // first/last...
- if(elem == 'first' || elem == 'last'){
- return select(elems[elem](), browser)
-
- // prev/next...
- } else if(elem == 'prev' || elem == 'next'){
- var to = select('!', browser)[elem]('.list div')
- if(to.length == 0){
- return select(elem == 'prev' ? 'last' : 'first', browser)
- }
- select('none')
- return select(to, browser)
-
- // deselect...
- } else if(elem == 'none'){
- return elems
- .filter('.selected')
- .removeClass('selected')
-
- // strict...
- } else if(elem == '!'){
- return elems.filter('.selected')
-
- // number...
- } else if(typeof(elem) == typeof(123)){
- return select($(elems[elem]), browser)
-
- // string...
- } else if(typeof(elem) == typeof('str') && /^'.*'$|^".*"$/.test(elem.trim())){
- elem = elem.trim().slice(1, -1)
- return select(browser.find('.list div').filter(function(i, e){
- return $(e).text() == elem
- }))
-
- // element...
- } else {
- select('none', browser)
- return elem.addClass('selected')
- }
-}
-function push(browser){
- browser = browser || $('.browse')
- var elem = select('!', browser)
-
- if(elem.length == 0){
- return select()
- }
-
- var path = getPath(browser)
-
- path.push(elem.text())
-
- var res = showPath(browser, path, TREE)
-
- select(null, browser)
-
- return res
-}
-function pop(browser){
- browser = browser || $('.browse')
- var path = getPath(browser)
- var dir = path.pop()
-
- var res = showPath(browser, path, TREE)
-
- select('"'+dir+'"')
-
- return res
-}
-function next(browser){
- return select('next', browser)
-}
-function prev(browser){
- return select('prev', browser)
-}
-
-
-// default action...
-function action(browser){
- browser = browser || $('.browse')
-
- var cur = select('!', browser).text()
- alert('/' + getPath(browser).concat(cur == '' ? [cur] : [cur, '']).join('/'))
-
- return false
-}
-
-var KB = {
- '*':{
- F5: function(){ window.location.reload() },
- },
- //'.browse:focus':{
- '.browse':{
- Up: prev,
- Backspace: 'Up',
- Down: next,
- Left: pop,
- Right: push,
-
- Enter: action,
- },
-}
-
//---
@@ -421,15 +187,6 @@ requirejs(['../lib/keyboard', '../object'], function(k, o){
keyboard = k
object = o
- // setup base keyboard for devel, in case something breaks...
- //$(document)
- $('.browse')
- .keydown(
- keyboard.makeKeyboardHandler(
- KB,
- function(k){ window.DEBUG && console.log(k) }))
-
-
Browser = object.makeConstructor('Browser',
BrowserClassPrototype,
BrowserPrototype)
@@ -453,13 +210,6 @@ requirejs(['../lib/keyboard', '../object'], function(k, o){
})
$(function(){
-/*
- var browser = make()
- $('.container').first()
- .empty()
- .append(browser)
- showPath(browser, '/', TREE)
-*/
$('.container').first().remove()