using System; using System.Drawing; using JetBrains.CommonControls; #if RS40 using JetBrains.ReSharper.CodeView.TreePsiBrowser; #endif #if RS45 using JetBrains.ReSharper.Features.Common.TreePsiBrowser; #endif using JetBrains.ReSharper.Psi; using JetBrains.ReSharper.UnitTestExplorer; using JetBrains.TreeModels; using JetBrains.UI.TreeView; using MbUnit.ReSharperRunner.Elements; namespace MbUnit.ReSharperRunner { internal class MbUnitTestPresenter : TreeModelBrowserPresenter { public MbUnitTestPresenter() { Present(PresentTestFixture); Present(PresentTest); } private static void PresentTest(MbUnitTestElement value, IPresentableItem item, TreeModelNode structureElement, PresentationState state) { item.Clear(); if (value.Fixture.GetTypeClrName() != value.GetTypeClrName()) { CLRTypeName typeName = new CLRTypeName(value.GetTypeClrName()); item.RichText = string.Format("{0}.{1}", typeName.ShortName, value.MethodName); } else { item.RichText = value.MethodName; } if (value.IsExplicit) { item.RichText.SetForeColor(SystemColors.GrayText); } Image typeImage = UnitTestManager.GetStandardImage(UnitTestElementImage.Test); Image stateImage = UnitTestManager.GetStateImage(state); if (stateImage != null) { item.Images.Add(stateImage); } else if (typeImage != null) { item.Images.Add(typeImage); } } private void PresentTestFixture(MbUnitTestFixtureElement value, IPresentableItem item, TreeModelNode modelNode, PresentationState state) { item.Clear(); if (IsNodeParentNatural(modelNode, value)) { CLRTypeName typeName = new CLRTypeName(value.GetTypeClrName()); item.RichText = typeName.ShortName; } else { CLRTypeName name = new CLRTypeName(value.GetTypeClrName()); if (string.IsNullOrEmpty(name.NamespaceName)) { item.RichText = string.Format("{0}", name.ShortName); } else { item.RichText = string.Format("{0}.{1}", name.NamespaceName, name.ShortName); } } Image typeImage = UnitTestManager.GetStandardImage(UnitTestElementImage.TestContainer); Image stateImage = UnitTestManager.GetStateImage(state); if (stateImage != null) { item.Images.Add(stateImage); } else if (typeImage != null) { item.Images.Add(typeImage); } AppendOccurencesCount(item, modelNode, "test"); } protected override bool IsNaturalParent(object parentValue, object childValue) { UnitTestNamespace ns = parentValue as UnitTestNamespace; MbUnitTestFixtureElement fixture = childValue as MbUnitTestFixtureElement; if ((fixture != null) && (ns != null)) { return ns.Equals(fixture.GetNamespace()); } return base.IsNaturalParent(parentValue, childValue); } } }