Control Library Mental Model
This example is the Operations Console shell as a Wisej.NET Page
with four docked areas (navigation left, command top, status bottom, content fill — added last), six placeholder
UserControl pages, one Navigate(Control content, string title) method every navigation button routes through,
and the ControlSelection.md note. The stretch goal (selected control, selected record, active profile, last
refresh) sits in the status area.
Run it
cd "LearnWisej-Samples/Mastering the Control Library Course/Module 1/OperationsConsole"
dotnet run -f net10.0 --urls http://localhost:5701
Then open http://localhost:5701. (Visual Studio: open OperationsConsole.slnx in this folder, press F5.)
What to try
| Action | What you should see |
|---|---|
| Nothing yet | green status "Ready", diagnostics Control: — · Record: — · Profile: Desktop · Refreshed: — |
| Click Editors … Widgets | the placeholder page swaps into the content area, status "Showing Lists and Trees", Control: listsTreesButton |
| Refresh with a section open | Refreshed: HH:mm:ss is stamped, status "Editors refreshed at …" |
| Refresh with no section open | amber status "Nothing to refresh — open a section first." |
| Tick Simulate page failure, click a section | red status, an AlertBox top-right in plain words, the previous page stays |
| Untick it, click the section again | the page opens, status is green again |
| Resize the browser under 1025 px / 601 px | Profile: follows (ClientProfiles.json) |
Where things live
OperationsConsole/
├─ MainPage.cs / .Designer.cs the shell: four docked areas, Navigate(), IConsoleShell implementation
├─ Shell/ IConsoleShell (+ StatusLevel), ShellStatus, ISection
├─ Sections/ six placeholder UserControls (title label)
├─ Models/ SectionKey, SectionInfo
├─ Services/SectionCatalog.cs the page factory (SimulateFailure drives the failure path)
├─ docs/ControlSelection.md deliverable: control family per area and per page, alternative considered
└─ ClientProfiles.json Phone ≤ 600 px, Tablet ≤ 1024 px, Desktop