Return-Path: Delivered-To: apmail-myfaces-dev-archive@www.apache.org Received: (qmail 82671 invoked from network); 31 Aug 2007 19:15:49 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 31 Aug 2007 19:15:49 -0000 Received: (qmail 5161 invoked by uid 500); 31 Aug 2007 19:15:43 -0000 Delivered-To: apmail-myfaces-dev-archive@myfaces.apache.org Received: (qmail 5120 invoked by uid 500); 31 Aug 2007 19:15:43 -0000 Mailing-List: contact dev-help@myfaces.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "MyFaces Development" Delivered-To: mailing list dev@myfaces.apache.org Received: (qmail 5109 invoked by uid 99); 31 Aug 2007 19:15:43 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 31 Aug 2007 12:15:43 -0700 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: local policy) Received: from [85.207.59.10] (HELO aura.cz) (85.207.59.10) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 31 Aug 2007 19:16:43 +0000 Received: (qmail 19375 invoked by uid 621); 31 Aug 2007 19:15:15 -0000 Received: from 192.168.1.183 by server1.uvoz.aura.cz (envelope-from , uid 502) with qmail-scanner-2.01 (avgd: ???. spamassassin: 3.2.0. Clear:RC:1(192.168.1.183):. Processed in 0.012835 secs); 31 Aug 2007 19:15:15 -0000 Received: from markoc.uvoz.aura.cz (HELO [192.168.1.183]) ([192.168.1.183]) (envelope-sender ) by aura.cz (qmail-ldap-1.03) with SMTP for ; 31 Aug 2007 19:15:15 -0000 Subject: [Trinidad] Selecting a row in tr:table with mouse click (rowSelection="singleClick") From: Martin Koci To: MyFaces Development Content-Type: text/plain; charset=UTF-8 Date: Fri, 31 Aug 2007 21:16:33 +0200 Message-Id: <1188587793.11508.30.camel@markoc.aura> Mime-Version: 1.0 X-Mailer: Evolution 2.8.2.1 Content-Transfer-Encoding: 8bit X-Virus-Checked: Checked by ClamAV on apache.org Hello, currently tr:table supports selection of one row with attribute rowSelection="simple". For better user experience we want to select a row with clicking on table row. To achieve this I did four minor changes in trinidad code base: 1) support "singleClick" in decoding phase 2) render a hidden field for storing index of clicked row 3) render a onclick for each TR in HTML output 4) add a JS function to Core.js ad 1) in TableRenderer.decodeSelection(FacesContext, UIComponent): // added singleClick condition, TableSelectOneRenderer will be used // for decoding if ("single".equals(selection) || "singleClick".equals(selection)) _selectOne.decode(context, treeTable); ad 2) TableRenderer.encodeAll(FacesContext, RenderingContext, UIComponent, FacesBean): // If rowSelection is singleClick we render a hidden field // for storing TR rowIndex if ("singleClick".equals(component.getAttributes().get(CoreTable.ROW_SELECTION_KEY.getName()))) { // Id is the same as rowSelection="single" uses String id = tContext.getTableId() + ":selected"; rw.startElement("input", null); rw.writeAttribute("type", "hidden", null); rw.writeAttribute("id", id, null); rw.writeAttribute("name", id, null); rw.endElement("input"); } ad 3) DesktopTableRenderer._renderTableRows(FacesContext, RenderingContext, TableRenderingContext, UIComponent) // for rowSelection="singleClick" render a onclick on each TR element if("singleClick".equals(component.getAttributes().get(CoreTable.ROW_SELECTION_KEY.getName()))) { final String hiddenFieldId= tContext.getTableId() + ":selected"; writer.writeAttribute("onclick", "onListClick(this,'" + hiddenFieldId +"')", null); } ad 4) and finally in Core.js function onListClick(rowEl, hiddenId) { var jumpValue = rowEl.rowIndex; var hiddenField = document.getElementById(hiddenId); hiddenField.value = jumpValue; return true; } TBD: -- indicating selected row with a nice CSS style -- support autoSubmit to deliver SelectionEvent immediately Any ideas, preferences? Regards, Martin Kočí