Package name.pehl.karaka.client.cell

Source Code of name.pehl.karaka.client.cell.ModelActionCell

package name.pehl.karaka.client.cell;

import com.google.gwt.cell.client.ValueUpdater;
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.EventTarget;
import com.google.gwt.dom.client.ImageElement;
import com.google.gwt.dom.client.NativeEvent;
import com.google.gwt.dom.client.NodeList;
import com.google.gwt.dom.client.TableCellElement;
import com.google.gwt.dom.client.TableRowElement;
import name.pehl.karaka.shared.model.BaseModel;

import static com.google.gwt.dom.client.Style.Visibility.HIDDEN;
import static com.google.gwt.dom.client.Style.Visibility.VISIBLE;

public class ModelActionCell<T extends BaseModel> extends ModelCell<T>
{
    final String id;


    public ModelActionCell(final String id, final ModelsTable<T> table, final ModelRenderer<T> renderer)
    {
        super(table, renderer);
        this.id = id;
    }

    public void show(final TableRowElement row)
    {
        actionContainer(row).getStyle().setVisibility(VISIBLE);
    }

    public void hide(final TableRowElement row)
    {
        actionContainer(row).getStyle().setVisibility(HIDDEN);
    }

    protected DivElement actionContainer(final TableRowElement row)
    {
        NodeList<TableCellElement> cells = row.getCells();
        if (cells.getLength() > 0)
        {
            TableCellElement cell = cells.getItem(cells.getLength() - 1);
            // First div is generated by GWT, the second is the one from the html template
            return cell.getFirstChildElement().getFirstChildElement().cast();
        }
        return Document.get().createDivElement();
    }

    @Override
    protected void onClick(final Context context, final Element parent, final T value,
            final NativeEvent event, final ValueUpdater<T> valueUpdater)
    {
        EventTarget eventTarget = event.getEventTarget();
        if (eventTarget != null)
        {
            ImageElement img = eventTarget.cast();
            if (ImageElement.is(img))
            {
                Element parentElement = img.getParentElement();
                if (parentElement != null && parentElement.getAttribute("id") != null)
                {
                    table.onAction(value, parentElement.getAttribute("id"));
                }
            }
        }
    }
}
TOP

Related Classes of name.pehl.karaka.client.cell.ModelActionCell

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.