- Timestamp:
- 04/20/10 17:37:53 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionTabularView.cs
r3423 r3447 31 31 using HeuristicLab.Data.Views; 32 32 using HeuristicLab.Collections; 33 using HeuristicLab.Core; 33 34 34 35 namespace HeuristicLab.Optimization.Views { … … 68 69 } 69 70 } 71 72 73 protected override int[] Sort(IEnumerable<KeyValuePair<int, SortOrder>> sortedColumns) { 74 int[] newSortedIndex = Enumerable.Range(0, Content.Count).ToArray(); 75 RunCollectionRowComparer rowComparer = new RunCollectionRowComparer(); 76 if (sortedColumns.Count() != 0) { 77 rowComparer.SortedIndizes = sortedColumns; 78 rowComparer.Matrix = Content; 79 Array.Sort(newSortedIndex, rowComparer); 80 } 81 return newSortedIndex; 82 } 83 84 public class RunCollectionRowComparer : IComparer<int> { 85 public RunCollectionRowComparer() { 86 } 87 88 private List<KeyValuePair<int, SortOrder>> sortedIndizes; 89 public IEnumerable<KeyValuePair<int, SortOrder>> SortedIndizes { 90 get { return this.sortedIndizes; } 91 set { sortedIndizes = new List<KeyValuePair<int, SortOrder>>(value); } 92 } 93 private RunCollection matrix; 94 public RunCollection Matrix { 95 get { return this.matrix; } 96 set { this.matrix = value; } 97 } 98 99 public int Compare(int x, int y) { 100 int result = 0; 101 IItem value1, value2; 102 IComparable comparable1, comparable2; 103 104 if (matrix == null) 105 throw new InvalidOperationException("Could not sort IStringConvertibleMatrix if the matrix member is null."); 106 if (sortedIndizes == null) 107 return 0; 108 109 foreach (KeyValuePair<int, SortOrder> pair in sortedIndizes.Where(p => p.Value != SortOrder.None)) { 110 value1 = matrix.GetValue(x, pair.Key); 111 value2 = matrix.GetValue(y, pair.Key); 112 comparable1 = value1 as IComparable; 113 comparable2 = value2 as IComparable; 114 if (comparable1 != null) 115 result = comparable1.CompareTo(comparable2); 116 else { 117 string string1 = value1 != null ? value1.ToString() : string.Empty; 118 string string2 = value2 != null ? value2.ToString() : string.Empty; 119 result = string1.CompareTo(string2); 120 } 121 if (pair.Value == SortOrder.Descending) 122 result *= -1; 123 if (result != 0) 124 return result; 125 } 126 return result; 127 } 128 } 70 129 } 71 130 }
Note: See TracChangeset
for help on using the changeset viewer.