Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
10/29/13 13:47:35 (11 years ago)
Author:
jkarder
Message:

#2116:

  • refactored breadcrumb navigation
  • added possibility to navigate to the first invisible breadcrumb via the ellipsis
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/Breadcrumbs/HeuristicLab.MainForm.WindowsForms/3.3/MainForms/MainForm.cs

    r10089 r10093  
    224224
    225225    public T GetOutermostViewOfType<T>(Control childControl) where T : class, IView {
     226      if (childControl == null) throw new ArgumentNullException("childControl", "ChildControl cannot be null.");
     227
    226228      T outermostView = null;
    227229      for (var control = childControl; control != null; control = control.Parent) {
     
    273275    }
    274276
    275     public void ShowContentInSpecificViewHost(IContent content, ViewHost viewHost) {
    276       if (viewHost == null) return;
    277       viewHost.Content = null;
    278       var viewType = MainFormManager.GetDefaultViewType(content.GetType());
    279       viewHost.ViewType = viewType;
    280       viewHost.Content = content;
     277    public ViewHost ShowContentInOutermostViewHost(IContent content, Control childControl, bool requireHotlinking = false) {
     278      if (content == null) throw new ArgumentNullException("content", "Content cannot be null.");
     279      if (childControl == null) throw new ArgumentNullException("childControl", "ChildControl cannot be null.");
     280
     281      var outermostViewHost = GetOutermostViewOfType<ViewHost>(childControl);
     282      if (outermostViewHost == null)
     283        throw new ArgumentException("No outermost ViewHost could be found for the specified child control.", "childControl");
     284
     285      if (!requireHotlinking || outermostViewHost.HotlinkingEnabled) {
     286        var oldCrumbs = outermostViewHost.Breadcrumbs;
     287        var newCrumbs = new LinkedList<IContent>();
     288        for (var control = childControl; control != null; control = control.Parent) {
     289          var vh = control as ViewHost;
     290          if (vh != null && vh.Content != null)
     291            newCrumbs.AddFirst(vh.Content);
     292        }
     293        bool showBreadcrumbs = outermostViewHost.ShowBreadcrumbs;
     294        outermostViewHost.Content = null;
     295        var viewType = MainFormManager.GetDefaultViewType(content.GetType());
     296        outermostViewHost.ViewType = viewType;
     297        outermostViewHost.Content = content;
     298        outermostViewHost.UpdateBreadcrumbTrail(oldCrumbs, newCrumbs.Concat(new[] { content }));
     299        outermostViewHost.ShowBreadcrumbs = showBreadcrumbs;
     300      }
     301      return outermostViewHost;
    281302    }
    282303
Note: See TracChangeset for help on using the changeset viewer.