- Timestamp:
- 04/19/10 03:28:16 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Core.Views/3.3/OperatorTreeView.cs
r3393 r3407 24 24 using System.ComponentModel; 25 25 using System.Drawing; 26 using System.Linq; 26 27 using System.Windows.Forms; 27 28 using HeuristicLab.Collections; … … 35 36 [Content(typeof(IOperator), false)] 36 37 public sealed partial class OperatorTreeView : ItemView { 37 private Dictionary<IValueParameter <IOperator>, List<TreeNode>> opParamNodeTable;38 private Dictionary<IValueParameter, List<TreeNode>> opParamNodeTable; 38 39 private Dictionary<IOperator, List<TreeNode>> operatorNodeTable; 39 40 private Dictionary<IKeyedItemCollection<string, IParameter>, IOperator> parametersOperatorTable; … … 66 67 InitializeComponent(); 67 68 graphTreeView.Sorted = true; 68 opParamNodeTable = new Dictionary<IValueParameter <IOperator>, List<TreeNode>>();69 opParamNodeTable = new Dictionary<IValueParameter, List<TreeNode>>(); 69 70 operatorNodeTable = new Dictionary<IOperator, List<TreeNode>>(); 70 71 parametersOperatorTable = new Dictionary<IKeyedItemCollection<string, IParameter>, IOperator>(); … … 116 117 117 118 #region TreeNode Management 118 private TreeNode CreateTreeNode(IValueParameter <IOperator>opParam) {119 private TreeNode CreateTreeNode(IValueParameter opParam) { 119 120 TreeNode node = new TreeNode(); 120 121 node.Text = opParam.Name + ": "; … … 127 128 opParamNodeTable[opParam].Add(node); 128 129 129 FillTreeNode(node, opParam.Value);130 FillTreeNode(node, (IOperator)opParam.Value); 130 131 return node; 131 132 } … … 162 163 else node.ForeColor = graphTreeView.ForeColor; 163 164 164 foreach (I Parameter param in op.Parameters) {165 if ( param is IValueParameter<IOperator>)165 foreach (IValueParameter param in op.Parameters.OfType<IValueParameter>()) { 166 if (typeof(IOperator).IsAssignableFrom(param.DataType)) 166 167 node.Nodes.Add(new TreeNode()); 167 168 } … … 199 200 ClearTreeNode(node); 200 201 201 IValueParameter <IOperator>opParam = GetOperatorParameterTag(node);202 IValueParameter opParam = GetOperatorParameterTag(node); 202 203 if (opParam != null) { 203 204 opParamNodeTable[opParam].Remove(node); … … 211 212 } 212 213 private void AddParameterNodes(IOperator op, IEnumerable<IParameter> parameters) { 213 foreach (IParameter param in parameters) { 214 IValueParameter<IOperator> opParam = param as IValueParameter<IOperator>; 215 if (opParam != null) { 214 foreach (IValueParameter param in parameters.OfType<IValueParameter>()) { 215 if (typeof(IOperator).IsAssignableFrom(param.DataType)) { 216 216 foreach (TreeNode node in operatorNodeTable[op]) 217 node.Nodes.Add(CreateTreeNode( opParam));217 node.Nodes.Add(CreateTreeNode(param)); 218 218 } 219 219 } 220 220 } 221 221 private void RemoveParameterNodes(IEnumerable<IParameter> parameters) { 222 foreach (IParameter param in parameters) { 223 IValueParameter<IOperator> opParam = param as IValueParameter<IOperator>; 224 if (opParam != null) { 225 while (opParamNodeTable.ContainsKey(opParam)) 226 RemoveTreeNode(opParamNodeTable[opParam][0]); 222 foreach (IValueParameter param in parameters.OfType<IValueParameter>()) { 223 if (typeof(IOperator).IsAssignableFrom(param.DataType)) { 224 while (opParamNodeTable.ContainsKey(param)) 225 RemoveTreeNode(opParamNodeTable[param][0]); 227 226 } 228 227 } … … 235 234 Invoke(new EventHandler(opParam_ValueChanged), sender, e); 236 235 else { 237 IValueParameter <IOperator> opParam = (IValueParameter<IOperator>)sender;236 IValueParameter opParam = (IValueParameter)sender; 238 237 foreach (TreeNode node in opParamNodeTable[opParam].ToArray()) 239 238 ClearTreeNode(node); 240 239 foreach (TreeNode node in opParamNodeTable[opParam]) { 241 240 node.Text = opParam.Name + ": "; 242 FillTreeNode(node, opParam.Value);241 FillTreeNode(node, (IOperator)opParam.Value); 243 242 } 244 243 } … … 265 264 IOperator op = (IOperator)sender; 266 265 foreach (TreeNode node in operatorNodeTable[op]) { 267 IValueParameter <IOperator>opParam = GetOperatorParameterTag(node);266 IValueParameter opParam = GetOperatorParameterTag(node); 268 267 if (opParam == null) 269 268 node.Text = op.Name + " (" + op.ItemName + ")"; … … 330 329 node.Nodes.Clear(); 331 330 IOperator op = GetOperatorTag(node); 332 foreach (IParameter param in op.Parameters) { 333 IValueParameter<IOperator> opParam = param as IValueParameter<IOperator>; 334 if (opParam != null) node.Nodes.Add(CreateTreeNode(opParam)); 331 foreach (IValueParameter param in op.Parameters.OfType<IValueParameter>()) { 332 if (typeof(IOperator).IsAssignableFrom(param.DataType)) node.Nodes.Add(CreateTreeNode(param)); 335 333 } 336 334 } … … 343 341 private void graphTreeView_KeyDown(object sender, KeyEventArgs e) { 344 342 if (!ReadOnly && (e.KeyCode == Keys.Delete) && (graphTreeView.SelectedNode != null)) { 345 IValueParameter <IOperator>opParam = GetOperatorParameterTag(graphTreeView.SelectedNode);343 IValueParameter opParam = GetOperatorParameterTag(graphTreeView.SelectedNode); 346 344 if (opParam != null) opParam.Value = null; 347 345 } … … 371 369 private void graphTreeView_ItemDrag(object sender, ItemDragEventArgs e) { 372 370 TreeNode node = (TreeNode)e.Item; 373 IValueParameter <IOperator>opParam = GetOperatorParameterTag(node);371 IValueParameter opParam = GetOperatorParameterTag(node); 374 372 IOperator op = GetOperatorTag(node); 375 373 DataObject data = new DataObject(); … … 404 402 if ((e.Effect & DragDropEffects.Copy) == DragDropEffects.Copy) op = (IOperator)op.Clone(); 405 403 TreeNode node = graphTreeView.GetNodeAt(graphTreeView.PointToClient(new Point(e.X, e.Y))); 406 IValueParameter <IOperator>opParam = GetOperatorParameterTag(node);404 IValueParameter opParam = GetOperatorParameterTag(node); 407 405 opParam.Value = op; 408 406 } … … 436 434 } 437 435 438 private IValueParameter <IOperator>GetOperatorParameterTag(TreeNode node) {436 private IValueParameter GetOperatorParameterTag(TreeNode node) { 439 437 if (node.Tag != null) 440 return ((Tuple<IValueParameter <IOperator>, IOperator>)node.Tag).Item1;438 return ((Tuple<IValueParameter, IOperator>)node.Tag).Item1; 441 439 else 442 440 return null; 443 441 } 444 private void SetOperatorParameterTag(TreeNode node, IValueParameter <IOperator>opParam) {442 private void SetOperatorParameterTag(TreeNode node, IValueParameter opParam) { 445 443 if (node.Tag == null) 446 node.Tag = new Tuple<IValueParameter <IOperator>, IOperator>(opParam, null);444 node.Tag = new Tuple<IValueParameter, IOperator>(opParam, null); 447 445 else 448 ((Tuple<IValueParameter <IOperator>, IOperator>)node.Tag).Item1 = opParam;446 ((Tuple<IValueParameter, IOperator>)node.Tag).Item1 = opParam; 449 447 } 450 448 private IOperator GetOperatorTag(TreeNode node) { 451 449 if (node.Tag != null) 452 return ((Tuple<IValueParameter <IOperator>, IOperator>)node.Tag).Item2;450 return ((Tuple<IValueParameter, IOperator>)node.Tag).Item2; 453 451 else 454 452 return null; … … 456 454 private void SetOperatorTag(TreeNode node, IOperator op) { 457 455 if (node.Tag == null) 458 node.Tag = new Tuple<IValueParameter <IOperator>, IOperator>(null, op);456 node.Tag = new Tuple<IValueParameter, IOperator>(null, op); 459 457 else 460 ((Tuple<IValueParameter <IOperator>, IOperator>)node.Tag).Item2 = op;458 ((Tuple<IValueParameter, IOperator>)node.Tag).Item2 = op; 461 459 } 462 460
Note: See TracChangeset
for help on using the changeset viewer.