Merge branch 'Jalview-JS/JAL-3253-applet' of https://source.jalview.org/git/jalview...
[jalview.git] / site-resources / swingjs / JalviewApplet.js
1 // Jalview Priliminary applet-generation code.
2 // author: Bob Hanson hansonr@stolaf.edu
3
4 Jalview = { 
5         jvid : 0 
6 }
7
8 $(document).ready(function() {
9         if (document.location.href.toLowerCase().indexOf("_use=java") < 0)
10                 Jalview.processAllAppletElements(self.JalviewInfo);
11 });
12
13  
14 Jalview.processAllAppletElements = function(PageInfo) {
15         var apps = document.getElementsByTagName("applet");
16         for (var i = apps.length; --i >= 0;) {
17                 Jalview.processAppletElement(apps[i], PageInfo);
18         }
19 }
20  
21 Jalview.processAppletElement = function(element, UserInfo) {
22         
23 var code = element.getAttribute("code");
24 var parent = element.parentElement;
25 if (code != "jalview.bin.JalviewLite") {
26         return;
27 }
28
29         var Info = {
30         code: null,
31         main: "jalview.bin.Jalview",
32         core: "NONE",
33         resourcePath: "examples",
34         readyFunction: null,
35         serverURL: 'https://chemapps.stolaf.edu/jmol/jsmol/php/jsmol.php',
36         j2sPath: 'swingjs/j2s',
37         console:'sysout',
38         startButton:'Start Jalview',
39         hideDesktop:true,
40         embedInternalFrames:false,
41         idPrefix:'%ID%',
42         allowjavascript: true
43         }
44
45 var text = element.outerHTML;
46 var args = Info.args = text.replace(/[\n\t]/g, " ").split("<param ");
47
48 // overwrite default parameters with UserInfo (global JalviewInfo):
49  
50         if (UserInfo) {
51 for (var i in UserInfo) {
52         Info[i] = UserInfo[i];
53 }
54         }
55
56 // generate name/value pairs for parameters in Applet tag
57
58         if (!Info.j2sAppletID) {
59         Info.j2sAppletID = Info.idPrefix.replace(/%ID%/g, "jalview" + Jalview.jvid++);
60 }
61
62
63 Info.jalview_SCREEN_X= 10,Info.jalview_SCREEN_Y= 10;
64 Info.jalview_EMBEDDED= true;
65 Info.jalview_SCREEN_WIDTH = 400;
66 Info.jalview_SCREEN_HEIGHT = 100;
67
68         
69 var addParam = function(key,value) {
70         args.push("name=\"" + key + "\" value=\"" + value + "\""); 
71 }
72
73
74 for (var i in Info) {
75         var v = ("" + Info[i] || "null").replace(/\"/g,"'");
76         addParam("Info." + i, v);
77 }
78         
79         
80
81         element.JalviewInfo = Info;
82         var btn = document.createElement("button");
83 btn.appletElement = element;
84         var a = element.getAttribute("width");
85         btn.style.width = (a || 140) + "px";
86         a = element.getAttribute("height");
87         btn.style.height = (a || 25) + "px";
88         btn.jvparent = parent;
89         if (Info.startButton) {
90                 btn.innerHTML = Info.startButton;
91 parent.replaceChild(btn, element); 
92 $(btn).click(Jalview.doStartJalview);
93 } else {
94         parent.removeElement(element);
95         Jalview.doStartJalview({target:btn});
96 }
97 }
98  
99
100
101 Jalview.doStartJalview = function(e) {
102         var element = e.target.appletElement;
103 var parent = e.target.jvparent;
104         var Info = element.JalviewInfo;
105         var id = Info.j2sAppletID;
106         var d = document.createElement("div");
107         d.id = id + "-desktop-div";
108         if (Info.hideDesktop) {
109                 d.style.display = "none";
110                 d.style.width = d.style.height = "0px";
111         } else {
112                 d.style.width = "300px", d.style.height = "70px";
113         }
114         parent.appendChild(d);
115         d = document.createElement("div");
116         d.id = id + "-alignment-div";
117         if (Info.embedInternalFrames) {
118 // TODO
119         } else {
120                 d.style.display = "none";
121                 d.style.width = d.style.height = "0px";
122         }
123         SwingJS.getApplet(id, Info);
124         document.title = id;
125         e.target.style.visibility="hidden";
126 }
127