litesoft
@ 965
litesoft / trunk / GWT_Sandbox / FormEngine / src / com / temp / foundation / client / widget / table / cell / ClickableTextListDataCell.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
package com.temp.foundation.client.widget.table.cell; import com.google.gwt.cell.client.*; import com.google.gwt.dom.client.*; import com.google.gwt.safehtml.shared.*; import com.temp.foundation.client.handler.*; import com.temp.common.shared.utils.*; import java.util.*; public class ClickableTextListDataCell<E, L extends List<E>> extends AbstractCell<L> { DataClickHandler<E> clickHandler; DisplayStringHandler<E> displayStringHandler; private static final String CLICK_EVENT = "click"; public ClickableTextListDataCell( DataClickHandler<E> _clickHandler, DisplayStringHandler<E> _displayStringHandler ) { super( CLICK_EVENT ); clickHandler = _clickHandler; displayStringHandler = _displayStringHandler; if ( displayStringHandler == null ) { displayStringHandler = new DisplayStringHandler<E>() { public String getDisplayString( E value ) { return value.toString(); } }; } } @Override public void render( Context context, L valueList, SafeHtmlBuilder sb ) { if ( valueList != null && !valueList.isEmpty() ) { for ( E valueListElement : valueList ) { String displayString = displayStringHandler.getDisplayString( valueListElement ); if ( !StringUtils.isBlank( displayString ) ) { if ( clickHandler != null ) { sb.appendHtmlConstant( "<div class='link-button'>" ); } else { sb.appendHtmlConstant( "<div>" ); } sb.appendEscaped( displayString ); if ( clickHandler != null ) { sb.appendHtmlConstant( "</div>" ); } else { sb.appendHtmlConstant( "</div>" ); } } else { sb.appendHtmlConstant( "<span></span>" ); } } } } @Override public void onBrowserEvent( Context context, Element parent, L valueList, NativeEvent event, ValueUpdater<L> valueUpdater ) { if ( clickHandler != null && event.getType().equals( CLICK_EVENT ) && valueList != null && !valueList.isEmpty() ) { int index = 0; EventTarget eventTarget = event.getEventTarget(); if ( Element.is( eventTarget ) ) { Element target = eventTarget.cast(); Element container = parent; Element wrapper = container.getFirstChildElement(); while ( wrapper != null ) { if ( wrapper.isOrHasChild( target ) ) { clickHandler.onClick( valueList.get( index ) ); } index++; wrapper = wrapper.getNextSiblingElement(); } } } } } |
Commits for litesoft/trunk/GWT_Sandbox/FormEngine/src/com/temp/foundation/client/widget/table/cell/ClickableTextListDataCell.java
Revision | Author | Commited | Message |
---|---|---|---|
965 | GeorgeS | Fri 01 Aug, 2014 03:20:35 +0000 | ! |