|
1 | 1 | ## Table of contents
|
2 | 2 |
|
3 | 3 | <!-- TOC -->
|
4 |
| -* [Fork, Clone, Branch and Create your PR](#fork-clone-branch-and-create-your-pr) |
5 |
| -* [Rules](#rules) |
6 |
| -* [Building](#building) |
7 |
| - * [Prerequisites](#prerequisites) |
8 |
| - * [Initialize and update submodules](#initialize-and-update-submodules) |
9 |
| - * [Compiling Source Code](#compiling-source-code) |
10 |
| - * [Creating MSI installer on a local machine](#creating-msi-installer-on-a-local-machine) |
11 |
| -* [Publish a new Release](#publish-a-new-release) |
12 |
| - * [Creating a new release from the IDE](#creating-a-new-release-from-the-ide) |
13 |
| - * [Creating a new release from the Terminal](#creating-a-new-release-from-the-terminal) |
14 |
| - * [Creating a new release on GitHub](#creating-a-new-release-on-github) |
15 |
| -* [Architecture](#architecture) |
16 |
| - * [Descriptors](#descriptors) |
17 |
| - * [IDescriptorResolver](#idescriptorresolver) |
18 |
| - * [Single Value Resolution](#single-value-resolution) |
19 |
| - * [Multiple Value Resolution](#multiple-value-resolution) |
20 |
| - * [Disabling Methods](#disabling-methods) |
21 |
| - * [Targeting Specific Overloads](#targeting-specific-overloads) |
22 |
| - * [IDescriptorExtension](#idescriptorextension) |
23 |
| - * [IDescriptorRedirector](#idescriptorredirector) |
24 |
| - * [IDescriptorCollector](#idescriptorcollector) |
25 |
| - * [IDescriptorConnector](#idescriptorconnector) |
26 |
| - * [UI Styling](#ui-styling) |
| 4 | + * [Fork, Clone, Branch and Create your PR](#fork-clone-branch-and-create-your-pr) |
| 5 | + * [Rules](#rules) |
| 6 | + * [Building](#building) |
| 7 | + * [Prerequisites](#prerequisites) |
| 8 | + * [Initialize and update submodules](#initialize-and-update-submodules) |
| 9 | + * [Compiling Source Code](#compiling-source-code) |
| 10 | + * [Creating MSI installer on a local machine](#creating-msi-installer-on-a-local-machine) |
| 11 | + * [Publish a new Release](#publish-a-new-release) |
| 12 | + * [Creating a new release from the IDE](#creating-a-new-release-from-the-ide) |
| 13 | + * [Creating a new release from the Terminal](#creating-a-new-release-from-the-terminal) |
| 14 | + * [Creating a new release on GitHub](#creating-a-new-release-on-github) |
| 15 | + * [Architecture](#architecture) |
| 16 | + * [Descriptors](#descriptors) |
| 17 | + * [IDescriptorResolver](#idescriptorresolver) |
| 18 | + * [Single Value Resolution](#single-value-resolution) |
| 19 | + * [Multiple Value Resolution](#multiple-value-resolution) |
| 20 | + * [Disabling Methods](#disabling-methods) |
| 21 | + * [Targeting Specific Overloads](#targeting-specific-overloads) |
| 22 | + * [IDescriptorExtension](#idescriptorextension) |
| 23 | + * [IDescriptorRedirector](#idescriptorredirector) |
| 24 | + * [IDescriptorCollector](#idescriptorcollector) |
| 25 | + * [IDescriptorConnector](#idescriptorconnector) |
| 26 | + * [UI Styling](#ui-styling) |
| 27 | + * [UI Development and Testing](#ui-development-and-testing) |
| 28 | + * [Setting Up the UI Playground](#setting-up-the-ui-playground) |
| 29 | + * [Benefits of UI Playground](#benefits-of-ui-playground) |
| 30 | + * [UI Development Workflow](#ui-development-workflow) |
27 | 31 | <!-- TOC -->
|
28 | 32 |
|
29 | 33 | ## Fork, Clone, Branch and Create your PR
|
@@ -442,4 +446,26 @@ public sealed class TreeViewItemTemplateSelector : DataTemplateSelector
|
442 | 446 | }
|
443 | 447 | ```
|
444 | 448 |
|
445 |
| -For custom visualization of specific data types, create specialized templates following the pattern above and register them in the appropriate style selectors. |
| 449 | +For custom visualization of specific data types, create specialized templates following the pattern above and register them in the appropriate style selectors. |
| 450 | + |
| 451 | +## UI Development and Testing |
| 452 | + |
| 453 | +RevitLookup provides a dedicated environment for UI development and testing without launching Revit, which significantly speeds up the development cycle. All UI changes should first be developed and tested in the `RevitLookup.UI.Playground` project using the `Debug Frontend` solution configuration. |
| 454 | + |
| 455 | +### Setting Up the UI Playground |
| 456 | + |
| 457 | +1. Select the `Debug Frontend` configuration from the solution configuration dropdown. |
| 458 | +2. Set `RevitLookup.UI.Playground` as the startup project. |
| 459 | + |
| 460 | +### Benefits of UI Playground |
| 461 | + |
| 462 | +- **Faster Development Cycle**: No need to wait for Revit to launch, which can save significant time during UI development. |
| 463 | +- **Isolated Testing**: Test UI components in isolation without Revit's complexity. |
| 464 | +- **Mock Data**: The playground uses mock data that simulates real Revit objects for realistic UI testing. |
| 465 | + |
| 466 | +### UI Development Workflow |
| 467 | + |
| 468 | +1. **Design and Implement** your UI changes in the `RevitLookup.UI.Playground` project. |
| 469 | +2. **Test and Debug** your changes in the playground environment. |
| 470 | +3. **Refine and Polish** your UI based on the test results. |
| 471 | +4. **Integrate** your changes into the main RevitLookup codebase only after you're satisfied with the results in the playground. |
0 commit comments