- Timestamp:
- 09/13/11 09:38:41 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/GeneralizedQAP/HeuristicLab.Optimizer/3.3/NewItemDialog.cs
r5445 r6748 22 22 using System; 23 23 using System.Collections.Generic; 24 using System.Drawing; 24 25 using System.Linq; 26 using System.Threading.Tasks; 25 27 using System.Windows.Forms; 26 28 using HeuristicLab.Core; … … 42 44 item = null; 43 45 InitializeComponent(); 46 SetEnabledStateOfControls(); 44 47 } 45 48 46 49 private void NewItemDialog_Load(object sender, EventArgs e) { 50 TaskScheduler context = TaskScheduler.FromCurrentSynchronizationContext(); 51 Task.Factory 52 .StartNew((Action<object>)LoadItems, context) 53 .ContinueWith(PrepareUI); 54 } 55 56 private void NewItemDialog_Shown(object sender, EventArgs e) { 57 item = null; 58 } 59 60 private void LoadItems(object state) { 61 TaskScheduler context = (TaskScheduler)state; 47 62 if (!initialized) { 48 var categories = from t in ApplicationManager.Manager.GetTypes(typeof(IItem)) 49 where CreatableAttribute.IsCreatable(t) 63 Type[] creatableTypes = (from t in ApplicationManager.Manager.GetTypes(typeof(IItem)) 64 where CreatableAttribute.IsCreatable(t) 65 select t).ToArray(); 66 var categories = from t in creatableTypes 50 67 orderby CreatableAttribute.GetCategory(t), ItemAttribute.GetName(t), ItemAttribute.GetVersion(t) ascending 51 68 group t by CreatableAttribute.GetCategory(t) into c … … 53 70 54 71 itemsListView.SmallImageList = new ImageList(); 72 int count = 0; 73 ListViewItem[] itemsArray = new ListViewItem[creatableTypes.Length]; 74 Image[] smallImagesArray = new Image[creatableTypes.Length]; 75 List<ListViewGroup> itemGroupsList = new List<ListViewGroup>(); 55 76 foreach (var category in categories) { 56 77 ListViewGroup group = new ListViewGroup(category.Key); 57 item sListView.Groups.Add(group);78 itemGroupsList.Add(group); 58 79 foreach (var creatable in category) { 59 80 IItem i = (IItem)Activator.CreateInstance(creatable); 60 81 items.Add(i); 61 82 ListViewItem item = new ListViewItem(new string[] { i.ItemName, i.ItemVersion.ToString(), i.ItemDescription }, group); 62 itemsListView.SmallImageList.Images.Add(i.ItemImage); 63 item.ImageIndex = itemsListView.SmallImageList.Images.Count - 1; 83 item.ImageIndex = count; 64 84 item.Tag = i; 65 itemsListView.Items.Add(item); 85 itemsArray[count] = item; 86 smallImagesArray[count] = i.ItemImage; 87 count++; 88 Task.Factory.StartNew(() => { 89 loadingProgressBar.Value = (int)Math.Round(loadingProgressBar.Minimum + (loadingProgressBar.Maximum - loadingProgressBar.Minimum) * (double)count / creatableTypes.Length); 90 }, Task.Factory.CancellationToken, TaskCreationOptions.None, context); 66 91 } 67 92 } 68 for (int i = 0; i < itemsListView.Columns.Count; i++) 69 itemsListView.Columns[i].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent); 93 Task.Factory.StartNew(() => { 94 itemsListView.SmallImageList.Images.AddRange(smallImagesArray); 95 itemsListView.Groups.AddRange(itemGroupsList.ToArray()); 96 itemsListView.Items.AddRange(itemsArray); 97 for (int i = 0; i < itemsListView.Columns.Count; i++) 98 itemsListView.Columns[i].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent); 99 }, Task.Factory.CancellationToken, TaskCreationOptions.None, context); 70 100 initialized = true; 71 101 } 72 102 } 73 103 74 private void NewItemDialog_Shown(object sender, EventArgs e) { 75 item = null; 104 private void PrepareUI(Task t) { 105 SetEnabledStateOfControls(); 106 loadingPanel.Visible = false; 107 } 108 109 private void SetEnabledStateOfControls() { 110 itemsListView.Enabled = initialized; 111 okButton.Enabled = initialized; 112 cancelButton.Enabled = initialized; 76 113 } 77 114
Note: See TracChangeset
for help on using the changeset viewer.