/*******************************************************************************
* Copyright (c) 2012-2015 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.java.jdi.client.debug;
import elemental.html.DivElement;
import elemental.dom.Element;
import elemental.html.SpanElement;
import org.eclipse.che.ide.ext.java.jdi.shared.Variable;
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 com.google.gwt.resources.client.ImageResource;
/**
* The rendered for debug variable node.
*
* @author <a href="mailto:aplotnikov@codenvy.com">Andrey Plotnikov</a>
*/
public class VariableTreeNodeRenderer implements NodeRenderer<Variable> {
public interface Css extends CssResource {
@ClassName("variable-root")
String variableRoot();
@ClassName("variable-icon")
String variableIcon();
@ClassName("variable-label")
String variableLabel();
}
public interface Resources extends Tree.Resources {
@Source("Debug.css")
Css variableCss();
@Source("localVariable.png")
ImageResource localVariable();
}
private final Css css;
public VariableTreeNodeRenderer(Resources res) {
this.css = res.variableCss();
this.css.ensureInjected();
}
/** {@inheritDoc} */
@Override
public Element getNodeKeyTextContainer(SpanElement treeNodeLabel) {
return (Element)treeNodeLabel.getChildNodes().item(1);
}
/** {@inheritDoc} */
@Override
public SpanElement renderNodeContents(Variable data) {
SpanElement root = Elements.createSpanElement(css.variableRoot());
DivElement icon = Elements.createDivElement(css.variableIcon());
SpanElement label = Elements.createSpanElement(css.variableLabel());
String content = data.getName() + ": " + data.getValue();
label.setTextContent(content);
root.appendChild(icon);
root.appendChild(label);
return root;
}
/** {@inheritDoc} */
@Override
public void updateNodeContents(TreeNodeElement<Variable> treeNode) {
// do nothing
}
}