Project

General

Profile

Download (3.56 KB) Statistics
| Branch: | Revision:
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

    
    (1-1/1)