mirror of
https://thingvellir.net/git/overte
synced 2025-03-27 23:52:03 +01:00
146 lines
4.4 KiB
JavaScript
146 lines
4.4 KiB
JavaScript
//
|
|
// progressDialog.js
|
|
// examples/libraries
|
|
//
|
|
// Copyright 2014 High Fidelity, Inc.
|
|
//
|
|
// Distributed under the Apache License, Version 2.0.
|
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
//
|
|
|
|
var toolIconUrl = Script.getExternalPath(Script.ExternalPaths.HF_Public, "images/tools/");
|
|
|
|
progressDialog = (function () {
|
|
var that = {},
|
|
progressBackground,
|
|
progressMessage,
|
|
cancelButton,
|
|
displayed = false,
|
|
backgroundWidth = 300,
|
|
backgroundHeight = 100,
|
|
messageHeight = 32,
|
|
cancelWidth = 70,
|
|
cancelHeight = 32,
|
|
textColor = { red: 255, green: 255, blue: 255 },
|
|
textBackground = { red: 52, green: 52, blue: 52 },
|
|
backgroundUrl = toolIconUrl + "progress-background.svg",
|
|
windowDimensions;
|
|
|
|
progressBackground = Overlays.addOverlay("image", {
|
|
width: backgroundWidth,
|
|
height: backgroundHeight,
|
|
imageURL: backgroundUrl,
|
|
alpha: 0.9,
|
|
visible: false
|
|
});
|
|
|
|
progressMessage = Overlays.addOverlay("text", {
|
|
width: backgroundWidth - 40,
|
|
height: messageHeight,
|
|
text: "",
|
|
textColor: textColor,
|
|
backgroundColor: textBackground,
|
|
alpha: 0.9,
|
|
backgroundAlpha: 0.9,
|
|
visible: false
|
|
});
|
|
|
|
cancelButton = Overlays.addOverlay("text", {
|
|
width: cancelWidth,
|
|
height: cancelHeight,
|
|
text: "Cancel",
|
|
textColor: textColor,
|
|
backgroundColor: textBackground,
|
|
alpha: 0.9,
|
|
backgroundAlpha: 0.9,
|
|
visible: false
|
|
});
|
|
|
|
function move() {
|
|
var progressX,
|
|
progressY;
|
|
|
|
if (displayed) {
|
|
|
|
if (windowDimensions.x === Window.innerWidth && windowDimensions.y === Window.innerHeight) {
|
|
return;
|
|
}
|
|
windowDimensions.x = Window.innerWidth;
|
|
windowDimensions.y = Window.innerHeight;
|
|
|
|
progressX = (windowDimensions.x - backgroundWidth) / 2; // Center.
|
|
progressY = windowDimensions.y / 2 - backgroundHeight; // A little up from center.
|
|
|
|
Overlays.editOverlay(progressBackground, { x: progressX, y: progressY });
|
|
Overlays.editOverlay(progressMessage, { x: progressX + 20, y: progressY + 15 });
|
|
Overlays.editOverlay(cancelButton, {
|
|
x: progressX + backgroundWidth - cancelWidth - 20,
|
|
y: progressY + backgroundHeight - cancelHeight - 15
|
|
});
|
|
}
|
|
}
|
|
that.move = move;
|
|
|
|
that.onCancel = undefined;
|
|
|
|
function open(message) {
|
|
if (!displayed) {
|
|
windowDimensions = { x: 0, y : 0 };
|
|
displayed = true;
|
|
move();
|
|
Overlays.editOverlay(progressBackground, { visible: true });
|
|
Overlays.editOverlay(progressMessage, { visible: true, text: message });
|
|
Overlays.editOverlay(cancelButton, { visible: true });
|
|
} else {
|
|
throw new Error("open() called on progressDialog when already open");
|
|
}
|
|
}
|
|
that.open = open;
|
|
|
|
function isOpen() {
|
|
return displayed;
|
|
}
|
|
that.isOpen = isOpen;
|
|
|
|
function update(message) {
|
|
if (displayed) {
|
|
Overlays.editOverlay(progressMessage, { text: message });
|
|
} else {
|
|
throw new Error("update() called on progressDialog when not open");
|
|
}
|
|
}
|
|
that.update = update;
|
|
|
|
function close() {
|
|
if (displayed) {
|
|
Overlays.editOverlay(cancelButton, { visible: false });
|
|
Overlays.editOverlay(progressMessage, { visible: false });
|
|
Overlays.editOverlay(progressBackground, { visible: false });
|
|
displayed = false;
|
|
} else {
|
|
throw new Error("close() called on progressDialog when not open");
|
|
}
|
|
}
|
|
that.close = close;
|
|
|
|
function mousePressEvent(event) {
|
|
if (Overlays.getOverlayAtPoint({ x: event.x, y: event.y }) === cancelButton) {
|
|
if (typeof this.onCancel === "function") {
|
|
close();
|
|
this.onCancel();
|
|
}
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
that.mousePressEvent = mousePressEvent;
|
|
|
|
function cleanup() {
|
|
Overlays.deleteOverlay(cancelButton);
|
|
Overlays.deleteOverlay(progressMessage);
|
|
Overlays.deleteOverlay(progressBackground);
|
|
}
|
|
that.cleanup = cleanup;
|
|
|
|
return that;
|
|
}());
|