/* * Copyright 2000-2016 Vaadin Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.vaadin.tests.widgetset.client.v7.grid; import java.util.Arrays; import java.util.Collection; import com.google.gwt.dom.client.BrowserEvents; import com.google.gwt.dom.client.DivElement; import com.google.gwt.dom.client.NativeEvent; import com.google.gwt.user.client.DOM; import com.vaadin.shared.communication.ServerRpc; import com.vaadin.shared.ui.Connect; import com.vaadin.v7.client.connectors.AbstractGridRendererConnector; import com.vaadin.v7.client.renderers.ComplexRenderer; import com.vaadin.v7.client.renderers.Renderer; import com.vaadin.v7.client.widget.grid.CellReference; import com.vaadin.v7.client.widget.grid.RendererCellReference; import elemental.json.JsonObject; @Connect(com.vaadin.v7.tests.components.grid.RowAwareRenderer.class) public class RowAwareRendererConnector extends AbstractGridRendererConnector<Void> { public interface RowAwareRendererRpc extends ServerRpc { void clicky(String key); } public class RowAwareRenderer extends ComplexRenderer<Void> { @Override public Collection<String> getConsumedEvents() { return Arrays.asList(BrowserEvents.CLICK); } @Override public void init(RendererCellReference cell) { DivElement div = DivElement.as(DOM.createDiv()); div.setAttribute("style", "border: 1px solid red; background: pink;"); div.setInnerText("Click me!"); cell.getElement().appendChild(div); } @Override public void render(RendererCellReference cell, Void data) { // NOOP } @Override public boolean onBrowserEvent(CellReference<?> cell, NativeEvent event) { String key = getRowKey((JsonObject) cell.getRow()); getRpcProxy(RowAwareRendererRpc.class).clicky(key); cell.getElement().setInnerText( "row: " + cell.getRowIndex() + ", key: " + key); return true; } } @Override protected Renderer<Void> createRenderer() { // cannot use the default createRenderer as RowAwareRenderer needs a // reference to its connector - it has no "real" no-argument constructor return new RowAwareRenderer(); } }