www/views/formulas/list_formulas.jsp

Code
Comments
Other
Rev Date Author Line
2107 24 Mar 06 nicklas 1 <%-- $Id$
2107 24 Mar 06 nicklas 2   ------------------------------------------------------------------
5425 23 Sep 10 nicklas 3   Copyright (C) 2006 Jari Häkkinen, Nicklas Nordborg, Martin Svensson
3675 16 Aug 07 jari 4   Copyright (C) 2007 Johan Enell, Nicklas Nordborg, Martin Svensson
2107 24 Mar 06 nicklas 5
2304 22 May 06 jari 6   This file is part of BASE - BioArray Software Environment.
2304 22 May 06 jari 7   Available at http://base.thep.lu.se/
2107 24 Mar 06 nicklas 8
2107 24 Mar 06 nicklas 9   BASE is free software; you can redistribute it and/or
2107 24 Mar 06 nicklas 10   modify it under the terms of the GNU General Public License
4476 05 Sep 08 jari 11   as published by the Free Software Foundation; either version 3
2107 24 Mar 06 nicklas 12   of the License, or (at your option) any later version.
2107 24 Mar 06 nicklas 13
2107 24 Mar 06 nicklas 14   BASE is distributed in the hope that it will be useful,
2107 24 Mar 06 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
2107 24 Mar 06 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2107 24 Mar 06 nicklas 17   GNU General Public License for more details.
2107 24 Mar 06 nicklas 18
2107 24 Mar 06 nicklas 19   You should have received a copy of the GNU General Public License
4511 11 Sep 08 jari 20   along with BASE. If not, see <http://www.gnu.org/licenses/>.
2107 24 Mar 06 nicklas 21   ------------------------------------------------------------------
2107 24 Mar 06 nicklas 22
2107 24 Mar 06 nicklas 23   @author Nicklas
2107 24 Mar 06 nicklas 24   @version 2.0
2107 24 Mar 06 nicklas 25 --%>
5426 24 Sep 10 nicklas 26 <%@ page pageEncoding="UTF-8" session="false"
2107 24 Mar 06 nicklas 27   import="net.sf.basedb.core.SessionControl"
2107 24 Mar 06 nicklas 28   import="net.sf.basedb.core.DbControl"
2107 24 Mar 06 nicklas 29   import="net.sf.basedb.core.Item"
2107 24 Mar 06 nicklas 30   import="net.sf.basedb.core.Formula"
5208 08 Jan 10 nicklas 31   import="net.sf.basedb.core.Type"
4918 04 May 09 nicklas 32   import="net.sf.basedb.core.IntensityTransform"
2107 24 Mar 06 nicklas 33   import="net.sf.basedb.core.ItemQuery"
2107 24 Mar 06 nicklas 34   import="net.sf.basedb.core.ItemResultIterator"
2107 24 Mar 06 nicklas 35   import="net.sf.basedb.core.ItemContext"
3552 06 Jul 07 martin 36   import="net.sf.basedb.core.Nameable"
2107 24 Mar 06 nicklas 37   import="net.sf.basedb.core.Permission"
2107 24 Mar 06 nicklas 38   import="net.sf.basedb.core.RawDataTypes"
2107 24 Mar 06 nicklas 39   import="net.sf.basedb.core.RawDataType"
2107 24 Mar 06 nicklas 40   import="net.sf.basedb.core.PluginDefinition"
2107 24 Mar 06 nicklas 41   import="net.sf.basedb.core.plugin.GuiContext"
2107 24 Mar 06 nicklas 42   import="net.sf.basedb.core.plugin.Plugin"
2107 24 Mar 06 nicklas 43   import="net.sf.basedb.util.Enumeration"
3552 06 Jul 07 martin 44   import="net.sf.basedb.util.ShareableUtil"
2107 24 Mar 06 nicklas 45   import="net.sf.basedb.clients.web.Base"
2107 24 Mar 06 nicklas 46   import="net.sf.basedb.clients.web.ModeInfo"
2401 21 Jun 06 martin 47   import="net.sf.basedb.clients.web.PermissionUtil"
2107 24 Mar 06 nicklas 48   import="net.sf.basedb.clients.web.util.HTML"
2753 20 Oct 06 nicklas 49   import="net.sf.basedb.util.Values"
4698 10 Dec 08 nicklas 50   import="net.sf.basedb.util.formatter.Formatter"
4698 10 Dec 08 nicklas 51   import="net.sf.basedb.clients.web.formatter.FormatterFactory"
4879 03 Apr 09 nicklas 52   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
4879 03 Apr 09 nicklas 53   import="net.sf.basedb.clients.web.extensions.JspContext"
4879 03 Apr 09 nicklas 54   import="net.sf.basedb.clients.web.extensions.renderer.PrefixSuffixRenderer"
7604 25 Feb 19 nicklas 55   import="net.sf.basedb.clients.web.extensions.toolbar.ButtonAction" 
4879 03 Apr 09 nicklas 56   import="net.sf.basedb.clients.web.extensions.toolbar.ToolbarUtil"
7604 25 Feb 19 nicklas 57   import="net.sf.basedb.clients.web.extensions.list.ListColumnAction"
6040 30 Mar 12 nicklas 58   import="net.sf.basedb.clients.web.extensions.list.ListColumnUtil"
4879 03 Apr 09 nicklas 59   import="net.sf.basedb.util.extensions.ExtensionsInvoker"
4698 10 Dec 08 nicklas 60   import="java.util.Date"
3552 06 Jul 07 martin 61   import="java.util.Iterator"
2107 24 Mar 06 nicklas 62   import="java.util.List"
2107 24 Mar 06 nicklas 63   import="java.util.Map"
2107 24 Mar 06 nicklas 64 %>
2107 24 Mar 06 nicklas 65 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
2107 24 Mar 06 nicklas 66 <%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
4879 03 Apr 09 nicklas 67 <%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
2107 24 Mar 06 nicklas 68 <%!
2107 24 Mar 06 nicklas 69   private static final Item itemType = Item.FORMULA;
2107 24 Mar 06 nicklas 70   private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.LIST);
2107 24 Mar 06 nicklas 71   
2107 24 Mar 06 nicklas 72   private static final Enumeration<String, String> types = new Enumeration<String, String>();
2107 24 Mar 06 nicklas 73   private static final Enumeration<String, String> parsers = new Enumeration<String, String>();
3558 16 Jul 07 nicklas 74   private static final Enumeration<String, String> avgMethods = new Enumeration<String, String>();
4918 04 May 09 nicklas 75   private static final Enumeration<String, String> transforms = new Enumeration<String, String>();
2107 24 Mar 06 nicklas 76   private static final Enumeration<String, String> rawEnumeration = new Enumeration<String, String>();
5208 08 Jan 10 nicklas 77   private static final Enumeration<String, String> valueTypes = new Enumeration<String, String>();
2107 24 Mar 06 nicklas 78   static
2107 24 Mar 06 nicklas 79   {
2107 24 Mar 06 nicklas 80     for (Formula.Type t : Formula.Type.values())
2107 24 Mar 06 nicklas 81     {
2107 24 Mar 06 nicklas 82       types.add(Integer.toString(t.getValue()), HTML.encodeTags(t.toString()));
2107 24 Mar 06 nicklas 83     }
5208 08 Jan 10 nicklas 84     valueTypes.add("", "- unknown -");
5208 08 Jan 10 nicklas 85     for (Type v : Type.values())
5208 08 Jan 10 nicklas 86     {
5208 08 Jan 10 nicklas 87       valueTypes.add(Integer.toString(v.getValue()), v.toString());
5208 08 Jan 10 nicklas 88     }
2107 24 Mar 06 nicklas 89     for (Formula.Parser p : Formula.Parser.values())
2107 24 Mar 06 nicklas 90     {
2107 24 Mar 06 nicklas 91       parsers.add(Integer.toString(p.getValue()), HTML.encodeTags(p.toString()));
2107 24 Mar 06 nicklas 92     }
3558 16 Jul 07 nicklas 93     for (Formula.AverageMethod m : Formula.AverageMethod.values())
3558 16 Jul 07 nicklas 94     {
3558 16 Jul 07 nicklas 95       avgMethods.add(Integer.toString(m.getValue()), HTML.encodeTags(m.toString()));
3558 16 Jul 07 nicklas 96     }
4918 04 May 09 nicklas 97     transforms.add("", "- any -");
4918 04 May 09 nicklas 98     for (IntensityTransform t : IntensityTransform.values())
4918 04 May 09 nicklas 99     {
4918 04 May 09 nicklas 100       transforms.add(Integer.toString(t.getValue()), HTML.encodeTags(t.toString()));
4918 04 May 09 nicklas 101     }
4275 08 May 08 nicklas 102     rawEnumeration.add("", "- none -");
2107 24 Mar 06 nicklas 103     for (RawDataType rdt : RawDataTypes.getRawDataTypes())
2107 24 Mar 06 nicklas 104     {
2107 24 Mar 06 nicklas 105       rawEnumeration.add(rdt.getId(), HTML.encodeTags(rdt.getName()));
2107 24 Mar 06 nicklas 106     }
5574 18 Feb 11 nicklas 107     rawEnumeration.sortValues();
2107 24 Mar 06 nicklas 108   }
2107 24 Mar 06 nicklas 109 %>
2107 24 Mar 06 nicklas 110 <%
2107 24 Mar 06 nicklas 111 final SessionControl sc = Base.getExistingSessionControl(pageContext, Permission.DENIED, itemType);
2107 24 Mar 06 nicklas 112 final String ID = sc.getId();
2107 24 Mar 06 nicklas 113 final boolean createPermission = sc.hasPermission(Permission.CREATE, itemType);
2107 24 Mar 06 nicklas 114 final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
2107 24 Mar 06 nicklas 115
2107 24 Mar 06 nicklas 116 final ModeInfo mode = ModeInfo.get(request.getParameter("mode"));
2107 24 Mar 06 nicklas 117 final String callback = request.getParameter("callback");
2107 24 Mar 06 nicklas 118 final String title = mode.generateTitle("formula", "formulas");
7954 12 May 21 nicklas 119 final DbControl dc = sc.newDbControl(":List "+itemType);
2107 24 Mar 06 nicklas 120 ItemResultIterator<Formula> formulas = null;
2107 24 Mar 06 nicklas 121 try
2107 24 Mar 06 nicklas 122 {
4698 10 Dec 08 nicklas 123   Formatter<Date> dateFormatter = FormatterFactory.getDateFormatter(sc);
2107 24 Mar 06 nicklas 124   Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
7914 23 Feb 21 nicklas 125   JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, guiContext, null);
2107 24 Mar 06 nicklas 126   try
2107 24 Mar 06 nicklas 127   {
7914 23 Feb 21 nicklas 128     final ItemQuery<Formula> query = Base.getConfiguredQuery(dc, cc, jspContext, true, Formula.getQuery(), mode);
2107 24 Mar 06 nicklas 129     formulas = query.iterate(dc);
2107 24 Mar 06 nicklas 130   }
2107 24 Mar 06 nicklas 131   catch (Throwable t)
2107 24 Mar 06 nicklas 132   {
4275 08 May 08 nicklas 133     t.printStackTrace();
2107 24 Mar 06 nicklas 134     cc.setMessage(t.getMessage());
2107 24 Mar 06 nicklas 135   }
2107 24 Mar 06 nicklas 136   int numListed = 0;
7604 25 Feb 19 nicklas 137   ExtensionsInvoker<ButtonAction> invoker = ToolbarUtil.useExtensions(jspContext);
7604 25 Feb 19 nicklas 138   ExtensionsInvoker<ListColumnAction<Formula,?>> columnsInvoker = ListColumnUtil.useExtensions(jspContext);
2107 24 Mar 06 nicklas 139   %>
6311 23 Aug 13 nicklas 140   <base:page title="<%=title==null ? "Formulas" : title%>" type="<%=mode.getPageType()%>" id="list-page">
6311 23 Aug 13 nicklas 141   <base:head scripts="table.js,~formulas.js" styles="table.css,toolbar.css">
4879 03 Apr 09 nicklas 142     <ext:scripts context="<%=jspContext%>" />
4879 03 Apr 09 nicklas 143     <ext:stylesheets context="<%=jspContext%>" />
2107 24 Mar 06 nicklas 144   </base:head>
2107 24 Mar 06 nicklas 145   
2107 24 Mar 06 nicklas 146   <base:body>
5952 10 Feb 12 nicklas 147     <h1><%=title==null ? "Formulas" : title%></h1>
5952 10 Feb 12 nicklas 148     <div class="content">
2107 24 Mar 06 nicklas 149     <tbl:table 
2107 24 Mar 06 nicklas 150       id="formulas" 
2107 24 Mar 06 nicklas 151       columns="<%=cc.getSetting("columns")%>"
2107 24 Mar 06 nicklas 152       sortby="<%=cc.getSortProperty()%>" 
2107 24 Mar 06 nicklas 153       direction="<%=cc.getSortDirection()%>"
2107 24 Mar 06 nicklas 154       action="index.jsp"
2107 24 Mar 06 nicklas 155       sc="<%=sc%>"
2107 24 Mar 06 nicklas 156       item="<%=itemType%>"
6698 30 Jan 15 nicklas 157       filterrows="<%=cc.getFilterRows()%>"
5952 10 Feb 12 nicklas 158       subclass="fulltable"
7982 14 Jun 21 nicklas 159       stickyheaders="<%=cc.getSetting("columns.sticky", "name")%>"
2107 24 Mar 06 nicklas 160       >
2107 24 Mar 06 nicklas 161       <tbl:hidden 
2107 24 Mar 06 nicklas 162         name="mode" 
2107 24 Mar 06 nicklas 163         value="<%=mode.getName()%>" 
2107 24 Mar 06 nicklas 164       />
2107 24 Mar 06 nicklas 165       <tbl:hidden 
2107 24 Mar 06 nicklas 166         name="callback" 
2107 24 Mar 06 nicklas 167         value="<%=callback%>" 
2107 24 Mar 06 nicklas 168         skip="<%=callback == null%>" 
2107 24 Mar 06 nicklas 169       />
2107 24 Mar 06 nicklas 170       <tbl:columndef 
2107 24 Mar 06 nicklas 171         id="name"
2107 24 Mar 06 nicklas 172         property="name"
2107 24 Mar 06 nicklas 173         datatype="string"
2107 24 Mar 06 nicklas 174         title="Name"
2107 24 Mar 06 nicklas 175         sortable="true" 
2107 24 Mar 06 nicklas 176         filterable="true"
2107 24 Mar 06 nicklas 177         exportable="true"
2107 24 Mar 06 nicklas 178         show="always" 
2107 24 Mar 06 nicklas 179       />
2107 24 Mar 06 nicklas 180       <tbl:columndef 
4332 12 Jun 08 martin 181         id="id"
4387 11 Aug 08 nicklas 182         clazz="uniquecol"
4332 12 Jun 08 martin 183         property="id"
4332 12 Jun 08 martin 184         datatype="int"
4332 12 Jun 08 martin 185         title="ID"
4332 12 Jun 08 martin 186         sortable="true"
4332 12 Jun 08 martin 187         filterable="true"
4332 12 Jun 08 martin 188         exportable="true"
4332 12 Jun 08 martin 189       />
4332 12 Jun 08 martin 190       <tbl:columndef 
4698 10 Dec 08 nicklas 191         id="entryDate"
4698 10 Dec 08 nicklas 192         property="entryDate"
4698 10 Dec 08 nicklas 193         datatype="date"
4698 10 Dec 08 nicklas 194         title="Registered"
4698 10 Dec 08 nicklas 195         sortable="true" 
4698 10 Dec 08 nicklas 196         filterable="true"
4698 10 Dec 08 nicklas 197         exportable="true"
4698 10 Dec 08 nicklas 198         formatter="<%=dateFormatter%>"
4698 10 Dec 08 nicklas 199       />
4698 10 Dec 08 nicklas 200       <tbl:columndef 
2107 24 Mar 06 nicklas 201         id="type"
2107 24 Mar 06 nicklas 202         property="type"
2107 24 Mar 06 nicklas 203         datatype="int"
2107 24 Mar 06 nicklas 204         enumeration="<%=types%>"
2107 24 Mar 06 nicklas 205         title="Type"
2107 24 Mar 06 nicklas 206         sortable="true" 
2107 24 Mar 06 nicklas 207         filterable="true"
2107 24 Mar 06 nicklas 208         exportable="true"
2107 24 Mar 06 nicklas 209       />
2107 24 Mar 06 nicklas 210       <tbl:columndef 
2107 24 Mar 06 nicklas 211         id="parser"
2107 24 Mar 06 nicklas 212         property="parser"
2107 24 Mar 06 nicklas 213         datatype="int"
2107 24 Mar 06 nicklas 214         enumeration="<%=parsers%>"
2107 24 Mar 06 nicklas 215         title="Parser"
2107 24 Mar 06 nicklas 216         sortable="true" 
2107 24 Mar 06 nicklas 217         filterable="true"
2107 24 Mar 06 nicklas 218         exportable="true"
2107 24 Mar 06 nicklas 219       />
2107 24 Mar 06 nicklas 220       <tbl:columndef 
5208 08 Jan 10 nicklas 221         id="valueType"
5208 08 Jan 10 nicklas 222         property="valueType"
5208 08 Jan 10 nicklas 223         datatype="int"
5208 08 Jan 10 nicklas 224         enumeration="<%=valueTypes%>"
5208 08 Jan 10 nicklas 225         title="Value type"
5208 08 Jan 10 nicklas 226         sortable="true" 
5208 08 Jan 10 nicklas 227         filterable="true"
5208 08 Jan 10 nicklas 228         exportable="true"
5208 08 Jan 10 nicklas 229       />
5208 08 Jan 10 nicklas 230       <tbl:columndef 
3558 16 Jul 07 nicklas 231         id="averageMethod"
3558 16 Jul 07 nicklas 232         property="averageMethod"
3558 16 Jul 07 nicklas 233         datatype="int"
3558 16 Jul 07 nicklas 234         enumeration="<%=avgMethods%>"
3558 16 Jul 07 nicklas 235         title="Avg. method"
3558 16 Jul 07 nicklas 236         sortable="true" 
3558 16 Jul 07 nicklas 237         filterable="true"
3558 16 Jul 07 nicklas 238         exportable="true"
3558 16 Jul 07 nicklas 239       />
3558 16 Jul 07 nicklas 240       <tbl:columndef 
4918 04 May 09 nicklas 241         id="sourceIntensityTransform"
4918 04 May 09 nicklas 242         property="sourceIntensityTransform"
4918 04 May 09 nicklas 243         datatype="int"
4918 04 May 09 nicklas 244         enumeration="<%=transforms%>"
4918 04 May 09 nicklas 245         title="Source intensity transform"
4918 04 May 09 nicklas 246         sortable="true" 
4918 04 May 09 nicklas 247         filterable="true"
4918 04 May 09 nicklas 248         exportable="true"
4918 04 May 09 nicklas 249       />
4918 04 May 09 nicklas 250       <tbl:columndef 
4918 04 May 09 nicklas 251         id="resultIntensityTransform"
4918 04 May 09 nicklas 252         property="resultIntensityTransform"
4918 04 May 09 nicklas 253         datatype="int"
4918 04 May 09 nicklas 254         enumeration="<%=transforms%>"
4918 04 May 09 nicklas 255         title="Result intensity transform"
4918 04 May 09 nicklas 256         sortable="true" 
4918 04 May 09 nicklas 257         filterable="true"
4918 04 May 09 nicklas 258         exportable="true"
4918 04 May 09 nicklas 259       />
4918 04 May 09 nicklas 260       <tbl:columndef 
2107 24 Mar 06 nicklas 261         id="rawDataType"
2107 24 Mar 06 nicklas 262         property="rawDataType"
2107 24 Mar 06 nicklas 263         datatype="string"
2107 24 Mar 06 nicklas 264         enumeration="<%=rawEnumeration%>"
2107 24 Mar 06 nicklas 265         title="Raw data type"
2107 24 Mar 06 nicklas 266         sortable="true" 
2107 24 Mar 06 nicklas 267         filterable="true"
2107 24 Mar 06 nicklas 268         exportable="true"
2107 24 Mar 06 nicklas 269       />
2107 24 Mar 06 nicklas 270       <tbl:columndef 
2107 24 Mar 06 nicklas 271         id="channels"
2107 24 Mar 06 nicklas 272         property="channels"
2107 24 Mar 06 nicklas 273         datatype="int"
2107 24 Mar 06 nicklas 274         title="Channels"
2107 24 Mar 06 nicklas 275         sortable="true" 
2107 24 Mar 06 nicklas 276         filterable="true"
2107 24 Mar 06 nicklas 277         exportable="true"
2107 24 Mar 06 nicklas 278       />
2107 24 Mar 06 nicklas 279       <tbl:columndef 
2107 24 Mar 06 nicklas 280         id="formulas"
2107 24 Mar 06 nicklas 281         property="formulas"
2107 24 Mar 06 nicklas 282         datatype="string"
2107 24 Mar 06 nicklas 283         title="Formulas"
2107 24 Mar 06 nicklas 284         sortable="false" 
2107 24 Mar 06 nicklas 285         filterable="false"
2107 24 Mar 06 nicklas 286         exportable="true"
2107 24 Mar 06 nicklas 287       />
2107 24 Mar 06 nicklas 288       <tbl:columndef 
2733 16 Oct 06 nicklas 289         id="useColors"
4620 31 Oct 08 nicklas 290         property="coloring#usingColors"
2733 16 Oct 06 nicklas 291         datatype="boolean"
2733 16 Oct 06 nicklas 292         title="Use colors"
2733 16 Oct 06 nicklas 293         sortable="true" 
2733 16 Oct 06 nicklas 294         filterable="true"
5319 20 Apr 10 nicklas 295         exportable="true"
2733 16 Oct 06 nicklas 296       />
2733 16 Oct 06 nicklas 297       <tbl:columndef 
2733 16 Oct 06 nicklas 298         id="logarithmic"
4620 31 Oct 08 nicklas 299         property="coloring#logarithmic"
2733 16 Oct 06 nicklas 300         datatype="boolean"
2733 16 Oct 06 nicklas 301         title="Logarithmic"
2733 16 Oct 06 nicklas 302         sortable="true" 
2733 16 Oct 06 nicklas 303         filterable="true"
4620 31 Oct 08 nicklas 304         exportable="true"
2733 16 Oct 06 nicklas 305       />
2733 16 Oct 06 nicklas 306       <tbl:columndef 
2733 16 Oct 06 nicklas 307         id="minValue"
4620 31 Oct 08 nicklas 308         property="coloring#minValue"
2733 16 Oct 06 nicklas 309         datatype="float"
2733 16 Oct 06 nicklas 310         title="Min value"
2733 16 Oct 06 nicklas 311         sortable="true" 
2733 16 Oct 06 nicklas 312         filterable="true"
5319 20 Apr 10 nicklas 313         exportable="true"
2733 16 Oct 06 nicklas 314       />
2733 16 Oct 06 nicklas 315       <tbl:columndef 
2733 16 Oct 06 nicklas 316         id="midValue"
4620 31 Oct 08 nicklas 317         property="coloring#midValue"
2733 16 Oct 06 nicklas 318         datatype="float"
2733 16 Oct 06 nicklas 319         title="Mid value"
2733 16 Oct 06 nicklas 320         sortable="true" 
2733 16 Oct 06 nicklas 321         filterable="true"
5319 20 Apr 10 nicklas 322         exportable="true"
2733 16 Oct 06 nicklas 323       />
2733 16 Oct 06 nicklas 324       <tbl:columndef 
2733 16 Oct 06 nicklas 325         id="maxValue"
4620 31 Oct 08 nicklas 326         property="coloring#maxValue"
2733 16 Oct 06 nicklas 327         datatype="float"
2733 16 Oct 06 nicklas 328         title="Max value"
2733 16 Oct 06 nicklas 329         sortable="true" 
2733 16 Oct 06 nicklas 330         filterable="true"
5319 20 Apr 10 nicklas 331         exportable="true"
2733 16 Oct 06 nicklas 332       />
2733 16 Oct 06 nicklas 333       <tbl:columndef 
2107 24 Mar 06 nicklas 334         id="owner"
2107 24 Mar 06 nicklas 335         property="owner.name"
2107 24 Mar 06 nicklas 336         datatype="string"
2107 24 Mar 06 nicklas 337         title="Owner"
2107 24 Mar 06 nicklas 338         sortable="true" 
2107 24 Mar 06 nicklas 339         filterable="true"
2107 24 Mar 06 nicklas 340         exportable="true"
2107 24 Mar 06 nicklas 341       />
2107 24 Mar 06 nicklas 342       <tbl:columndef 
2107 24 Mar 06 nicklas 343         id="description"
2107 24 Mar 06 nicklas 344         property="description"
2107 24 Mar 06 nicklas 345         datatype="string"
2107 24 Mar 06 nicklas 346         title="Description" 
2107 24 Mar 06 nicklas 347         sortable="true" 
2107 24 Mar 06 nicklas 348         filterable="true" 
2107 24 Mar 06 nicklas 349         exportable="true"
2107 24 Mar 06 nicklas 350       />
2401 21 Jun 06 martin 351       <tbl:columndef
2401 21 Jun 06 martin 352         id="permission"
2401 21 Jun 06 martin 353         title="Permission"
2401 21 Jun 06 martin 354       />
3552 06 Jul 07 martin 355       <tbl:columndef
3552 06 Jul 07 martin 356         id="sharedTo"
3552 06 Jul 07 martin 357         title="Shared to"
5165 28 Oct 09 nicklas 358         filterable="true"
5165 28 Oct 09 nicklas 359         filterproperty="!sharedTo.name"
5165 28 Oct 09 nicklas 360         datatype="string"
3552 06 Jul 07 martin 361       />
6040 30 Mar 12 nicklas 362       <tbl:columndef 
6040 30 Mar 12 nicklas 363         id="xt-columns" 
6040 30 Mar 12 nicklas 364         extensions="<%=columnsInvoker%>" 
6040 30 Mar 12 nicklas 365         jspcontext="<%=jspContext%>" 
6040 30 Mar 12 nicklas 366       />
6604 18 Nov 14 nicklas 367       <div class="panelgroup bg-filled-50 bottomborder">
5952 10 Feb 12 nicklas 368         <tbl:toolbar
5952 10 Feb 12 nicklas 369           subclass="bottomborder"
5952 10 Feb 12 nicklas 370           visible="<%=mode.hasToolbar()%>"
5952 10 Feb 12 nicklas 371           >
5952 10 Feb 12 nicklas 372           <tbl:button 
6311 23 Aug 13 nicklas 373             id="btnNewItem"
5952 10 Feb 12 nicklas 374             disabled="<%=!createPermission%>" 
5952 10 Feb 12 nicklas 375             image="new.png" 
5952 10 Feb 12 nicklas 376             title="New&hellip;" 
5952 10 Feb 12 nicklas 377             tooltip="<%=createPermission ? "Create new formula" : "You do not have permission to create formulas"%>" 
5952 10 Feb 12 nicklas 378           />
5952 10 Feb 12 nicklas 379           <tbl:button 
6311 23 Aug 13 nicklas 380             id="btnDeleteItems"
5952 10 Feb 12 nicklas 381             image="delete.png"
5952 10 Feb 12 nicklas 382             title="Delete" 
5952 10 Feb 12 nicklas 383             tooltip="Delete the selected items" 
5952 10 Feb 12 nicklas 384           />
5952 10 Feb 12 nicklas 385           <tbl:button 
6311 23 Aug 13 nicklas 386             id="btnRestoreItems"
5952 10 Feb 12 nicklas 387             image="restore.png"
5952 10 Feb 12 nicklas 388             title="Restore" 
5952 10 Feb 12 nicklas 389             tooltip="Restore the selected (deleted) items"
5952 10 Feb 12 nicklas 390           />
5952 10 Feb 12 nicklas 391           <tbl:button 
6311 23 Aug 13 nicklas 392             id="btnShareItems"
5952 10 Feb 12 nicklas 393             image="share.png"
5952 10 Feb 12 nicklas 394             title="Share&hellip;" 
5952 10 Feb 12 nicklas 395             tooltip="Share the selected items"
5952 10 Feb 12 nicklas 396           />
5952 10 Feb 12 nicklas 397           <tbl:button 
6311 23 Aug 13 nicklas 398             id="btnSetOwner"
5952 10 Feb 12 nicklas 399             image="take_ownership.png"
5952 10 Feb 12 nicklas 400             title="Set owner&hellip;"
5952 10 Feb 12 nicklas 401             tooltip="Change owner of the selected items"
5952 10 Feb 12 nicklas 402           />
5952 10 Feb 12 nicklas 403           <tbl:button 
6311 23 Aug 13 nicklas 404             id="btnColumns"
5952 10 Feb 12 nicklas 405             image="columns.png" 
5952 10 Feb 12 nicklas 406             title="Columns&hellip;" 
5952 10 Feb 12 nicklas 407             tooltip="Show, hide and re-order columns" 
5952 10 Feb 12 nicklas 408           />
5952 10 Feb 12 nicklas 409           <tbl:button 
6311 23 Aug 13 nicklas 410             id="btnImport"
6311 23 Aug 13 nicklas 411             data-plugin-type="IMPORT"
5952 10 Feb 12 nicklas 412             image="import.png" 
5952 10 Feb 12 nicklas 413             title="Import&hellip;" 
5952 10 Feb 12 nicklas 414             tooltip="Import data" 
5952 10 Feb 12 nicklas 415             visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
5952 10 Feb 12 nicklas 416           />
5952 10 Feb 12 nicklas 417           <tbl:button 
6311 23 Aug 13 nicklas 418             id="btnExport"
6311 23 Aug 13 nicklas 419             data-plugin-type="EXPORT"
5952 10 Feb 12 nicklas 420             image="export.png" 
5952 10 Feb 12 nicklas 421             title="Export&hellip;" 
5952 10 Feb 12 nicklas 422             tooltip="Export data" 
5952 10 Feb 12 nicklas 423             visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
5952 10 Feb 12 nicklas 424           />
5952 10 Feb 12 nicklas 425           <tbl:button 
6311 23 Aug 13 nicklas 426             id="btnRunPlugin"
6311 23 Aug 13 nicklas 427             data-plugin-type="OTHER"
5952 10 Feb 12 nicklas 428             image="runplugin.png" 
5952 10 Feb 12 nicklas 429             title="Run plugin&hellip;" 
5952 10 Feb 12 nicklas 430             tooltip="Run a plugin" 
5952 10 Feb 12 nicklas 431             visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
5952 10 Feb 12 nicklas 432           />
5952 10 Feb 12 nicklas 433           <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 
7604 25 Feb 19 nicklas 434             wrapper="<%=new PrefixSuffixRenderer<ButtonAction>(jspContext, "<td>", "</td>") %>"/>
5952 10 Feb 12 nicklas 435         </tbl:toolbar>
5952 10 Feb 12 nicklas 436         <tbl:panel>
6182 23 Oct 12 nicklas 437           <tbl:presetselector />
5952 10 Feb 12 nicklas 438           <tbl:navigator
5952 10 Feb 12 nicklas 439             page="<%=cc.getPage()%>" 
5952 10 Feb 12 nicklas 440             rowsperpage="<%=cc.getRowsPerPage()%>" 
5952 10 Feb 12 nicklas 441             totalrows="<%=formulas == null ? 0 : formulas.getTotalCount()%>" 
5952 10 Feb 12 nicklas 442             visible="<%=mode.hasNavigator()%>"
5952 10 Feb 12 nicklas 443           />
5952 10 Feb 12 nicklas 444         </tbl:panel>
5952 10 Feb 12 nicklas 445       </div>
2107 24 Mar 06 nicklas 446       <tbl:data>
5948 08 Feb 12 nicklas 447         <tbl:headers>
5948 08 Feb 12 nicklas 448           <tbl:headerrow>
7943 04 May 21 nicklas 449             <tbl:header clazz="row-index bg-filled-100" />
5948 08 Feb 12 nicklas 450             <tbl:columnheaders />
5948 08 Feb 12 nicklas 451           </tbl:headerrow>
6698 30 Jan 15 nicklas 452           <%
6698 30 Jan 15 nicklas 453           int numFilters = cc.getNumPropertyFilters();
6698 30 Jan 15 nicklas 454           int numRows = cc.getFilterRows();
6698 30 Jan 15 nicklas 455           for (int filterNo = 0; filterNo < numRows; filterNo++)
6698 30 Jan 15 nicklas 456           {
6698 30 Jan 15 nicklas 457             boolean lastRow = filterNo == numRows-1;
6698 30 Jan 15 nicklas 458             %>
6698 30 Jan 15 nicklas 459             <tbl:headerrow>
7943 04 May 21 nicklas 460               <tbl:header subclass="row-index bg-filled-100">
7943 04 May 21 nicklas 461                 <div class="index-<%=mode.getName()%>">
7943 04 May 21 nicklas 462                   <div class="index"></div>
7943 04 May 21 nicklas 463                   <div class="check">
7943 04 May 21 nicklas 464                     <base:icon 
7943 04 May 21 nicklas 465                       subclass="link table-check"
7943 04 May 21 nicklas 466                       image="check_uncheck.png" 
7943 04 May 21 nicklas 467                       tooltip="Toggle all (use CTRL, ALT or SHIFT to check/uncheck)" 
7943 04 May 21 nicklas 468                       visible="<%=lastRow && mode.hasCheck()%>"
7943 04 May 21 nicklas 469                     />
7943 04 May 21 nicklas 470                   </div>
7943 04 May 21 nicklas 471                   <div class="icons">
7943 04 May 21 nicklas 472                     <base:icon
7943 04 May 21 nicklas 473                       subclass="link table-filter-row-action"
7943 04 May 21 nicklas 474                       image="add.png"
7943 04 May 21 nicklas 475                       tooltip="Add extra filter row"
7943 04 May 21 nicklas 476                       visible="<%=lastRow%>"
7943 04 May 21 nicklas 477                     /><base:icon
7943 04 May 21 nicklas 478                       subclass="link table-filter-row-action"
7943 04 May 21 nicklas 479                       image="remove.png"
7943 04 May 21 nicklas 480                       tooltip="Remove this filter row"
7943 04 May 21 nicklas 481                       visible="<%=numRows > 1 || numFilters > 0 %>"
7943 04 May 21 nicklas 482                       data-remove-row="<%=filterNo%>"
7943 04 May 21 nicklas 483                     />
7943 04 May 21 nicklas 484                   </div>
7943 04 May 21 nicklas 485                 </div>
6698 30 Jan 15 nicklas 486               </tbl:header>
6698 30 Jan 15 nicklas 487               <tbl:propertyfilter row="<%=filterNo%>" />
6698 30 Jan 15 nicklas 488             </tbl:headerrow>
6698 30 Jan 15 nicklas 489             <%
6698 30 Jan 15 nicklas 490           }
6698 30 Jan 15 nicklas 491           %>
7913 22 Feb 21 nicklas 492           <tbl:columnsubtitles />
5948 08 Feb 12 nicklas 493         </tbl:headers>
5948 08 Feb 12 nicklas 494         <tbl:rows>
2107 24 Mar 06 nicklas 495           <%
5952 10 Feb 12 nicklas 496           if (cc.getMessage() != null)
5952 10 Feb 12 nicklas 497           {
5952 10 Feb 12 nicklas 498             %>
6604 18 Nov 14 nicklas 499             <tbl:panel subclass="bg-filled-50">
5952 10 Feb 12 nicklas 500               <div class="messagecontainer error"><%=cc.getMessage()%></div>
5952 10 Feb 12 nicklas 501             </tbl:panel>
5952 10 Feb 12 nicklas 502             <%
5952 10 Feb 12 nicklas 503             cc.setMessage(null);
5952 10 Feb 12 nicklas 504           }
2107 24 Mar 06 nicklas 505           int index = cc.getPage()*cc.getRowsPerPage();
2107 24 Mar 06 nicklas 506           int selectedItemId = cc.getId();
2107 24 Mar 06 nicklas 507           if (formulas != null)
2107 24 Mar 06 nicklas 508           {
2107 24 Mar 06 nicklas 509             while (formulas.hasNext())
2107 24 Mar 06 nicklas 510             {
2107 24 Mar 06 nicklas 511               Formula item = formulas.next();
2107 24 Mar 06 nicklas 512               RawDataType rawDataType = item.getRawDataType();
2107 24 Mar 06 nicklas 513               List<String> expressions = item.getFormulas();
2107 24 Mar 06 nicklas 514               int itemId = item.getId();
6221 10 Jan 13 nicklas 515               
6221 10 Jan 13 nicklas 516               
4003 26 Nov 07 nicklas 517               boolean deletePermission = item.hasPermission(Permission.DELETE);
2437 28 Jun 06 nicklas 518               boolean sharePermission = item.hasPermission(Permission.SET_PERMISSION);
2507 09 Aug 06 martin 519               boolean writePermission = item.hasPermission(Permission.WRITE);
2507 09 Aug 06 martin 520               String tooltip = mode.isSelectionMode() ?
2507 09 Aug 06 martin 521                   "Select this item" : "View this item" + (writePermission ? " (use CTRL, ALT or SHIFT to edit)" : "");
2107 24 Mar 06 nicklas 522               String name = HTML.encodeTags(item.getName());
2107 24 Mar 06 nicklas 523               index++;
2107 24 Mar 06 nicklas 524               numListed++;
2107 24 Mar 06 nicklas 525               %>
2107 24 Mar 06 nicklas 526               <tbl:row>
7943 04 May 21 nicklas 527                 <tbl:header clazz="row-index bg-filled-100">
7943 04 May 21 nicklas 528                   <div class="index-<%=mode.getName()%>">
7943 04 May 21 nicklas 529                     <div class="index <%=index>999?"index-smaller":""%>"><%=index%></div>
7943 04 May 21 nicklas 530                     <div class="check">
7943 04 May 21 nicklas 531                       <base:input
7943 04 May 21 nicklas 532                         type="checkbox" 
7943 04 May 21 nicklas 533                         name="<%=itemId%>" 
7943 04 May 21 nicklas 534                         value="<%=itemId%>" 
7943 04 May 21 nicklas 535                         title="<%=name%>" 
7943 04 May 21 nicklas 536                         checked="<%=cc.getSelected().contains(itemId)%>"
7943 04 May 21 nicklas 537                         visible="<%=mode.hasCheck()%>"
7943 04 May 21 nicklas 538                       />
7943 04 May 21 nicklas 539                       <base:input 
7943 04 May 21 nicklas 540                         type="radio" 
7943 04 May 21 nicklas 541                         name="item_id" 
7943 04 May 21 nicklas 542                         value="<%=itemId%>" 
7943 04 May 21 nicklas 543                         title="<%=name%>" 
7943 04 May 21 nicklas 544                         checked="<%=selectedItemId == itemId%>"
7943 04 May 21 nicklas 545                         visible="<%=mode.hasRadio()%>"
7943 04 May 21 nicklas 546                       />
7943 04 May 21 nicklas 547                     </div>
7943 04 May 21 nicklas 548                     <div class="icons">
7943 04 May 21 nicklas 549                       <base:icon 
7943 04 May 21 nicklas 550                         image="deleted.png"
7943 04 May 21 nicklas 551                         id="<%="delete."+itemId %>"
7943 04 May 21 nicklas 552                         subclass="<%=deletePermission ? "table-delete-item" : "disabled" %>"
7943 04 May 21 nicklas 553                         data-item-id="<%=itemId%>"
7943 04 May 21 nicklas 554                         tooltip="This item has been scheduled for deletion" 
7943 04 May 21 nicklas 555                         visible="<%=item.isRemoved()%>"
7943 04 May 21 nicklas 556                       /><base:icon 
7943 04 May 21 nicklas 557                         image="shared.png" 
7943 04 May 21 nicklas 558                         id="<%="share."+itemId %>"
7943 04 May 21 nicklas 559                         subclass="<%=sharePermission ? "table-share-item" : "disabled" %>"
7943 04 May 21 nicklas 560                         data-item-id="<%=itemId%>"
7943 04 May 21 nicklas 561                         tooltip="This item is shared to other users, groups and/or projects" 
7943 04 May 21 nicklas 562                         visible="<%=item.isShared()%>"
7943 04 May 21 nicklas 563                       />
7943 04 May 21 nicklas 564                     </div>
7943 04 May 21 nicklas 565                   </div>
7943 04 May 21 nicklas 566                 </tbl:header>
6311 23 Aug 13 nicklas 567                 <tbl:cell column="name"><div
6311 23 Aug 13 nicklas 568                   class="link table-item"
6311 23 Aug 13 nicklas 569                   data-item-id="<%=itemId%>"
6311 23 Aug 13 nicklas 570                   data-no-edit="<%=writePermission ? 0 : 1 %>" 
6311 23 Aug 13 nicklas 571                   tabindex="0"
2433 27 Jun 06 nicklas 572                   title="<%=tooltip%>"><%=name%></div></tbl:cell>
4332 12 Jun 08 martin 573                 <tbl:cell column="id"><%=item.getId()%></tbl:cell>
4698 10 Dec 08 nicklas 574                 <tbl:cell column="entryDate" value="<%=item.getEntryDate()%>" />
2107 24 Mar 06 nicklas 575                 <tbl:cell column="type"><%=item.getFormulaType().toString()%></tbl:cell>
2107 24 Mar 06 nicklas 576                 <tbl:cell column="parser"><%=item.getParser().toString()%></tbl:cell>
5208 08 Jan 10 nicklas 577                 <tbl:cell column="valueType"><%=item.getValueType() == null ? "<i>- unknown -</i>" : item.getValueType()%></tbl:cell>
3558 16 Jul 07 nicklas 578                 <tbl:cell column="averageMethod"><%=item.getAverageMethod().toString()%></tbl:cell>
4918 04 May 09 nicklas 579                 <tbl:cell column="sourceIntensityTransform"><%=item.getSourceIntensityTransform() == null ? "<i>- any -</i>" : item.getSourceIntensityTransform().toString()%></tbl:cell>
4918 04 May 09 nicklas 580                 <tbl:cell column="resultIntensityTransform"><%=item.getResultIntensityTransform() == null ? "<i>- any -</i>" : item.getResultIntensityTransform().toString()%></tbl:cell>
2107 24 Mar 06 nicklas 581                 <tbl:cell column="rawDataType"><%=rawDataType == null ? "<i>- none -</i>" : HTML.encodeTags(rawDataType.getName())%></tbl:cell>
2107 24 Mar 06 nicklas 582                 <tbl:cell column="channels"><%=item.getChannels()%></tbl:cell>
2107 24 Mar 06 nicklas 583                 <tbl:cell column="formulas">
2107 24 Mar 06 nicklas 584                 <%
2107 24 Mar 06 nicklas 585                 for (int i = 0; i < expressions.size(); ++i)
2107 24 Mar 06 nicklas 586                 {
2107 24 Mar 06 nicklas 587                   %>
2107 24 Mar 06 nicklas 588                   <%=(i+1) + ": " + HTML.encodeTags(expressions.get(i))%><br>
2107 24 Mar 06 nicklas 589                   <%
2107 24 Mar 06 nicklas 590                 }
2107 24 Mar 06 nicklas 591                 %>
2107 24 Mar 06 nicklas 592                 </tbl:cell>
2354 07 Jun 06 martin 593                 <tbl:cell column="owner"
2354 07 Jun 06 martin 594                   ><base:propertyvalue 
2354 07 Jun 06 martin 595                     item="<%=item%>" 
2354 07 Jun 06 martin 596                     property="owner"
2354 07 Jun 06 martin 597                     enableEditLink="<%=mode.hasEditLink()%>" 
2354 07 Jun 06 martin 598                     enablePropertyLink="<%=mode.hasPropertyLink()%>"
2354 07 Jun 06 martin 599                   /></tbl:cell>
2733 16 Oct 06 nicklas 600                 <tbl:cell column="useColors"><%=item.getColoring().isUsingColors() ? "yes" : "no"%></tbl:cell>
2733 16 Oct 06 nicklas 601                 <tbl:cell column="logarithmic"><%=item.getColoring().isLogarithmic() ? "yes" : "no"%></tbl:cell>
2733 16 Oct 06 nicklas 602                 <tbl:cell column="minValue"><%=Values.formatNumber(item.getColoring().getMinValue(), 2)%></tbl:cell>
2733 16 Oct 06 nicklas 603                 <tbl:cell column="midValue"><%=Values.formatNumber(item.getColoring().getMidValue(), 2)%></tbl:cell>
2733 16 Oct 06 nicklas 604                 <tbl:cell column="maxValue"><%=Values.formatNumber(item.getColoring().getMaxValue(), 2)%></tbl:cell>
2107 24 Mar 06 nicklas 605                 <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
2401 21 Jun 06 martin 606                 <tbl:cell column="permission"><%=PermissionUtil.getShortPermissions(item)%></tbl:cell>
3552 06 Jul 07 martin 607                 <tbl:cell column="sharedTo">
3552 06 Jul 07 martin 608                   <%
3552 06 Jul 07 martin 609                   Iterator<Nameable> sharees = ShareableUtil.getSharedTo(dc, item).iterator();
3552 06 Jul 07 martin 610                   while(sharees.hasNext())
3552 06 Jul 07 martin 611                   {
3552 06 Jul 07 martin 612                     Nameable n = sharees.next();
3552 06 Jul 07 martin 613                     if (mode.hasPropertyLink())
3552 06 Jul 07 martin 614                     {
3552 06 Jul 07 martin 615                       out.write(Base.getLinkedName(ID, n, false, mode.hasEditLink()));
3552 06 Jul 07 martin 616                     }
3552 06 Jul 07 martin 617                     else
3552 06 Jul 07 martin 618                     {
3552 06 Jul 07 martin 619                       out.write(HTML.encodeTags(n.getName()));
3552 06 Jul 07 martin 620                     }
3552 06 Jul 07 martin 621                     out.write(sharees.hasNext() ? ", " : "");
3552 06 Jul 07 martin 622                   }
3552 06 Jul 07 martin 623                   %>
3552 06 Jul 07 martin 624                 </tbl:cell>
6040 30 Mar 12 nicklas 625                 <tbl:xt-cells dc="<%=dc%>" item="<%=item%>">
6040 30 Mar 12 nicklas 626                   <tbl:cell column="xt-columns" />
6040 30 Mar 12 nicklas 627                 </tbl:xt-cells>
2107 24 Mar 06 nicklas 628               </tbl:row>
2107 24 Mar 06 nicklas 629               <%
2107 24 Mar 06 nicklas 630               }
2107 24 Mar 06 nicklas 631             }
5952 10 Feb 12 nicklas 632           if (numListed == 0)
5952 10 Feb 12 nicklas 633           {
5952 10 Feb 12 nicklas 634             %>
6604 18 Nov 14 nicklas 635             <tbl:panel subclass="bg-filled-50">
5952 10 Feb 12 nicklas 636               <div class="messagecontainer note">
5952 10 Feb 12 nicklas 637               <%=formulas == null || formulas.getTotalCount() == 0 ? "No formulas were found" : "No formulas on this page. Please select another page!" %>
5952 10 Feb 12 nicklas 638               </div>
5952 10 Feb 12 nicklas 639             </tbl:panel>
5952 10 Feb 12 nicklas 640             <%
5952 10 Feb 12 nicklas 641           }
2107 24 Mar 06 nicklas 642           %>
5952 10 Feb 12 nicklas 643         </tbl:rows>
2107 24 Mar 06 nicklas 644       </tbl:data>
2107 24 Mar 06 nicklas 645     </tbl:table>
5952 10 Feb 12 nicklas 646     </div>
5952 10 Feb 12 nicklas 647     
5951 09 Feb 12 nicklas 648     <base:buttongroup subclass="dialogbuttons">
6311 23 Aug 13 nicklas 649       <base:button id="btnOk" title="Ok" visible="<%=mode.hasOkButton()%>" />
6311 23 Aug 13 nicklas 650       <base:button id="close" title="Cancel" visible="<%=mode.hasCancelButton()%>" />
6311 23 Aug 13 nicklas 651       <base:button id="close" title="Close" visible="<%=mode.hasCloseButton()%>" />
2107 24 Mar 06 nicklas 652     </base:buttongroup>
5951 09 Feb 12 nicklas 653     
2107 24 Mar 06 nicklas 654   </base:body>
2107 24 Mar 06 nicklas 655   </base:page>
2107 24 Mar 06 nicklas 656   <%
2107 24 Mar 06 nicklas 657 }
2107 24 Mar 06 nicklas 658 finally
2107 24 Mar 06 nicklas 659 {
2107 24 Mar 06 nicklas 660   if (formulas != null) formulas.close();
2107 24 Mar 06 nicklas 661   if (dc != null) dc.close();
2107 24 Mar 06 nicklas 662 }
3675 16 Aug 07 jari 663 %>