1
/* -*- Mode: JavaScript; coding: utf-8; tab-width: 3; indent-tabs-mode: tab; c-basic-offset: 3 -*-
2
*******************************************************************************
4
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
6
* Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011.
8
* All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
10
* The copyright notice above does not evidence any actual of intended
11
* publication of such source code, and is an unpublished work by create3000.
12
* This material contains CONFIDENTIAL INFORMATION that is the property of
15
* No permission is granted to copy, distribute, or create derivative works from
16
* the contents of this software, in whole or in part, without the prior written
17
* permission of create3000.
19
* NON-MILITARY USE ONLY
21
* All create3000 software are effectively free software with a non-military use
22
* restriction. It is free. Well commented source is provided. You may reuse the
23
* source in any way you please with the exception anything that uses it must be
24
* marked to indicate is contains 'non-military use only' components.
26
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
28
* Copyright 2015, 2016 Holger Seelig <holger.seelig@yahoo.de>.
30
* This file is part of the Cobweb Project.
32
* Cobweb is free software: you can redistribute it and/or modify it under the
33
* terms of the GNU General Public License version 3 only, as published by the
34
* Free Software Foundation.
36
* Cobweb is distributed in the hope that it will be useful, but WITHOUT ANY
37
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
38
* A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
39
* details (a copy is included in the LICENSE file that accompanied this code).
41
* You should have received a copy of the GNU General Public License version 3
42
* along with Cobweb. If not, see <http://www.gnu.org/licenses/gpl.html> for a
43
* copy of the GPLv3 License.
45
* For Silvio, Joy and Adi.
47
******************************************************************************/
52
"cobweb/Components/Networking/LoadSensor",
53
"cobweb/Browser/Networking/urls",
54
"standard/Networking/URI",
55
"lib/sprintf.js/src/sprintf",
67
function getBaseURI (element)
69
var baseURI = element .baseURI;
72
if (baseURI .startsWith ("about:"))
73
baseURI = document .baseURI;
75
return new URI (baseURI);
78
function X3DNetworkingContext ()
80
this .addChildObjects ("loadCount", new Fields .SFInt32 ());
82
this .loadSensor = new LoadSensor (this .getPrivateScene ());
83
this .loadingTotal = 0;
84
this .loadingObjects = { };
85
this .loading = false;
86
this .location = getBaseURI (this .getElement () [0]);
87
this .defaultScene = this .createScene (); // Inline node's empty scene.
90
X3DNetworkingContext .prototype =
92
initialize: function ()
94
this .loadSensor .setup ();
96
// Inline node's empty scene.
98
this .defaultScene .setPrivate (true);
99
this .defaultScene .setLive (true);
100
this .defaultScene .setup ();
102
getProviderUrl: function ()
104
return urls .providerUrl;
106
getLocation: function ()
108
return this .location;
110
getDefaultScene: function ()
112
return this .defaultScene;
114
getLoadSensor: function ()
116
return this .loadSensor;
118
setBrowserLoading: function (value)
120
this .loading = value;
124
this .resetLoadCount ();
126
if (this .getBrowserOptions () .getSplashScreen ())
128
this .getCanvas () .stop (true, true) .animate ({ "delay": 1 }, 1) .fadeOut (0);
129
this .getSplashScreen () .stop (true, true) .animate ({ "delay": 1 }, 1) .fadeIn (0);
134
if (this .getBrowserOptions () .getSplashScreen ())
136
this .getSplashScreen () .stop (true, true) .fadeOut (2000);
137
this .getCanvas () .stop (true, true) .fadeIn (2000);
140
this .getCanvas () .fadeIn (0);
143
getLoading: function ()
145
return this .loading;
147
addLoadCount: function (object)
149
var id = object .getId ();
151
if (this .loadingObjects .hasOwnProperty (id))
154
++ this .loadingTotal;
155
this .loadingObjects [id] = object;
157
this .setLoadCount (this .loadCount_ = this .loadCount_ .getValue () + 1);
158
this .setCursor ("DEFAULT");
160
removeLoadCount: function (object)
162
var id = object .getId ();
164
if (! this .loadingObjects .hasOwnProperty (id))
167
delete this .loadingObjects [id];
169
this .setLoadCount (this .loadCount_ = this .loadCount_ .getValue () - 1);
171
setLoadCount: function (value)
174
var string = sprintf .sprintf (value == 1 ? _ ("Loading %d file") : _ ("Loading %d files"), value);
178
var string = _("Loading done");
179
this .setCursor ("DEFAULT");
183
this .getNotification () .string_ = string;
185
this .getSplashScreen () .find (".cobweb-spinner-text") .text (string);
186
this .getSplashScreen () .find (".cobweb-progressbar div") .css ("width", ((this .loadingTotal - value) * 100 / this .loadingTotal) + "%");
188
resetLoadCount: function ()
190
this .loadCount_ = 0;
191
this .loadingTotal = 0;
192
this .loadingObjects = { };
196
return X3DNetworkingContext;