| 
									
										
										
										
											2013-11-30 22:24:56 +04:00
										 |  |  | /********************************************************************** | 
					
						
							|  |  |  | *  | 
					
						
							|  |  |  | * | 
					
						
							|  |  |  | * | 
					
						
							|  |  |  | **********************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //var DEBUG = DEBUG != null ? DEBUG : true
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-13 08:57:44 +04:00
										 |  |  | var PANEL_ROOT = '.viewer' | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-30 22:24:56 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | /*********************************************************************/ | 
					
						
							| 
									
										
										
										
											2013-12-12 04:34:26 +04:00
										 |  |  | // XXX these are a bit too general... 
 | 
					
						
							|  |  |  | // 		...the editor needs to speak in terms of the editor only...
 | 
					
						
							|  |  |  | // 		right now the editor mode depends on presence of panels and not
 | 
					
						
							|  |  |  | // 		the editor itself...
 | 
					
						
							| 
									
										
										
										
											2013-11-30 22:24:56 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-12-11 03:21:44 +04:00
										 |  |  | function _setupPanel(panel){ | 
					
						
							|  |  |  | 	return panel | 
					
						
							|  |  |  | 		.on('panelClosing', function(){ | 
					
						
							| 
									
										
										
										
											2013-12-23 05:16:14 +04:00
										 |  |  | 			if($('.sub-panel').length <= 1){ | 
					
						
							| 
									
										
										
										
											2013-12-12 04:34:26 +04:00
										 |  |  | 				// XXX when not only the editor is using the panels, this
 | 
					
						
							|  |  |  | 				// 		is not the correct way to go...
 | 
					
						
							| 
									
										
										
										
											2013-12-11 03:21:44 +04:00
										 |  |  | 				toggleEditor('off') | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		}) | 
					
						
							|  |  |  | 		.on('newPanel', function(evt, panel){ | 
					
						
							|  |  |  | 			_setupPanel(panel) | 
					
						
							|  |  |  | 		}) | 
					
						
							|  |  |  | 		// make clicks on unfocusable elements remove focus...
 | 
					
						
							|  |  |  | 		.click(function(){ | 
					
						
							|  |  |  | 			if(event.target != $('.panel :focus')[0]){ | 
					
						
							|  |  |  | 				$('.panel :focus').blur() | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		}) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-12-01 05:58:12 +04:00
										 |  |  | var toggleEditor = createCSSClassToggler( | 
					
						
							|  |  |  | 		'.viewer',  | 
					
						
							|  |  |  | 		'.editor-visible', | 
					
						
							| 
									
										
										
										
											2013-12-01 05:44:00 +04:00
										 |  |  | 		function(action){ | 
					
						
							| 
									
										
										
										
											2013-12-12 04:34:26 +04:00
										 |  |  | 			// XXX when not only the editor is using the panels, this
 | 
					
						
							|  |  |  | 			// 		is not the correct way to go...
 | 
					
						
							| 
									
										
										
										
											2013-12-23 05:16:14 +04:00
										 |  |  | 			var ed = $('.panel, .side-panel') | 
					
						
							| 
									
										
										
										
											2013-12-01 05:44:00 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 			if(action == 'on'){ | 
					
						
							|  |  |  | 				// create the editor if this is first init...
 | 
					
						
							|  |  |  | 				if(ed.length == 0){ | 
					
						
							|  |  |  | 					$('.viewer') | 
					
						
							| 
									
										
										
										
											2013-12-23 05:16:14 +04:00
										 |  |  | 						.append(makeSidePanel('left')) | 
					
						
							|  |  |  | 						.append(makeSidePanel('right')) | 
					
						
							| 
									
										
										
										
											2014-01-09 06:24:42 +04:00
										 |  |  | 						.append(_setupPanel(openGroupedPanels([ | 
					
						
							|  |  |  | 									'Edit: Filters', | 
					
						
							|  |  |  | 									'Edit: Snapshots' | 
					
						
							|  |  |  | 								])) | 
					
						
							| 
									
										
										
										
											2013-12-02 04:22:57 +04:00
										 |  |  | 							//.draggable('option', 'snap', '.viewer')
 | 
					
						
							| 
									
										
										
										
											2013-12-01 07:59:07 +04:00
										 |  |  | 							.css({ | 
					
						
							|  |  |  | 								// prevent the editor from moving under 
 | 
					
						
							|  |  |  | 								// the title bar, that will prevent us from
 | 
					
						
							|  |  |  | 								// ever moving it away or closing it...
 | 
					
						
							|  |  |  | 								'margin-top': '20px', | 
					
						
							| 
									
										
										
										
											2013-12-02 04:22:57 +04:00
										 |  |  | 								top: '50px', | 
					
						
							|  |  |  | 								left: '5px', | 
					
						
							| 
									
										
										
										
											2013-12-11 03:21:44 +04:00
										 |  |  | 							})) | 
					
						
							| 
									
										
										
										
											2014-01-09 06:24:42 +04:00
										 |  |  | 						// XXX add handlers for saving data to images...
 | 
					
						
							|  |  |  | 						// XXX
 | 
					
						
							| 
									
										
										
										
											2013-12-01 05:44:00 +04:00
										 |  |  | 				// show the editor...
 | 
					
						
							|  |  |  | 				} else { | 
					
						
							|  |  |  | 					ed.show() | 
					
						
							| 
									
										
										
										
											2013-11-30 22:24:56 +04:00
										 |  |  | 				} | 
					
						
							| 
									
										
										
										
											2013-12-05 03:58:13 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-12-01 05:44:00 +04:00
										 |  |  | 				// update the state...
 | 
					
						
							|  |  |  | 				reloadControls('.current.image') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			// hide...
 | 
					
						
							|  |  |  | 			} else { | 
					
						
							| 
									
										
										
										
											2013-12-11 03:21:44 +04:00
										 |  |  | 				ed.remove() | 
					
						
							| 
									
										
										
										
											2013-12-01 05:44:00 +04:00
										 |  |  | 			} | 
					
						
							|  |  |  | 		}) | 
					
						
							| 
									
										
										
										
											2013-11-30 22:24:56 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-13 08:57:44 +04:00
										 |  |  | /********************************************************************** | 
					
						
							|  |  |  | * Dialogs... | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function panelListDialog(){ | 
					
						
							|  |  |  | 	updateStatus('Open panel...').show() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	cfg = {} | 
					
						
							|  |  |  | 	// XXX indicate open panels...
 | 
					
						
							|  |  |  | 	cfg['Open panel'] = Object.keys(PANELS).map(function(e){ | 
					
						
							|  |  |  | 		if(getPanel(e).length > 0){ | 
					
						
							|  |  |  | 			return e + ' (open)' | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		return e | 
					
						
							|  |  |  | 	}) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	formDialog(null, '',  | 
					
						
							|  |  |  | 			cfg, | 
					
						
							|  |  |  | 			'OK',  | 
					
						
							|  |  |  | 			'panelListDialog') | 
					
						
							|  |  |  | 		.done(function(res){ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			var panel = res['Open panel'].split(' (open)')[0] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			// toggle panel visibility on...
 | 
					
						
							|  |  |  | 			// XXX 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			openPanel(panel) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			showStatusQ('Opening panel: '+panel+'...') | 
					
						
							|  |  |  | 		}) | 
					
						
							|  |  |  | 		.fail(function(){ | 
					
						
							|  |  |  | 			showStatusQ('Opening panel: canceled.') | 
					
						
							|  |  |  | 		}) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-30 22:24:56 +04:00
										 |  |  | /********************************************************************** | 
					
						
							|  |  |  | * vim:set ts=4 sw=4 :                                                */ |