Overview
A layout defines Displays Layouts (Reference) define the application window 's size and arranges the display components in the runtime application. When planning your displays, decide if you need elements like a menu bar or toolbar consistently appearing at the top of your application window. Sometimes, a single layout suffices for managing the information in the application.In the layout, the Content display is the one that changes upon an open display command. For instance, many new solutions incorporate a default 'Startup' layout. In this layout, the 'MainPage' display, listed in the Content area, is what changes when the application receives a command to open a new display, while the header and menu areas remain unchangedstructure and organize display regions (Header, Menu, Content, Footer) that remain consistent while navigating through different screens.
Display Layouts provide:
- Consistent application structure
- Region-based organization
- Multi-platform support
- Dynamic content areas
- Responsive adaptations
- Runtime layout switching
Layouts ensure consistent navigation elements while the Content region changes with display navigation.
On this page:
Table of Contents maxLevel
2 minLevel 2 indent 10px exclude Steps style none
Layout Regions
Region | Purpose | Position | Dynamic |
---|---|---|---|
Header | Logo, title, main navigation | Top | No |
Menu | Primary navigation links | Left | Optional splitter |
Content | Main display area | Center | Yes |
Submenu | Secondary navigation | Right | Optional |
Footer | Copyright, links, info | Bottom | No |
Creating Layouts
Configuring Layouts
Layouts are pre-defined structures that organize displays frames on a screen, positioning elements like the header, menu, content section, submenu, and footer. They organize information on pages and act as a blueprint for interfaces. You can select an existing Layout to edit or create a new one.
Creating New Layouts
To create a new Layout:
- Navigate to Displays → Layouts .
Click the button on the data grid control to open the 'New Layout' popup window.
Define the name for the layout and a description.
Press Ok button to finish the layout creation and close the popup window.
Customizing Layouts Panel
On Displays → Layouts, after creating a new layout, you can customize it by defining the display objects for layout regions. The Layout Panel organizes information into displays by configuring regions such as Header, Menu, Content, Submenu, and Footer.
The displayed objects on each Layout are selected from the data grid below the panel. Each selected object is defined on the Layout Region configuration items and its respective values for Page, Mobile, and MobileLandscape.
The Header and Footer regions can be aligned with Stretch, Left, Center, or Right options.
In contrast, the Menu, Content, and Submenu regions adjust automatically based on the Header and Footer settings.
A resized bar can also be added to the Menu region for dynamic adjustment, facilitating a structured layout and enhanced navigation.
Mapping Pages to Layout Regions
To use a Layout, you must map a page to a region on data grid. This procedure ensures that your layout displays relevant information based on the underlying data.
Navigate to Displays → Layouts.
Create or Select a Layout:
Under the Page header, click on the empty and then "...".
The Select Object Dialog window will open. Choose the desired option.
Tip | ||
---|---|---|
| ||
By default, the Web, Mobile, and Landscape clients will use the page configured for the section (if that page is portable or web-compatible), even if the configuration field is left blank. If you do not want that page to be used, you need to remove it by adding an underscore (_) instead of just leaving the configuration blank. For example, if you defined a page for the Menu section that you don't want to have an equivalent on the Mobile client, just add the underscore character (_) in the field for Menu Mobile. When running the solution on that type of client, the system will not open any page for that section. |
Previewing Layouts Displays
Previewing layouts provides a crucial step in the development process, allowing you to catch design flaws or functional issues early. By following these steps, you ensure that your layouts meet your application’s visual and usability standards.
Navigate to Displays → Layouts.
Choose the layout you want to preview from the available options. Ensure that the layout is already mapped to the relevant page and data region (as discussed previously).
Under the Layout Panel table, there will be four different previews: Desktop Web Preview; Desktop on Windows WPF; Mobile; and Mobile Landscape.
Inspect the arrangement of components, colors, fonts, and overall design. Ensure that the layout aligns with your application’s requirements.
Working with Layouts
Configuring the Startup Layouts
To configure the solution startup to load a Layout, go to the Displays → Client Settings. Under Initial Execution Conditions, select the desired Layout item from the Layout menu. The drop-down menu reflects the layouts defined in the Layouts page.
Refer to Displays Client Settings (Reference) for more details.
Changing Layouts in Runtime
The runtime method Client.OpenLayout("<layoutName>") replaces the current Layout on the Client Window, loading the new one.
Changing Displays in Runtime
If you don't need to change all the Layout panels, only the Content (main region), it's not necessary to create or open new layouts.
The methods Client.OpenDisplay("MyDisplay") and Display.MyDisplay.Open() will open the MyDisplay page using the current layout, just replacing the page in the Content Region, to the new display.
- Click Add New button
- Configure:
- Name - Layout identifier
- Description - Purpose documentation
- Click OK
- Map displays to regions
Region Configuration
Mapping Displays
- Select layout in grid
- For each region row:
- Click "..." in Page column
- Select display from dialog
- Repeat for Mobile/Landscape
Platform-Specific Settings
Column | Target | Fallback |
---|---|---|
Page | Desktop (WPF/HTML5) | Required |
Mobile | Mobile portrait | Uses Page |
MobileLandscape | Mobile landscape | Uses Mobile |
<ac:structured-macro ac:name="tip"> ac:rich-text-body To remove a region on mobile, enter underscore (_) instead of leaving blank. Empty fields inherit from Page configuration. </ac:rich-text-body> </ac:structured-macro>
Layout Customization
Header/Footer Alignment
Option | Behavior | Use Case |
---|---|---|
Stretch | Full width | Standard header |
Left | Align left | Logo placement |
Center | Center content | Title focus |
Right | Align right | User controls |
Menu Configuration
- Optional splitter for resizing
- Adjusts to header/footer
- Can be hidden on mobile
Preview Options
Test layouts before deployment:
- Desktop Web - HTML5 preview
- Desktop Windows - WPF preview
- Mobile Portrait - Phone view
- Mobile Landscape - Tablet view
Runtime Configuration
Startup Layout
Set default at Displays → Client Settings:
Initial Execution Conditions
??? Layout: [Select Layout]
Runtime Changes
Change entire layout:
csharp
@Client.OpenLayout("AlternateLayout");
Change content only:
csharp
@Client.OpenDisplay("NewDisplay");
// Or
@Display.NewDisplay.Open();
Configuration Properties
Property | Description | Type |
---|---|---|
Region | Layout area identifier | Enum |
Docking | Attachment position | String |
Page | Desktop display | Display |
Mobile | Mobile display | Display |
MobileLandscape | Landscape display | Display |
HorizontalAlign | Alignment option | Enum |
Splitter | Resizable divider | Boolean |
Row/Column | Grid position | Integer |
RowSpan/ColumnSpan | Grid spanning | Integer |
Best Practices
- Plan Structure - Define regions before displays
- Test All Platforms - Verify on each target
- Consider Mobile - Simplify for small screens
- Use Splitters Wisely - Only where needed
- Keep Headers Simple - Essential navigation only
- Document Layouts - Explain purpose
- Version Control - Track layout changes
Common Layout Patterns
Standard Application
Header: Navigation Bar
Menu: Equipment List (with splitter)
Content: Main Display (changes)
Footer: Status Bar
Kiosk Mode
Header: Company Logo (center)
Content: Full Screen Display
Footer: Hidden (_)
Dashboard
Header: Title Only
Menu: Hidden (_)
Content: Dashboard Display
Submenu: Quick Actions
Footer: Timestamp
Mobile Considerations
Responsive Design
- Simplify navigation for touch
- Hide non-essential regions
- Optimize for portrait orientation
- Test gesture navigation
Region Removal
Desktop Menu: NavigationPanel
Mobile Menu: _ (removed)
Troubleshooting
Layout not loading:
- Verify layout exists
- Check display assignments
- Review platform compatibility
- Test startup settings
Region not showing:
- Confirm display mapped
- Check visibility settings
- Verify display engine
- Test without underscore
Mobile layout issues:
- Review mobile mappings
- Check responsive settings
- Test orientation changes
- Verify touch targets
Layout Switching Scenarios
User Role Based
csharp
public void SetLayoutByRole()
{
string role = @Security.CurrentUser.Role;
string layout = role switch
{
"Operator" => "OperatorLayout",
"Engineer" => "EngineeringLayout",
"Manager" => "ManagerLayout",
_ => "DefaultLayout"
};
@Client.OpenLayout(layout);
}
Time Based
csharp
public void SetDayNightLayout()
{
bool isNight = DateTime.Now.Hour >= 18 ||
DateTime.Now.Hour < 6;
@Client.OpenLayout(isNight ? "NightLayout" : "DayLayout");
}
Metadata Tracking
Field | Purpose | Auto-Updated |
---|---|---|
ID | Unique identifier | Yes |
VersionID | Change tracking | Yes |
DateCreated | Creation audit | Yes |
DateModified | Last change | Yes |
The metadata tracking pattern applies consistently across all configuration tables in the platform.
In this section...
Page Tree | ||||
---|---|---|---|---|
|
Layout Configuration Table
Layout Settings Table | |
---|---|
Property | Description |
ID | Unique identifier for each Layout Region. |
VersionID | Specifies the panel version. Increases with each change made to the panel. |
Region | Denotes specific areas within an application or page for content or actions. Header: This region appears at the top of the layout and includes the logo, site title, main navigation links, search bar, and possibly user account controls. Its purpose is to contain the key navigation elements. Its functionality is to identify the site or app and facilitate primary navigation and quick access. Content: This region typically contains the primary information or functionalities that users interact with, such as text, images, forms, and other interactive elements. Purpose: This is the main area where the core content is displayed. Functionality: This region is central to user interaction and displays critical information. Menu: This region includes links or buttons that navigate to different sections or pages within the application or website. It often appears on the left side of the screen. Purpose: It contains the main navigation menu. Functionality: It provides primary navigation and helps users move between major sections. Example: Left-side Menu panel. Submenu: This region provides additional navigation options or links related to the main content, often displayed to the right of the main content area. Purpose: It houses optional or secondary navigation elements. Functionality: It enhances user navigation by providing context-specific links or actions. Example: The right-side Submenu panel. Footer: This region is located at the bottom of the layout and includes copyright information, contact links, social media icons, and other ancillary information. Its purpose is to display supplementary information and links. Its functionality is to provide supporting information and site-wide links. Examples include the privacy policy, terms of service, site map, and back-to-top links. |
Docking | Related to the attachment of an element or window to a portion of the screen. |
Page | Specifies which display to assign to each region of WPF and HTML5 pages. |
Mobile | Specifies which display to assign to each region of a mobile client. |
MobileLandscape | Specifies which display to assign to each region of a mobile client in horizontal orientation. |
HorizontalAlign | Alignment of an element along the horizontal axis (stretch, left, center, right). |
Splitter | A UI control that allows users to adjust the size of adjacent panes or areas. |
Row | Represents a horizontal grouping of data or controls in a grid or table. |
RowSpan | Indicates the number of rows a cell should span across in a grid or table. |
Column | A vertical division in a grid or table, like a column in a spreadsheet. |
ColumnSpan | Indicates the number of columns a cell should extend over in a grid or table. |
DateCreated | The date and time when the panel was created. |
DateModified | The date and time when the panel was last modified. |
Description | A text description of the layout. |
In this section:
Page Tree | ||||
---|---|---|---|---|
|