71 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| var Comp = Require('com/compat');
 | |
| 
 | |
| var Node = Require('term/widgets/node');
 | |
| var Box = Require('term/widgets/box');
 | |
| var Helpers = Require('term/helpers');
 | |
| var Button = Require('term/widgets/button');
 | |
| 
 | |
| 
 | |
| // Add up and down arrow buttons on the right outside of a widget
 | |
| // options.arrows: {up:'[-]',down:'[+]',width:3,height:1,fg:'red',bg:'default'}}
 | |
| module.exports = function (parent,options,up,down,nocontrol) {  
 | |
|   var bbox;
 | |
|   // Bbox computing for button positions; relatives can only be resolved to screen
 | |
|   // coordinates?
 | |
|   bbox=Helpers.bbox(parent.screen,options);
 | |
|   parent._.up = new Button({
 | |
|     screen: parent.screen,
 | |
|     top: bbox.top+1,
 | |
|     height: options.arrows.height||1,
 | |
|     left: bbox.left+bbox.width,
 | |
|     width: options.arrows.width||3,
 | |
|     content: options.arrows.up||'[-]',
 | |
|     align: 'center',
 | |
|     style: {
 | |
|       fg:options.arrows.fg||'red',
 | |
|       bg: options.arrows.bg||'white',
 | |
|       bold:true,
 | |
|     },
 | |
|     autoFocus: false,
 | |
|     hidden:options.hidden,
 | |
|     mouse: true
 | |
|   });
 | |
|   parent._.up.on('press',up);
 | |
|   parent.screen.append(parent._.up);
 | |
|   parent._.down = new Button({
 | |
|     screen: this.screen,
 | |
|     top: bbox.top+bbox.height-1-(options.arrows.height||1),
 | |
|     height: options.arrows.height||1,
 | |
|     left: bbox.left+bbox.width,
 | |
|     width: options.arrows.width||3,
 | |
|     content: options.arrows.down||'[+]',
 | |
|     align: 'center',
 | |
|     style: {
 | |
|       fg:options.arrows.fg||'red',
 | |
|       bg: options.arrows.bg||'white',
 | |
|       bold:true,
 | |
|     },
 | |
|     autoFocus: false,
 | |
|     hidden:options.hidden,
 | |
|     mouse: true
 | |
|   });
 | |
|   parent._.down.on('press',down);
 | |
|   parent.screen.append(parent._.down);
 | |
|   if (!nocontrol) {
 | |
|     parent._hide=parent.hide;
 | |
|     parent.hide = function() {
 | |
|       parent._hide();
 | |
|       if (parent._.up) parent._.up.hide();
 | |
|       if (parent._.down) parent._.down.hide();
 | |
|       parent.screen.render();
 | |
|     } 
 | |
|     parent._show = parent.show;
 | |
|     parent.show = function() {
 | |
|       parent._show();
 | |
|       if (parent._.up) parent._.up.show();
 | |
|       if (parent._.down) parent._.down.show();
 | |
|       parent.screen.render();
 | |
|     } 
 | |
|   }
 | |
| }
 |