source: trunk/www/biomaterials/labels/list_labels.jsp @ 5590

Last change on this file since 5590 was 5590, checked in by Nicklas Nordborg, 11 years ago

References #1589: Delete deprecated classes and methods

Removed deprecated methods and classes from the core API.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Date Id
File size: 15.6 KB
Line 
1<%-- $Id: list_labels.jsp 5590 2011-03-16 11:48:47Z nicklas $
2  ------------------------------------------------------------------
3  Copyright (C) 2006 Jari Häkkinen, Nicklas Nordborg, Martin Svensson
4  Copyright (C) 2007 Johan Enell, 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  import="net.sf.basedb.core.SessionControl"
28  import="net.sf.basedb.core.DbControl"
29  import="net.sf.basedb.core.Item"
30  import="net.sf.basedb.core.Label"
31  import="net.sf.basedb.core.ItemQuery"
32  import="net.sf.basedb.core.ItemResultIterator"
33  import="net.sf.basedb.core.ItemContext"
34  import="net.sf.basedb.core.LabeledExtract"
35  import="net.sf.basedb.core.Nameable"
36  import="net.sf.basedb.core.Permission"
37  import="net.sf.basedb.core.PluginDefinition"
38  import="net.sf.basedb.core.plugin.GuiContext"
39  import="net.sf.basedb.core.plugin.Plugin"
40  import="net.sf.basedb.core.query.Hql"
41  import="net.sf.basedb.core.query.Orders"
42  import="net.sf.basedb.clients.web.Base"
43  import="net.sf.basedb.clients.web.PermissionUtil"
44  import="net.sf.basedb.clients.web.ModeInfo"
45  import="net.sf.basedb.clients.web.util.HTML"
46  import="net.sf.basedb.util.ShareableUtil"
47  import="net.sf.basedb.util.Values"
48  import="net.sf.basedb.util.formatter.Formatter"
49  import="net.sf.basedb.clients.web.formatter.FormatterFactory"
50  import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
51  import="net.sf.basedb.clients.web.extensions.JspContext"
52  import="net.sf.basedb.clients.web.extensions.renderer.PrefixSuffixRenderer"
53  import="net.sf.basedb.clients.web.extensions.toolbar.ToolbarUtil"
54  import="net.sf.basedb.util.extensions.ExtensionsInvoker"
55  import="java.util.Date"
56  import="java.util.Iterator"
57  import="java.util.List"
58  import="java.util.Map"
59%>
60<%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
61<%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
62<%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
63<%!
64  private static final Item itemType = Item.LABEL;
65  private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.LIST);
66%>
67<%
68final SessionControl sc = Base.getExistingSessionControl(pageContext, Permission.DENIED, itemType);
69final String ID = sc.getId();
70final boolean createPermission = sc.hasPermission(Permission.CREATE, itemType);
71final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
72
73final ModeInfo mode = ModeInfo.get(request.getParameter("mode"));
74final String callback = request.getParameter("callback");
75final String title = mode.generateTitle("label", "labels");
76final DbControl dc = sc.newDbControl();
77ItemResultIterator<Label> labels = null;
78try
79{
80  Formatter<Date> dateFormatter = FormatterFactory.getDateFormatter(sc);
81
82  Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
83  try
84  {
85    final ItemQuery<Label> query = Base.getConfiguredQuery(dc, cc, true, Label.getQuery(), mode);
86    labels = query.iterate(dc);
87  }
88  catch (Throwable t)
89  {
90    cc.setMessage(t.getMessage());
91  }
92  int numListed = 0;
93  JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, guiContext, null);
94  ExtensionsInvoker invoker = ToolbarUtil.useExtensions(jspContext);
95  %>
96  <base:page title="<%=title==null ? "Labels" : title%>" type="<%=mode.getPageType()%>">
97  <base:head scripts="menu.js,table.js" styles="menu.css,table.css">
98    <ext:scripts context="<%=jspContext%>" />
99    <ext:stylesheets context="<%=jspContext%>" />
100    <script language="JavaScript">
101    var submitPage = 'index.jsp';
102    var formId = 'labels';
103    function newItem()
104    {
105      Main.viewOrEditItem('<%=ID%>', '<%=itemType.name()%>', 0, true);
106    }
107    function editItem(itemId)
108    {
109      Main.viewOrEditItem('<%=ID%>', '<%=itemType.name()%>', itemId, true);
110    }
111    function viewItem(itemId)
112    {
113      Main.viewOrEditItem('<%=ID%>', '<%=itemType.name()%>', itemId, false);
114    }
115    function itemOnClick(evt, itemId)
116    {
117      Table.itemOnClick(formId, evt, itemId, '<%=mode.getName()%>', viewItem, editItem, returnSelected);
118    }
119    function deleteItems()
120    {
121      var frm = document.forms[formId];
122      if (Forms.numChecked(frm) == 0)
123      {
124        alert('Please select at least one item in the list');
125        return;
126      }
127      frm.action = submitPage;
128      frm.cmd.value = 'DeleteItems';
129      frm.submit();
130    }
131    function restoreItems()
132    {
133      var frm = document.forms[formId];
134      if (Forms.numChecked(frm) == 0)
135      {
136        alert('Please select at least one item in the list');
137        return;
138      }
139      frm.action = submitPage;
140      frm.cmd.value = 'RestoreItems';
141      frm.submit();
142    }
143    function deleteItemPermanently(itemId)
144    {
145      Main.deleteItemPermanently('<%=ID%>', true, '<%=itemType.name()%>', itemId);
146    }
147    function setOwner()
148    {
149      Table.setOwnerOfItems(submitPage, '<%=ID%>', formId, '<%=itemType.name()%>', 'SetOwnerOfItems');
150    }
151    function shareItem(itemId)
152    {
153      Main.openPopup('index.jsp?ID=<%=ID%>&cmd=ShareItem&item_id='+itemId, 'ShareLabels', 600, 400);
154    }
155    function shareItems()
156    {
157      Table.shareItems(submitPage, '<%=ID%>', formId, '<%=itemType.name()%>', 'ShareItems');
158    }
159    function configureColumns()
160    {
161      Table.configureColumns('<%=ID%>', formId, '<%=itemType.name()%>', '<%=(String)cc.getObject("defaultColumns")%>');
162    }
163    function runPlugin(cmd)
164    {
165      Table.submitToPopup(formId, cmd, 740, 540);
166    }
167    function returnSelected()
168    {
169      Table.returnSelected(formId, <%=callback != null ? "window.opener."+callback : "null" %>);
170      window.close();
171    }
172    function presetOnChange()
173    {
174      Table.presetOnChange('<%=ID%>', formId, '<%=itemType.name()%>', '<%=(String)cc.getObject("defaultColumns")%>');
175    }
176    function newLabeledExtract(labelId)
177    {
178      Main.viewOrEditItem('<%=ID%>', 'LABELEDEXTRACT', 0, true, '&label_id='+labelId);
179    }   
180    </script>
181  </base:head>
182 
183  <base:body>
184    <%
185    if (cc.getMessage() != null)
186    {
187      %>
188      <div class="error"><%=cc.getMessage()%></div>
189      <%
190      cc.setMessage(null);
191    }
192    %>
193    <tbl:table 
194      id="labels" 
195      clazz="itemlist" 
196      columns="<%=cc.getSetting("columns")%>"
197      sortby="<%=cc.getSortProperty()%>" 
198      direction="<%=cc.getSortDirection()%>"
199      title="<%=title%>"
200      action="index.jsp"
201      sc="<%=sc%>"
202      item="<%=itemType%>"
203      >
204      <tbl:hidden 
205        name="mode" 
206        value="<%=mode.getName()%>" 
207      />
208      <tbl:hidden 
209        name="callback" 
210        value="<%=callback%>" 
211        skip="<%=callback == null%>" 
212      />
213      <tbl:columndef 
214        id="name"
215        property="name"
216        datatype="string"
217        title="Name"
218        sortable="true" 
219        filterable="true"
220        exportable="true"
221        show="always" 
222      />
223      <tbl:columndef 
224        id="id"
225        clazz="uniquecol"
226        property="id"
227        datatype="int"
228        title="ID"
229        sortable="true"
230        filterable="true"
231        exportable="true"
232      />
233      <tbl:columndef 
234        id="owner"
235        property="owner.name"
236        datatype="string"
237        title="Owner"
238        sortable="true" 
239        filterable="true"
240        exportable="true"
241      />
242      <tbl:columndef 
243        id="entryDate"
244        property="entryDate"
245        datatype="date"
246        title="Registered"
247        sortable="true" 
248        filterable="true"
249        exportable="true"
250        formatter="<%=dateFormatter%>"
251      />
252      <tbl:columndef 
253        id="description"
254        property="description"
255        datatype="string"
256        title="Description" 
257        sortable="true" 
258        filterable="true" 
259        exportable="true"
260      />
261      <tbl:columndef
262        id="permission"
263        title="Permission"
264      />
265      <tbl:columndef
266        id="sharedTo"
267        title="Shared to"
268        filterable="true"
269        filterproperty="!sharedTo.name"
270        datatype="string"
271      />
272      <tbl:toolbar
273        visible="<%=mode.hasToolbar()%>"
274        >
275        <tbl:button 
276          disabled="<%=createPermission ? false : true%>" 
277          image="<%=createPermission ? "new.gif" : "new_disabled.gif"%>" 
278          onclick="newItem()" 
279          title="New&hellip;" 
280          tooltip="<%=createPermission ? "Create new label" : "You do not have permission to create labels"%>" 
281        />
282        <tbl:button 
283          image="delete.gif"
284          onclick="deleteItems()" 
285          title="Delete" 
286          tooltip="Delete the selected items" 
287        />
288        <tbl:button 
289          image="restore.gif"
290          onclick="restoreItems()" 
291          title="Restore" 
292          tooltip="Restore the selected (deleted) items"
293        />
294        <tbl:button 
295          image="share.gif"
296          onclick="shareItems()" 
297          title="Share&hellip;" 
298          tooltip="Share the selected items"
299        />
300        <tbl:button 
301          image="take_ownership.png"
302          onclick="setOwner()" 
303          title="Set owner&hellip;"
304          tooltip="Change owner of the selected items"
305        />
306        <tbl:button 
307          image="columns.gif" 
308          onclick="configureColumns()" 
309          title="Columns&hellip;" 
310          tooltip="Show, hide and re-order columns" 
311        />
312        <tbl:button 
313          image="import.gif" 
314          onclick="runPlugin('ImportItems')" 
315          title="Import&hellip;" 
316          tooltip="Import data" 
317          visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
318        />
319        <tbl:button 
320          image="export.gif" 
321          onclick="runPlugin('ExportItems')" 
322          title="Export&hellip;" 
323          tooltip="Export data" 
324          visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
325        />
326        <tbl:button 
327          image="runplugin.gif" 
328          onclick="runPlugin('RunListPlugin')" 
329          title="Run plugin&hellip;" 
330          tooltip="Run a plugin" 
331          visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
332        />
333        <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 
334          wrapper="<%=new PrefixSuffixRenderer(jspContext, "<td>", "</td>") %>"/>
335      </tbl:toolbar>
336      <tbl:navigator
337        page="<%=cc.getPage()%>" 
338        rowsperpage="<%=cc.getRowsPerPage()%>" 
339        totalrows="<%=labels == null ? 0 : labels.getTotalCount()%>" 
340        visible="<%=mode.hasNavigator()%>"
341      />
342      <tbl:data>
343        <tbl:columns>
344        <tbl:presetselector 
345          clazz="columnheader"
346          colspan="3"
347          onchange="presetOnChange()"
348        />
349        </tbl:columns>
350
351        <tr>
352          <tbl:header 
353            clazz="index"
354            >&nbsp;</tbl:header>
355          <tbl:header 
356            clazz="check" 
357            visible="<%=mode.hasCheck()%>"
358            ><base:icon 
359              image="check_uncheck.gif" 
360              tooltip="Check/uncheck all" 
361              onclick="Forms.checkUncheck(document.forms[formId])" style="align: left;"
362            /></tbl:header>
363          <tbl:header 
364            clazz="check" 
365            visible="<%=mode.hasRadio()%>"
366            >&nbsp;</tbl:header>
367          <tbl:header 
368            clazz="icons" 
369            visible="<%=mode.hasIcons()%>"
370            >&nbsp;</tbl:header>
371          <tbl:propertyfilter />
372        </tr>
373         
374          <tbl:rows>
375          <%
376          int index = cc.getPage()*cc.getRowsPerPage();
377          int selectedItemId = cc.getId();
378          if (labels != null)
379          {           
380            while (labels.hasNext())
381            {
382              Label item = labels.next();
383              int itemId = item.getId();
384              ItemQuery<LabeledExtract> labeledExtractQuery = item.getLabeledExtracts();
385              labeledExtractQuery.include(cc.getInclude());
386              labeledExtractQuery.order(Orders.asc(Hql.property("name")));             
387              String openSharePopup = "shareItem("+itemId+")";
388              String deletePermanently = "deleteItemPermanently("+itemId+")";
389              boolean deletePermission = item.hasPermission(Permission.DELETE);
390              boolean sharePermission = item.hasPermission(Permission.SET_PERMISSION); 
391              boolean usePermission = item.hasPermission(Permission.USE);
392              boolean writePermission = item.hasPermission(Permission.WRITE);
393              String tooltip = mode.isSelectionMode() ? 
394                  "Select this item" : "View this item" + (writePermission ? " (use CTRL, ALT or SHIFT to edit)" : "");
395              String name = HTML.encodeTags(item.getName());
396              index++;
397              numListed++;
398              %>
399              <tbl:row>
400                <tbl:header 
401                  clazz="index"
402                  ><%=index%></tbl:header>
403                <tbl:header 
404                  clazz="check" 
405                  visible="<%=mode.hasCheck()%>"
406                  ><input 
407                    type="checkbox" 
408                    name="<%=itemId%>" 
409                    value="<%=itemId%>" 
410                    title="<%=name%>" 
411                    <%=cc.getSelected().contains(itemId) ? "checked" : ""%> 
412                  ></tbl:header>
413                <tbl:header 
414                  clazz="check" 
415                  visible="<%=mode.hasRadio()%>"
416                  ><input 
417                    type="radio" 
418                    name="item_id" 
419                    value="<%=itemId%>" 
420                    title="<%=name%>" 
421                    <%=selectedItemId == itemId ? "checked" : ""%>
422                  ></tbl:header>
423                <tbl:header 
424                  clazz="icons" 
425                  visible="<%=mode.hasIcons()%>"
426                  ><base:icon 
427                    image="<%=deletePermission ? "deleted.gif" : "deleted_disabled.gif"%>"
428                    onclick="<%=deletePermission ? deletePermanently : null%>"
429                    tooltip="This item has been scheduled for deletion" 
430                    visible="<%=item.isRemoved()%>"
431                  /><base:icon 
432                    image="<%=sharePermission ? "shared.gif" : "shared_disabled.gif"%>" 
433                    onclick="<%=sharePermission ? openSharePopup : null%>"
434                    tooltip="This item is shared to other users, groups and/or projects" 
435                    visible="<%=item.isShared()%>"
436                  />&nbsp;</tbl:header>
437                <tbl:cell column="name"><div class="link" 
438                  onclick="itemOnClick(<%=writePermission ? "event" : null%>, <%=itemId%>)" 
439                  title="<%=tooltip%>"><%=name%></div></tbl:cell>
440                <tbl:cell column="id"><%=item.getId()%></tbl:cell>
441                <tbl:cell column="owner"
442                  ><base:propertyvalue 
443                    item="<%=item%>" 
444                    property="owner"
445                    enableEditLink="<%=mode.hasEditLink()%>" 
446                    enablePropertyLink="<%=mode.hasPropertyLink()%>"
447                  /></tbl:cell>
448                <tbl:cell column="entryDate" value="<%=item.getEntryDate()%>" />
449                <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
450                <tbl:cell column="permission"><%=PermissionUtil.getShortPermissions(item)%></tbl:cell>
451                <tbl:cell column="sharedTo">
452                  <%
453                  Iterator<Nameable> sharees = ShareableUtil.getSharedTo(dc, item).iterator();
454                  while(sharees.hasNext())
455                  {
456                    Nameable n = sharees.next();
457                    if (mode.hasPropertyLink())
458                    {
459                      out.write(Base.getLinkedName(ID, n, false, mode.hasEditLink()));
460                    }
461                    else
462                    {
463                      out.write(HTML.encodeTags(n.getName()));
464                    }
465                    out.write(sharees.hasNext() ? ", " : "");
466                  }
467                  %>
468                </tbl:cell>
469              </tbl:row>
470              <%
471              }
472            }
473          %>
474          </tbl:rows>
475      </tbl:data>
476      <%
477      if (numListed == 0)
478      {
479        %>
480        <tbl:panel><%=labels == null || labels.getTotalCount() == 0 ? "No labels were found" : "No labels on this page. Please select another page!" %></tbl:panel>
481        <%
482      }
483      else
484      {
485        %>
486        <tbl:navigator
487          page="<%=cc.getPage()%>" 
488          rowsperpage="<%=cc.getRowsPerPage()%>" 
489          totalrows="<%=labels == null ? 0 : labels.getTotalCount()%>" 
490          visible="<%=mode.hasNavigator()%>"
491          locked="true"
492        />
493        <%
494      }
495      %>
496    </tbl:table>
497    <base:buttongroup align="center" clazz="fixedatbottom">
498      <base:button onclick="returnSelected();" title="Ok" visible="<%=mode.hasOkButton()%>" />
499      <base:button onclick="window.close();" title="Cancel" visible="<%=mode.hasCancelButton()%>" />
500      <base:button onclick="window.close();" title="Close" visible="<%=mode.hasCloseButton()%>" />
501    </base:buttongroup>
502    <br><br><br>
503  </base:body>
504  </base:page>
505  <%
506}
507finally
508{
509  if (labels != null) labels.close();
510  if (dc != null) dc.close();
511}
512%>
Note: See TracBrowser for help on using the repository browser.