#region License Information
/* HeuristicLab
* Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
*
* This file is part of HeuristicLab.
*
* HeuristicLab is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* HeuristicLab is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with HeuristicLab. If not, see .
*/
#endregion
using System;
using System.Windows.Forms;
using HeuristicLab.MainForm.WindowsForms;
namespace HeuristicLab.Core.Views {
///
/// Base class for all visual representations.
///
public partial class ItemView : AsynchronousContentView {
public const int MaximumNestingLevel = 32;
public new IItem Content {
get { return (IItem)base.Content; }
set { base.Content = value; }
}
///
/// Initializes a new instance of with the caption "View".
///
public ItemView() {
InitializeComponent();
}
protected override void OnInitialized(EventArgs e) {
base.OnInitialized(e);
if (CountParentControls() > MaximumNestingLevel) {
//capture content, needed because it is set at a later time
NestingLevelErrorControl errorControl = new NestingLevelErrorControl(() => Content, this.GetType());
errorControl.Dock = DockStyle.Fill;
Controls.Clear();
Controls.Add(errorControl);
}
}
private int CountParentControls() {
int cnt = 0;
Control parent = Parent;
while (parent != null) {
parent = parent.Parent;
cnt++;
}
return cnt;
}
}
}