www/lims/platetypes/edit_platetype.jsp

Code
Comments
Other
Rev Date Author Line
891 07 Jul 05 nicklas 1 <%-- $Id$
891 07 Jul 05 nicklas 2   ------------------------------------------------------------------
3675 16 Aug 07 jari 3   Copyright (C) 2005 Nicklas Nordborg
5425 23 Sep 10 nicklas 4   Copyright (C) 2006 Jari Häkkinen, Nicklas Nordborg, Martin Svensson
891 07 Jul 05 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/
891 07 Jul 05 nicklas 8
891 07 Jul 05 nicklas 9   BASE is free software; you can redistribute it and/or
891 07 Jul 05 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
891 07 Jul 05 nicklas 12   of the License, or (at your option) any later version.
891 07 Jul 05 nicklas 13
891 07 Jul 05 nicklas 14   BASE is distributed in the hope that it will be useful,
891 07 Jul 05 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
891 07 Jul 05 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
891 07 Jul 05 nicklas 17   GNU General Public License for more details.
891 07 Jul 05 nicklas 18
891 07 Jul 05 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/>.
891 07 Jul 05 nicklas 21   ------------------------------------------------------------------
891 07 Jul 05 nicklas 22
891 07 Jul 05 nicklas 23
891 07 Jul 05 nicklas 24   @author Nicklas
891 07 Jul 05 nicklas 25   @version 2.0
891 07 Jul 05 nicklas 26 --%>
5426 24 Sep 10 nicklas 27 <%@ page pageEncoding="UTF-8" session="false"
891 07 Jul 05 nicklas 28   import="net.sf.basedb.core.SessionControl"
891 07 Jul 05 nicklas 29   import="net.sf.basedb.core.DbControl"
891 07 Jul 05 nicklas 30   import="net.sf.basedb.core.Item"
1833 25 Jan 06 nicklas 31   import="net.sf.basedb.core.ItemContext"
1833 25 Jan 06 nicklas 32   import="net.sf.basedb.core.SystemItems"
891 07 Jul 05 nicklas 33   import="net.sf.basedb.core.Permission"
1833 25 Jan 06 nicklas 34   import="net.sf.basedb.core.Include"
891 07 Jul 05 nicklas 35   import="net.sf.basedb.core.PlateType"
891 07 Jul 05 nicklas 36   import="net.sf.basedb.core.PlateGeometry"
1418 07 Oct 05 nicklas 37   import="net.sf.basedb.core.ItemQuery"
1418 07 Oct 05 nicklas 38   import="net.sf.basedb.core.ItemResultList"
1833 25 Jan 06 nicklas 39   import="net.sf.basedb.core.PermissionDeniedException"
1833 25 Jan 06 nicklas 40   import="net.sf.basedb.core.BaseException"
891 07 Jul 05 nicklas 41   import="net.sf.basedb.core.query.Orders"
1418 07 Oct 05 nicklas 42   import="net.sf.basedb.core.query.Hql"
891 07 Jul 05 nicklas 43   import="net.sf.basedb.clients.web.Base"
891 07 Jul 05 nicklas 44   import="net.sf.basedb.clients.web.util.HTML"
2753 20 Oct 06 nicklas 45   import="net.sf.basedb.util.Values"
5498 17 Nov 10 nicklas 46   import="net.sf.basedb.core.plugin.GuiContext"
5498 17 Nov 10 nicklas 47   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
5498 17 Nov 10 nicklas 48   import="net.sf.basedb.clients.web.extensions.JspContext"
5498 17 Nov 10 nicklas 49   import="net.sf.basedb.clients.web.extensions.edit.EditUtil"
7604 25 Feb 19 nicklas 50   import="net.sf.basedb.clients.web.extensions.tabcontrol.TabAction"
5498 17 Nov 10 nicklas 51   import="net.sf.basedb.util.extensions.ExtensionsInvoker"
1833 25 Jan 06 nicklas 52   import="java.util.List"
1833 25 Jan 06 nicklas 53   import="java.util.Set"
1833 25 Jan 06 nicklas 54   import="java.util.HashSet"
1833 25 Jan 06 nicklas 55   import="java.util.Date"
891 07 Jul 05 nicklas 56 %>
891 07 Jul 05 nicklas 57 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
891 07 Jul 05 nicklas 58 <%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
6146 21 Sep 12 nicklas 59 <%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
891 07 Jul 05 nicklas 60 <%
1833 25 Jan 06 nicklas 61 final Item itemType = Item.PLATETYPE;
1833 25 Jan 06 nicklas 62 final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
1833 25 Jan 06 nicklas 63 final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
1833 25 Jan 06 nicklas 64 final int itemId = cc.getId();
891 07 Jul 05 nicklas 65 final String ID = sc.getId();
891 07 Jul 05 nicklas 66 final float scale = Base.getScale(sc);
7954 12 May 21 nicklas 67 final DbControl dc = sc.newDbControl(":Edit "+itemType);
891 07 Jul 05 nicklas 68 try
891 07 Jul 05 nicklas 69 {
891 07 Jul 05 nicklas 70   String title = null;
1833 25 Jan 06 nicklas 71   PlateType plateType = null;
1833 25 Jan 06 nicklas 72   ItemResultList<PlateGeometry> plateGeometries = null;
1833 25 Jan 06 nicklas 73   boolean readCurrentGeometry = true;
1833 25 Jan 06 nicklas 74   PlateGeometry currentGeometry = null;
1833 25 Jan 06 nicklas 75   int currentGeometryId = 0;
1833 25 Jan 06 nicklas 76
1833 25 Jan 06 nicklas 77   if (itemId == 0)
891 07 Jul 05 nicklas 78   {
891 07 Jul 05 nicklas 79     title = "Create plate type";
1833 25 Jan 06 nicklas 80     cc.removeObject("item");
1833 25 Jan 06 nicklas 81     
1833 25 Jan 06 nicklas 82     ItemQuery<PlateGeometry> geometryQuery = PlateGeometry.getQuery();
3888 29 Oct 07 nicklas 83     geometryQuery.include(Include.ALL);
1833 25 Jan 06 nicklas 84     geometryQuery.order(Orders.asc(Hql.property("name")));
1833 25 Jan 06 nicklas 85     geometryQuery.setCacheResult(true);
1833 25 Jan 06 nicklas 86     plateGeometries = geometryQuery.list(dc);
2446 29 Jun 06 nicklas 87     currentGeometryId = Values.getInt(request.getParameter("plategeometry_id"));
2446 29 Jun 06 nicklas 88     if (currentGeometryId == 0)
2446 29 Jun 06 nicklas 89     {
2598 28 Aug 06 nicklas 90       int recentGeometry = Values.getInt(cc.getRecent(Item.PLATEGEOMETRY.name(), 0), 0);
2598 28 Aug 06 nicklas 91       currentGeometryId = Values.getInt(cc.getPropertyValue("plateGeometry"), recentGeometry);
2446 29 Jun 06 nicklas 92     }
891 07 Jul 05 nicklas 93   }
891 07 Jul 05 nicklas 94   else
891 07 Jul 05 nicklas 95   {
1833 25 Jan 06 nicklas 96     plateType = PlateType.getById(dc, itemId);
6306 13 Aug 13 nicklas 97     plateType.checkPermission(Permission.WRITE);
1833 25 Jan 06 nicklas 98     cc.setObject("item", plateType);
1833 25 Jan 06 nicklas 99     title = "Edit plate type -- " + HTML.encodeTags(plateType.getName());
1833 25 Jan 06 nicklas 100     try
1833 25 Jan 06 nicklas 101     {
1833 25 Jan 06 nicklas 102       currentGeometry = plateType.getPlateGeometry();
1833 25 Jan 06 nicklas 103     }
1833 25 Jan 06 nicklas 104     catch (PermissionDeniedException ex)
1833 25 Jan 06 nicklas 105     {
1833 25 Jan 06 nicklas 106       readCurrentGeometry = false;
1833 25 Jan 06 nicklas 107     }
891 07 Jul 05 nicklas 108   }
6217 14 Dec 12 nicklas 109   
5498 17 Nov 10 nicklas 110   JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, GuiContext.item(itemType), plateType);
7604 25 Feb 19 nicklas 111   ExtensionsInvoker<TabAction> invoker = EditUtil.useEditExtensions(jspContext);
891 07 Jul 05 nicklas 112   %>
6306 13 Aug 13 nicklas 113   <base:page type="popup" title="<%=title%>" id="edit-page">
6306 13 Aug 13 nicklas 114   <base:head scripts="tabcontrol-2.js,~platetypes.js" styles="tabcontrol.css">
5498 17 Nov 10 nicklas 115     <ext:scripts context="<%=jspContext%>" />
5498 17 Nov 10 nicklas 116     <ext:stylesheets context="<%=jspContext%>" />
891 07 Jul 05 nicklas 117   </base:head>
6306 13 Aug 13 nicklas 118   <base:body>
5920 10 Jan 12 nicklas 119     <h1><%=title%> <base:help tabcontrol="settings" /></h1>
6162 10 Oct 12 nicklas 120     <form action="index.jsp?ID=<%=ID%>" method="post" name="platetype">
1833 25 Jan 06 nicklas 121     <input type="hidden" name="cmd" value="UpdateItem">
1833 25 Jan 06 nicklas 122
5920 10 Jan 12 nicklas 123     <t:tabcontrol id="settings" 
5920 10 Jan 12 nicklas 124       subclass="content dialogtabcontrol" 
5498 17 Nov 10 nicklas 125       position="bottom" remember="<%=plateType != null%>"
5498 17 Nov 10 nicklas 126       extensions="<%=invoker%>">
6306 13 Aug 13 nicklas 127     <t:tab id="info" title="Plate type" helpid="platetype.edit">
5920 10 Jan 12 nicklas 128       <table class="fullform input100 smaller">
891 07 Jul 05 nicklas 129       <tr>
5920 10 Jan 12 nicklas 130         <th>Name</th>
6306 13 Aug 13 nicklas 131         <td><input class="text required auto-init" data-auto-init="<%=plateType == null ? "focus-select" : "focus" %>" 
6306 13 Aug 13 nicklas 132           type="text" name="name" 
1833 25 Jan 06 nicklas 133           value="<%=HTML.encodeTags(plateType == null ? Values.getString(cc.getPropertyValue("name"), "New plate type") : plateType.getName())%>" 
5920 10 Jan 12 nicklas 134           maxlength="<%=PlateType.MAX_NAME_LENGTH%>"></td>
5920 10 Jan 12 nicklas 135         <td></td>
891 07 Jul 05 nicklas 136       </tr>
1833 25 Jan 06 nicklas 137       <tr>
5920 10 Jan 12 nicklas 138         <th>Geometry</th>
1833 25 Jan 06 nicklas 139         <td>
891 07 Jul 05 nicklas 140           <%
1833 25 Jan 06 nicklas 141           if (plateType == null)
891 07 Jul 05 nicklas 142           {
891 07 Jul 05 nicklas 143             %>
5920 10 Jan 12 nicklas 144             <select name="plategeometry_id" class="unchangeable">
891 07 Jul 05 nicklas 145             <%
1833 25 Jan 06 nicklas 146             for (PlateGeometry pg : plateGeometries)
891 07 Jul 05 nicklas 147             {
3888 29 Oct 07 nicklas 148               if (pg.isRemoved() && pg.getId() != currentGeometryId) continue;
891 07 Jul 05 nicklas 149               %>
1833 25 Jan 06 nicklas 150               <option value="<%=pg.getId()%>" <%=pg.getId() == currentGeometryId ? "selected" : ""%>><%=HTML.encodeTags(pg.getName())%>
891 07 Jul 05 nicklas 151               <%
891 07 Jul 05 nicklas 152             }
891 07 Jul 05 nicklas 153             %>
891 07 Jul 05 nicklas 154             </select>
891 07 Jul 05 nicklas 155             <%
891 07 Jul 05 nicklas 156           }
1833 25 Jan 06 nicklas 157           else
1833 25 Jan 06 nicklas 158           {
1833 25 Jan 06 nicklas 159             %>
1833 25 Jan 06 nicklas 160             <%=Base.getEncodedName(currentGeometry, !readCurrentGeometry)%>
1833 25 Jan 06 nicklas 161             <%
1833 25 Jan 06 nicklas 162           }
891 07 Jul 05 nicklas 163           %>
891 07 Jul 05 nicklas 164         </td>
5920 10 Jan 12 nicklas 165         <td></td>
891 07 Jul 05 nicklas 166       </tr>
5920 10 Jan 12 nicklas 167       <tr class="dynamic">
5920 10 Jan 12 nicklas 168         <th>Description</th>
5920 10 Jan 12 nicklas 169         <td>
6217 14 Dec 12 nicklas 170           <textarea class="text" rows="4" name="description" id="description"
1833 25 Jan 06 nicklas 171             ><%=HTML.encodeTags(plateType == null ? cc.getPropertyValue("description") : plateType.getDescription())%></textarea>
891 07 Jul 05 nicklas 172         </td>
5920 10 Jan 12 nicklas 173         <td style="width: 20px;">
6215 13 Dec 12 nicklas 174           <base:zoom textarea="description" title="Description" />
5920 10 Jan 12 nicklas 175         </td>
891 07 Jul 05 nicklas 176       </tr>
891 07 Jul 05 nicklas 177       </table>
891 07 Jul 05 nicklas 178     </t:tab>
891 07 Jul 05 nicklas 179     </t:tabcontrol>
5920 10 Jan 12 nicklas 180     </form>
5920 10 Jan 12 nicklas 181     
5920 10 Jan 12 nicklas 182     <div class="legend">
5946 03 Feb 12 nicklas 183       <base:icon image="required.png" />= required information
5920 10 Jan 12 nicklas 184       <%if (plateType == null) {%><br>
5967 16 Feb 12 nicklas 185         <base:icon image="unchangeable.png" />= can't be changed later
5920 10 Jan 12 nicklas 186       <%}%>
5920 10 Jan 12 nicklas 187     </div>
891 07 Jul 05 nicklas 188
5920 10 Jan 12 nicklas 189     <base:buttongroup subclass="dialogbuttons">
6306 13 Aug 13 nicklas 190       <base:button id="btnSave" title="Save" />
6306 13 Aug 13 nicklas 191       <base:button id="close" title="Cancel" />
5920 10 Jan 12 nicklas 192     </base:buttongroup>
891 07 Jul 05 nicklas 193   </base:body>
891 07 Jul 05 nicklas 194   </base:page>
891 07 Jul 05 nicklas 195   <%
891 07 Jul 05 nicklas 196 }
891 07 Jul 05 nicklas 197 finally
891 07 Jul 05 nicklas 198 {
891 07 Jul 05 nicklas 199   if (dc != null) dc.close();
891 07 Jul 05 nicklas 200 }
891 07 Jul 05 nicklas 201 %>