package jetbrains.mps.ide.editor.util.renderer;
/*Generated by MPS */
import jetbrains.mps.ide.navigation.NodeNavigatable;
import org.jetbrains.mps.openapi.module.SRepository;
import org.jetbrains.annotations.NotNull;
import javax.swing.JList;
import jetbrains.mps.smodel.presentation.NodePresentationUtil;
import javax.swing.Icon;
import jetbrains.mps.ide.icons.IconManager;
import org.jetbrains.mps.openapi.model.SNode;
public class DefaultNodeRenderer extends BaseRenderer<NodeNavigatable> {
protected final SRepository myRepository;
public DefaultNodeRenderer(@NotNull SRepository repository) {
myRepository = repository;
}
@Override
protected final void customizeCellRenderer(final JList list, final Object value, final int i, final boolean index, final boolean selected) {
myRepository.getModelAccess().runReadAction(new Runnable() {
public void run() {
superCustomizeCellRenderer(list, value, i, index, selected);
}
});
}
/*package*/ final void superCustomizeCellRenderer(JList list, Object value, int i, boolean index, boolean selected) {
// this is workaround for https://youtrack.jetbrains.com/issue/MPS-23068
super.customizeCellRenderer(list, value, i, index, selected);
}
@Override
protected String getElementText(final NodeNavigatable element) {
return getLabelNode(element).getPresentation();
}
@Override
protected String getContainerText(final NodeNavigatable element, String name) {
return NodePresentationUtil.descriptionText(getContainerNode(element));
}
@Override
protected Icon getIcon(NodeNavigatable element) {
return IconManager.getIconFor(getLabelNode(element));
}
protected SNode getLabelNode(NodeNavigatable element) {
return element.getNodePointer().resolve(myRepository);
}
protected SNode getContainerNode(NodeNavigatable element) {
return getLabelNode(element).getContainingRoot();
}
}