Changeset 4068 for trunk/sources/HeuristicLab.ExtLibs/HeuristicLab.WinFormsUI/2.3.1/WinFormsUI-2.3.1/Docking/DockContentCollection.cs
- Timestamp:
- 07/22/10 00:44:01 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.ExtLibs/HeuristicLab.WinFormsUI/2.3.1/WinFormsUI-2.3.1/Docking/DockContentCollection.cs
r2645 r4068 1 1 using System; 2 using System.Collections;3 2 using System.Collections.Generic; 4 3 using System.Collections.ObjectModel; 5 4 6 namespace WeifenLuo.WinFormsUI.Docking 7 { 8 public class DockContentCollection : ReadOnlyCollection<IDockContent> 9 { 10 private static List<IDockContent> _emptyList = new List<IDockContent>(0); 5 namespace WeifenLuo.WinFormsUI.Docking { 6 public class DockContentCollection : ReadOnlyCollection<IDockContent> { 7 private static List<IDockContent> _emptyList = new List<IDockContent>(0); 11 8 12 internal DockContentCollection() 13 : base(new List<IDockContent>()) 14 { 15 } 9 internal DockContentCollection() 10 : base(new List<IDockContent>()) { 11 } 16 12 17 internal DockContentCollection(DockPane pane) 18 : base(_emptyList) 19 { 20 m_dockPane = pane; 21 } 13 internal DockContentCollection(DockPane pane) 14 : base(_emptyList) { 15 m_dockPane = pane; 16 } 22 17 23 private DockPane m_dockPane = null; 24 private DockPane DockPane 25 { 26 get { return m_dockPane; } 27 } 18 private DockPane m_dockPane = null; 19 private DockPane DockPane { 20 get { return m_dockPane; } 21 } 28 22 29 public new IDockContent this[int index] 30 { 31 get 32 { 33 if (DockPane == null) 34 return Items[index] as IDockContent; 35 else 36 return GetVisibleContent(index); 37 } 38 } 23 public new IDockContent this[int index] { 24 get { 25 if (DockPane == null) 26 return Items[index] as IDockContent; 27 else 28 return GetVisibleContent(index); 29 } 30 } 39 31 40 internal int Add(IDockContent content) 41 { 32 internal int Add(IDockContent content) { 42 33 #if DEBUG 43 44 34 if (DockPane != null) 35 throw new InvalidOperationException(); 45 36 #endif 46 37 47 48 38 if (Contains(content)) 39 return IndexOf(content); 49 40 50 51 52 41 Items.Add(content); 42 return Count - 1; 43 } 53 44 54 internal void AddAt(IDockContent content, int index) 55 { 45 internal void AddAt(IDockContent content, int index) { 56 46 #if DEBUG 57 58 47 if (DockPane != null) 48 throw new InvalidOperationException(); 59 49 #endif 60 50 61 62 51 if (index < 0 || index > Items.Count - 1) 52 return; 63 53 64 65 54 if (Contains(content)) 55 return; 66 56 67 68 57 Items.Insert(index, content); 58 } 69 59 70 public new bool Contains(IDockContent content) 71 { 72 if (DockPane == null) 73 return Items.Contains(content); 74 else 75 return (GetIndexOfVisibleContents(content) != -1); 76 } 60 public new bool Contains(IDockContent content) { 61 if (DockPane == null) 62 return Items.Contains(content); 63 else 64 return (GetIndexOfVisibleContents(content) != -1); 65 } 77 66 78 public new int Count 79 { 80 get 81 { 82 if (DockPane == null) 83 return base.Count; 84 else 85 return CountOfVisibleContents; 86 } 87 } 67 public new int Count { 68 get { 69 if (DockPane == null) 70 return base.Count; 71 else 72 return CountOfVisibleContents; 73 } 74 } 88 75 89 public new int IndexOf(IDockContent content) 90 { 91 if (DockPane == null) 92 { 93 if (!Contains(content)) 94 return -1; 95 else 96 return Items.IndexOf(content); 97 } 98 else 99 return GetIndexOfVisibleContents(content); 100 } 76 public new int IndexOf(IDockContent content) { 77 if (DockPane == null) { 78 if (!Contains(content)) 79 return -1; 80 else 81 return Items.IndexOf(content); 82 } else 83 return GetIndexOfVisibleContents(content); 84 } 101 85 102 internal void Remove(IDockContent content) 103 { 104 if (DockPane != null) 105 throw new InvalidOperationException(); 86 internal void Remove(IDockContent content) { 87 if (DockPane != null) 88 throw new InvalidOperationException(); 106 89 107 108 90 if (!Contains(content)) 91 return; 109 92 110 111 93 Items.Remove(content); 94 } 112 95 113 private int CountOfVisibleContents 114 { 115 get 116 { 96 private int CountOfVisibleContents { 97 get { 117 98 #if DEBUG 118 119 99 if (DockPane == null) 100 throw new InvalidOperationException(); 120 101 #endif 121 102 122 int count = 0; 123 foreach (IDockContent content in DockPane.Contents) 124 { 125 if (content.DockHandler.DockState == DockPane.DockState) 126 count++; 127 } 128 return count; 129 } 103 int count = 0; 104 foreach (IDockContent content in DockPane.Contents) { 105 if (content.DockHandler.DockState == DockPane.DockState) 106 count++; 130 107 } 108 return count; 109 } 110 } 131 111 132 private IDockContent GetVisibleContent(int index) 133 { 112 private IDockContent GetVisibleContent(int index) { 134 113 #if DEBUG 135 136 114 if (DockPane == null) 115 throw new InvalidOperationException(); 137 116 #endif 138 117 139 int currentIndex = -1; 140 foreach (IDockContent content in DockPane.Contents) 141 { 142 if (content.DockHandler.DockState == DockPane.DockState) 143 currentIndex++; 118 int currentIndex = -1; 119 foreach (IDockContent content in DockPane.Contents) { 120 if (content.DockHandler.DockState == DockPane.DockState) 121 currentIndex++; 144 122 145 146 147 148 149 123 if (currentIndex == index) 124 return content; 125 } 126 throw (new ArgumentOutOfRangeException()); 127 } 150 128 151 private int GetIndexOfVisibleContents(IDockContent content) 152 { 129 private int GetIndexOfVisibleContents(IDockContent content) { 153 130 #if DEBUG 154 155 131 if (DockPane == null) 132 throw new InvalidOperationException(); 156 133 #endif 157 134 158 159 135 if (content == null) 136 return -1; 160 137 161 int index = -1; 162 foreach (IDockContent c in DockPane.Contents) 163 { 164 if (c.DockHandler.DockState == DockPane.DockState) 165 { 166 index++; 138 int index = -1; 139 foreach (IDockContent c in DockPane.Contents) { 140 if (c.DockHandler.DockState == DockPane.DockState) { 141 index++; 167 142 168 if (c == content) 169 return index; 170 } 171 } 172 return -1; 143 if (c == content) 144 return index; 173 145 } 146 } 147 return -1; 174 148 } 149 } 175 150 }
Note: See TracChangeset
for help on using the changeset viewer.