public void Draw(NSRect aCellFrame, NSView aControlView) { WrappedDataTrackItem wrapped = ObjectValue.CastAs <WrappedDataTrackItem>(); IDataTrackItem item = wrapped.Item; // create attributes for the title and subtitle text NSMutableParagraphStyle style = new NSMutableParagraphStyle(); style.SetParagraphStyle(NSParagraphStyle.DefaultParagraphStyle); style.SetLineBreakMode(NSLineBreakMode.NSLineBreakByTruncatingTail); // set font sizes depending on whether this item is a group or track NSFont titleFont = item.IsGroup ? FontManager.FontLarge : FontManager.FontSemiLarge; NSFont subtitleFont = item.IsGroup ? FontManager.FontMedium : FontManager.FontSmall; NSDictionary titleAttr = NSDictionary.DictionaryWithObjectsAndKeys(titleFont, NSAttributedString.NSFontAttributeName, NSColor.WhiteColor, NSAttributedString.NSForegroundColorAttributeName, style, NSAttributedString.NSParagraphStyleAttributeName, null); NSDictionary subtitleAttr = NSDictionary.DictionaryWithObjectsAndKeys(subtitleFont, NSAttributedString.NSFontAttributeName, NSColor.WhiteColor, NSAttributedString.NSForegroundColorAttributeName, style, NSAttributedString.NSParagraphStyleAttributeName, null); style.Release(); float vertPos = aCellFrame.origin.y; float titleIndent = 0.0f; NSSize size; NSRect rect; // draw index for non-group items if (!item.IsGroup) { NSString index = NSString.StringWithUTF8String(string.Format("{0}. ", item.Index + 1)); size = index.SizeWithAttributes(titleAttr); rect = new NSRect(aCellFrame.MinX, vertPos, size.width, size.height); index.DrawInRectWithAttributes(rect, titleAttr); titleIndent = size.width; } // draw the title NSString title = NSString.StringWithUTF8String(item.Title); size = title.SizeWithAttributes(titleAttr); rect = new NSRect(aCellFrame.MinX + titleIndent, vertPos, aCellFrame.Width - titleIndent, size.height); title.DrawInRectWithAttributes(rect, titleAttr); vertPos += size.height; // draw subtitle 1 aligned with the left of the cell if (item.Subtitle1 != string.Empty) { NSString subtitle1 = NSString.StringWithUTF8String(item.Subtitle1); size = subtitle1.SizeWithAttributes(subtitleAttr); rect = new NSRect(aCellFrame.MinX, vertPos, aCellFrame.Width, size.height); subtitle1.DrawInRectWithAttributes(rect, subtitleAttr); vertPos += size.height; } // draw subtitle 2 aligned with the left of the cell if (item.Subtitle2 != string.Empty) { NSString subtitle2 = NSString.StringWithUTF8String(item.Subtitle2); size = subtitle2.SizeWithAttributes(subtitleAttr); rect = new NSRect(aCellFrame.MinX, vertPos, aCellFrame.Width, size.height); subtitle2.DrawInRectWithAttributes(rect, subtitleAttr); } }