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