/* * ChunkOutputThumbnail.java * * Copyright (C) 2009-16 by RStudio, Inc. * * Unless you have received this program directly from RStudio pursuant * to the terms of a commercial license agreement with RStudio, then * this program is licensed to you under the terms of version 3 of the * GNU Affero General Public License. This program is distributed WITHOUT * ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT, * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the * AGPL (http://www.gnu.org/licenses/agpl-3.0.txt) for more details. * */ package org.rstudio.studio.client.workbench.views.source.editors.text; import org.rstudio.core.client.ColorUtil; import org.rstudio.core.client.StringUtil; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; public class ChunkOutputThumbnail extends Composite implements EditorThemeListener { private static ChunkOutputThumbnailUiBinder uiBinder = GWT .create(ChunkOutputThumbnailUiBinder.class); interface ChunkOutputThumbnailUiBinder extends UiBinder<Widget, ChunkOutputThumbnail> { } public ChunkOutputThumbnail(String title, String subtitle, Widget backdrop, EditorThemeListener.Colors colors) { initWidget(uiBinder.createAndBindUi(this)); title_.setText(title); // move the title down if there's no subtitle if (StringUtil.isNullOrEmpty(subtitle)) title_.getElement().getStyle().setMarginTop(45, Unit.PCT); else subtitle_.setText(subtitle); // add a backdrop if we have one if (backdrop != null) backdrop_.add(backdrop); // apply the initial set of colors onEditorThemeChanged(colors); } @Override public void onEditorThemeChanged(Colors colors) { if (colors == null) { return; } getElement().getStyle().setBackgroundColor(colors.surface); setMaskColor(colors.surface); if (backdrop_ != null && backdrop_ instanceof EditorThemeListener) ((EditorThemeListener)backdrop_).onEditorThemeChanged(colors); } private void setMaskColor(String color) { ColorUtil.RGBColor rgb = ColorUtil.RGBColor.fromCss(color); String tuple = rgb.red() + ", " + rgb.green() + ", " + rgb.blue(); mask_.getElement().getStyle().setProperty("backgroundImage", "linear-gradient(rgba(" + tuple + ", 0.0) 0%, " + "rgba(" + tuple + ", 0.65) 33%, " + "rgba(" + tuple + ", 1.0) 80%, " + "rgba(" + tuple + ", 1.0) 100%)"); } @UiField Label title_; @UiField Label subtitle_; @UiField SimplePanel backdrop_; @UiField SimplePanel mask_; }