extensions/net.sf.basedb.genepattern/trunk/resources/configure_plugin.jsp

Code
Comments
Other
Rev Date Author Line
1119 10 Jun 09 nicklas 1 <%-- $Id: edit_server.jsp 1108 2009-06-04 07:18:10Z nicklas $
1119 10 Jun 09 nicklas 2   ------------------------------------------------------------------
1119 10 Jun 09 nicklas 3   Copyright (C) 2009 Nicklas Nordborg
1119 10 Jun 09 nicklas 4
1119 10 Jun 09 nicklas 5   This file is part of BASE - BioArray Software Environment.
1119 10 Jun 09 nicklas 6   Available at http://base.thep.lu.se/
1119 10 Jun 09 nicklas 7
1119 10 Jun 09 nicklas 8   BASE is free software; you can redistribute it and/or
1119 10 Jun 09 nicklas 9   modify it under the terms of the GNU General Public License
1119 10 Jun 09 nicklas 10   as published by the Free Software Foundation; either version 2
1119 10 Jun 09 nicklas 11   of the License, or (at your option) any later version.
1119 10 Jun 09 nicklas 12
1119 10 Jun 09 nicklas 13   BASE is distributed in the hope that it will be useful,
1119 10 Jun 09 nicklas 14   but WITHOUT ANY WARRANTY; without even the implied warranty of
1119 10 Jun 09 nicklas 15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1119 10 Jun 09 nicklas 16   GNU General Public License for more details.
1119 10 Jun 09 nicklas 17
1119 10 Jun 09 nicklas 18   You should have received a copy of the GNU General Public License
1119 10 Jun 09 nicklas 19   along with this program; if not, write to the Free Software
1119 10 Jun 09 nicklas 20   Foundation, Inc., 59 Temple Place - Suite 330,
1119 10 Jun 09 nicklas 21   Boston, MA  02111-1307, USA.
1119 10 Jun 09 nicklas 22   ------------------------------------------------------------------
1119 10 Jun 09 nicklas 23
1119 10 Jun 09 nicklas 24   @author Nicklas
1119 10 Jun 09 nicklas 25 --%>
1119 10 Jun 09 nicklas 26 <%@ page
1119 10 Jun 09 nicklas 27   pageEncoding="UTF-8"
1119 10 Jun 09 nicklas 28   session="false"
1119 10 Jun 09 nicklas 29   import="net.sf.basedb.core.DbControl"
1119 10 Jun 09 nicklas 30   import="net.sf.basedb.core.SessionControl"
1119 10 Jun 09 nicklas 31   import="net.sf.basedb.core.PluginConfigurationRequest"
1119 10 Jun 09 nicklas 32   import="net.sf.basedb.core.RequestInformation"
1119 10 Jun 09 nicklas 33   import="net.sf.basedb.core.PluginParameter"
1119 10 Jun 09 nicklas 34   import="net.sf.basedb.clients.web.Base"
1119 10 Jun 09 nicklas 35   import="net.sf.basedb.clients.web.util.HTML"
1119 10 Jun 09 nicklas 36   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
1119 10 Jun 09 nicklas 37   import="net.sf.basedb.util.Values"
1119 10 Jun 09 nicklas 38   import="java.util.List"
1119 10 Jun 09 nicklas 39 %>
1119 10 Jun 09 nicklas 40 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
1119 10 Jun 09 nicklas 41 <%
1119 10 Jun 09 nicklas 42 final SessionControl sc = Base.getExistingSessionControl(request, true);
1119 10 Jun 09 nicklas 43 final String ID = sc.getId();
1119 10 Jun 09 nicklas 44
1119 10 Jun 09 nicklas 45 final PluginConfigurationRequest pcRequest =
1119 10 Jun 09 nicklas 46   (PluginConfigurationRequest)sc.getSessionSetting("plugin.configure.request"); 
1119 10 Jun 09 nicklas 47 final RequestInformation ri = pcRequest.getRequestInformation();
1119 10 Jun 09 nicklas 48
1119 10 Jun 09 nicklas 49 final String errorMessage = (String)sc.getSessionSetting("plugin.configure.errors.message");
1119 10 Jun 09 nicklas 50 final List<Throwable> errors = (List<Throwable>)sc.getSessionSetting("plugin.configure.errors.list");
1119 10 Jun 09 nicklas 51
1119 10 Jun 09 nicklas 52 final PluginParameter gpServer = ri.getParameter("gpServer");
1119 10 Jun 09 nicklas 53 final String currentGpServer = (String)pcRequest.getCurrentParameterValue("gpServer");
1119 10 Jun 09 nicklas 54
1119 10 Jun 09 nicklas 55 final PluginParameter gpModule = ri.getParameter("gpModule");
1119 10 Jun 09 nicklas 56 final String currentGpModule = (String)pcRequest.getCurrentParameterValue("gpModule");
1119 10 Jun 09 nicklas 57
1119 10 Jun 09 nicklas 58 final String homeUrl = ExtensionsControl.getHomeUrl("net.sf.basedb.genepattern.options");
1119 10 Jun 09 nicklas 59 final String title = ri.getTitle();
1119 10 Jun 09 nicklas 60 %>
1119 10 Jun 09 nicklas 61 <base:page type="popup" title="<%=HTML.encodeTags(title)%>">
1119 10 Jun 09 nicklas 62 <base:head scripts="ajax.js,newjoust.js">
1119 10 Jun 09 nicklas 63   <script language="JavaScript">
1119 10 Jun 09 nicklas 64   function hideErrorList()
1119 10 Jun 09 nicklas 65   {
1119 10 Jun 09 nicklas 66     Main.hide('errorlist');
1119 10 Jun 09 nicklas 67     Main.show('showerrorlist');
1119 10 Jun 09 nicklas 68   }
1119 10 Jun 09 nicklas 69   function showErrorList()
1119 10 Jun 09 nicklas 70   {
1119 10 Jun 09 nicklas 71     Main.show('errorlist');
1119 10 Jun 09 nicklas 72     Main.hide('showerrorlist');
1119 10 Jun 09 nicklas 73   }
1119 10 Jun 09 nicklas 74   function cancelPlugin()
1119 10 Jun 09 nicklas 75   {
1119 10 Jun 09 nicklas 76     location.href= 'index.jsp?ID=<%=ID%>&cmd=CancelWizard';
1119 10 Jun 09 nicklas 77   }
1119 10 Jun 09 nicklas 78   function saveSettings()
1119 10 Jun 09 nicklas 79   {
1119 10 Jun 09 nicklas 80     var frm = document.forms['plugin'];
1119 10 Jun 09 nicklas 81     if (frm['parameter:gpModule'].value == '')
1119 10 Jun 09 nicklas 82     {
1119 10 Jun 09 nicklas 83       alert('Please enter module or pipeline name');
1119 10 Jun 09 nicklas 84       frm['parameter:gpModule'].focus();
1119 10 Jun 09 nicklas 85       return;
1119 10 Jun 09 nicklas 86     }
1119 10 Jun 09 nicklas 87     frm.submit();
1119 10 Jun 09 nicklas 88   }
1119 10 Jun 09 nicklas 89   function getModuleList()
1119 10 Jun 09 nicklas 90   {
1119 10 Jun 09 nicklas 91     var frm = document.forms['plugin'];
1119 10 Jun 09 nicklas 92     var url = '<%=homeUrl%>/Ajax.servlet?ID=<%=ID%>&cmd=ListModules';
1119 10 Jun 09 nicklas 93     url += '&server=' + encodeURIComponent(frm['parameter:gpServer'].value);
1119 10 Jun 09 nicklas 94     var request = Ajax.getXmlHttpRequest();
1119 10 Jun 09 nicklas 95     request.open("GET", url, true);
1119 10 Jun 09 nicklas 96     Ajax.setReadyStateHandler(request, getModulesListCallback);
1119 10 Jun 09 nicklas 97     request.send(null);
1119 10 Jun 09 nicklas 98     document.getElementById('ajaxStatus').innerHTML = 'Please wait. . .';
1119 10 Jun 09 nicklas 99     //setTimeout('getModulesListCallback(null)', 15000);
1119 10 Jun 09 nicklas 100     setTimeout('showProgress()', 250);
1119 10 Jun 09 nicklas 101   }
1119 10 Jun 09 nicklas 102   function showProgress()
1119 10 Jun 09 nicklas 103   {
1119 10 Jun 09 nicklas 104     var progress = document.getElementById('ajaxStatus');
1119 10 Jun 09 nicklas 105     if (progress.innerHTML.indexOf('Please wait') == 0)
1119 10 Jun 09 nicklas 106     {
1119 10 Jun 09 nicklas 107       progress.innerHTML += ' .';
1119 10 Jun 09 nicklas 108       setTimeout('showProgress()', 250);
1119 10 Jun 09 nicklas 109     }
1119 10 Jun 09 nicklas 110   }
1119 10 Jun 09 nicklas 111
1119 10 Jun 09 nicklas 112   function getModulesListCallback(request)
1119 10 Jun 09 nicklas 113   {
1119 10 Jun 09 nicklas 114     if (document.getElementById('ajaxStatus').innerHTML.indexOf('Please wait') != 0) return;
1119 10 Jun 09 nicklas 115     var frm = document.forms['plugin'];
1119 10 Jun 09 nicklas 116     var responseText = request != null ? 
1119 10 Jun 09 nicklas 117       request.responseText :
1119 10 Jun 09 nicklas 118       'status:error\nstacktrace:No response from server';
1119 10 Jun 09 nicklas 119     var response = Ajax.parseResponse(responseText);
1119 10 Jun 09 nicklas 120     if (response.isError())
1119 10 Jun 09 nicklas 121     {
1119 10 Jun 09 nicklas 122       var stacktrace = response.getElements()[0]['stacktrace'];
1119 10 Jun 09 nicklas 123       document.getElementById('ajaxStatus').innerHTML = 
1119 10 Jun 09 nicklas 124         '<div class="error stacktrace" style="width: 420px; height: 15em; overflow: auto;">' + stacktrace + '</div>';
1119 10 Jun 09 nicklas 125     }
1119 10 Jun 09 nicklas 126     else
1119 10 Jun 09 nicklas 127     {
1119 10 Jun 09 nicklas 128       var modules = response.getElements();
1119 10 Jun 09 nicklas 129       modules.sort(compareGpModules);
1119 10 Jun 09 nicklas 130       var lastType = null;
1119 10 Jun 09 nicklas 131       var html = '<div style="width: 420px; height: 15em; overflow: auto;">';
1119 10 Jun 09 nicklas 132       for (var i = 0; i < modules.length; i++)
1119 10 Jun 09 nicklas 133       {
1119 10 Jun 09 nicklas 134         var type = modules[i]['taskType'];
1119 10 Jun 09 nicklas 135         if (type != 'Visualizer')
1119 10 Jun 09 nicklas 136         {
1119 10 Jun 09 nicklas 137           if (type != lastType)
1119 10 Jun 09 nicklas 138           {
1119 10 Jun 09 nicklas 139             html += '<b>' + type + '</b><br>';
1119 10 Jun 09 nicklas 140             lastType = type;
1119 10 Jun 09 nicklas 141           }
1119 10 Jun 09 nicklas 142           html += '&nbsp;&nbsp;<a id="module.' + i + '" href="javascript:setModule('+i+')" title="' + modules[i]['description'] + '">';
1119 10 Jun 09 nicklas 143           html += modules[i]['name'] + '</a><br>';
1119 10 Jun 09 nicklas 144         }
1119 10 Jun 09 nicklas 145       }
1119 10 Jun 09 nicklas 146       html += '</div>';
1119 10 Jun 09 nicklas 147       document.getElementById('ajaxStatus').innerHTML = html;
1119 10 Jun 09 nicklas 148     }
1119 10 Jun 09 nicklas 149   }
1119 10 Jun 09 nicklas 150   function compareGpModules(m1, m2)
1119 10 Jun 09 nicklas 151   {
1119 10 Jun 09 nicklas 152     var type1 = m1['taskType'];
1119 10 Jun 09 nicklas 153     var type2 = m2['taskType'];
1119 10 Jun 09 nicklas 154     if (type1 < type2) return -1;
1119 10 Jun 09 nicklas 155     if (type1 > type2) return 1;
1119 10 Jun 09 nicklas 156     var name1 = m1['name'];
1119 10 Jun 09 nicklas 157     var name2 = m2['name'];
1119 10 Jun 09 nicklas 158     if (name1 < name2) return -1;
1119 10 Jun 09 nicklas 159     if (name1 > name2) return 1;
1119 10 Jun 09 nicklas 160     return 0;
1119 10 Jun 09 nicklas 161   }
1119 10 Jun 09 nicklas 162   function setModule(index)
1119 10 Jun 09 nicklas 163   {
1119 10 Jun 09 nicklas 164     var frm = document.forms['plugin'];
1119 10 Jun 09 nicklas 165     frm['parameter:gpModule'].value = document.getElementById('module.'+index).innerHTML;
1119 10 Jun 09 nicklas 166   }
1119 10 Jun 09 nicklas 167   </script>
1119 10 Jun 09 nicklas 168 </base:head>
1119 10 Jun 09 nicklas 169 <base:body>
1119 10 Jun 09 nicklas 170   <form action="index.jsp" method="post" name="plugin">
1119 10 Jun 09 nicklas 171     <input type="hidden" name="ID" value="<%=ID%>">
1119 10 Jun 09 nicklas 172     <input type="hidden" name="requestId" value="<%=request.getParameter("requestId")%>">
1119 10 Jun 09 nicklas 173     <input type="hidden" name="cmd" value="SetParameters">
1119 10 Jun 09 nicklas 174
1119 10 Jun 09 nicklas 175
1119 10 Jun 09 nicklas 176   <h3 class="docked"><%=HTML.encodeTags(title)%></h3>
1119 10 Jun 09 nicklas 177   <div class="boxedbottom">
1119 10 Jun 09 nicklas 178     <%
1119 10 Jun 09 nicklas 179     if (errorMessage != null || (errors != null && errors.size() > 0))
1119 10 Jun 09 nicklas 180     {
1119 10 Jun 09 nicklas 181       %>
1119 10 Jun 09 nicklas 182       <div id="errors" style="margin-bottom: 12px;" class="parameterhelp">
1119 10 Jun 09 nicklas 183         <div class="error" style="margin: 0px;">
1119 10 Jun 09 nicklas 184         <%=errorMessage %>
1119 10 Jun 09 nicklas 185         </div>
1119 10 Jun 09 nicklas 186         <%
1119 10 Jun 09 nicklas 187         if (errors != null && errors.size() > 0)
1119 10 Jun 09 nicklas 188         {
1119 10 Jun 09 nicklas 189           %>
1119 10 Jun 09 nicklas 190           <div id="showerrorlist" style="display: none;">
1119 10 Jun 09 nicklas 191             <base:icon image="bullet.gif" /><a href="javascript:showErrorList()">Show details</a>
1119 10 Jun 09 nicklas 192           </div>
1119 10 Jun 09 nicklas 193           <div id="errorlist">
1119 10 Jun 09 nicklas 194           <ol>
1119 10 Jun 09 nicklas 195           <%
1119 10 Jun 09 nicklas 196           for (Throwable t : errors)
1119 10 Jun 09 nicklas 197           {
1119 10 Jun 09 nicklas 198             %>
1119 10 Jun 09 nicklas 199             <li><%=t.getMessage()%><br>
1119 10 Jun 09 nicklas 200             <%
1119 10 Jun 09 nicklas 201           }
1119 10 Jun 09 nicklas 202           %>
1119 10 Jun 09 nicklas 203           </ol>
1119 10 Jun 09 nicklas 204           <base:icon image="bullet.gif" /><a href="javascript:hideErrorList()">Hide details</a>
1119 10 Jun 09 nicklas 205           </div>
1119 10 Jun 09 nicklas 206           <%
1119 10 Jun 09 nicklas 207         }
1119 10 Jun 09 nicklas 208         %>
1119 10 Jun 09 nicklas 209       </div>
1119 10 Jun 09 nicklas 210       <%
1119 10 Jun 09 nicklas 211     }
1119 10 Jun 09 nicklas 212     %>
1119 10 Jun 09 nicklas 213
1119 10 Jun 09 nicklas 214     <table class="form" cellspacing=0>
1119 10 Jun 09 nicklas 215     <tr>
1119 10 Jun 09 nicklas 216       <td></td>
1119 10 Jun 09 nicklas 217       <td><%=HTML.encodeTags(ri.getDescription())%></td>
1119 10 Jun 09 nicklas 218     </tr>
1119 10 Jun 09 nicklas 219     <tr>
1119 10 Jun 09 nicklas 220       <td class="prompt"><%=HTML.encodeTags(gpServer.getLabel())%></td>
1119 10 Jun 09 nicklas 221       <td>
1119 10 Jun 09 nicklas 222         <select name="parameter:gpServer" class="required" 
1119 10 Jun 09 nicklas 223           title="<%=HTML.encodeTags(gpServer.getDescription())%>" >
1119 10 Jun 09 nicklas 224         <%
1119 10 Jun 09 nicklas 225         for (String server : (List<String>)gpServer.getParameterType().getItems())
1119 10 Jun 09 nicklas 226         {
1119 10 Jun 09 nicklas 227           String option = HTML.encodeTags(server);
1119 10 Jun 09 nicklas 228           %>
1119 10 Jun 09 nicklas 229           <option value="<%=option%>" <%=server.equals(currentGpServer) ? "selected" : ""%>
1119 10 Jun 09 nicklas 230             ><%=option%>
1119 10 Jun 09 nicklas 231           <%
1119 10 Jun 09 nicklas 232         }
1119 10 Jun 09 nicklas 233         %>
1119 10 Jun 09 nicklas 234         </select>
1119 10 Jun 09 nicklas 235       </td>
1119 10 Jun 09 nicklas 236     </tr>
1119 10 Jun 09 nicklas 237     <tr>
1119 10 Jun 09 nicklas 238       <td class="prompt"><%=HTML.encodeTags(gpModule.getLabel())%></td>
1119 10 Jun 09 nicklas 239       <td>
1119 10 Jun 09 nicklas 240         <input class="text required" type="text" name="parameter:gpModule" size="40"
1119 10 Jun 09 nicklas 241           value="<%=HTML.encodeTags(currentGpModule)%>" 
1119 10 Jun 09 nicklas 242           title="<%=HTML.encodeTags(gpModule.getDescription())%>">
1119 10 Jun 09 nicklas 243       </td>
1119 10 Jun 09 nicklas 244     </tr>
1119 10 Jun 09 nicklas 245     <tr>
1119 10 Jun 09 nicklas 246       <td class="prompt">Available modules</td>
1119 10 Jun 09 nicklas 247       <td>
1119 10 Jun 09 nicklas 248       <table border=0 cellspacing=0><tr><td><base:button 
1119 10 Jun 09 nicklas 249           title="Get list" onclick="getModuleList()"
1119 10 Jun 09 nicklas 250           image="<%=homeUrl + "/images/genepattern.gif" %>"
1119 10 Jun 09 nicklas 251           /></td>
1119 10 Jun 09 nicklas 252         </tr></table>
1119 10 Jun 09 nicklas 253       </td>
1119 10 Jun 09 nicklas 254     </tr>
1119 10 Jun 09 nicklas 255     <tr>
1119 10 Jun 09 nicklas 256       <td class="prompt"></td>
1119 10 Jun 09 nicklas 257       <td id="ajaxStatus"></td>
1119 10 Jun 09 nicklas 258     </tr>
1119 10 Jun 09 nicklas 259     </table>
1119 10 Jun 09 nicklas 260   </div>
1119 10 Jun 09 nicklas 261   <p>
1119 10 Jun 09 nicklas 262   <table align="center">
1119 10 Jun 09 nicklas 263   <tr>
1119 10 Jun 09 nicklas 264     <td width="50%"><base:button onclick="saveSettings();" title="Next" /></td>
1119 10 Jun 09 nicklas 265     <td width="50%"><base:button onclick="cancelPlugin();" title="Cancel" /></td>
1119 10 Jun 09 nicklas 266   </tr>
1119 10 Jun 09 nicklas 267   </table>
1119 10 Jun 09 nicklas 268 </base:body>
1119 10 Jun 09 nicklas 269 </base:page>