/// <summary> /// コレクションから指定したお気に入りを削除 /// </summary> /// <param name="item"></param> public void Remove(BookmarkEntry item) { if (innerList.Contains(item)) { item.Parent = null; innerList.Remove(item); } }
/// <summary> /// お気に入りからitemを削除 /// </summary> /// <param name="header"></param> public void Remove(ThreadHeader header) { BookmarkEntry item = Search(header); if (item != null) { item.Remove(); } }
/// <summary> /// BookmarkFolderクラスのインスタンスを初期化 /// </summary> public BookmarkFolder(string name, int id) : base(id) { this.children = new BookmarkEntryCollection(this); this.sortorder = SortOrder.Ascending; this.expanded = false; this.parent = null; this.name = name; }
/// <summary> /// BookmarkThreadクラスのインスタンスを初期化 /// </summary> /// <param name="header"></param> /// <param name="id"></param> public BookmarkThread(ThreadHeader header, int id) : base(id) { // // TODO: コンストラクタ ロジックをここに追加してください。 // this.header = header; this.name = header.Subject; this.parent = null; }
/// <summary> /// BookmarkCollectionクラスのインスタンスを初期化 /// </summary> public BookmarkEntryCollection(BookmarkEntry parent) { if (parent == null) { throw new ArgumentNullException("parent"); } if (parent.IsLeaf) { throw new ArgumentException("葉を親にすることは出来ません"); } this.innerList = ArrayList.Synchronized(new ArrayList()); this.parent = parent; }
/// <summary> /// 指定したインデックスにある要素を削除 /// </summary> /// <param name="index"></param> public void RemoveAt(int index) { if (index < 0 || index >= innerList.Count) { throw new ArgumentOutOfRangeException("index"); } BookmarkEntry entry = this[index]; entry.Parent = null; innerList.RemoveAt(index); }
/// <summary> /// xとyを比較 /// </summary> /// <param name="x"></param> /// <param name="y"></param> /// <returns></returns> public int Compare(object x, object y) { BookmarkEntry item_x = (BookmarkEntry)x; BookmarkEntry item_y = (BookmarkEntry)y; switch (obj) { // 名前順でソート case BookmarkSortObject.Name: return(CompareInternal(item_x, item_y)); } throw new Exception(); }
/// <summary> /// 指定したお気に入りに新しいIDを設定する /// </summary> /// <param name="entry"></param> /// <param name="newid"></param> public static void SetEntryId(BookmarkEntry entry, int newid) { if (entry.id == newid) { return; } if (hash.ContainsKey(newid)) { throw new ArgumentException("Id:" + newid + "は他のお気に入りと重複しています"); } entry.id = newid; hash.Remove(entry.id); hash[newid] = entry; }
private void LoadRecursive(XmlNode node, BookmarkFolder folder) { // フォルダを作成 folder.Name = node.Attributes["Name"].Value; folder.Expanded = Boolean.Parse(node.Attributes["Expanded"].Value); XmlAttribute id = node.Attributes["ID"]; if (id != null) { BookmarkEntry.SetEntryId(folder, Int32.Parse(id.Value)); } // 子ノードを検索 foreach (XmlNode subNode in node.SelectNodes("Children/Folder")) { BookmarkFolder subFolder = new BookmarkFolder(); folder.Children.Add(subFolder); LoadRecursive(subNode, subFolder); } // お気に入りコレクションを検索 foreach (XmlNode child in node.SelectNodes("Children/Item")) { string url = child.Attributes["URL"].Value; ThreadHeader header = URLParser.ParseThread(url); if (header != null) { //XmlAttribute idattr = child.Attributes["ID"]; BookmarkEntry entry = null; header.Subject = child.InnerText; //if (idattr != null) // entry = new BookmarkThread(header, Int32.Parse(idattr.Value)); //else entry = new BookmarkThread(header); folder.Children.Add(entry); } } }
/// <summary> /// xとyを比較 /// </summary> /// <param name="x"></param> /// <param name="y"></param> /// <returns></returns> private int CompareInternal(BookmarkEntry entry1, BookmarkEntry entry2) { // フォルダ対お気に入り、またはお気に入り対フォルダの場合は、 // フォルダを優先する。 if (entry1 is BookmarkFolder && entry2 is BookmarkThread) { return(-1); } if (entry1 is BookmarkThread && entry2 is BookmarkFolder) { return(1); } // --------------------------------------- // お気に入り対お気に入り return((order == SortOrder.Ascending) ? String.Compare(entry1.Name, entry2.Name) : String.Compare(entry2.Name, entry1.Name)); }
/// <summary> /// 指定したインデックスにお気に入りを挿入 /// </summary> /// <param name="index"></param> /// <param name="item"></param> public void Insert(int index, BookmarkEntry item) { item.Parent = parent; innerList.Insert(index, item); }
/// <summary> /// お気に入りエントリを追加 /// </summary> /// <param name="item"></param> /// <returns></returns> public int Add(BookmarkEntry item) { item.Parent = parent; return(innerList.Add(item)); }
/// <summary> /// 指定したエントリのコレクション内インデックスを取得 /// </summary> /// <param name="item"></param> /// <returns></returns> public int IndexOf(BookmarkEntry item) { return(innerList.IndexOf(item)); }
/// <summary> /// 指定したエントリがコレクション内に含まれているかどうかを判断 /// </summary> /// <param name="item"></param> /// <returns></returns> public bool Contains(BookmarkEntry item) { return(innerList.Contains(item)); }
/// <summary> /// このインスタンスとobjが等しいかどうかを判断 /// </summary> /// <param name="obj"></param> /// <returns></returns> public override bool Equals(object obj) { BookmarkEntry entry = obj as BookmarkEntry; return((entry != null) ? (this.id == entry.id) : false); }