/** * Copyright (c) 2015 Bosch Software Innovations GmbH and others. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ package org.eclipse.hawkbit.ui.customrenderers.client.renderers; import com.google.gwt.core.shared.GWT; import com.google.gwt.user.client.ui.Button; import com.vaadin.client.renderers.ClickableRenderer; import com.vaadin.client.ui.VButton; import com.vaadin.client.widget.grid.RendererCellReference; /** * Renders button with provided HTML content. Used to display button with icons. */ public class GridButtonRenderer extends ClickableRenderer<FontIconData, Button> { @Override public Button createWidget() { Button b = GWT.create(Button.class); b.addClickHandler(this); b.setStylePrimaryName("v-nativebutton"); return b; } @Override public void render(final RendererCellReference cell, final FontIconData iconMetadata, final Button button) { if (iconMetadata.getFontIconHtml() != null) { button.setHTML(iconMetadata.getFontIconHtml()); } applyStyles(button, iconMetadata.isDisabled(), iconMetadata.getStyle()); button.getElement().setId(iconMetadata.getId()); button.getElement().setTitle(iconMetadata.getTitle()); button.setEnabled(!iconMetadata.isDisabled()); // this is to allow the button to disappear, if the text is null button.setVisible(iconMetadata.getFontIconHtml() != null); } private static void applyStyles(final Button button, final boolean buttonDisabled, final String additionalStyle) { button.setStyleName(VButton.CLASSNAME); button.addStyleName(getStyle("tiny")); button.addStyleName(getStyle("borderless")); button.addStyleName(getStyle("button-no-border")); button.addStyleName(getStyle("action-type-padding")); button.addStyleName(getStyle(additionalStyle)); if (buttonDisabled) { button.addStyleName("v-disabled"); } } private static String getStyle(final String style) { return new StringBuilder(style).append(" ").append(VButton.CLASSNAME).append("-").append(style).toString(); } }