/* * Copyright 2013 ArcBees Inc. * * 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.gwtplatform.carstore.client.application.rating.renderer; import javax.inject.Inject; import com.google.gwt.cell.client.AbstractCell; import com.google.gwt.cell.client.ActionCell.Delegate; import com.google.gwt.cell.client.ValueUpdater; import com.google.gwt.dom.client.BrowserEvents; import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.NativeEvent; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; import com.google.gwt.uibinder.client.UiHandler; import com.google.gwt.uibinder.client.UiRenderer; import com.google.inject.assistedinject.Assisted; import com.gwtplatform.carstore.shared.dto.RatingDto; public class RatingCell extends AbstractCell<RatingDto> { interface Renderer extends UiRenderer { void render(SafeHtmlBuilder sb, String name, String rating); void onBrowserEvent(RatingCell o, NativeEvent e, Element p, RatingDto n); } private final Renderer uiRenderer; private final Delegate<RatingDto> delegate; @Inject RatingCell( Renderer uiRenderer, @Assisted Delegate<RatingDto> delegate) { super(BrowserEvents.CLICK); this.uiRenderer = uiRenderer; this.delegate = delegate; } @Override public void render(Context context, RatingDto value, SafeHtmlBuilder safeHtmlBuilder) { uiRenderer.render(safeHtmlBuilder, value.toString(), value.getRating().toString()); } @Override public void onBrowserEvent(Context context, Element parent, RatingDto value, NativeEvent event, ValueUpdater<RatingDto> valueUpdater) { uiRenderer.onBrowserEvent(this, event, parent, value); } @UiHandler({"remove"}) void onRemoveRatingClicked(ClickEvent event, Element parent, RatingDto value) { delegate.execute(value); } }