2023-07-18 17:15:06 +00:00
|
|
|
export default class DesktopDecorat{
|
|
|
|
/** @type {Element} */
|
2023-07-18 20:47:12 +00:00
|
|
|
#windowsLayer
|
2023-07-18 17:15:06 +00:00
|
|
|
|
|
|
|
constructor(){
|
|
|
|
this.windowLayer = document.body.querySelector('#windows-layer')
|
2023-07-18 20:47:12 +00:00
|
|
|
// this.#windowsLayer = document.body.querySelector('#windows-layer')
|
|
|
|
this.#windowsLayer = document.body.querySelector('#windows-layer')
|
|
|
|
let startDrag = function(event) {
|
|
|
|
let window = event.target.closest('.WindowFrame')
|
|
|
|
DesktopDecorat.bringWindowToFront(window)
|
|
|
|
if (event.target.classList.contains("DragArea")){
|
|
|
|
let xPosInit = event.offsetX
|
|
|
|
let yPosInit = event.offsetY
|
|
|
|
let dragWindow = function(event){
|
|
|
|
window.style.left = `${event.clientX - xPosInit}px`
|
|
|
|
window.style.top = `${event.clientY - yPosInit}px`
|
|
|
|
}
|
|
|
|
let stopDrag = function(){
|
|
|
|
removeEventListener('mousemove', dragWindow)
|
|
|
|
removeEventListener('mouseup', stopDrag)
|
2023-07-18 17:15:06 +00:00
|
|
|
}
|
2023-07-18 20:47:12 +00:00
|
|
|
|
|
|
|
addEventListener('mousemove', dragWindow)
|
|
|
|
addEventListener('mouseup', stopDrag)
|
2023-07-18 17:15:06 +00:00
|
|
|
}
|
|
|
|
}
|
2023-07-18 20:47:12 +00:00
|
|
|
this.#windowsLayer.addEventListener('mousedown', startDrag)
|
2023-07-18 17:15:06 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param {HTMLElement} window
|
|
|
|
*/
|
|
|
|
static bringWindowToFront(window){ //FIXME
|
2023-07-18 20:47:12 +00:00
|
|
|
let previousWindow = this.#windowsLayer.lastChild
|
2023-07-18 17:15:06 +00:00
|
|
|
if (window == null || window == undefined){
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if (window != previousWindow){
|
2023-07-18 20:47:12 +00:00
|
|
|
this.#windowsLayer.insertBefore(window, previousWindow.nextSibling)
|
2023-07-18 17:15:06 +00:00
|
|
|
previousWindow.classList.remove("Focused")
|
|
|
|
window.classList.add("Focused")
|
|
|
|
} else {
|
|
|
|
window.classList.add("Focused")
|
|
|
|
}
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static ChangeURL(appWindow){
|
|
|
|
let appId = appWindow.getAttribute('appid')
|
|
|
|
window.history.replaceState(null, "", `/${appId}/`);
|
|
|
|
}
|
|
|
|
}
|