source: trunk/www/views/derivedbioassays/view_bioassay.jsp @ 5939

Last change on this file since 5939 was 5939, checked in by Nicklas Nordborg, 10 years ago

References #1655: GUI improvements

View pages for:

  • File server
  • Projects
  • Permission templates
  • Physical, derived and raw bioassays
  • Experiments, bioassay set
  • Formulas
  • Reporters
  • Reporter lists
  • Property svn:eol-style set to native
  • Property svn:keywords set to Date Id
File size: 21.4 KB
Line 
1<%-- $Id $
2  ------------------------------------------------------------------
3  Copyright (C) 2011 Nicklas Nordborg
4
5  This file is part of BASE - BioArray Software Environment.
6  Available at http://base.thep.lu.se/
7
8  BASE is free software; you can redistribute it and/or
9  modify it under the terms of the GNU General Public License
10  as published by the Free Software Foundation; either version 3
11  of the License, or (at your option) any later version.
12
13  BASE is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  GNU General Public License for more details.
17
18  You should have received a copy of the GNU General Public License
19  along with BASE. If not, see <http://www.gnu.org/licenses/>.
20  ------------------------------------------------------------------
21
22--%>
23<%@ page pageEncoding="UTF-8" session="false"
24  import="net.sf.basedb.core.SessionControl"
25  import="net.sf.basedb.core.DbControl"
26  import="net.sf.basedb.core.DerivedBioAssay"
27  import="net.sf.basedb.core.PhysicalBioAssay"
28  import="net.sf.basedb.core.Item"
29  import="net.sf.basedb.core.ItemContext"
30  import="net.sf.basedb.core.Permission"
31  import="net.sf.basedb.core.Job"
32  import="net.sf.basedb.core.PluginDefinition"
33  import="net.sf.basedb.core.PluginConfiguration"
34  import="net.sf.basedb.core.User"
35  import="net.sf.basedb.core.ItemQuery"
36  import="net.sf.basedb.core.ItemResultList"
37  import="net.sf.basedb.core.Include"
38  import="net.sf.basedb.core.PermissionDeniedException"
39  import="net.sf.basedb.core.PluginDefinition"
40  import="net.sf.basedb.core.ParameterInfo"
41  import="net.sf.basedb.core.RawBioAssay"
42  import="net.sf.basedb.core.RawDataType"
43  import="net.sf.basedb.core.BasicItem"
44  import="net.sf.basedb.core.Nameable"
45  import="net.sf.basedb.core.File"
46  import="net.sf.basedb.core.plugin.GuiContext"
47  import="net.sf.basedb.core.plugin.Plugin"
48  import="net.sf.basedb.core.query.Orders"
49  import="net.sf.basedb.core.query.Hql"
50  import="net.sf.basedb.clients.web.ChangeHistoryUtil"
51  import="net.sf.basedb.clients.web.Base"
52  import="net.sf.basedb.clients.web.PermissionUtil"
53  import="net.sf.basedb.clients.web.util.HTML"
54  import="net.sf.basedb.util.Values"
55  import="net.sf.basedb.util.formatter.Formatter"
56  import="net.sf.basedb.clients.web.formatter.FormatterFactory"
57  import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
58  import="net.sf.basedb.clients.web.extensions.JspContext"
59  import="net.sf.basedb.clients.web.extensions.renderer.PrefixSuffixRenderer"
60  import="net.sf.basedb.clients.web.extensions.toolbar.ToolbarUtil"
61  import="net.sf.basedb.clients.web.extensions.plot.OverviewPlotAction"
62  import="net.sf.basedb.clients.web.extensions.plot.PlotGenerator"
63  import="net.sf.basedb.util.extensions.ExtensionsInvoker"
64  import="net.sf.basedb.util.extensions.ActionIterator"
65  import="java.util.Date"
66  import="java.util.Map"
67  import="java.util.Set"
68  import="java.util.List"
69  import="java.util.Iterator"
70%>
71<%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
72<%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
73<%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
74<%@ taglib prefix="p" uri="/WEB-INF/path.tld" %>
75<%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
76<%!
77  private static final Item itemType = Item.DERIVEDBIOASSAY;
78  private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.ITEM);
79%>
80<%
81final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
82final String ID = sc.getId();
83final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
84final int itemId = cc.getId();
85final String tab = Values.getString(request.getParameter("tab"), "properties");
86
87final float scale = Base.getScale(sc);
88final String root = request.getContextPath();
89final DbControl dc = sc.newDbControl();
90try
91{
92  Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
93
94  String title = null;
95  final DerivedBioAssay bioAssay = DerivedBioAssay.getById(dc, itemId);
96 
97  Job job = null;
98  boolean readJob = true;
99  PluginDefinition plugin = null;
100  boolean readPlugin = true;
101  PluginConfiguration configuration = null;
102  boolean readConfiguration = true;
103
104  try
105  {
106    job = bioAssay.getJob();
107  }
108  catch (PermissionDeniedException ex)
109  {
110    readJob = false;
111    readPlugin = false;
112    readConfiguration = false;
113  }
114  if (job != null)
115  {
116    try
117    {
118      plugin = job.getPluginDefinition();
119    }
120    catch (PermissionDeniedException ex)
121    {
122      readPlugin = false;
123    }
124    try
125    {
126      configuration = job.getPluginConfiguration();
127    }
128    catch (PermissionDeniedException ex)
129    {
130      readConfiguration = false;
131    }
132  }
133 
134  final boolean usePermission = bioAssay.hasPermission(Permission.USE);
135  final boolean writePermission = bioAssay.hasPermission(Permission.WRITE);
136  final boolean deletePermission = bioAssay.hasPermission(Permission.DELETE);
137  final boolean sharePermission = bioAssay.hasPermission(Permission.SET_PERMISSION);
138  final boolean setOwnerPermission = bioAssay.hasPermission(Permission.SET_OWNER);
139  final boolean isRemoved = bioAssay.isRemoved();
140  final boolean isUsed = isRemoved && bioAssay.isUsed();
141  final boolean deletePermanentlyPermission = deletePermission && !isUsed;
142  final boolean isOwner = bioAssay.isOwner();
143  Formatter<Date> dateFormatter = FormatterFactory.getDateFormatter(sc);
144  Formatter<Date> dateTimeFormatter = FormatterFactory.getDateTimeFormatter(sc);
145  JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, guiContext, bioAssay);
146  ExtensionsInvoker toolbarInvoker = ToolbarUtil.useExtensions(jspContext);
147  %>
148  <base:page title="<%=title%>">
149  <base:head scripts="table.js,tabcontrol.js" styles="table.css,toolbar.css,headertabcontrol.css,path.css">
150    <ext:scripts context="<%=jspContext%>" />
151    <ext:stylesheets context="<%=jspContext%>" />
152    <script language="JavaScript">
153    function editItem()
154    {
155      Main.viewOrEditItem('<%=ID%>', '<%=itemType.name()%>', <%=itemId%>, true);
156    }
157    function deleteItem()
158    {
159      location.replace('index.jsp?ID=<%=ID%>&cmd=DeleteItem&item_id=<%=itemId%>');
160    }
161    function restoreItem()
162    {
163      location.replace('index.jsp?ID=<%=ID%>&cmd=RestoreItem&item_id=<%=itemId%>');
164    }
165    function shareItem()
166    {
167      Main.openPopup('index.jsp?ID=<%=ID%>&cmd=ShareItem&item_id=<%=itemId%>', 'ShareBioAssay', 600, 400);
168    }
169    function setOwner()
170    {
171      Main.openPopup('index.jsp?ID=<%=ID%>&cmd=SetOwnerOfItem&item_id=<%=itemId%>', 'SetOwnerOfItem', 450, 300);
172    }
173    function switchTab(tabControlId, tabId)
174    {
175      if (TabControl.isActive(tabControlId, tabId)) return;
176      if ((tabId == 'overview' || tabId == 'history') && tabId != '<%=tab%>')
177      {
178        location.href = 'index.jsp?ID=<%=ID%>&cmd=ViewItem&item_id=<%=itemId%>&tab='+tabId;
179      }
180      else
181      {
182        TabControl.setActiveTab(tabControlId, tabId);
183      }
184    }
185    function runItemPlugin(cmd)
186    {
187      Main.openPopup('index.jsp?ID=<%=ID%>&cmd='+cmd+'&item_id=<%=itemId%>', 'RunPlugin'+cmd, 750, 500);
188    }
189    function newChildBioAssay()
190    {
191      Main.viewOrEditItem('<%=ID%>', 'DERIVEDBIOASSAY', 0, true, '&parent_id=<%=itemId%>');
192    }
193    function newRawBioAssay()
194    {
195      Main.viewOrEditItem('<%=ID%>', 'RAWBIOASSAY', 0, true, '&bioassay_id=<%=itemId%>');
196    }
197    </script>
198  </base:head>
199  <base:body>
200    <p:path><p:pathelement
201      title="Derived bioassays" href="<%="index.jsp?ID="+ID%>" 
202      /><p:pathelement title="<%=HTML.encodeTags(bioAssay.getName())%>" 
203      /></p:path>
204   
205    <t:tabcontrol 
206      id="main" 
207      subclass="content mastertabcontrol" 
208      active="<%=tab%>" switch="switchTab" remember="false">
209      <t:tab id="properties" title="Properties">
210      <div>
211      <table class="fullform">
212      <tr>
213        <th class="itemstatus">
214          <base:icon 
215            image="shared.gif" 
216            visible="<%=bioAssay.isShared()%>"
217            tooltip="This item is shared to other users, groups and/or projects"
218          />
219          <base:icon 
220            image="deleted.gif"
221            onclick="deleteItemPermanently()"
222            tooltip="This item has been flagged for deletion. Click to delete it now."
223            enabled="<%=deletePermanentlyPermission %>"
224            visible="<%=isRemoved%>" 
225          />
226          <base:icon image="used.gif" 
227            onclick="showUsingItems()"
228            tooltip="This item is used by other items and can't be permanently deleted. Show the items that are using this one"
229            visible="<%=isRemoved && isUsed%>" />
230        </th>
231        <td style="padding: 0px;">
232          <tbl:toolbar subclass="bottomborder">
233            <tbl:button 
234              disabled="<%=writePermission ? false : true%>" 
235              image="edit.gif" 
236              onclick="editItem()" 
237              title="Edit&hellip;" 
238              tooltip="<%=writePermission ? "Edit this bioassay" : "You do not have permission to edit this bioassay"%>" 
239            />
240            <tbl:button 
241              disabled="<%=deletePermission ? false : true%>" 
242              image="delete.gif" 
243              onclick="deleteItem()" 
244              title="Delete"
245              visible="<%=!bioAssay.isRemoved()%>"
246              tooltip="<%=deletePermission ? "Delete this bioassay" : "You do not have permission to delete this bioassay"%>" 
247            />
248            <tbl:button 
249              disabled="<%=writePermission ? false : true%>" 
250              image="restore.gif" 
251              onclick="restoreItem()" 
252              title="Restore"
253              visible="<%=bioAssay.isRemoved()%>"
254              tooltip="<%=writePermission ? "Restore this bioassay" : "You do not have permission to restore this bioassay"%>" 
255            />
256            <tbl:button 
257              disabled="<%=sharePermission ? false : true%>"
258              image="share.gif"
259              onclick="shareItem()" 
260              title="Share&hellip;" 
261              tooltip="<%=sharePermission ? "Share this bioassay to other user, groups and projects" : "You do not have permission to share this bioassay"%>"
262            />
263            <tbl:button 
264              disabled="<%=setOwnerPermission ? false : true%>"
265              image="take_ownership.png"
266              onclick="setOwner()" 
267              title="Set owner&hellip;"
268              tooltip="<%=setOwnerPermission ? "Change owner of this item" : "You do not have permission to change ownership of this item"%>"
269            />
270            <tbl:button
271              image="add.png"
272              onclick="newChildBioAssay()"
273              title="New child bioassay&hellip;"
274              tooltip="Create a child bioassay from this bioassay"
275              visible="<%=sc.hasPermission(Permission.CREATE, Item.DERIVEDBIOASSAY) && usePermission%>"
276            />
277            <tbl:button
278              image="add.png"
279              onclick="newRawBioAssay()"
280              title="New raw bioassay&hellip;"
281              tooltip="Create a raw bioassay from this bioassay"
282              visible="<%=sc.hasPermission(Permission.CREATE, Item.RAWBIOASSAY) && usePermission%>"
283            />
284            <tbl:button 
285              image="import.gif" 
286              onclick="runItemPlugin('ImportItem')" 
287              title="Import&hellip;" 
288              tooltip="Import data" 
289              visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
290            />
291            <tbl:button 
292              image="export.gif" 
293              onclick="runItemPlugin('ExportItem')" 
294              title="Export&hellip;" 
295              tooltip="Export data" 
296              visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
297            />
298            <tbl:button 
299              image="runplugin.gif" 
300              onclick="runItemPlugin('RunPlugin')"
301              title="Run plugin&hellip;" 
302              tooltip="Run a plugin" 
303              visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
304            />
305            <tbl:button 
306              image="runplugin.gif" 
307              onclick="runItemPlugin('RunAnalysisPlugin')"
308              title="Run analysis&hellip;" 
309              tooltip="Run an analysis plugin with data from this bioassay"
310              visible="<%=pluginCount.containsKey(Plugin.MainType.ANALYZE)%>"
311            />
312            <ext:render extensions="<%=toolbarInvoker%>" context="<%=jspContext%>" 
313              wrapper="<%=new PrefixSuffixRenderer(jspContext, "<td>", "</td>") %>"/>
314            <tbl:button
315              image="help.png"
316              onclick="<%="Main.openHelp('" + ID +"', 'derivedbioassay.view.properties')"%>"
317              title="Help&hellip;"
318              tooltip="Get help about this page"
319            />
320          </tbl:toolbar>
321        </td>
322      </tr>
323    </table>
324    <table style="width: 100%; height: 20em;" class="bottomborder">
325    <tr valign="top">
326      <td style="width: 50%; height: 100%;">
327        <table class="fullform" >
328        <tr>
329          <th>Name</th>
330          <td><%=HTML.encodeTags(bioAssay.getName())%></td>
331        </tr>
332        <tr>
333          <th>Type</th>
334          <td><base:propertyvalue item="<%=bioAssay%>" property="itemSubtype" /></td>
335        </tr>
336        <tr>
337          <th>Physical bioassay</th>
338          <td><base:propertyvalue item="<%=bioAssay%>" property="physicalBioAssay" /></td>
339        </tr>
340        <tr>
341          <th>Parent bioassay</th>
342          <td><base:propertyvalue item="<%=bioAssay%>" property="parent" /></td>
343        </tr>
344        <tr>
345          <th>Extract</th>
346          <td><base:propertyvalue item="<%=bioAssay%>" property="extract" /></td>
347        </tr>
348        <tr>
349          <th>Protocol</th>
350          <td><base:propertyvalue item="<%=bioAssay%>" property="protocol" /></td>
351        </tr>
352        <tr>
353          <th>Hardware</th>
354          <td><base:propertyvalue item="<%=bioAssay%>" property="hardware" /></td>
355        </tr>
356        <tr>
357          <th>Software</th>
358          <td><base:propertyvalue item="<%=bioAssay%>" property="software" /></td>
359        </tr>
360        <tr>
361          <th>Owner</th>
362          <td><base:propertyvalue item="<%=bioAssay%>" property="owner" /></td>
363        </tr>
364        <tr>
365          <th>Permissions</th>
366          <td><%=PermissionUtil.getFullPermissionNames(bioAssay)%></td>
367        </tr>
368        <tr class="dynamic">
369          <th>Description</th>
370          <td><%=HTML.niceFormat(bioAssay.getDescription())%></td>
371        </tr>
372        </table>
373      </td>
374      <td style="width: 50%; height: 100%;" class="leftborder">
375        <table class="fullform">
376        <tbody class="sectionheader">
377          <tr>
378            <th colspan="2">Job &amp; plug-in parameters</th>
379          </tr>
380        </tbody>
381        <tr>
382          <th>Job</th>
383          <td><%=Base.getLinkedName(ID, job, !readJob, false)%></td>
384        </tr>
385        <tr>
386          <th>Plugin</th>
387          <td><%=Base.getLinkedName(ID, plugin, 
388              !readPlugin, plugin != null && plugin.hasPermission(Permission.WRITE))%></td>
389        </tr>
390        <tr>
391          <th>Plugin configuration</th>
392          <td><%=Base.getLinkedName(ID, configuration, !readConfiguration, 
393            configuration != null && configuration.hasPermission(Permission.WRITE))%></td>
394        </tr>
395        <%
396        if (job != null)
397        {
398          %>
399          <tr>
400            <th>Started</th>
401            <td>
402              <%=job == null ? "" : dateTimeFormatter.format(job.getStarted())%>
403            </td>
404          </tr>
405          <tr>
406            <th>Ended</th>
407            <td>
408              <%=job == null ? "" : dateTimeFormatter.format(job.getEnded())%>
409            </td>
410          </tr>
411          <tr>
412            <th>Server</th>
413            <td>
414              <%=HTML.encodeTags(job.getServer())%>
415            </td>
416          </tr>
417          <%
418          for (String name : job.getParameterNames())
419          {
420            StringBuilder sb = new StringBuilder();
421            String displayValue = "";
422            String description = "";
423            try
424            {
425              ParameterInfo pi = job.getParameterInfo(name);
426              if (pi.getLabel() != null) name = HTML.encodeTags(pi.getLabel());
427              description = HTML.encodeTags(pi.getDescription());
428              List<?> values = pi.getValues();
429              int i = 0;
430              for (Object value : values)
431              {
432                if (value != null)
433                {
434                  if (i > 0) sb.append(", ");
435                  i++;
436                  if (value instanceof BasicItem)
437                  {
438                    BasicItem item = (BasicItem)value;
439                    String itemName = "";
440                    if (item instanceof File)
441                    {
442                      itemName = ((File)item).getPath().toString();
443                    }
444                    else if (item instanceof Nameable)
445                    {
446                      itemName = ((Nameable)item).getName();
447                    }
448                    else
449                    {
450                      itemName = item.toString();
451                    }
452                    sb.append(Base.getLink(ID, HTML.encodeTags(itemName), 
453                      item.getType(), item.getId(), item.hasPermission(Permission.WRITE)));
454                  }
455                  else if (value instanceof Date)
456                  {
457                    sb.append(dateFormatter.format((Date)value));
458                  }
459                  else
460                  {
461                    sb.append(HTML.encodeTags(value.toString()));
462                  }
463                }
464              }
465              displayValue = sb.toString();
466            }
467            catch (Throwable ex)
468            {
469              displayValue = "<i>ERROR: "+ex.getMessage()+"</i>";
470            }
471            %>
472            <tr>
473              <th><span title="<%=description%>"><%=name%></span></th>
474              <td>
475                <%=displayValue%>
476              </td>
477            </tr>
478            <%
479          }
480        }
481        %>
482        <tr class="dynamic">
483          <th></th>
484          <td></td>
485        </tr>
486        </table>
487
488      </td>
489      </tr>
490      </table>
491      </div>
492      <%
493      ItemQuery<DerivedBioAssay> childQuery = bioAssay.getChildren();
494      childQuery.include(Include.ALL);
495      childQuery.order(Orders.asc(Hql.property("name")));
496      ItemResultList<DerivedBioAssay> children = childQuery.list(dc);
497      %>
498      <base:section 
499        id="children"
500        title="<%="Child bioassays (" + children.size() + ")"%>"
501        context="<%=cc%>"
502        >
503        <%
504        if (children.size() == 0)
505        {
506          %>
507          <div class="messagecontainer note">
508          This bioassay doesn't have any child bioassays
509          (or you don't have permission to view them).
510          </div>
511          <%
512        }
513        else
514        {
515          %>
516          <tbl:table
517            id="children"
518            columns="all"
519            >
520            <tbl:columndef 
521              id="name"
522              title="Name"
523            />
524            <tbl:columndef 
525              id="itemSubtype"
526              title="Type"
527            />
528            <tbl:columndef 
529              id="description"
530              title="Description"
531            />
532            <tbl:data>
533              <tbl:headers>
534                <tbl:headerrow>
535                  <tbl:columnheaders />
536                </tbl:headerrow>
537              </tbl:headers>           
538              <tbl:rows>
539              <%
540              for (DerivedBioAssay item : children)
541              {
542                %>
543                <tbl:row>
544                  <tbl:cell column="name"><%=Base.getLinkedName(ID, item, false, true)%></tbl:cell>
545                  <tbl:cell column="itemSubtype"><base:propertyvalue item="<%=item%>" property="itemSubtype" /></tbl:cell>
546                  <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
547                </tbl:row>
548                <%
549              }
550              %>
551              </tbl:rows>
552            </tbl:data>
553          </tbl:table>
554          <%
555        }
556        %>
557      </base:section>
558      <%
559      ItemQuery<RawBioAssay> rawQuery = bioAssay.getRawBioAssays();
560      rawQuery.include(Include.ALL);
561      rawQuery.order(Orders.asc(Hql.property("name")));
562      ItemResultList<RawBioAssay> rawBioAssays = rawQuery.list(dc);
563      %>
564      <base:section 
565        id="rawBioAssays"
566        title="<%="Raw bioassays (" + rawBioAssays.size() + ")"%>"
567        context="<%=cc%>"
568        >
569        <%
570        if (rawBioAssays.size() == 0)
571        {
572          %>
573          <div class="messagecontainer note">
574          This bioassay doesn't have any child raw bioassays
575          (or you don't have permission to view them).
576          </div>
577          <%
578        }
579        else
580        {
581          %>
582          <tbl:table
583            id="rawBioAssays"
584            columns="all"
585            >
586            <tbl:columndef 
587              id="name"
588              title="Name"
589            />
590            <tbl:columndef 
591              id="platform"
592              title="Platform"
593            />
594            <tbl:columndef 
595              id="description"
596              title="Description"
597            />
598            <tbl:data>
599              <tbl:headers>
600                <tbl:headerrow>
601                  <tbl:columnheaders />
602                </tbl:headerrow>
603              </tbl:headers>
604              <tbl:rows>
605              <%
606              for (RawBioAssay item : rawBioAssays)
607              {
608                %>
609                <tbl:row>
610                  <tbl:cell column="name"><%=Base.getLinkedName(ID, item, false, true)%></tbl:cell>
611                  <tbl:cell column="platform"><base:propertyvalue item="<%=item%>" property="platform" /></tbl:cell>
612                  <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
613                </tbl:row>
614                <%
615              }
616              %>
617              </tbl:rows>
618            </tbl:data>
619          </tbl:table>
620          <%
621        }
622        %>
623      </base:section>
624      <jsp:include page="../../common/datafiles/list_files.jsp">
625        <jsp:param name="item_type" value="<%=itemType.name()%>" />
626        <jsp:param name="item_id" value="<%=itemId%>" />
627        <jsp:param name="ID" value="<%=ID%>" />
628      </jsp:include>
629      <jsp:include page="../../common/anytoany/list_anytoany.jsp">
630        <jsp:param name="ID" value="<%=ID%>" />
631        <jsp:param name="item_type" value="<%=itemType.name()%>" />
632        <jsp:param name="item_id" value="<%=itemId%>" />
633        <jsp:param name="title" value="Other items related to this bioassay" />
634      </jsp:include>
635      <jsp:include page="../../common/share/list_share.jsp">
636        <jsp:param name="ID" value="<%=ID%>" />
637        <jsp:param name="item_type" value="<%=itemType.name()%>" />
638        <jsp:param name="item_id" value="<%=itemId%>" />
639        <jsp:param name="title" value="Shared to" />
640      </jsp:include>
641      </t:tab>
642     
643      <t:tab id="annotations" title="Annotations &amp; parameters" 
644        tooltip="View annotation values and protocol parameters" clazz="white">
645        <jsp:include page="../../common/annotations/list_annotations.jsp">
646          <jsp:param name="item_type" value="<%=itemType.name()%>" />
647          <jsp:param name="item_id" value="<%=itemId%>" />
648          <jsp:param name="ID" value="<%=ID%>" />
649        </jsp:include>
650      </t:tab>
651     
652      <t:tab id="overview" title="Overview" 
653        tooltip="Display a tree overview of related items">
654        <%
655        if ("overview".equals(tab))
656        {
657          %>
658          <jsp:include page="../../common/overview/overview.jsp">
659            <jsp:param name="item_type" value="<%=itemType.name()%>" />
660            <jsp:param name="item_id" value="<%=itemId%>" />
661            <jsp:param name="ID" value="<%=ID%>" />
662          </jsp:include>
663          <%
664        }
665        %>
666      </t:tab>
667      <t:tab id="history" title="Change history" 
668        tooltip="Displays a log of all modifications made to this item"
669        visible="<%=ChangeHistoryUtil.showChangeHistoryTab(sc)%>">
670        <%
671        if ("history".equals(tab))
672        {
673          %>
674          <jsp:include page="../../common/history/frameset.jsp">
675            <jsp:param name="source_type" value="<%=itemType.name()%>" />
676            <jsp:param name="source_id" value="<%=itemId%>" />
677            <jsp:param name="ID" value="<%=ID%>" />
678          </jsp:include>
679          <%
680        }
681        %>
682      </t:tab>
683      </t:tabcontrol>
684
685  </base:body>
686  </base:page>
687  <%
688}
689finally
690{
691  if (dc != null) dc.close();
692}
693
694%>
Note: See TracBrowser for help on using the repository browser.