~holger-seelig/cobweb.js/trunk

« back to all changes in this revision

Viewing changes to cobweb.js/cobweb/Browser/Networking/X3DNetworkingContext.js

  • Committer: Holger Seelig
  • Date: 2017-08-22 04:53:24 UTC
  • Revision ID: holger.seelig@yahoo.de-20170822045324-4of4xxgt79669gbt
Switched to npm.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* -*- Mode: JavaScript; coding: utf-8; tab-width: 3; indent-tabs-mode: tab; c-basic-offset: 3 -*-
2
 
 *******************************************************************************
3
 
 *
4
 
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5
 
 *
6
 
 * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011.
7
 
 *
8
 
 * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
9
 
 *
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
13
 
 * create3000.
14
 
 *
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.
18
 
 *
19
 
 * NON-MILITARY USE ONLY
20
 
 *
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.
25
 
 *
26
 
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
27
 
 *
28
 
 * Copyright 2015, 2016 Holger Seelig <holger.seelig@yahoo.de>.
29
 
 *
30
 
 * This file is part of the Cobweb Project.
31
 
 *
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.
35
 
 *
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).
40
 
 *
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.
44
 
 *
45
 
 * For Silvio, Joy and Adi.
46
 
 *
47
 
 ******************************************************************************/
48
 
 
49
 
 
50
 
define ([
51
 
        "cobweb/Fields",
52
 
        "cobweb/Components/Networking/LoadSensor",
53
 
        "cobweb/Browser/Networking/urls",
54
 
        "standard/Networking/URI",
55
 
        "lib/sprintf.js/src/sprintf",
56
 
        "lib/gettext",
57
 
],
58
 
function (Fields,
59
 
          LoadSensor,
60
 
          urls,
61
 
          URI,
62
 
          sprintf,
63
 
          _)
64
 
{
65
 
"use strict";
66
 
        
67
 
        function getBaseURI (element)
68
 
        {
69
 
                var baseURI = element .baseURI;
70
 
 
71
 
                // Fix for Edge.
72
 
                if (baseURI .startsWith ("about:"))
73
 
                        baseURI = document .baseURI;
74
 
 
75
 
                return new URI (baseURI);
76
 
        }
77
 
 
78
 
        function X3DNetworkingContext ()
79
 
        {
80
 
                this .addChildObjects ("loadCount", new Fields .SFInt32 ());
81
 
 
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.
88
 
        }
89
 
 
90
 
        X3DNetworkingContext .prototype =
91
 
        {
92
 
                initialize: function ()
93
 
                {
94
 
                        this .loadSensor .setup ();
95
 
 
96
 
                        // Inline node's empty scene.
97
 
 
98
 
                        this .defaultScene .setPrivate (true);
99
 
                        this .defaultScene .setLive (true);
100
 
                        this .defaultScene .setup ();
101
 
                },
102
 
                getProviderUrl: function ()
103
 
                {
104
 
                        return urls .providerUrl;
105
 
                },
106
 
                getLocation: function ()
107
 
                {
108
 
                        return this .location;
109
 
                },
110
 
                getDefaultScene: function ()
111
 
                {
112
 
                        return this .defaultScene;
113
 
                },
114
 
                getLoadSensor: function ()
115
 
                {
116
 
                        return this .loadSensor;
117
 
                },
118
 
                setBrowserLoading: function (value)
119
 
                {
120
 
                        this .loading = value;
121
 
 
122
 
                        if (value)
123
 
                        {
124
 
                                this .resetLoadCount ();
125
 
 
126
 
                                if (this .getBrowserOptions () .getSplashScreen ())
127
 
                                {
128
 
                                        this .getCanvas ()       .stop (true, true) .animate ({ "delay": 1 }, 1) .fadeOut (0);
129
 
                                        this .getSplashScreen () .stop (true, true) .animate ({ "delay": 1 }, 1) .fadeIn (0);
130
 
                                }
131
 
                        }
132
 
                        else
133
 
                        {
134
 
                                if (this .getBrowserOptions () .getSplashScreen ())
135
 
                                {
136
 
                                        this .getSplashScreen () .stop (true, true) .fadeOut (2000);
137
 
                                        this .getCanvas ()       .stop (true, true) .fadeIn (2000);
138
 
                                }
139
 
                                else
140
 
                                        this .getCanvas () .fadeIn (0);
141
 
                        }
142
 
                },
143
 
                getLoading: function ()
144
 
                {
145
 
                        return this .loading;
146
 
                },
147
 
                addLoadCount: function (object)
148
 
                {
149
 
                   var id = object .getId ();
150
 
 
151
 
                        if (this .loadingObjects .hasOwnProperty (id))
152
 
                                return;
153
 
 
154
 
                        ++ this .loadingTotal;
155
 
                        this .loadingObjects [id] = object;
156
 
                        
157
 
                        this .setLoadCount (this .loadCount_ = this .loadCount_ .getValue () + 1);
158
 
                        this .setCursor ("DEFAULT");
159
 
                },
160
 
                removeLoadCount: function (object)
161
 
                {
162
 
         var id = object .getId ();
163
 
 
164
 
                        if (! this .loadingObjects .hasOwnProperty (id))
165
 
                                return;
166
 
 
167
 
                        delete this .loadingObjects [id];
168
 
 
169
 
                        this .setLoadCount (this .loadCount_ = this .loadCount_ .getValue () - 1);
170
 
                },
171
 
                setLoadCount: function (value)
172
 
                {
173
 
                        if (value)
174
 
                                var string = sprintf .sprintf (value == 1 ? _ ("Loading %d file") : _ ("Loading %d files"), value);
175
 
                        
176
 
                        else
177
 
                        {
178
 
                                var string = _("Loading done");
179
 
                                this .setCursor ("DEFAULT");
180
 
                        }
181
 
 
182
 
                        if (! this .loading)
183
 
                                this .getNotification () .string_ = string;
184
 
 
185
 
                        this .getSplashScreen () .find (".cobweb-spinner-text") .text (string);
186
 
                        this .getSplashScreen () .find (".cobweb-progressbar div") .css ("width", ((this .loadingTotal - value) * 100 / this .loadingTotal) + "%");
187
 
                },
188
 
                resetLoadCount: function ()
189
 
                {
190
 
                        this .loadCount_     = 0;
191
 
                        this .loadingTotal   = 0;
192
 
                        this .loadingObjects = { };                        
193
 
                },
194
 
        };
195
 
 
196
 
        return X3DNetworkingContext;
197
 
});