/******************************************************************************* * Copyright (c) 2012-2017 Codenvy, S.A. * 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 * * Contributors: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.eclipse.che.ide.api.icon; import com.google.gwt.core.client.GWT; import com.google.gwt.resources.client.ImageResource; import com.google.gwt.user.client.ui.Image; import org.eclipse.che.commons.annotation.Nullable; import org.vectomatic.dom.svg.ui.SVGImage; import org.vectomatic.dom.svg.ui.SVGResource; /** * Icon. * * @author Artem Zatsarynnyi */ public class Icon { private final String id; private final String sourcePath; private final SVGResource svgResource; private final ImageResource imageResource; /** * Create a new icon based on the specified image path. * * @param id * icon id * @param sourcePath * relative path to image within the GWT module's public folder, e.g. my-extension/icon.png */ public Icon(String id, String sourcePath) { this.id = id; this.sourcePath = sourcePath; this.svgResource = null; this.imageResource = null; } /** * Create a new icon based on the specified {@link SVGResource}. * * @param id * icon id * @param svgResource * resource that contains SVG */ public Icon(String id, SVGResource svgResource) { this.id = id; this.sourcePath = null; this.svgResource = svgResource; this.imageResource = null; } /** * Create a new icon based on the specified {@link ImageResource}. * * @param id * icon's id * @param imageResource * resource that contains image */ public Icon(String id, ImageResource imageResource) { this.id = id; this.sourcePath = null; this.imageResource = imageResource; this.svgResource = null; } /** * Creates new icon. * * @param id * icon id * @param sourcePath * relative path to image within the GWT module's public folder, e.g. my-extension/icon.png * @param svgResource * resource that contains SVG */ public Icon(String id, String sourcePath, SVGResource svgResource) { this.id = id; this.sourcePath = sourcePath; this.svgResource = svgResource; this.imageResource = null; } /** * Icon id. * * @return icon id */ public String getId() { return id; } /** * Returns {@link Image} widget. * * @return {@link Image} widget */ @Nullable public Image getImage() { if (sourcePath != null) { return new Image(GWT.getModuleBaseForStaticFiles() + sourcePath); } else if (imageResource != null) { return new Image(imageResource); } else { return null; } } /** * Returns {@link SVGImage} widget. * * @return {@link SVGImage} widget */ @Nullable public SVGImage getSVGImage() { if (svgResource == null) { return null; } return new SVGImage(svgResource); } /** * Returns {@link SVGResource} widget. * * @return {@link SVGResource} widget */ @Nullable public SVGResource getSVGResource() { return svgResource; } }