Changeset 1823 for trunk/sources/HeuristicLab.Persistence.GUI
- Timestamp:
- 05/15/09 12:29:13 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Persistence.GUI/3.3/PersistenceConfigurationForm.cs
r1703 r1823 9 9 using HeuristicLab.Persistence.Interfaces; 10 10 using System.Text; 11 using HeuristicLab.Persistence.Default. Decomposers;11 using HeuristicLab.Persistence.Default.CompositeSerializers; 12 12 using HeuristicLab.PluginInfrastructure; 13 using HeuristicLab.Persistence.Default. Decomposers.Storable;13 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 14 14 15 15 namespace HeuristicLab.Persistence.GUI { … … 17 17 public partial class PersistenceConfigurationForm : Form { 18 18 19 private readonly Dictionary<string, I Formatter> formatterTable;20 private readonly Dictionary<string, bool> simple FormatterTable;21 private readonly Dictionary<I Formatter, string> reverseFormatterTable;19 private readonly Dictionary<string, IPrimitiveSerializer> primitiveSerializersTable; 20 private readonly Dictionary<string, bool> simplePrimitiveSerializersTable; 21 private readonly Dictionary<IPrimitiveSerializer, string> reversePrimitiveSerializersTable; 22 22 private readonly Dictionary<string, Type> typeNameTable; 23 23 private readonly Dictionary<Type, string> reverseTypeNameTable; … … 26 26 public PersistenceConfigurationForm() { 27 27 InitializeComponent(); 28 formatterTable = new Dictionary<string, IFormatter>();29 simple FormatterTable = new Dictionary<string, bool>();30 reverse FormatterTable = new Dictionary<IFormatter, string>();28 primitiveSerializersTable = new Dictionary<string, IPrimitiveSerializer>(); 29 simplePrimitiveSerializersTable = new Dictionary<string, bool>(); 30 reversePrimitiveSerializersTable = new Dictionary<IPrimitiveSerializer, string>(); 31 31 typeNameTable = new Dictionary<string, Type>(); 32 32 reverseTypeNameTable = new Dictionary<Type, string>(); … … 38 38 ConfigurationService.Instance.LoadSettings(true); 39 39 UpdateFromConfigurationService(); 40 } catch (PersistenceException e) {40 } catch (PersistenceException) { 41 41 MessageBox.Show( 42 42 "Persistence settings could not be loaded.\r\n" + … … 66 66 } 67 67 68 private void Update FormatterGrid(DataGridView formatterGrid, Configuration config) {69 foreach (DataGridViewRow row in formatterGrid.Rows) {68 private void UpdatePrimitiveSerializersGrid(DataGridView primitiveSerializersGrid, Configuration config) { 69 foreach (DataGridViewRow row in primitiveSerializersGrid.Rows) { 70 70 if (row.Cells["Type"] != null) { 71 I Formatter formatter = config.GetFormatter(typeNameTable[(string)row.Cells["Type"].Value]);72 if ( formatter == null) {71 IPrimitiveSerializer primitiveSerializer = config.GetPrimitiveSerializer(typeNameTable[(string)row.Cells["Type"].Value]); 72 if (primitiveSerializer == null) { 73 73 row.Cells["Active"].Value = false; 74 74 } else { 75 foreach (var pair in formatterTable) {76 if (pair.Value.GetType().VersionInvariantName() == formatter.GetType().VersionInvariantName()) {77 row.Cells[" Formatter"].Value = pair.Key;75 foreach (var pair in primitiveSerializersTable) { 76 if (pair.Value.GetType().VersionInvariantName() == primitiveSerializer.GetType().VersionInvariantName()) { 77 row.Cells["Primitive Serializer"].Value = pair.Key; 78 78 row.Cells["Active"].Value = true; 79 79 break; … … 85 85 } 86 86 87 private void Update DecomposerList(ListView decomposerList, Configuration config) {88 decomposerList.SuspendLayout();89 decomposerList.Items.Clear();90 var available Decomposers = new Dictionary<string, IDecomposer>();91 foreach (I Decomposer d in ConfigurationService.Instance.Decomposers) {92 available Decomposers.Add(d.GetType().VersionInvariantName(), d);93 } 94 foreach (I Decomposer decomposer in config.Decomposers) {95 var item = decomposerList.Items.Add(decomposer.GetType().Name);87 private void UpdateCompositeSerializersList(ListView compositeSerializersList, Configuration config) { 88 compositeSerializersList.SuspendLayout(); 89 compositeSerializersList.Items.Clear(); 90 var availableCompositeSerializers = new Dictionary<string, ICompositeSerializer>(); 91 foreach (ICompositeSerializer d in ConfigurationService.Instance.CompositeSerializers) { 92 availableCompositeSerializers.Add(d.GetType().VersionInvariantName(), d); 93 } 94 foreach (ICompositeSerializer compositeSerializer in config.CompositeSerializers) { 95 var item = compositeSerializersList.Items.Add(compositeSerializer.GetType().Name); 96 96 item.Checked = true; 97 item.Tag = decomposer;98 available Decomposers.Remove(decomposer.GetType().VersionInvariantName());99 } 100 foreach (KeyValuePair<string, I Decomposer> pair in availableDecomposers) {101 var item = decomposerList.Items.Add(pair.Value.GetType().Name);97 item.Tag = compositeSerializer; 98 availableCompositeSerializers.Remove(compositeSerializer.GetType().VersionInvariantName()); 99 } 100 foreach (KeyValuePair<string, ICompositeSerializer> pair in availableCompositeSerializers) { 101 var item = compositeSerializersList.Items.Add(pair.Value.GetType().Name); 102 102 item.Checked = false; 103 103 item.Tag = pair.Value; 104 104 } 105 decomposerList.ResumeLayout();105 compositeSerializersList.ResumeLayout(); 106 106 } 107 107 … … 110 110 foreach (IFormat format in ConfigurationService.Instance.Formats) { 111 111 Configuration config = ConfigurationService.Instance.GetConfiguration(format); 112 Update FormatterGrid(112 UpdatePrimitiveSerializersGrid( 113 113 (DataGridView)GetControlsOnPage(format.Name, "GridView"), 114 114 config); 115 Update DecomposerList(116 (ListView)GetControlsOnPage(format.Name, " DecomposerList"),115 UpdateCompositeSerializersList( 116 (ListView)GetControlsOnPage(format.Name, "CompositeSerializersList"), 117 117 config); 118 118 } … … 124 124 configurationTabs.TabPages.Clear(); 125 125 foreach (IFormat format in ConfigurationService.Instance.Formats) { 126 List<I Formatter> formatters = ConfigurationService.Instance.Formatters[format.SerialDataType];126 List<IPrimitiveSerializer> primitiveSerializers = ConfigurationService.Instance.PrimitiveSerializers[format.SerialDataType]; 127 127 TabPage page = new TabPage(format.Name) { 128 128 Name = format.Name, … … 145 145 horizontalSplit.SuspendLayout(); 146 146 verticalSplit.Panel1.Controls.Add(horizontalSplit); 147 ListView decomposerList = createDecomposerList();148 horizontalSplit.Panel1.Controls.Add( decomposerList);147 ListView compositeSerializersList = createCompsiteSerializersList(); 148 horizontalSplit.Panel1.Controls.Add(compositeSerializersList); 149 149 DataGridView gridView = createGridView(); 150 150 verticalSplit.Panel2.Controls.Add(gridView); 151 fillDataGrid(gridView, formatters);151 fillDataGrid(gridView, primitiveSerializers); 152 152 ListBox checkBox = new ListBox { 153 153 Name = "CheckBox", … … 185 185 }); 186 186 gridView.Columns.Add(new DataGridViewComboBoxColumn { 187 Name = " Formatter",187 Name = "Primitive Serializer", 188 188 AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill 189 189 }); … … 192 192 } 193 193 194 private ListView create DecomposerList() {195 ListView decomposerList = new ListView {194 private ListView createCompsiteSerializersList() { 195 ListView compositeSerializersList = new ListView { 196 196 Activation = ItemActivation.OneClick, 197 197 AllowDrop = true, … … 201 201 GridLines = true, 202 202 HeaderStyle = ColumnHeaderStyle.Nonclickable, 203 Name = " DecomposerList",203 Name = "CompositeSerializersList", 204 204 ShowGroups = false, 205 205 View = View.Details 206 206 }; 207 decomposerList.SuspendLayout();208 decomposerList.Resize += decomposerList_Resize;209 decomposerList.ItemChecked += decomposerList_ItemChecked;210 decomposerList.DragDrop += decomposerList_DragDrop;211 decomposerList.DragEnter += decomposerList_DragEnter;212 decomposerList.ItemDrag += decomposerList_ItemDrag;213 decomposerList.Columns.Add(207 compositeSerializersList.SuspendLayout(); 208 compositeSerializersList.Resize += compositeSerializersList_Resize; 209 compositeSerializersList.ItemChecked += compositeSerializersList_ItemChecked; 210 compositeSerializersList.DragDrop += compositeSerializersList_DragDrop; 211 compositeSerializersList.DragEnter += compositeSerializersList_DragEnter; 212 compositeSerializersList.ItemDrag += compositeSerializersList_ItemDrag; 213 compositeSerializersList.Columns.Add( 214 214 new ColumnHeader { 215 Name = " DecomposerColumn", Text = "Decomposers",215 Name = "CompositeSerializersColumn", Text = "Composite Serializer", 216 216 }); 217 foreach (I Decomposer decomposer in ConfigurationService.Instance.Decomposers) {218 var item = decomposerList.Items.Add(decomposer.GetType().Name);217 foreach (ICompositeSerializer compositeSerializer in ConfigurationService.Instance.CompositeSerializers) { 218 var item = compositeSerializersList.Items.Add(compositeSerializer.GetType().Name); 219 219 item.Checked = true; 220 item.Tag = decomposer;221 } 222 decomposerList.ResumeLayout();223 return decomposerList;224 } 225 226 private void fillDataGrid(DataGridView gridView, IEnumerable<I Formatter> formatters) {220 item.Tag = compositeSerializer; 221 } 222 compositeSerializersList.ResumeLayout(); 223 return compositeSerializersList; 224 } 225 226 private void fillDataGrid(DataGridView gridView, IEnumerable<IPrimitiveSerializer> primitiveSerializers) { 227 227 gridView.SuspendLayout(); 228 Dictionary<string, List<string>> formatterMap = createFormatterMap(formatters);229 foreach (var formatterMapping in formatterMap) {228 Dictionary<string, List<string>> primitiveSerializersMap = createPrimitiveSerializersMap(primitiveSerializers); 229 foreach (var primitiveSerializersMapping in primitiveSerializersMap) { 230 230 var row = gridView.Rows[gridView.Rows.Add()]; 231 row.Cells["Type"].Value = formatterMapping.Key;232 row.Cells["Type"].ToolTipText = formatterMapping.Key;231 row.Cells["Type"].Value = primitiveSerializersMapping.Key; 232 row.Cells["Type"].ToolTipText = primitiveSerializersMapping.Key; 233 233 row.Cells["Active"].Value = true; 234 var comboBoxCell = (DataGridViewComboBoxCell)row.Cells[" Formatter"];235 foreach (var formatter in formatterMapping.Value) {236 comboBoxCell.Items.Add( formatter);234 var comboBoxCell = (DataGridViewComboBoxCell)row.Cells["Primitive Serializer"]; 235 foreach (var primitiveSerializer in primitiveSerializersMapping.Value) { 236 comboBoxCell.Items.Add(primitiveSerializer); 237 237 } 238 238 comboBoxCell.Value = comboBoxCell.Items[0]; … … 246 246 } 247 247 248 private Dictionary<string, List<string>> create FormatterMap(IEnumerable<IFormatter> formatters) {249 var formatterMap = new Dictionary<string, List<string>>();250 foreach (var formatter in formatters) {251 string formatterName = reverseFormatterTable[formatter];252 string typeName = reverseTypeNameTable[ formatter.SourceType];253 if (! formatterMap.ContainsKey(typeName))254 formatterMap.Add(typeName, new List<string>());255 formatterMap[typeName].Add(formatterName);256 } 257 return formatterMap;248 private Dictionary<string, List<string>> createPrimitiveSerializersMap(IEnumerable<IPrimitiveSerializer> primitiveSerializers) { 249 var primitiveSerializersMap = new Dictionary<string, List<string>>(); 250 foreach (var primitiveSerializer in primitiveSerializers) { 251 string primitiveSerializerName = reversePrimitiveSerializersTable[primitiveSerializer]; 252 string typeName = reverseTypeNameTable[primitiveSerializer.SourceType]; 253 if (!primitiveSerializersMap.ContainsKey(typeName)) 254 primitiveSerializersMap.Add(typeName, new List<string>()); 255 primitiveSerializersMap[typeName].Add(primitiveSerializerName); 256 } 257 return primitiveSerializersMap; 258 258 } 259 259 260 260 private void InitializeNameTables() { 261 foreach (var serialDataType in ConfigurationService.Instance. Formatters.Keys) {262 foreach (var formatter in ConfigurationService.Instance.Formatters[serialDataType]) {263 string formatterName = formatter.GetType().Name;264 if (simple FormatterTable.ContainsKey(formatterName)) {265 I Formatter otherFormatter = formatterTable[formatterName];266 formatterTable.Remove(formatterName);267 reverse FormatterTable.Remove(otherFormatter);268 formatterTable.Add(otherFormatter.GetType().VersionInvariantName(), otherFormatter);269 reverse FormatterTable.Add(otherFormatter, otherFormatter.GetType().VersionInvariantName());270 formatterName = formatter.GetType().VersionInvariantName();261 foreach (var serialDataType in ConfigurationService.Instance.PrimitiveSerializers.Keys) { 262 foreach (var primtiveSerializer in ConfigurationService.Instance.PrimitiveSerializers[serialDataType]) { 263 string primitiveSerializerName = primtiveSerializer.GetType().Name; 264 if (simplePrimitiveSerializersTable.ContainsKey(primitiveSerializerName)) { 265 IPrimitiveSerializer otherPrimitiveSerializer = primitiveSerializersTable[primitiveSerializerName]; 266 primitiveSerializersTable.Remove(primitiveSerializerName); 267 reversePrimitiveSerializersTable.Remove(otherPrimitiveSerializer); 268 primitiveSerializersTable.Add(otherPrimitiveSerializer.GetType().VersionInvariantName(), otherPrimitiveSerializer); 269 reversePrimitiveSerializersTable.Add(otherPrimitiveSerializer, otherPrimitiveSerializer.GetType().VersionInvariantName()); 270 primitiveSerializerName = primtiveSerializer.GetType().VersionInvariantName(); 271 271 } 272 simple FormatterTable[formatter.GetType().Name] = true;273 formatterTable.Add(formatterName, formatter);274 reverse FormatterTable.Add(formatter, formatterName);275 276 string typeName = formatter.SourceType.IsGenericType ?277 formatter.SourceType.SimpleFullName() :278 formatter.SourceType.Name;272 simplePrimitiveSerializersTable[primtiveSerializer.GetType().Name] = true; 273 primitiveSerializersTable.Add(primitiveSerializerName, primtiveSerializer); 274 reversePrimitiveSerializersTable.Add(primtiveSerializer, primitiveSerializerName); 275 276 string typeName = primtiveSerializer.SourceType.IsGenericType ? 277 primtiveSerializer.SourceType.SimpleFullName() : 278 primtiveSerializer.SourceType.Name; 279 279 if (typeNameTable.ContainsKey(typeName)) { 280 280 Type otherType = typeNameTable[typeName]; 281 if (otherType != formatter.SourceType) {281 if (otherType != primtiveSerializer.SourceType) { 282 282 typeNameTable.Remove(typeName); 283 283 reverseTypeNameTable.Remove(otherType); 284 284 typeNameTable.Add(otherType.VersionInvariantName(), otherType); 285 285 reverseTypeNameTable.Add(otherType, otherType.VersionInvariantName()); 286 typeName = formatter.SourceType.VersionInvariantName();287 typeNameTable.Add(typeName, formatter.SourceType);288 reverseTypeNameTable.Add( formatter.SourceType, typeName);286 typeName = primtiveSerializer.SourceType.VersionInvariantName(); 287 typeNameTable.Add(typeName, primtiveSerializer.SourceType); 288 reverseTypeNameTable.Add(primtiveSerializer.SourceType, typeName); 289 289 } 290 290 } else { 291 typeNameTable.Add(typeName, formatter.SourceType);292 reverseTypeNameTable.Add( formatter.SourceType, typeName);291 typeNameTable.Add(typeName, primtiveSerializer.SourceType); 292 reverseTypeNameTable.Add(primtiveSerializer.SourceType, typeName); 293 293 } 294 294 } … … 305 305 checkBox.Items.Clear(); 306 306 Configuration activeConfig = GetActiveConfiguration(); 307 foreach (var formatter in activeConfig.Formatters) {308 checkBox.Items.Add( formatter.GetType().Name + " (F)");309 } 310 foreach (var decomposer in activeConfig.Decomposers)311 checkBox.Items.Add( decomposer.GetType().Name + " (D)");307 foreach (var primitveSerializer in activeConfig.PrimitiveSerializers) { 308 checkBox.Items.Add(primitveSerializer.GetType().Name + " (F)"); 309 } 310 foreach (var compositeSerializer in activeConfig.CompositeSerializers) 311 checkBox.Items.Add(compositeSerializer.GetType().Name + " (D)"); 312 312 } 313 313 checkBox.ResumeLayout(); … … 319 319 } 320 320 321 private void decomposerList_ItemDrag(object sender, ItemDragEventArgs e) {322 ListView decomposerList = (ListView)sender;323 decomposerList.DoDragDrop(decomposerList.SelectedItems, DragDropEffects.Move);324 } 325 326 private void decomposerList_DragEnter(object sender, DragEventArgs e) {321 private void compositeSerializersList_ItemDrag(object sender, ItemDragEventArgs e) { 322 ListView compositeSerializersList = (ListView)sender; 323 compositeSerializersList.DoDragDrop(compositeSerializersList.SelectedItems, DragDropEffects.Move); 324 } 325 326 private void compositeSerializersList_DragEnter(object sender, DragEventArgs e) { 327 327 if (e.Data.GetDataPresent(typeof(ListView.SelectedListViewItemCollection).FullName)) { 328 328 e.Effect = DragDropEffects.Move; … … 330 330 } 331 331 332 private void decomposerList_DragDrop(object sender, DragEventArgs e) {333 ListView decomposerList = (ListView)sender;334 if ( decomposerList.SelectedItems.Count == 0) {332 private void compositeSerializersList_DragDrop(object sender, DragEventArgs e) { 333 ListView compositeSerializersList = (ListView)sender; 334 if (compositeSerializersList.SelectedItems.Count == 0) { 335 335 return; 336 336 } 337 Point cp = decomposerList.PointToClient(new Point(e.X, e.Y));338 ListViewItem targetItem = decomposerList.GetItemAt(cp.X, cp.Y);337 Point cp = compositeSerializersList.PointToClient(new Point(e.X, e.Y)); 338 ListViewItem targetItem = compositeSerializersList.GetItemAt(cp.X, cp.Y); 339 339 if (targetItem == null) 340 340 return; 341 341 int targetIndex = targetItem.Index; 342 var selectedItems = new List<ListViewItem>( decomposerList.SelectedItems.Cast<ListViewItem>());342 var selectedItems = new List<ListViewItem>(compositeSerializersList.SelectedItems.Cast<ListViewItem>()); 343 343 int i = 0; 344 344 foreach (ListViewItem dragItem in selectedItems) { … … 346 346 return; 347 347 if (dragItem.Index < targetIndex) { 348 decomposerList.Items.Insert(targetIndex + 1, (ListViewItem)dragItem.Clone());348 compositeSerializersList.Items.Insert(targetIndex + 1, (ListViewItem)dragItem.Clone()); 349 349 } else { 350 decomposerList.Items.Insert(targetIndex + i, (ListViewItem)dragItem.Clone());351 } 352 decomposerList.Items.Remove(dragItem);350 compositeSerializersList.Items.Insert(targetIndex + i, (ListViewItem)dragItem.Clone()); 351 } 352 compositeSerializersList.Items.Remove(dragItem); 353 353 i++; 354 354 } … … 356 356 } 357 357 358 private void decomposerList_Resize(object sender, EventArgs e) {359 ListView decomposerList = (ListView)sender;360 decomposerList.Columns["DecomposerColumn"].Width = decomposerList.Width - 4;361 } 362 363 364 private void decomposerList_ItemChecked(object sender, ItemCheckedEventArgs e) {358 private void compositeSerializersList_Resize(object sender, EventArgs e) { 359 ListView compositeSerializersList = (ListView)sender; 360 compositeSerializersList.Columns["CompositeSerializersColumn"].Width = compositeSerializersList.Width - 4; 361 } 362 363 364 private void compositeSerializersList_ItemChecked(object sender, ItemCheckedEventArgs e) { 365 365 UpdatePreview(); 366 366 } … … 384 384 } 385 385 386 private Configuration GenerateConfiguration(IFormat format, DataGridView formatterGrid, ListView decomposerList) {387 if ( formatterGrid == null || decomposerList == null)386 private Configuration GenerateConfiguration(IFormat format, DataGridView primitiveSerializersGrid, ListView compositeSerializersList) { 387 if (primitiveSerializersGrid == null || compositeSerializersList == null) 388 388 return null; 389 var formatters = new List<IFormatter>();390 foreach (DataGridViewRow row in formatterGrid.Rows) {389 var primitiveSerializers = new List<IPrimitiveSerializer>(); 390 foreach (DataGridViewRow row in primitiveSerializersGrid.Rows) { 391 391 if (row.Cells["Type"].Value != null && 392 392 row.Cells["Active"].Value != null && 393 row.Cells[" Formatter"].Value != null &&393 row.Cells["Primitive Serializer"].Value != null && 394 394 (bool)row.Cells["Active"].Value == true) { 395 formatters.Add(formatterTable[(string)row.Cells["Formatter"].Value]);396 } 397 } 398 var decomposers = new List<IDecomposer>();399 foreach (ListViewItem item in decomposerList.Items) {395 primitiveSerializers.Add(primitiveSerializersTable[(string)row.Cells["Primitive Serializer"].Value]); 396 } 397 } 398 var compositeSerializers = new List<ICompositeSerializer>(); 399 foreach (ListViewItem item in compositeSerializersList.Items) { 400 400 if (item != null && item.Checked) 401 decomposers.Add((IDecomposer)item.Tag);402 } 403 return new Configuration(format, formatters, decomposers);401 compositeSerializers.Add((ICompositeSerializer)item.Tag); 402 } 403 return new Configuration(format, primitiveSerializers, compositeSerializers); 404 404 } 405 405 … … 408 408 return GenerateConfiguration(format, 409 409 (DataGridView)GetActiveControl("GridView"), 410 (ListView)GetActiveControl(" DecomposerList"));410 (ListView)GetActiveControl("CompositeSerializersList")); 411 411 } 412 412 … … 414 414 return GenerateConfiguration(format, 415 415 (DataGridView)GetControlsOnPage(format.Name, "GridView"), 416 (ListView)GetControlsOnPage(format.Name, " DecomposerList"));416 (ListView)GetControlsOnPage(format.Name, "CompositeSerializersList")); 417 417 } 418 418
Note: See TracChangeset
for help on using the changeset viewer.