#2116 closed enhancement (done)
Implement a breadcrumb navigation for view hosts
Reported by: | jkarder | Owned by: | jkarder |
---|---|---|---|
Priority: | medium | Milestone: | HeuristicLab 3.3.13 |
Component: | Core.Views | Version: | 3.3.12 |
Keywords: | Cc: |
Description
If too many nested views are created, the following exception is thrown:
System.ComponentModel.Win32Exception (0x80004005): Error creating window handle. at System.Windows.Forms.NativeWindow.CreateHandle(CreateParams cp) at System.Windows.Forms.Control.CreateHandle() at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) at System.Windows.Forms.Control.CreateControl() at System.Windows.Forms.Control.ControlCollection.Add(Control value) at HeuristicLab.MainForm.WindowsForms.ViewHost.set_ActiveView(IContentView value) at HeuristicLab.MainForm.WindowsForms.ViewHost.OnViewTypeChanged() at HeuristicLab.MainForm.WindowsForms.ViewHost.set_ViewType(Type value) at HeuristicLab.MainForm.WindowsForms.ViewHost.OnContentChanged() at HeuristicLab.MainForm.WindowsForms.ContentView.set_Content(IContent value) at HeuristicLab.Core.Views.ItemCollectionView`1.itemsListView_SelectedIndexChanged(Object sender, EventArgs e) at HeuristicLab.Core.Views.ParameterCollectionView.itemsListView_SelectedIndexChanged(Object sender, EventArgs e) at System.Windows.Forms.ListView.WmReflectNotify(Message& m) at System.Windows.Forms.ListView.WndProc(Message& m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Therefore, a navigation mechanism that avoids deeply nested view arrangements (e.g. breadcrumbs) should be implemented.
Attachments (1)
Change History (36)
comment:1 Changed 11 years ago by jkarder
- Status changed from new to accepted
comment:2 Changed 11 years ago by jkarder
- Version changed from 3.3.9 to branch
comment:3 Changed 11 years ago by jkarder
comment:4 Changed 11 years ago by jkarder
r10042: added prototype of a breadcrumb navigation
comment:5 Changed 11 years ago by jkarder
r10087: fixed readonly property assignment in ParameterCollectionView
comment:6 Changed 11 years ago by jkarder
- added hotlinking functionality
- added methods for outermost view host detection and manipulation
comment:7 Changed 11 years ago by jkarder
- refactored breadcrumb navigation
- added possibility to navigate to the first invisible breadcrumb via the ellipsis
comment:8 Changed 11 years ago by jkarder
- fixed issues within the outermost control detection
- fixed visible property assignment of the breadcrumb control in ViewHost
comment:9 Changed 11 years ago by jkarder
- refactored outermost view host detection
- fixed update logic of breadcrumb trail
- fixed some views
comment:10 Changed 11 years ago by jkarder
r10107: fixed logic in LinkClicked event handler
comment:11 Changed 11 years ago by jkarder
- Owner changed from jkarder to mkommend
- Status changed from accepted to reviewing
I know that there are still some issues left, e.g. if you open the Hive Job Manager, the breadcrumb navigation shows the fully qualified type name of the HiveClient. It would be nice if you could have a look at the current implementation and give me some hints.
comment:12 Changed 11 years ago by mkommend
Review comments:
- It should be possible to configure whether the breadcrumb navigation is used.
- It would be cool if the previously shown tab is restored, when navigating back to a previously shown view (e.g. opening an algorithm parameter and navigating back to the algorithm view shows the problem tab). However, this could be hard to implement.
- The breadcrumb navigation is not updated, when the string representation of an item changes.
- You could use the view attribute to avoid displaying the fully qualified type name (as it is the case for the Hive Job Manager).
I haven't had a detailed look at the source code and focused on the functionality for now. IMHO, the breadcrumb navigation is most useful when one doesn't work with the docking Mainform. Another issue is that breadcrumb navigation doesn't resolve the issue that too many nested views are created.
comment:13 Changed 11 years ago by mkommend
- Owner changed from mkommend to jkarder
- Status changed from reviewing to assigned
comment:14 Changed 11 years ago by mkommend
- Summary changed from Provide a mechanism to avoid creation of too many nested views to Implement a breadcrumb navigation for view hosts
comment:15 Changed 11 years ago by mkommend
Created a separate ticket for the BSOD on Win8 for too many nested views (#2158)
comment:16 Changed 10 years ago by abeham
- Milestone changed from HeuristicLab 3.3.10 to HeuristicLab 3.3.11
comment:17 Changed 10 years ago by jkarder
- Status changed from assigned to accepted
comment:18 Changed 10 years ago by jkarder
comment:19 Changed 10 years ago by jkarder
r11594: merged r10041:11593 from trunk into branch
comment:20 Changed 10 years ago by jkarder
- Milestone changed from HeuristicLab 3.3.11 to HeuristicLab 3.3.12
comment:21 Changed 9 years ago by jkarder
- Milestone changed from HeuristicLab 3.3.12 to HeuristicLab 3.3.x Backlog
comment:22 Changed 9 years ago by jkarder
- Component changed from MainForm.WindowsForms to Core.Views
- Milestone changed from HeuristicLab 3.3.x Backlog to HeuristicLab 3.3.13
- Version changed from branch to 3.3.12
I have been following the proposals from abeham, ascheibe and mkommend and came up with a new breadcrumb prototype. I will commit the changes right to the trunk (I hope this is okay) and also delete the branch since all revisions that were committed up to this point can be ignored.
comment:23 Changed 9 years ago by jkarder
r13012: deleted Breadcrumbs branch
comment:24 Changed 9 years ago by jkarder
r13014: added new breadcrumb navigation prototype
comment:25 Changed 9 years ago by jkarder
- Owner changed from jkarder to architects
- Status changed from accepted to reviewing
Changed 9 years ago by pfleck
comment:26 Changed 9 years ago by pfleck
In the OperatorGraphView, if we use the IOperatorGraphOperator interface instead of AlgorithmOperator the breadcrumbs (and operatorgraph view) would work not only for AlgorithmOperators but for all operators that implement IOperatorGraphOperator.
I tested it locally and it worked.
comment:27 Changed 9 years ago by ascheibe
These changes are in trunk and we have not made any decision about them. From my point of view there are 2 options:
- Leave it as it is and release it
- Remove breadcrumbs from the collection views and only release it for the OperatorGraph view
What should we do?
comment:28 Changed 9 years ago by mkommend
I opt for removing bread crumbs from collection views and only release them for the operator graph view.
comment:29 Changed 9 years ago by gkronber
I prefer the second option (only for the OperatorGraph). We can then discuss how we would like to include this in the collection views.
comment:30 Changed 9 years ago by jkarder
- Owner changed from architects to ascheibe
r13244: worked on breadcrumb navigation
- OperatorGraphView now checks for IOperatorGraphOperator instead of AlgorithmOperator
- removed breadcrumbs from collection views
comment:31 Changed 9 years ago by jkarder
r13245: fixed plugin dependencies
comment:32 Changed 9 years ago by ascheibe
- Owner changed from ascheibe to jkarder
- Status changed from reviewing to readytorelease
comment:33 Changed 9 years ago by jkarder
Thanks!
comment:34 Changed 9 years ago by jkarder
- Resolution set to done
- Status changed from readytorelease to closed
r10041: created branch