abtmtr-v4/views/projects/item/wm/scripts/endplorer.js
2023-12-07 10:34:09 -06:00

110 lines
2.7 KiB
JavaScript

class TaskbarObject {
parentManager;
taskbarObject;
taskbarStart;
children;
constructor(manager) {
this.parentManager = manager;
this.taskbarObject = TaskbarObject.createTaskbar(this);
this.parentManager.addExtension(this, "taskbarObject");
this.parentManager.overscan_bottom = "2.5625em";
this.taskbarStart = this.taskbarObject.querySelector(".taskbar-start");
this.children = [];
this.parentManager.managerObject.addEventListener("windowcreate", (e) =>
this.addToTabs(e)
);
this.parentManager.managerObject.addEventListener("windowdestroy", (e) =>
this.removeFromTabs(e)
);
this.parentManager.managerObject.addEventListener("windowfocus", (e) =>
this.refocusTabs(e)
);
this.parentManager.managerObject.addEventListener(
"windowmanager_title",
(e) => this.updateTab(e)
);
}
addToTabs(e) {
const button = document.createElement("button");
button.classList.add("taskbar-button");
button.addEventListener("click", (e2) => this.event_raiseWindow(e, e2));
console.log(button);
this.children.splice(e.detail.windowId, 0, button);
this.taskbarStart.appendChild(button);
}
removeFromTabs(e) {
const button = this.children[e.detail.windowId];
console.log(this.children, e.detail.windowId);
this.children.splice(e.detail.windowId, 1);
this.taskbarStart.removeChild(button);
}
updateTab(e, mode) {
const button = this.children[e.detail.windowId];
button.textContent = e.detail.title;
}
refocusTabs(e) {
this.parentManager.children.forEach((child) => {
if (child.focusOrder <= 0) {
this.children[child.windowId].classList.add("taskbar-button-focusing");
} else
this.children[child.windowId].classList.remove(
"taskbar-button-focusing"
);
});
}
destroy() {
this.parentManager.overscan_bottom = "0px";
}
event_raiseWindow(e, e2) {
if (e.detail.focusOrder <= 0) {
e.detail.minimizeWindow();
} else {
this.parentManager.raiseWindow(e.detail);
}
refocusTabs();
}
static createTaskbar(taskbarRef) {
const taskbarObject = document.createElement("div");
taskbarObject.classList.add("taskbar-object");
taskbarObject.tabIndex = "0";
taskbarObject.style.zIndex = taskbarRef.parentManager.maxZIndex + 1;
{
const taskbarStart = document.createElement("div");
taskbarStart.classList.add("taskbar-start");
taskbarObject.appendChild(taskbarStart);
}
{
const taskbarEnd = document.createElement("div");
taskbarEnd.classList.add("taskbar-end");
taskbarObject.appendChild(taskbarEnd);
}
return taskbarObject;
}
}