source: trunk/www/views/rawbioassays/view_rawbioassay.jsp @ 5939

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