Subversion Repository Public Repository

litesoft

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

Diff revisions: vs.
Revision Author Commited Message
965 GeorgeS picture GeorgeS Fri 01 Aug, 2014 03:20:35 +0000

!