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();
|
|
}
|
|
}
|
|
}
|