You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
2.9 KiB
JavaScript
115 lines
2.9 KiB
JavaScript
import { globalKeyDownManager } from "./keydown_manager.js";
|
|
import { PopupDialog } from "./popup_dialog.js";
|
|
|
|
|
|
|
|
class InfoBox extends PopupDialog{
|
|
|
|
mouseDown = false;
|
|
mouseDwwnPos = {};
|
|
|
|
|
|
constructor(ui)
|
|
{
|
|
super(ui);
|
|
|
|
this.contentUi = this.ui.querySelector("#info-content");
|
|
|
|
this.buttons = {
|
|
"yes": this.ui.querySelector("#btn-yes"),
|
|
"no": this.ui.querySelector("#btn-no"),
|
|
"maximize": this.ui.querySelector("#btn-maximize"),
|
|
"restore": this.ui.querySelector("#btn-restore"),
|
|
"exit": this.ui.querySelector("#btn-exit"),
|
|
};
|
|
|
|
for (let btn in this.buttons)
|
|
{
|
|
this.buttons[btn].onclick = ()=>{
|
|
this.hide(btn);
|
|
}
|
|
}
|
|
|
|
this.ui.addEventListener("keydown", (ev)=>{
|
|
//anykey
|
|
if ( ev.shiftKey || ev.ctrlKey || ev.altKey)
|
|
{
|
|
//
|
|
}
|
|
else
|
|
{
|
|
this.hide();
|
|
ev.preventDefault();
|
|
ev.stopPropagation();
|
|
}
|
|
|
|
});
|
|
}
|
|
|
|
|
|
|
|
showButtons(btns){
|
|
for (let btn in this.buttons)
|
|
{
|
|
this.buttons[btn].style.display = 'none';
|
|
}
|
|
|
|
for (let btn in btns)
|
|
{
|
|
this.buttons[btns[btn]].style.display = '';
|
|
}
|
|
}
|
|
|
|
makeVisible(pointerPosition)
|
|
{
|
|
if (!pointerPosition)
|
|
{
|
|
|
|
//default pos
|
|
let parentRect = this.ui.getBoundingClientRect();
|
|
let viewRect = this.viewUi.getBoundingClientRect();
|
|
|
|
this.viewUi.style.top = (parentRect.top+parentRect.height/3) + "px";
|
|
this.viewUi.style.left = (parentRect.left+parentRect.width/2-viewRect.width/2) + "px";
|
|
}
|
|
else
|
|
{
|
|
let parentRect = this.ui.getBoundingClientRect();
|
|
let viewRect = this.viewUi.getBoundingClientRect();
|
|
|
|
let left = pointerPosition.x - viewRect.width/2;
|
|
if (left < parentRect.left) left = parentRect.left;
|
|
if (left + viewRect.width > parentRect.right)
|
|
left -= left + viewRect.width - parentRect.right;
|
|
|
|
let top = pointerPosition.y - viewRect.height/2;
|
|
if (top < parentRect.top)
|
|
top = parentRect.top;
|
|
|
|
if (top + viewRect.height > parentRect.bottom)
|
|
top -= top + viewRect.height - parentRect.bottom;
|
|
|
|
this.viewUi.style.top = top + "px";
|
|
this.viewUi.style.left = left + "px";
|
|
}
|
|
}
|
|
|
|
|
|
show(title, content, btnList, onexit, pointerPosition)
|
|
{
|
|
this.showButtons(btnList);
|
|
|
|
this.titleUi.innerText = title;
|
|
this.contentUi.innerHTML = content;
|
|
|
|
super.show(onexit);
|
|
|
|
this.makeVisible(pointerPosition);
|
|
|
|
this.ui.focus();
|
|
}
|
|
|
|
}
|
|
|
|
|
|
export {InfoBox}; |