source: trunk/www/views/formulas/list_formulas.jsp @ 5952

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

References #1655: GUI improvements

List page in the View menu

  • Property svn:eol-style set to native
  • Property svn:keywords set to Date Id
File size: 21.5 KB
Line 
1<%-- $Id: list_formulas.jsp 5952 2012-02-10 12:27:27Z nicklas $
2  ------------------------------------------------------------------
3  Copyright (C) 2006 Jari Häkkinen, Nicklas Nordborg, Martin Svensson
4  Copyright (C) 2007 Johan Enell, Nicklas Nordborg, 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.Formula"
31  import="net.sf.basedb.core.Type"
32  import="net.sf.basedb.core.IntensityTransform"
33  import="net.sf.basedb.core.ItemQuery"
34  import="net.sf.basedb.core.ItemResultIterator"
35  import="net.sf.basedb.core.ItemContext"
36  import="net.sf.basedb.core.Nameable"
37  import="net.sf.basedb.core.Permission"
38  import="net.sf.basedb.core.RawDataTypes"
39  import="net.sf.basedb.core.RawDataType"
40  import="net.sf.basedb.core.PluginDefinition"
41  import="net.sf.basedb.core.plugin.GuiContext"
42  import="net.sf.basedb.core.plugin.Plugin"
43  import="net.sf.basedb.util.Enumeration"
44  import="net.sf.basedb.util.ShareableUtil"
45  import="net.sf.basedb.clients.web.Base"
46  import="net.sf.basedb.clients.web.ModeInfo"
47  import="net.sf.basedb.clients.web.PermissionUtil"
48  import="net.sf.basedb.clients.web.util.HTML"
49  import="net.sf.basedb.util.Values"
50  import="net.sf.basedb.util.formatter.Formatter"
51  import="net.sf.basedb.clients.web.formatter.FormatterFactory"
52  import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
53  import="net.sf.basedb.clients.web.extensions.JspContext"
54  import="net.sf.basedb.clients.web.extensions.renderer.PrefixSuffixRenderer"
55  import="net.sf.basedb.clients.web.extensions.toolbar.ToolbarUtil"
56  import="net.sf.basedb.util.extensions.ExtensionsInvoker"
57  import="java.util.Date"
58  import="java.util.Iterator"
59  import="java.util.List"
60  import="java.util.Map"
61%>
62<%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
63<%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
64<%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
65<%!
66  private static final Item itemType = Item.FORMULA;
67  private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.LIST);
68 
69  private static final Enumeration<String, String> types = new Enumeration<String, String>();
70  private static final Enumeration<String, String> parsers = new Enumeration<String, String>();
71  private static final Enumeration<String, String> avgMethods = new Enumeration<String, String>();
72  private static final Enumeration<String, String> transforms = new Enumeration<String, String>();
73  private static final Enumeration<String, String> rawEnumeration = new Enumeration<String, String>();
74  private static final Enumeration<String, String> valueTypes = new Enumeration<String, String>();
75  static
76  {
77    for (Formula.Type t : Formula.Type.values())
78    {
79      types.add(Integer.toString(t.getValue()), HTML.encodeTags(t.toString()));
80    }
81    valueTypes.add("", "- unknown -");
82    for (Type v : Type.values())
83    {
84      valueTypes.add(Integer.toString(v.getValue()), v.toString());
85    }
86    for (Formula.Parser p : Formula.Parser.values())
87    {
88      parsers.add(Integer.toString(p.getValue()), HTML.encodeTags(p.toString()));
89    }
90    for (Formula.AverageMethod m : Formula.AverageMethod.values())
91    {
92      avgMethods.add(Integer.toString(m.getValue()), HTML.encodeTags(m.toString()));
93    }
94    transforms.add("", "- any -");
95    for (IntensityTransform t : IntensityTransform.values())
96    {
97      transforms.add(Integer.toString(t.getValue()), HTML.encodeTags(t.toString()));
98    }
99    rawEnumeration.add("", "- none -");
100    for (RawDataType rdt : RawDataTypes.getRawDataTypes())
101    {
102      rawEnumeration.add(rdt.getId(), HTML.encodeTags(rdt.getName()));
103    }
104    rawEnumeration.sortValues();
105  }
106%>
107<%
108final SessionControl sc = Base.getExistingSessionControl(pageContext, Permission.DENIED, itemType);
109final String ID = sc.getId();
110final boolean createPermission = sc.hasPermission(Permission.CREATE, itemType);
111final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
112
113final ModeInfo mode = ModeInfo.get(request.getParameter("mode"));
114final String callback = request.getParameter("callback");
115final String title = mode.generateTitle("formula", "formulas");
116final DbControl dc = sc.newDbControl();
117ItemResultIterator<Formula> formulas = null;
118try
119{
120  Formatter<Date> dateFormatter = FormatterFactory.getDateFormatter(sc);
121  Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
122  try
123  {
124    final ItemQuery<Formula> query = Base.getConfiguredQuery(dc, cc, true, Formula.getQuery(), mode);
125    formulas = query.iterate(dc);
126  }
127  catch (Throwable t)
128  {
129    t.printStackTrace();
130    cc.setMessage(t.getMessage());
131  }
132  int numListed = 0;
133  JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, guiContext, null);
134  ExtensionsInvoker invoker = ToolbarUtil.useExtensions(jspContext);
135  %>
136  <base:page title="<%=title==null ? "Formulas" : title%>" type="<%=mode.getPageType()%>">
137  <base:head scripts="menu.js,table.js" styles="menu.css,table.css,toolbar.css">
138    <ext:scripts context="<%=jspContext%>" />
139    <ext:stylesheets context="<%=jspContext%>" />
140    <script language="JavaScript">
141    var submitPage = 'index.jsp';
142    var formId = 'formulas';
143    function newItem()
144    {
145      Main.viewOrEditItem('<%=ID%>', '<%=itemType.name()%>', 0, true);
146    }
147    function editItem(itemId)
148    {
149      Main.viewOrEditItem('<%=ID%>', '<%=itemType.name()%>', itemId, true);
150    }
151    function viewItem(itemId)
152    {
153      Main.viewOrEditItem('<%=ID%>', '<%=itemType.name()%>', itemId, false);
154    }
155    function itemOnClick(evt, itemId)
156    {
157      Table.itemOnClick(formId, evt, itemId, '<%=mode.getName()%>', viewItem, editItem, returnSelected);
158    }
159    function deleteItems()
160    {
161      var frm = document.forms[formId];
162      if (Forms.numChecked(frm) == 0)
163      {
164        alert('Please select at least one item in the list');
165        return;
166      }
167      frm.action = submitPage;
168      frm.cmd.value = 'DeleteItems';
169      frm.submit();
170    }
171    function restoreItems()
172    {
173      var frm = document.forms[formId];
174      if (Forms.numChecked(frm) == 0)
175      {
176        alert('Please select at least one item in the list');
177        return;
178      }
179      frm.action = submitPage;
180      frm.cmd.value = 'RestoreItems';
181      frm.submit();
182    }
183    function deleteItemPermanently(itemId)
184    {
185      Main.deleteItemPermanently('<%=ID%>', true, '<%=itemType.name()%>', itemId);
186    }
187    function setOwner()
188    {
189      Table.setOwnerOfItems(submitPage, '<%=ID%>', formId, '<%=itemType.name()%>', 'SetOwnerOfItems');
190    }
191    function shareItem(itemId)
192    {
193      Main.openPopup('index.jsp?ID=<%=ID%>&cmd=ShareItem&item_id='+itemId, 'ShareItem', 600, 400);
194    }
195    function shareItems()
196    {
197      Table.shareItems(submitPage, '<%=ID%>', formId, '<%=itemType.name()%>', 'ShareItems');
198    }
199    function configureColumns()
200    {
201      Table.configureColumns('<%=ID%>', formId, '<%=itemType.name()%>', '<%=(String)cc.getObject("defaultColumns")%>');
202    }
203    function runPlugin(cmd)
204    {
205      Table.submitToPopup(formId, cmd, 750, 500);
206    }
207    function returnSelected()
208    {
209      Table.returnSelected(formId, <%=callback != null ? "window.opener."+callback : "null" %>);
210      window.close();
211    }
212    function presetOnChange()
213    {
214      Table.presetOnChange('<%=ID%>', formId, '<%=itemType.name()%>', '<%=(String)cc.getObject("defaultColumns")%>');
215    }
216    </script>
217  </base:head>
218 
219  <base:body>
220    <h1><%=title==null ? "Formulas" : title%></h1>
221    <div class="content">
222    <tbl:table 
223      id="formulas" 
224      columns="<%=cc.getSetting("columns")%>"
225      sortby="<%=cc.getSortProperty()%>" 
226      direction="<%=cc.getSortDirection()%>"
227      action="index.jsp"
228      sc="<%=sc%>"
229      item="<%=itemType%>"
230      subclass="fulltable"
231      >
232      <tbl:hidden 
233        name="mode" 
234        value="<%=mode.getName()%>" 
235      />
236      <tbl:hidden 
237        name="callback" 
238        value="<%=callback%>" 
239        skip="<%=callback == null%>" 
240      />
241      <tbl:columndef 
242        id="name"
243        property="name"
244        datatype="string"
245        title="Name"
246        sortable="true" 
247        filterable="true"
248        exportable="true"
249        show="always" 
250      />
251      <tbl:columndef 
252        id="id"
253        clazz="uniquecol"
254        property="id"
255        datatype="int"
256        title="ID"
257        sortable="true"
258        filterable="true"
259        exportable="true"
260      />
261      <tbl:columndef 
262        id="entryDate"
263        property="entryDate"
264        datatype="date"
265        title="Registered"
266        sortable="true" 
267        filterable="true"
268        exportable="true"
269        formatter="<%=dateFormatter%>"
270      />
271      <tbl:columndef 
272        id="type"
273        property="type"
274        datatype="int"
275        enumeration="<%=types%>"
276        title="Type"
277        sortable="true" 
278        filterable="true"
279        exportable="true"
280      />
281      <tbl:columndef 
282        id="parser"
283        property="parser"
284        datatype="int"
285        enumeration="<%=parsers%>"
286        title="Parser"
287        sortable="true" 
288        filterable="true"
289        exportable="true"
290      />
291      <tbl:columndef 
292        id="valueType"
293        property="valueType"
294        datatype="int"
295        enumeration="<%=valueTypes%>"
296        title="Value type"
297        sortable="true" 
298        filterable="true"
299        exportable="true"
300      />
301      <tbl:columndef 
302        id="averageMethod"
303        property="averageMethod"
304        datatype="int"
305        enumeration="<%=avgMethods%>"
306        title="Avg. method"
307        sortable="true" 
308        filterable="true"
309        exportable="true"
310      />
311      <tbl:columndef 
312        id="sourceIntensityTransform"
313        property="sourceIntensityTransform"
314        datatype="int"
315        enumeration="<%=transforms%>"
316        title="Source intensity transform"
317        sortable="true" 
318        filterable="true"
319        exportable="true"
320      />
321      <tbl:columndef 
322        id="resultIntensityTransform"
323        property="resultIntensityTransform"
324        datatype="int"
325        enumeration="<%=transforms%>"
326        title="Result intensity transform"
327        sortable="true" 
328        filterable="true"
329        exportable="true"
330      />
331      <tbl:columndef 
332        id="rawDataType"
333        property="rawDataType"
334        datatype="string"
335        enumeration="<%=rawEnumeration%>"
336        title="Raw data type"
337        sortable="true" 
338        filterable="true"
339        exportable="true"
340      />
341      <tbl:columndef 
342        id="channels"
343        property="channels"
344        datatype="int"
345        title="Channels"
346        sortable="true" 
347        filterable="true"
348        exportable="true"
349      />
350      <tbl:columndef 
351        id="formulas"
352        property="formulas"
353        datatype="string"
354        title="Formulas"
355        sortable="false" 
356        filterable="false"
357        exportable="true"
358      />
359      <tbl:columndef 
360        id="useColors"
361        property="coloring#usingColors"
362        datatype="boolean"
363        title="Use colors"
364        sortable="true" 
365        filterable="true"
366        exportable="true"
367      />
368      <tbl:columndef 
369        id="logarithmic"
370        property="coloring#logarithmic"
371        datatype="boolean"
372        title="Logarithmic"
373        sortable="true" 
374        filterable="true"
375        exportable="true"
376      />
377      <tbl:columndef 
378        id="minValue"
379        property="coloring#minValue"
380        datatype="float"
381        title="Min value"
382        sortable="true" 
383        filterable="true"
384        exportable="true"
385      />
386      <tbl:columndef 
387        id="midValue"
388        property="coloring#midValue"
389        datatype="float"
390        title="Mid value"
391        sortable="true" 
392        filterable="true"
393        exportable="true"
394      />
395      <tbl:columndef 
396        id="maxValue"
397        property="coloring#maxValue"
398        datatype="float"
399        title="Max value"
400        sortable="true" 
401        filterable="true"
402        exportable="true"
403      />
404      <tbl:columndef 
405        id="owner"
406        property="owner.name"
407        datatype="string"
408        title="Owner"
409        sortable="true" 
410        filterable="true"
411        exportable="true"
412      />
413      <tbl:columndef 
414        id="description"
415        property="description"
416        datatype="string"
417        title="Description" 
418        sortable="true" 
419        filterable="true" 
420        exportable="true"
421      />
422      <tbl:columndef
423        id="permission"
424        title="Permission"
425      />
426      <tbl:columndef
427        id="sharedTo"
428        title="Shared to"
429        filterable="true"
430        filterproperty="!sharedTo.name"
431        datatype="string"
432      />
433      <div class="panelgroup bottomborder">
434        <tbl:toolbar
435          subclass="bottomborder"
436          visible="<%=mode.hasToolbar()%>"
437          >
438          <tbl:button 
439            disabled="<%=!createPermission%>" 
440            image="new.png" 
441            onclick="newItem()" 
442            title="New&hellip;" 
443            tooltip="<%=createPermission ? "Create new formula" : "You do not have permission to create formulas"%>" 
444          />
445          <tbl:button 
446            image="delete.png"
447            onclick="deleteItems()" 
448            title="Delete" 
449            tooltip="Delete the selected items" 
450          />
451          <tbl:button 
452            image="restore.png"
453            onclick="restoreItems()" 
454            title="Restore" 
455            tooltip="Restore the selected (deleted) items"
456          />
457          <tbl:button 
458            image="share.png"
459            onclick="shareItems()" 
460            title="Share&hellip;" 
461            tooltip="Share the selected items"
462          />
463          <tbl:button 
464            image="take_ownership.png"
465            onclick="setOwner()" 
466            title="Set owner&hellip;"
467            tooltip="Change owner of the selected items"
468          />
469          <tbl:button 
470            image="columns.png" 
471            onclick="configureColumns()" 
472            title="Columns&hellip;" 
473            tooltip="Show, hide and re-order columns" 
474          />
475          <tbl:button 
476            image="import.png" 
477            onclick="runPlugin('ImportItems')" 
478            title="Import&hellip;" 
479            tooltip="Import data" 
480            visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
481          />
482          <tbl:button 
483            image="export.png" 
484            onclick="runPlugin('ExportItems')" 
485            title="Export&hellip;" 
486            tooltip="Export data" 
487            visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
488          />
489          <tbl:button 
490            image="runplugin.png" 
491            onclick="runPlugin('RunListPlugin')" 
492            title="Run plugin&hellip;" 
493            tooltip="Run a plugin" 
494            visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
495          />
496          <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 
497            wrapper="<%=new PrefixSuffixRenderer(jspContext, "<td>", "</td>") %>"/>
498        </tbl:toolbar>
499        <tbl:panel>
500          <tbl:presetselector 
501            onchange="presetOnChange()"
502          />
503          <tbl:navigator
504            page="<%=cc.getPage()%>" 
505            rowsperpage="<%=cc.getRowsPerPage()%>" 
506            totalrows="<%=formulas == null ? 0 : formulas.getTotalCount()%>" 
507            visible="<%=mode.hasNavigator()%>"
508          />
509        </tbl:panel>
510      </div>
511      <tbl:data>
512        <tbl:headers>
513          <tbl:headerrow>
514            <tbl:header colspan="3" />
515            <tbl:columnheaders />
516          </tbl:headerrow>
517          <tbl:headerrow>
518            <tbl:header subclass="index" />
519            <tbl:header 
520              subclass="check" 
521              visible="<%=mode.hasCheck()%>"
522              ><base:icon 
523                image="check_uncheck.png" 
524                tooltip="Check/uncheck all" 
525                onclick="Forms.checkUncheck(document.forms[formId])" 
526              /></tbl:header>
527            <tbl:header 
528              subclass="check" 
529              visible="<%=mode.hasRadio()%>"
530              />
531            <tbl:header 
532              subclass="icons" 
533              visible="<%=mode.hasIcons()%>"
534              />
535            <tbl:propertyfilter />
536          </tbl:headerrow>
537        </tbl:headers>
538        <tbl:rows>
539          <%
540          if (cc.getMessage() != null)
541          {
542            %>
543            <tbl:panel clazz="messagepanel">
544              <div class="messagecontainer error"><%=cc.getMessage()%></div>
545            </tbl:panel>
546            <%
547            cc.setMessage(null);
548          }
549          int index = cc.getPage()*cc.getRowsPerPage();
550          int selectedItemId = cc.getId();
551          if (formulas != null)
552          {
553            while (formulas.hasNext())
554            {
555              Formula item = formulas.next();
556              RawDataType rawDataType = item.getRawDataType();
557              List<String> expressions = item.getFormulas();
558              int itemId = item.getId();
559              String openSharePopup = "shareItem("+itemId+")";
560              String deletePermanently = "deleteItemPermanently("+itemId+")";
561              boolean deletePermission = item.hasPermission(Permission.DELETE);
562              boolean sharePermission = item.hasPermission(Permission.SET_PERMISSION);
563              boolean writePermission = item.hasPermission(Permission.WRITE);
564              String tooltip = mode.isSelectionMode() ?
565                  "Select this item" : "View this item" + (writePermission ? " (use CTRL, ALT or SHIFT to edit)" : "");
566              String name = HTML.encodeTags(item.getName());
567              index++;
568              numListed++;
569              %>
570              <tbl:row>
571                <tbl:header 
572                  clazz="index"
573                  ><%=index%></tbl:header>
574                <tbl:header 
575                  clazz="check" 
576                  visible="<%=mode.hasCheck()%>"
577                  ><input 
578                    type="checkbox" 
579                    name="<%=itemId%>" 
580                    value="<%=itemId%>" 
581                    title="<%=name%>" 
582                    <%=cc.getSelected().contains(itemId) ? "checked" : ""%> 
583                  ></tbl:header>
584                <tbl:header 
585                  clazz="check" 
586                  visible="<%=mode.hasRadio()%>"
587                  ><input 
588                    type="radio" 
589                    name="item_id" 
590                    value="<%=itemId%>" 
591                    title="<%=name%>" 
592                    <%=selectedItemId == itemId ? "checked" : ""%>
593                  ></tbl:header>
594                <tbl:header 
595                  clazz="icons" 
596                  visible="<%=mode.hasIcons()%>"
597                  ><base:icon 
598                    image="deleted.png"
599                    onclick="<%=deletePermission ? deletePermanently : null%>"
600                    tooltip="This item has been scheduled for deletion" 
601                    visible="<%=item.isRemoved()%>"
602                  /><base:icon 
603                    image="shared.png" 
604                    onclick="<%=sharePermission ? openSharePopup : null%>"
605                    tooltip="This item is shared to other users, groups and/or projects" 
606                    visible="<%=item.isShared()%>"
607                  />&nbsp;</tbl:header>
608                <tbl:cell column="name"><div class="link" 
609                  onclick="itemOnClick(<%=writePermission ? "event" : null%>, <%=itemId%>)" 
610                  title="<%=tooltip%>"><%=name%></div></tbl:cell>
611                <tbl:cell column="id"><%=item.getId()%></tbl:cell>
612                <tbl:cell column="entryDate" value="<%=item.getEntryDate()%>" />
613                <tbl:cell column="type"><%=item.getFormulaType().toString()%></tbl:cell>
614                <tbl:cell column="parser"><%=item.getParser().toString()%></tbl:cell>
615                <tbl:cell column="valueType"><%=item.getValueType() == null ? "<i>- unknown -</i>" : item.getValueType()%></tbl:cell>
616                <tbl:cell column="averageMethod"><%=item.getAverageMethod().toString()%></tbl:cell>
617                <tbl:cell column="sourceIntensityTransform"><%=item.getSourceIntensityTransform() == null ? "<i>- any -</i>" : item.getSourceIntensityTransform().toString()%></tbl:cell>
618                <tbl:cell column="resultIntensityTransform"><%=item.getResultIntensityTransform() == null ? "<i>- any -</i>" : item.getResultIntensityTransform().toString()%></tbl:cell>
619                <tbl:cell column="rawDataType"><%=rawDataType == null ? "<i>- none -</i>" : HTML.encodeTags(rawDataType.getName())%></tbl:cell>
620                <tbl:cell column="channels"><%=item.getChannels()%></tbl:cell>
621                <tbl:cell column="formulas">
622                <%
623                for (int i = 0; i < expressions.size(); ++i)
624                {
625                  %>
626                  <%=(i+1) + ": " + HTML.encodeTags(expressions.get(i))%><br>
627                  <%
628                }
629                %>
630                </tbl:cell>
631                <tbl:cell column="owner"
632                  ><base:propertyvalue 
633                    item="<%=item%>" 
634                    property="owner"
635                    enableEditLink="<%=mode.hasEditLink()%>" 
636                    enablePropertyLink="<%=mode.hasPropertyLink()%>"
637                  /></tbl:cell>
638                <tbl:cell column="useColors"><%=item.getColoring().isUsingColors() ? "yes" : "no"%></tbl:cell>
639                <tbl:cell column="logarithmic"><%=item.getColoring().isLogarithmic() ? "yes" : "no"%></tbl:cell>
640                <tbl:cell column="minValue"><%=Values.formatNumber(item.getColoring().getMinValue(), 2)%></tbl:cell>
641                <tbl:cell column="midValue"><%=Values.formatNumber(item.getColoring().getMidValue(), 2)%></tbl:cell>
642                <tbl:cell column="maxValue"><%=Values.formatNumber(item.getColoring().getMaxValue(), 2)%></tbl:cell>
643                <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
644                <tbl:cell column="permission"><%=PermissionUtil.getShortPermissions(item)%></tbl:cell>
645                <tbl:cell column="sharedTo">
646                  <%
647                  Iterator<Nameable> sharees = ShareableUtil.getSharedTo(dc, item).iterator();
648                  while(sharees.hasNext())
649                  {
650                    Nameable n = sharees.next();
651                    if (mode.hasPropertyLink())
652                    {
653                      out.write(Base.getLinkedName(ID, n, false, mode.hasEditLink()));
654                    }
655                    else
656                    {
657                      out.write(HTML.encodeTags(n.getName()));
658                    }
659                    out.write(sharees.hasNext() ? ", " : "");
660                  }
661                  %>
662                </tbl:cell>
663              </tbl:row>
664              <%
665              }
666            }
667          if (numListed == 0)
668          {
669            %>
670            <tbl:panel clazz="messagepanel">
671              <div class="messagecontainer note">
672              <%=formulas == null || formulas.getTotalCount() == 0 ? "No formulas were found" : "No formulas on this page. Please select another page!" %>
673              </div>
674            </tbl:panel>
675            <%
676          }
677          %>
678        </tbl:rows>
679      </tbl:data>
680    </tbl:table>
681    </div>
682   
683    <base:buttongroup subclass="dialogbuttons">
684      <base:button onclick="returnSelected();" title="Ok" visible="<%=mode.hasOkButton()%>" />
685      <base:button onclick="window.close();" title="Cancel" visible="<%=mode.hasCancelButton()%>" />
686      <base:button onclick="window.close();" title="Close" visible="<%=mode.hasCloseButton()%>" />
687    </base:buttongroup>
688   
689  </base:body>
690  </base:page>
691  <%
692}
693finally
694{
695  if (formulas != null) formulas.close();
696  if (dc != null) dc.close();
697}
698%>
Note: See TracBrowser for help on using the repository browser.