1
|
define([
|
2
|
'dojo/_base/lang',
|
3
|
'dojo/_base/declare',
|
4
|
'dojo/data/ObjectStore',
|
5
|
'dojo/store/Memory',
|
6
|
'dojo/dom-construct',
|
7
|
'java/applet'
|
8
|
], function(lang, declare, ObjectStore, Memory, domConstruct, applet){
|
9
|
|
10
|
var Viewer = declare('rdp.Viewer', null, {
|
11
|
|
12
|
started: false,
|
13
|
title: null,
|
14
|
host: null,
|
15
|
port: null,
|
16
|
node: null,
|
17
|
archive: require.toUrl("rdp/resources/rdp.jar"),
|
18
|
|
19
|
constructor: function(args){
|
20
|
lang.mixin(this, args);
|
21
|
|
22
|
this.id = 'rdp-viewer-' + Viewer.id;
|
23
|
Viewer.id = Viewer.id + 1;
|
24
|
if(typeof Viewer.viewers[this.id] !== 'undefined'){
|
25
|
domConstruct.destroy(this.id);
|
26
|
}
|
27
|
Viewer.viewers[this.id] = this;
|
28
|
},
|
29
|
|
30
|
start: function(){
|
31
|
if(this.started){
|
32
|
return;
|
33
|
}
|
34
|
|
35
|
applet.inject(this.node, {
|
36
|
archive: this.archive,
|
37
|
cache_archive: this.archive,
|
38
|
cache_version: "3",
|
39
|
code: "net.propero.rdp.applet.RdpApplet",
|
40
|
callback: 'rdp.Viewer.javatrigger',
|
41
|
port: this.port,
|
42
|
host: this.host,
|
43
|
title: this.title,
|
44
|
id: this.id,
|
45
|
keymap: Viewer.keymap,
|
46
|
// if this doesn't work everywhere
|
47
|
// this.archive.uri + '?v=' + new Date().getTime(),
|
48
|
classloader_cache: 'false',
|
49
|
log_level: "info"
|
50
|
});
|
51
|
},
|
52
|
|
53
|
stop: function(){
|
54
|
this.onDestroy();
|
55
|
},
|
56
|
|
57
|
onDestroy: function(){
|
58
|
console.log('destroying');
|
59
|
|
60
|
domConstruct.destroy(this.id);
|
61
|
},
|
62
|
|
63
|
onStart: function(){
|
64
|
console.log('onStart event');
|
65
|
|
66
|
}
|
67
|
});
|
68
|
|
69
|
Viewer.viewers = {};
|
70
|
Viewer.id = 0;
|
71
|
Viewer.keymap = 'en-us';
|
72
|
|
73
|
Viewer.INIT = 'display:init';
|
74
|
Viewer.DESTROY = 'display:destroy';
|
75
|
|
76
|
Viewer.javatrigger = function(eventname, id, msg){
|
77
|
console.log('rdp::Viewer::javatrigger', arguments);
|
78
|
var self = this;
|
79
|
var display = self.viewers[id];
|
80
|
|
81
|
function f(){
|
82
|
switch('display:' + eventname){
|
83
|
case self.INIT:
|
84
|
display.onStart();
|
85
|
break;
|
86
|
case self.DESTROY:
|
87
|
display && display.onDestroy();
|
88
|
break;
|
89
|
default:
|
90
|
console.log('WTF? event:' + eventname + " shouldn't happen");
|
91
|
}
|
92
|
}
|
93
|
setTimeout(f, 0);
|
94
|
};
|
95
|
|
96
|
var store = new Memory({
|
97
|
data: [
|
98
|
{id: "en-us", label: "us" },
|
99
|
{id:"ar", label:"ar"},
|
100
|
{id:"da",label:"da"},
|
101
|
{id:"de",label:"de"},
|
102
|
{id:"en-gb",label:"en-gb"},
|
103
|
{id:"es", label:"es"},
|
104
|
{id:"fi",label:"fi"},
|
105
|
{id:"fr",label:"fr"},
|
106
|
{id:"fr-be","label":"fr-be"},
|
107
|
{id:"hr",label:"hr"},
|
108
|
{id:"it",label:"it"},
|
109
|
{id:"ja",label:"ja"},
|
110
|
{id:"lt",label:"lt"},
|
111
|
{id:"lv",label:"lv"},
|
112
|
{id:"mk",label:"mk"},
|
113
|
{id:"no",label:"no"},
|
114
|
{id:"pl", label:"pl"},
|
115
|
{id:"pt", label:"pt"},
|
116
|
{id:"pt-br", label:"pt-br"},
|
117
|
{id:"ru",label:"ru"},
|
118
|
{id:"sl",label:"sl"},
|
119
|
{id:"sv",label:"sv"},
|
120
|
{id:"tk",label:"tk"},
|
121
|
{id:"tr",label:"tr"}
|
122
|
]});
|
123
|
|
124
|
Viewer.keyboardLayouts = new ObjectStore({ objectStore: store });
|
125
|
return Viewer;
|
126
|
});
|
127
|
|
128
|
|