mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-11-04 05:10:07 +00:00 
			
		
		
		
	more refactoring and tweaking...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									b94e0bf109
								
							
						
					
					
						commit
						93f336cd04
					
				@ -31,6 +31,10 @@ var DrawerClassPrototype = {
 | 
				
			|||||||
				})
 | 
									})
 | 
				
			||||||
				.append(client))
 | 
									.append(client))
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
 | 
							if(options.focusable){
 | 
				
			||||||
 | 
								overlay.attr('tabindex', 0)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		return overlay
 | 
							return overlay
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -41,6 +45,8 @@ var DrawerPrototype = {
 | 
				
			|||||||
	client: null,
 | 
						client: null,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	options: {
 | 
						options: {
 | 
				
			||||||
 | 
							focusable: false,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		'close-at': 40,
 | 
							'close-at': 40,
 | 
				
			||||||
		'fade-at': 100,
 | 
							'fade-at': 100,
 | 
				
			||||||
		'animate': 120,
 | 
							'animate': 120,
 | 
				
			||||||
@ -53,7 +59,8 @@ var DrawerPrototype = {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	keyboard: {
 | 
						keyboard: {
 | 
				
			||||||
		General: {
 | 
							General: {
 | 
				
			||||||
			pattern: '.browse-widget',
 | 
								//pattern: '.drawer-widget',
 | 
				
			||||||
 | 
								pattern: '*',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			Esc: 'close',
 | 
								Esc: 'close',
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
@ -82,6 +89,7 @@ var DrawerPrototype = {
 | 
				
			|||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			this.on('close', handler)
 | 
								this.on('close', handler)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	__init__: function(parent, client, options){
 | 
						__init__: function(parent, client, options){
 | 
				
			||||||
@ -131,8 +139,11 @@ var DrawerPrototype = {
 | 
				
			|||||||
				})
 | 
									})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// focus the client...
 | 
							// focus the client...
 | 
				
			||||||
		if(client.focus){
 | 
							if(client.dom && client.focus){
 | 
				
			||||||
			client.focus()
 | 
								client.focus()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								this.focus()
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		return this
 | 
							return this
 | 
				
			||||||
 | 
				
			|||||||
@ -31,6 +31,10 @@ var OverlayClassPrototype = {
 | 
				
			|||||||
				})
 | 
									})
 | 
				
			||||||
				.append(client))
 | 
									.append(client))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if(options.focusable){
 | 
				
			||||||
 | 
								overlay.attr('tabindex', 0)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		return overlay
 | 
							return overlay
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -41,15 +45,19 @@ var OverlayPrototype = {
 | 
				
			|||||||
	client: null,
 | 
						client: null,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	options: {
 | 
						options: {
 | 
				
			||||||
 | 
							focusable: false,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		nonPropagatedEvents: [
 | 
							nonPropagatedEvents: [
 | 
				
			||||||
			'click',
 | 
								'click',
 | 
				
			||||||
			'keydown',
 | 
								'keydown',
 | 
				
			||||||
		],
 | 
							],
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// XXX for some reason this does not work...
 | 
				
			||||||
	keyboard: {
 | 
						keyboard: {
 | 
				
			||||||
		General: {
 | 
							General: {
 | 
				
			||||||
			pattern: '.browse-widget',
 | 
								//pattern: '.overlay-widget',
 | 
				
			||||||
 | 
								pattern: '*',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			Esc: 'close',
 | 
								Esc: 'close',
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
@ -69,6 +77,7 @@ var OverlayPrototype = {
 | 
				
			|||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			this.on('close', handler)
 | 
								this.on('close', handler)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	__init__: function(parent, client, options){
 | 
						__init__: function(parent, client, options){
 | 
				
			||||||
@ -86,8 +95,11 @@ var OverlayPrototype = {
 | 
				
			|||||||
			.append(this.dom)
 | 
								.append(this.dom)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// focus the client...
 | 
							// focus the client...
 | 
				
			||||||
		if(client.focus){
 | 
							if(client.dom && client.focus){
 | 
				
			||||||
			client.focus()
 | 
								client.focus()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								this.focus()
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		return this
 | 
							return this
 | 
				
			||||||
 | 
				
			|||||||
@ -102,12 +102,12 @@ var WidgetPrototype = {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		// build the dom...
 | 
							// build the dom...
 | 
				
			||||||
		if(this.constructor.make){
 | 
							if(this.constructor.make){
 | 
				
			||||||
			var dom = this.dom = this.constructor.make(options)
 | 
								this.dom = this.constructor.make(options)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// add keyboard handler...
 | 
							// add keyboard handler...
 | 
				
			||||||
		if(this.keyboard){
 | 
							if(this.keyboard && this.dom){
 | 
				
			||||||
			dom.keydown(
 | 
								this.dom.keydown(
 | 
				
			||||||
				keyboard.makeKeyboardHandler(
 | 
									keyboard.makeKeyboardHandler(
 | 
				
			||||||
					this.keyboard,
 | 
										this.keyboard,
 | 
				
			||||||
					options.logKeys,
 | 
										options.logKeys,
 | 
				
			||||||
@ -134,6 +134,20 @@ var ContainerClassPrototype = {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var ContainerPrototype = {
 | 
					var ContainerPrototype = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						focus: function(handler){
 | 
				
			||||||
 | 
							if(handler != null){
 | 
				
			||||||
 | 
								this.on('focus', handler)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								this.dom.focus()
 | 
				
			||||||
 | 
								this.client
 | 
				
			||||||
 | 
									&& this.client.focus 
 | 
				
			||||||
 | 
									&& this.client.focus()
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// XXX this is the same as WidgetPrototype.__init__ but also handles
 | 
						// XXX this is the same as WidgetPrototype.__init__ but also handles
 | 
				
			||||||
	// 		the client...
 | 
						// 		the client...
 | 
				
			||||||
	__init__: function(parent, client, options){
 | 
						__init__: function(parent, client, options){
 | 
				
			||||||
@ -150,12 +164,13 @@ var ContainerPrototype = {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		// build the dom...
 | 
							// build the dom...
 | 
				
			||||||
		if(this.constructor.make){
 | 
							if(this.constructor.make){
 | 
				
			||||||
			var dom = this.dom = this.constructor.make(client.dom || client, options)
 | 
								this.dom = this.constructor
 | 
				
			||||||
 | 
									.make(client.dom || client, options)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// add keyboard handler...
 | 
							// add keyboard handler...
 | 
				
			||||||
		if(this.keyboard){
 | 
							if(this.keyboard && this.dom){
 | 
				
			||||||
			dom.keydown(
 | 
								this.dom.keydown(
 | 
				
			||||||
				keyboard.makeKeyboardHandler(
 | 
									keyboard.makeKeyboardHandler(
 | 
				
			||||||
					this.keyboard,
 | 
										this.keyboard,
 | 
				
			||||||
					options.logKeys,
 | 
										options.logKeys,
 | 
				
			||||||
 | 
				
			|||||||
@ -2218,12 +2218,16 @@ var browse = require('lib/widget/browse')
 | 
				
			|||||||
var overlay = require('lib/widget/overlay')
 | 
					var overlay = require('lib/widget/overlay')
 | 
				
			||||||
var drawer = require('lib/widget/drawer')
 | 
					var drawer = require('lib/widget/drawer')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// This will wrap the actions adding a contextual .preventClosing() method, 
 | 
				
			||||||
 | 
					// if called it will prevent the list from closing on open event and give 
 | 
				
			||||||
 | 
					// the user control over when to close the base list...
 | 
				
			||||||
var makeActionLister = function(list, filter, pre_order){
 | 
					var makeActionLister = function(list, filter, pre_order){
 | 
				
			||||||
	pre_order = typeof(filter) == typeof(true) ? filter : pre_order
 | 
						pre_order = typeof(filter) == typeof(true) ? filter : pre_order
 | 
				
			||||||
	filter = typeof(filter) == typeof(true) ? null : filter
 | 
						filter = typeof(filter) == typeof(true) ? null : filter
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return function(path){
 | 
						return function(path){
 | 
				
			||||||
		var paths = a.getPath()
 | 
							var that = this
 | 
				
			||||||
 | 
							var paths = this.getPath()
 | 
				
			||||||
		var actions = {}
 | 
							var actions = {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// pre-order the main categories...
 | 
							// pre-order the main categories...
 | 
				
			||||||
@ -2233,38 +2237,47 @@ var makeActionLister = function(list, filter, pre_order){
 | 
				
			|||||||
			})
 | 
								})
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							var closingPrevented = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// build the action list...
 | 
							// build the action list...
 | 
				
			||||||
		Object.keys(paths).forEach(function(k){
 | 
							Object.keys(paths).forEach(function(k){
 | 
				
			||||||
			var n = paths[k][0]
 | 
								var n = paths[k][0]
 | 
				
			||||||
			var k = filter ? filter(k, n) : k
 | 
								var k = filter ? filter(k, n) : k
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			// pass args to listers...
 | 
								// pass args to listers...
 | 
				
			||||||
			if(k.slice(-1) == '*'){
 | 
								if(k.slice(-1) == '*'){
 | 
				
			||||||
				actions[k] = function(){
 | 
									actions[k] = function(){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										var a = Object.create(that)
 | 
				
			||||||
 | 
										a.preventClosing = function(){ 
 | 
				
			||||||
 | 
											closingPrevented = true 
 | 
				
			||||||
 | 
											return o
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					return a[n].apply(a, arguments)
 | 
										return a[n].apply(a, arguments)
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			// ignore args of actions...
 | 
								// ignore args of actions...
 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
				actions[k] = function(){
 | 
									actions[k] = function(){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										var a = Object.create(that)
 | 
				
			||||||
 | 
										a.preventClosing = function(){ 
 | 
				
			||||||
 | 
											closingPrevented = true 
 | 
				
			||||||
 | 
											return o
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					return a[n]()
 | 
										return a[n]()
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		var closingPrevented = false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		var o = overlay.Overlay($('body'), 
 | 
							var o = overlay.Overlay($('body'), 
 | 
				
			||||||
			list(null, actions, path)
 | 
								list(null, actions, path)
 | 
				
			||||||
				.open(function(evt){ 
 | 
									.open(function(evt){ 
 | 
				
			||||||
 | 
					 | 
				
			||||||
					evt.preventClosing = 
 | 
					 | 
				
			||||||
						event.preventClosing = 
 | 
					 | 
				
			||||||
							function(){ closingPrevented = true }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
					setTimeout(function(){
 | 
					 | 
				
			||||||
					if(!closingPrevented){
 | 
										if(!closingPrevented){
 | 
				
			||||||
						o.close() 
 | 
											o.close() 
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
					}, 0)
 | 
										closingPrevented = false
 | 
				
			||||||
				}))
 | 
									}))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// XXX DEBUG
 | 
							// XXX DEBUG
 | 
				
			||||||
@ -2288,7 +2301,7 @@ var ActionTreeActions = actions.Actions({
 | 
				
			|||||||
				return a +' ('+ l.join(', ') +')'
 | 
									return a +' ('+ l.join(', ') +')'
 | 
				
			||||||
			})],
 | 
								})],
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// XXX lister test...
 | 
						// XXX this is just a test...
 | 
				
			||||||
	embededListerTest: ['Interface/Lister test (embeded)/*',
 | 
						embededListerTest: ['Interface/Lister test (embeded)/*',
 | 
				
			||||||
		function(path, make){
 | 
							function(path, make){
 | 
				
			||||||
			make('a/')
 | 
								make('a/')
 | 
				
			||||||
@ -2297,10 +2310,7 @@ var ActionTreeActions = actions.Actions({
 | 
				
			|||||||
		}],
 | 
							}],
 | 
				
			||||||
	floatingListerTest: ['Interface/Lister test (floating)...',
 | 
						floatingListerTest: ['Interface/Lister test (floating)...',
 | 
				
			||||||
		function(path){
 | 
							function(path){
 | 
				
			||||||
			console.log('11111111')
 | 
								var parent = this.preventClosing ? this.preventClosing() : null
 | 
				
			||||||
			event 
 | 
					 | 
				
			||||||
				&& event.preventClosing 
 | 
					 | 
				
			||||||
				&& event.preventClosing()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
			// we got an argument and can exit...
 | 
								// we got an argument and can exit...
 | 
				
			||||||
			if(path){
 | 
								if(path){
 | 
				
			||||||
@ -2325,11 +2335,20 @@ var ActionTreeActions = actions.Actions({
 | 
				
			|||||||
				})
 | 
									})
 | 
				
			||||||
					.open(function(evt, path){ 
 | 
										.open(function(evt, path){ 
 | 
				
			||||||
						o.close() 
 | 
											o.close() 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											// close the parent ui...
 | 
				
			||||||
 | 
											parent 
 | 
				
			||||||
 | 
												&& parent.close 
 | 
				
			||||||
 | 
												&& parent.close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
						that.floatingListerTest(path)
 | 
											that.floatingListerTest(path)
 | 
				
			||||||
					}))
 | 
										}))
 | 
				
			||||||
 | 
										.close(function(){
 | 
				
			||||||
 | 
											parent 
 | 
				
			||||||
 | 
												&& parent.focus 
 | 
				
			||||||
 | 
												&& parent.focus()
 | 
				
			||||||
 | 
										})
 | 
				
			||||||
		}],
 | 
							}],
 | 
				
			||||||
 | 
					 | 
				
			||||||
	// XXX this is just a test...
 | 
					 | 
				
			||||||
	drawerTest:['Interface/Drawer widget test',
 | 
						drawerTest:['Interface/Drawer widget test',
 | 
				
			||||||
		function(){
 | 
							function(){
 | 
				
			||||||
			drawer.Drawer($('body'), 
 | 
								drawer.Drawer($('body'), 
 | 
				
			||||||
@ -2342,7 +2361,10 @@ var ActionTreeActions = actions.Actions({
 | 
				
			|||||||
					.append($('<h1>')
 | 
										.append($('<h1>')
 | 
				
			||||||
						.text('Drawer test...'))
 | 
											.text('Drawer test...'))
 | 
				
			||||||
					.append($('<p>')
 | 
										.append($('<p>')
 | 
				
			||||||
						.text('With some text.')))
 | 
											.text('With some text.')),
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										focusable: true,
 | 
				
			||||||
 | 
									})
 | 
				
			||||||
		}],
 | 
							}],
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user