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(); } }