Esempio n. 1
0
        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);
            }
        }