/******************************************************************************* * Copyright (c) 2012-2016 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.ext.git.client.merge; import elemental.dom.Node; import elemental.dom.Element; import elemental.html.SpanElement; import org.eclipse.che.ide.ext.git.client.GitResources; import org.eclipse.che.ide.ui.tree.NodeRenderer; import org.eclipse.che.ide.ui.tree.Tree; import org.eclipse.che.ide.ui.tree.TreeNodeElement; import org.eclipse.che.ide.util.dom.Elements; import com.google.gwt.resources.client.CssResource; import org.vectomatic.dom.svg.ui.SVGImage; /** * The rendered for reference node. * * @author Andrey Plotnikov */ public class ReferenceTreeNodeRenderer implements NodeRenderer<Reference> { public interface Css extends CssResource { @ClassName("reference-root") String referenceRoot(); @ClassName("reference-label") String referenceLabel(); } public interface Resources extends Tree.Resources { @Source("Merge.css") Css referenceCss(); } private final Css css; private final GitResources gitResources; public ReferenceTreeNodeRenderer(Resources res, GitResources gitResources) { this.css = res.referenceCss(); this.css.ensureInjected(); this.gitResources = gitResources; } /** {@inheritDoc} */ @Override public Element getNodeKeyTextContainer(SpanElement treeNodeLabel) { return (Element)treeNodeLabel.getChildNodes().item(1); } /** {@inheritDoc} */ @Override public SpanElement renderNodeContents(Reference data) { SpanElement root = Elements.createSpanElement(css.referenceRoot()); SVGImage icon; if (data.getFullName().equals(MergePresenter.LOCAL_BRANCHES_TITLE)) { icon = new SVGImage(gitResources.checkoutReference()); } else if (data.getFullName().equals(MergePresenter.REMOTE_BRANCHES_TITLE)) { icon = new SVGImage(gitResources.remote()); } else { icon = new SVGImage(gitResources.branches()); } SpanElement label = Elements.createSpanElement(css.referenceLabel()); String content = data.getDisplayName(); label.setTextContent(content); root.appendChild((Node)icon.getSvgElement().getElement()); root.appendChild(label); return root; } /** {@inheritDoc} */ @Override public void updateNodeContents(TreeNodeElement<Reference> treeNode) { // do nothing } }