public Id CopyWithZone(IntPtr aZone)
        {
            BookmarkData copy = new BookmarkData();

            copy.iBookmark = iBookmark;
            return(copy);
        }
        public void TableViewDidClickRow(NSTableView aView, int aCol, int aRow)
        {
            if (!iDragging)
            {
                // extended delegate function that is called on a mouse up - see
                // the TableViewClickable implementation below
                if (aRow == -1)
                {
                    // ignore clicks on the table background
                    return;
                }
                else
                {
                    // browse to the selected bookmark
                    BookmarkData data = iBookmarks.ObjectAtIndex((uint)aRow).CastAs <BookmarkData>();
                    iBrowser.Browse(data.Bookmark.BreadcrumbTrail);
                }

                // always close the popover
                if (EventClose != null)
                {
                    EventClose(this, EventArgs.Empty);
                }
            }
            iDragging = false;
        }
        public void DeleteBookmark(Id aSender)
        {
            Assert.Check(ViewTable.ClickedRow >= 0);

            BookmarkData data = iBookmarks.ObjectAtIndex((uint)ViewTable.ClickedRow).CastAs <BookmarkData>();

            iBookmarkManager.Remove(data.Bookmark);
        }
        private void ModelChanged(object sender, EventArgs e)
        {
            iBookmarks.Release();
            iBookmarks = new NSMutableArray();

            foreach (Bookmark b in iBookmarkManager.Bookmarks)
            {
                BookmarkData data = new BookmarkData(b);
                iBookmarks.AddObject(data);
                data.Release();
            }

            WillChangeValueForKey(NSString.StringWithUTF8String("bookmarks"));
            DidChangeValueForKey(NSString.StringWithUTF8String("bookmarks"));
        }
        public void Draw(NSRect aCellFrame, NSView aControlView)
        {
            BookmarkData item = ObjectValue.CastAs <BookmarkData>();

            // create attributes for the title and subtitle text
            NSMutableParagraphStyle style = new NSMutableParagraphStyle();

            style.SetParagraphStyle(NSParagraphStyle.DefaultParagraphStyle);
            style.SetLineBreakMode(NSLineBreakMode.NSLineBreakByTruncatingTail);

            NSDictionary titleAttr = NSDictionary.DictionaryWithObjectsAndKeys(FontManager.FontMedium, NSAttributedString.NSFontAttributeName,
                                                                               NSColor.WhiteColor, NSAttributedString.NSForegroundColorAttributeName,
                                                                               style, NSAttributedString.NSParagraphStyleAttributeName,
                                                                               null);
            NSDictionary subtitleAttr = NSDictionary.DictionaryWithObjectsAndKeys(FontManager.FontSmall, NSAttributedString.NSFontAttributeName,
                                                                                  NSColor.WhiteColor, NSAttributedString.NSForegroundColorAttributeName,
                                                                                  style, NSAttributedString.NSParagraphStyleAttributeName,
                                                                                  null);

            style.Release();

            NSPoint pt = aCellFrame.origin;

            // draw title
            NSString title = NSString.StringWithUTF8String(item.Bookmark.Title);

            title.DrawAtPointWithAttributes(pt, titleAttr);

            NSSize size = title.SizeWithAttributes(titleAttr);

            pt.y += size.height;

            // draw breadcrumb
            List <string> titleTrail = new List <string>();

            foreach (Breadcrumb bc in item.Bookmark.BreadcrumbTrail)
            {
                titleTrail.Add(bc.Title);
            }
            string   breadcrumb  = string.Join("/", titleTrail.ToArray());
            NSString breadcrumb2 = NSString.StringWithUTF8String(breadcrumb);

            breadcrumb2.DrawAtPointWithAttributes(pt, subtitleAttr);
        }