|
|
@@ -0,0 +1,1071 @@
|
|
|
+<?xml version="1.0" encoding="UTF-8"?>
|
|
|
+<!-- UI Layout Definition Format with Control Constraints and Views (v1.1) -->
|
|
|
+<ui-layout-def xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
|
+ xsi:schemaLocation="ui-layout-definition ui-layout-def.xsd"
|
|
|
+ version="1.1">
|
|
|
+
|
|
|
+ <!-- Validation rules for control usage including includes -->
|
|
|
+ <validation-rules>
|
|
|
+
|
|
|
+ <!-- External validation rule includes - loaded before local rules -->
|
|
|
+ <validation-include src="base-validation-rules.xml" important="true" />
|
|
|
+ <validation-include src="windows-validation-rules.xml" important="false" />
|
|
|
+ <validation-include src="accessibility-rules.xml" important="false" />
|
|
|
+ <validation-include src="performance-rules.xml" important="false" />
|
|
|
+ <validation-include src="view-validation.xml" important="true" />
|
|
|
+
|
|
|
+ <!-- Include processing rules for validation:
|
|
|
+ - important="true": Must be found and loaded, build fails if missing
|
|
|
+ - important="false": Optional, warnings only if missing
|
|
|
+ - Includes are processed in order before local rules
|
|
|
+ - Local rules can override included rules
|
|
|
+ - Rule conflicts resolved by last-loaded-wins principle
|
|
|
+ - Rules with same name are merged (constraints combined)
|
|
|
+ -->
|
|
|
+
|
|
|
+ <!-- Local validation rules -->
|
|
|
+ <rule name="control-definition-required">
|
|
|
+ <description>All controls used in windows must be defined in patterns node or included files</description>
|
|
|
+ <constraint>Every control element must reference a defined control or structure pattern from local or included definitions</constraint>
|
|
|
+ </rule>
|
|
|
+
|
|
|
+ <rule name="pattern-include-validation">
|
|
|
+ <description>Pattern includes must be valid and accessible</description>
|
|
|
+ <constraint>Files marked important="true" must exist and be loadable</constraint>
|
|
|
+ </rule>
|
|
|
+
|
|
|
+ <rule name="validation-include-validation">
|
|
|
+ <description>Validation includes must be valid and accessible</description>
|
|
|
+ <constraint>Validation files marked important="true" must exist and be loadable</constraint>
|
|
|
+ </rule>
|
|
|
+
|
|
|
+ <rule name="view-window-consistency">
|
|
|
+ <description>View-window relationships must be valid</description>
|
|
|
+ <constraint>Windows referenced in views must exist and be properly associated</constraint>
|
|
|
+ </rule>
|
|
|
+
|
|
|
+ <rule name="attribute-validation">
|
|
|
+ <description>Control attributes must match pattern definitions</description>
|
|
|
+ <constraint>Only attributes defined in control patterns (local or included) are allowed</constraint>
|
|
|
+ </rule>
|
|
|
+
|
|
|
+ <rule name="container-children-validation">
|
|
|
+ <description>Container controls must only contain allowed child types</description>
|
|
|
+ <constraint>Child controls must be compatible with parent container per included definitions</constraint>
|
|
|
+ </rule>
|
|
|
+
|
|
|
+ <rule name="required-attributes">
|
|
|
+ <description>Required attributes must be specified</description>
|
|
|
+ <constraint>Controls with required="true" attributes must have values</constraint>
|
|
|
+ </rule>
|
|
|
+
|
|
|
+ <rule name="include-precedence">
|
|
|
+ <description>Pattern and validation override resolution order</description>
|
|
|
+ <constraint>Local definitions override included definitions, later includes override earlier ones</constraint>
|
|
|
+ </rule>
|
|
|
+ </validation-rules>
|
|
|
+
|
|
|
+ <!-- Pattern definitions - must be first and only one patterns node -->
|
|
|
+ <patterns>
|
|
|
+
|
|
|
+ <!-- External pattern includes - loaded before local definitions -->
|
|
|
+ <pattern-include src="windows-controls.xml" important="true" />
|
|
|
+ <pattern-include src="KDE-controls.xml" important="false" />
|
|
|
+ <pattern-include src="web-controls.xml" important="false" />
|
|
|
+ <pattern-include src="mobile-controls.xml" important="false" />
|
|
|
+
|
|
|
+ <!-- Include processing rules:
|
|
|
+ - important="true": Must be found and loaded, build fails if missing
|
|
|
+ - important="false": Optional, warnings only if missing
|
|
|
+ - Includes are processed in order before local definitions
|
|
|
+ - Local definitions can override included patterns
|
|
|
+ - Naming conflicts resolved by last-loaded-wins principle
|
|
|
+ -->
|
|
|
+
|
|
|
+ <!-- Base wireframe layouts -->
|
|
|
+ <wireframe name="StandardAppLayout" type="base-layout">
|
|
|
+ <description>Standard application layout with header, sidebar, content, and footer</description>
|
|
|
+ <template>
|
|
|
+ <Panel name="rootContainer">
|
|
|
+ <Panel name="headerPanel" height="60">
|
|
|
+ <slot name="header-content" default="true">
|
|
|
+ <Label name="appTitle" text="Application Title" />
|
|
|
+ <slot name="header-actions" />
|
|
|
+ </slot>
|
|
|
+ </Panel>
|
|
|
+
|
|
|
+ <Panel name="mainContainer" orientation="horizontal">
|
|
|
+ <Panel name="sidebarPanel" width="250" visible="true">
|
|
|
+ <slot name="sidebar-content" default="true">
|
|
|
+ <Menu name="navigationMenu" orientation="vertical">
|
|
|
+ <slot name="navigation-items" />
|
|
|
+ </Menu>
|
|
|
+ </slot>
|
|
|
+ </Panel>
|
|
|
+
|
|
|
+ <Panel name="contentPanel" fill="true">
|
|
|
+ <slot name="main-content" required="true" />
|
|
|
+ </Panel>
|
|
|
+ </Panel>
|
|
|
+
|
|
|
+ <Panel name="footerPanel" height="30">
|
|
|
+ <slot name="footer-content" default="true">
|
|
|
+ <Label name="statusLabel" text="Ready" />
|
|
|
+ </slot>
|
|
|
+ </Panel>
|
|
|
+ </Panel>
|
|
|
+ </template>
|
|
|
+ </wireframe>
|
|
|
+
|
|
|
+ <wireframe name="DialogLayout" type="base-layout">
|
|
|
+ <description>Standard modal dialog layout</description>
|
|
|
+ <template>
|
|
|
+ <Panel name="dialogContainer">
|
|
|
+ <Panel name="titleBar" height="40">
|
|
|
+ <slot name="dialog-title" default="true">
|
|
|
+ <Label name="titleLabel" text="Dialog" />
|
|
|
+ </slot>
|
|
|
+ <Button name="closeButton" text="×" style="borderless" />
|
|
|
+ </Panel>
|
|
|
+
|
|
|
+ <Panel name="dialogContent" padding="20">
|
|
|
+ <slot name="dialog-body" required="true" />
|
|
|
+ </Panel>
|
|
|
+
|
|
|
+ <Panel name="buttonBar" height="50" alignment="right">
|
|
|
+ <slot name="dialog-buttons" default="true">
|
|
|
+ <Button name="okButton" text="OK" style="primary" />
|
|
|
+ <Button name="cancelButton" text="Cancel" />
|
|
|
+ </slot>
|
|
|
+ </Panel>
|
|
|
+ </Panel>
|
|
|
+ </template>
|
|
|
+ </wireframe>
|
|
|
+
|
|
|
+ <wireframe name="FormLayout" type="base-layout">
|
|
|
+ <description>Standard form layout with sections</description>
|
|
|
+ <template>
|
|
|
+ <Panel name="formContainer">
|
|
|
+ <slot name="form-header" />
|
|
|
+
|
|
|
+ <Panel name="formSections">
|
|
|
+ <slot name="form-content" required="true" />
|
|
|
+ </Panel>
|
|
|
+
|
|
|
+ <Panel name="formActions" alignment="right">
|
|
|
+ <slot name="form-buttons" default="true">
|
|
|
+ <Button name="saveButton" text="Save" style="primary" />
|
|
|
+ <Button name="cancelButton" text="Cancel" />
|
|
|
+ </slot>
|
|
|
+ </Panel>
|
|
|
+ </Panel>
|
|
|
+ </template>
|
|
|
+ </wireframe>
|
|
|
+
|
|
|
+ <!-- Base control definitions with constraints -->
|
|
|
+ <control name="Label" type="display" category="basic">
|
|
|
+ <constraints>
|
|
|
+ <allowed-parents>Panel,FormField,Menu</allowed-parents>
|
|
|
+ <allowed-children>none</allowed-children>
|
|
|
+ <container>false</container>
|
|
|
+ </constraints>
|
|
|
+ <attributes>
|
|
|
+ <attribute name="text" type="string" default="" required="false" />
|
|
|
+ <attribute name="font-size" type="int" default="12" min="8" max="72" />
|
|
|
+ <attribute name="color" type="color" default="#000000" />
|
|
|
+ <attribute name="alignment" type="enum" values="left,center,right" default="left" />
|
|
|
+ </attributes>
|
|
|
+ <behavior>
|
|
|
+ <event name="click" />
|
|
|
+ </behavior>
|
|
|
+ </control>
|
|
|
+
|
|
|
+ <control name="TextBox" type="input" category="input">
|
|
|
+ <constraints>
|
|
|
+ <allowed-parents>Panel,FormField</allowed-parents>
|
|
|
+ <allowed-children>none</allowed-children>
|
|
|
+ <container>false</container>
|
|
|
+ </constraints>
|
|
|
+ <attributes>
|
|
|
+ <attribute name="value" type="string" default="" />
|
|
|
+ <attribute name="placeholder" type="string" default="" />
|
|
|
+ <attribute name="max-length" type="int" default="255" min="1" max="10000" />
|
|
|
+ <attribute name="readonly" type="bool" default="false" />
|
|
|
+ <attribute name="multiline" type="bool" default="false" />
|
|
|
+ </attributes>
|
|
|
+ <behavior>
|
|
|
+ <event name="text-changed" />
|
|
|
+ <event name="focus" />
|
|
|
+ <event name="blur" />
|
|
|
+ </behavior>
|
|
|
+ </control>
|
|
|
+
|
|
|
+ <control name="ComboBox" type="input" category="input">
|
|
|
+ <constraints>
|
|
|
+ <allowed-parents>Panel,FormField</allowed-parents>
|
|
|
+ <allowed-children>items</allowed-children>
|
|
|
+ <container>false</container>
|
|
|
+ <requires-structure>items</requires-structure>
|
|
|
+ </constraints>
|
|
|
+ <attributes>
|
|
|
+ <attribute name="selected-value" type="string" default="" />
|
|
|
+ <attribute name="editable" type="bool" default="false" />
|
|
|
+ </attributes>
|
|
|
+ <behavior>
|
|
|
+ <event name="selection-changed" />
|
|
|
+ </behavior>
|
|
|
+ <structure>
|
|
|
+ <items min-count="0" max-count="unlimited">
|
|
|
+ <item value="" text="" />
|
|
|
+ </items>
|
|
|
+ </structure>
|
|
|
+ </control>
|
|
|
+
|
|
|
+ <control name="Button" type="action" category="action">
|
|
|
+ <constraints>
|
|
|
+ <allowed-parents>Panel,FormField,ButtonBar</allowed-parents>
|
|
|
+ <allowed-children>none</allowed-children>
|
|
|
+ <container>false</container>
|
|
|
+ </constraints>
|
|
|
+ <attributes>
|
|
|
+ <attribute name="text" type="string" default="Button" required="true" />
|
|
|
+ <attribute name="enabled" type="bool" default="true" />
|
|
|
+ <attribute name="style" type="enum" values="normal,primary,secondary,danger,borderless" default="normal" />
|
|
|
+ </attributes>
|
|
|
+ <behavior>
|
|
|
+ <event name="click" required="true" />
|
|
|
+ </behavior>
|
|
|
+ </control>
|
|
|
+
|
|
|
+ <control name="Panel" type="container" category="layout">
|
|
|
+ <constraints>
|
|
|
+ <allowed-parents>Panel,window,wireframe-instance</allowed-parents>
|
|
|
+ <allowed-children>any-control</allowed-children>
|
|
|
+ <container>true</container>
|
|
|
+ <max-children>unlimited</max-children>
|
|
|
+ </constraints>
|
|
|
+ <attributes>
|
|
|
+ <attribute name="border" type="bool" default="false" />
|
|
|
+ <attribute name="background-color" type="color" default="transparent" />
|
|
|
+ <attribute name="padding" type="int" default="0" min="0" max="50" />
|
|
|
+ <attribute name="orientation" type="enum" values="horizontal,vertical" default="vertical" />
|
|
|
+ <attribute name="alignment" type="enum" values="left,center,right,stretch" default="left" />
|
|
|
+ <attribute name="fill" type="bool" default="false" />
|
|
|
+ <attribute name="width" type="int" min="10" max="2000" />
|
|
|
+ <attribute name="height" type="int" min="10" max="2000" />
|
|
|
+ <attribute name="visible" type="bool" default="true" />
|
|
|
+ </attributes>
|
|
|
+ <structure>
|
|
|
+ <children allow-multiple="true" />
|
|
|
+ </structure>
|
|
|
+ </control>
|
|
|
+
|
|
|
+ <control name="PopupPanel" type="container" category="layout" inherits="Panel">
|
|
|
+ <constraints>
|
|
|
+ <allowed-parents>window</allowed-parents>
|
|
|
+ <allowed-children>any-control</allowed-children>
|
|
|
+ <container>true</container>
|
|
|
+ </constraints>
|
|
|
+ <attributes>
|
|
|
+ <attribute name="modal" type="bool" default="true" />
|
|
|
+ <attribute name="visible" type="bool" default="false" />
|
|
|
+ <attribute name="position" type="enum" values="center,cursor,custom" default="center" />
|
|
|
+ </attributes>
|
|
|
+ <behavior>
|
|
|
+ <event name="opened" />
|
|
|
+ <event name="closed" />
|
|
|
+ </behavior>
|
|
|
+ </control>
|
|
|
+
|
|
|
+ <control name="Menu" type="navigation" category="navigation">
|
|
|
+ <constraints>
|
|
|
+ <allowed-parents>Panel</allowed-parents>
|
|
|
+ <allowed-children>menu-items</allowed-children>
|
|
|
+ <container>true</container>
|
|
|
+ <requires-structure>menu-items</requires-structure>
|
|
|
+ </constraints>
|
|
|
+ <attributes>
|
|
|
+ <attribute name="orientation" type="enum" values="horizontal,vertical" default="horizontal" />
|
|
|
+ </attributes>
|
|
|
+ <structure>
|
|
|
+ <menu-items min-count="1" max-count="unlimited">
|
|
|
+ <menu-item text="" action="" shortcut="" separator="false" />
|
|
|
+ </menu-items>
|
|
|
+ </structure>
|
|
|
+ </control>
|
|
|
+
|
|
|
+ <control name="ListView" type="data" category="data">
|
|
|
+ <constraints>
|
|
|
+ <allowed-parents>Panel</allowed-parents>
|
|
|
+ <allowed-children>columns,items</allowed-children>
|
|
|
+ <container>true</container>
|
|
|
+ <requires-structure>columns</requires-structure>
|
|
|
+ </constraints>
|
|
|
+ <attributes>
|
|
|
+ <attribute name="view-mode" type="enum" values="list,details,icons" default="list" />
|
|
|
+ <attribute name="multi-select" type="bool" default="false" />
|
|
|
+ <attribute name="sort-column" type="string" default="" />
|
|
|
+ <attribute name="sort-direction" type="enum" values="asc,desc" default="asc" />
|
|
|
+ </attributes>
|
|
|
+ <behavior>
|
|
|
+ <event name="selection-changed" />
|
|
|
+ <event name="item-double-click" />
|
|
|
+ </behavior>
|
|
|
+ <structure>
|
|
|
+ <columns min-count="1" max-count="20">
|
|
|
+ <column name="" text="" width="" sortable="true" />
|
|
|
+ </columns>
|
|
|
+ <items min-count="0" max-count="unlimited">
|
|
|
+ <item>
|
|
|
+ <values>
|
|
|
+ <value column="" text="" />
|
|
|
+ </values>
|
|
|
+ </item>
|
|
|
+ </items>
|
|
|
+ </structure>
|
|
|
+ </control>
|
|
|
+
|
|
|
+ <control name="TreeView" type="data" category="data">
|
|
|
+ <constraints>
|
|
|
+ <allowed-parents>Panel</allowed-parents>
|
|
|
+ <allowed-children>nodes</allowed-children>
|
|
|
+ <container>true</container>
|
|
|
+ <requires-structure>nodes</requires-structure>
|
|
|
+ </constraints>
|
|
|
+ <attributes>
|
|
|
+ <attribute name="show-lines" type="bool" default="true" />
|
|
|
+ <attribute name="show-root-lines" type="bool" default="true" />
|
|
|
+ <attribute name="checkboxes" type="bool" default="false" />
|
|
|
+ </attributes>
|
|
|
+ <behavior>
|
|
|
+ <event name="node-selected" />
|
|
|
+ <event name="node-expanded" />
|
|
|
+ <event name="node-collapsed" />
|
|
|
+ </behavior>
|
|
|
+ <structure>
|
|
|
+ <nodes min-count="0" max-count="unlimited">
|
|
|
+ <node text="" value="" expanded="false" checked="false">
|
|
|
+ <nodes max-depth="10">
|
|
|
+ <!-- Recursive node structure with depth limit -->
|
|
|
+ </nodes>
|
|
|
+ </node>
|
|
|
+ </nodes>
|
|
|
+ </structure>
|
|
|
+ </control>
|
|
|
+
|
|
|
+ <!-- Additional specialized controls -->
|
|
|
+ <control name="TabControl" type="container" category="layout">
|
|
|
+ <constraints>
|
|
|
+ <allowed-parents>Panel</allowed-parents>
|
|
|
+ <allowed-children>tab</allowed-children>
|
|
|
+ <container>true</container>
|
|
|
+ <requires-structure>tabs</requires-structure>
|
|
|
+ </constraints>
|
|
|
+ <attributes>
|
|
|
+ <attribute name="selected-tab" type="string" default="" />
|
|
|
+ <attribute name="tab-position" type="enum" values="top,bottom,left,right" default="top" />
|
|
|
+ </attributes>
|
|
|
+ <structure>
|
|
|
+ <tabs min-count="1" max-count="20">
|
|
|
+ <tab name="" text="" visible="true" enabled="true">
|
|
|
+ <!-- Tab content can contain any controls -->
|
|
|
+ </tab>
|
|
|
+ </tabs>
|
|
|
+ </structure>
|
|
|
+ </control>
|
|
|
+
|
|
|
+ <control name="ButtonBar" type="container" category="layout">
|
|
|
+ <constraints>
|
|
|
+ <allowed-parents>Panel,FormField</allowed-parents>
|
|
|
+ <allowed-children>Button</allowed-children>
|
|
|
+ <container>true</container>
|
|
|
+ <max-children>10</max-children>
|
|
|
+ </constraints>
|
|
|
+ <attributes>
|
|
|
+ <attribute name="alignment" type="enum" values="left,center,right" default="right" />
|
|
|
+ <attribute name="spacing" type="int" default="5" min="0" max="20" />
|
|
|
+ </attributes>
|
|
|
+ </control>
|
|
|
+
|
|
|
+ <!-- Custom pattern with constraints -->
|
|
|
+ <structure name="FormField" type="pattern" category="composite">
|
|
|
+ <constraints>
|
|
|
+ <allowed-parents>Panel,FormLayout</allowed-parents>
|
|
|
+ <allowed-children>Label,TextBox,ComboBox,Button</allowed-children>
|
|
|
+ <container>true</container>
|
|
|
+ <required-slots>input</required-slots>
|
|
|
+ </constraints>
|
|
|
+ <attributes>
|
|
|
+ <attribute name="label-text" type="string" required="true" />
|
|
|
+ <attribute name="required" type="bool" default="false" />
|
|
|
+ <attribute name="validation-message" type="string" default="" />
|
|
|
+ </attributes>
|
|
|
+ <template>
|
|
|
+ <Panel name="fieldContainer">
|
|
|
+ <Label name="fieldLabel" text="{label-text}" />
|
|
|
+ <slot name="input" allowed-controls="TextBox,ComboBox,Button" required="true" />
|
|
|
+ <Label name="validationLabel" text="{validation-message}" visible="false" color="#ff0000" />
|
|
|
+ </Panel>
|
|
|
+ </template>
|
|
|
+ </structure>
|
|
|
+
|
|
|
+ </patterns>
|
|
|
+
|
|
|
+ <!-- NEW: View definitions with external includes -->
|
|
|
+ <views>
|
|
|
+
|
|
|
+ <!-- External view includes - loaded before local view definitions -->
|
|
|
+ <view-include src="business-views.xml" important="true" />
|
|
|
+ <view-include src="admin-views.xml" important="false" />
|
|
|
+
|
|
|
+ <!-- Base Application View -->
|
|
|
+ <view name="BaseApplicationView" type="base" category="framework">
|
|
|
+ <description>Base view for all application windows with common functionality</description>
|
|
|
+
|
|
|
+ <metadata>
|
|
|
+ <permissions>app.access</permissions>
|
|
|
+ </metadata>
|
|
|
+
|
|
|
+ <data-context>
|
|
|
+ <property name="currentUser" type="User" scope="global" />
|
|
|
+ <property name="applicationSettings" type="AppSettings" scope="global" />
|
|
|
+ <property name="isLoading" type="bool" scope="view" />
|
|
|
+ </data-context>
|
|
|
+
|
|
|
+ <behaviors>
|
|
|
+ <behavior name="show-loading" scope="view" />
|
|
|
+ <behavior name="hide-loading" scope="view" />
|
|
|
+ <behavior name="show-error" scope="view" />
|
|
|
+ <behavior name="log-action" scope="global" />
|
|
|
+ </behaviors>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <!-- Main Application View -->
|
|
|
+ <view name="MainApplicationView" type="dashboard" category="core" inherits="BaseApplicationView">
|
|
|
+ <description>Main application dashboard with navigation and overview</description>
|
|
|
+
|
|
|
+ <metadata>
|
|
|
+ <view-model-class>MainApplicationViewModel</view-model-class>
|
|
|
+ <controller-class>MainApplicationController</controller-class>
|
|
|
+ <permissions>app.main,dashboard.view</permissions>
|
|
|
+ </metadata>
|
|
|
+
|
|
|
+ <dependencies>
|
|
|
+ <view-ref name="UserManagementView" relationship="reference" required="false">
|
|
|
+ <interaction type="manage-users" />
|
|
|
+ </view-ref>
|
|
|
+ <view-ref name="SettingsView" relationship="reference" required="false">
|
|
|
+ <interaction type="configure-app" />
|
|
|
+ </view-ref>
|
|
|
+ <shared-component name="NotificationService" required="true" />
|
|
|
+ <shared-component name="SecurityService" required="true" />
|
|
|
+ </dependencies>
|
|
|
+
|
|
|
+ <data-context>
|
|
|
+ <property name="dashboardData" type="DashboardData" scope="view" />
|
|
|
+ <property name="recentItems" type="RecentItemsList" scope="view" />
|
|
|
+ <property name="notifications" type="NotificationList" scope="view" />
|
|
|
+ </data-context>
|
|
|
+
|
|
|
+ <windows>
|
|
|
+ <window-ref name="MainWindow" role="main" default="true" />
|
|
|
+ </windows>
|
|
|
+
|
|
|
+ <navigation>
|
|
|
+ <action name="show-dashboard" target="MainWindow" />
|
|
|
+ <action name="show-users" target="UserManagementView" />
|
|
|
+ <action name="show-settings" target="SettingsView" />
|
|
|
+ <action name="show-reports" target="MainWindow" context="reportsPanel" />
|
|
|
+ </navigation>
|
|
|
+
|
|
|
+ <behaviors>
|
|
|
+ <behavior name="refresh-dashboard" scope="view" />
|
|
|
+ <behavior name="load-recent-items" scope="view" />
|
|
|
+ <behavior name="check-notifications" scope="view" />
|
|
|
+ </behaviors>
|
|
|
+
|
|
|
+ <communication>
|
|
|
+ <publishes>
|
|
|
+ <event name="dashboard-loaded" data="dashboard-id" />
|
|
|
+ <event name="user-activity" data="activity-type,timestamp" />
|
|
|
+ </publishes>
|
|
|
+ <subscribes>
|
|
|
+ <event name="user-logged-in" source="SecurityService" handler="refresh-dashboard" />
|
|
|
+ <event name="settings-changed" source="SettingsView" handler="apply-settings" />
|
|
|
+ </subscribes>
|
|
|
+ </communication>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <!-- User Management View -->
|
|
|
+ <view name="UserManagementView" type="business-entity" category="admin" inherits="BaseApplicationView">
|
|
|
+ <description>User account management including creation, editing, and permissions</description>
|
|
|
+
|
|
|
+ <metadata>
|
|
|
+ <model-class>User</model-class>
|
|
|
+ <view-model-class>UserManagementViewModel</view-model-class>
|
|
|
+ <controller-class>UserController</controller-class>
|
|
|
+ <permissions>user.read,user.write,user.admin</permissions>
|
|
|
+ </metadata>
|
|
|
+
|
|
|
+ <data-context>
|
|
|
+ <property name="currentUser" type="User" scope="view" />
|
|
|
+ <property name="userList" type="UserList" scope="view" />
|
|
|
+ <property name="selectedUsers" type="UserList" scope="view" />
|
|
|
+ <property name="userRoles" type="RoleList" scope="view" />
|
|
|
+ </data-context>
|
|
|
+
|
|
|
+ <windows>
|
|
|
+ <window-ref name="UserListWindow" role="main" default="true" />
|
|
|
+ <window-ref name="UserEditDialog" role="editor" modal="true" />
|
|
|
+ <window-ref name="UserPermissionsDialog" role="utility" modal="true" />
|
|
|
+ </windows>
|
|
|
+
|
|
|
+ <navigation>
|
|
|
+ <action name="show-user-list" target="UserListWindow" />
|
|
|
+ <action name="edit-user" target="UserEditDialog" context="currentUser" />
|
|
|
+ <action name="create-user" target="UserEditDialog" />
|
|
|
+ <action name="manage-permissions" target="UserPermissionsDialog" context="currentUser" />
|
|
|
+ </navigation>
|
|
|
+
|
|
|
+ <behaviors>
|
|
|
+ <behavior name="refresh-users" scope="view" />
|
|
|
+ <behavior name="validate-user" scope="view" />
|
|
|
+ <behavior name="save-user" scope="view" />
|
|
|
+ <behavior name="delete-user" scope="view" />
|
|
|
+ <behavior name="reset-password" scope="view" />
|
|
|
+ </behaviors>
|
|
|
+
|
|
|
+ <communication>
|
|
|
+ <publishes>
|
|
|
+ <event name="user-created" data="user-id" />
|
|
|
+ <event name="user-updated" data="user-id" />
|
|
|
+ <event name="user-deleted" data="user-id" />
|
|
|
+ </publishes>
|
|
|
+ </communication>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <!-- Settings View -->
|
|
|
+ <view name="SettingsView" type="utility" category="system" inherits="BaseApplicationView">
|
|
|
+ <description>Application configuration and user preferences</description>
|
|
|
+
|
|
|
+ <metadata>
|
|
|
+ <model-class>ApplicationSettings</model-class>
|
|
|
+ <view-model-class>SettingsViewModel</view-model-class>
|
|
|
+ <controller-class>SettingsController</controller-class>
|
|
|
+ <permissions>settings.read,settings.write</permissions>
|
|
|
+ </metadata>
|
|
|
+
|
|
|
+ <data-context>
|
|
|
+ <property name="currentSettings" type="ApplicationSettings" scope="view" />
|
|
|
+ <property name="userPreferences" type="UserPreferences" scope="view" />
|
|
|
+ <property name="systemInfo" type="SystemInfo" scope="view" />
|
|
|
+ </data-context>
|
|
|
+
|
|
|
+ <windows>
|
|
|
+ <window-ref name="SettingsWindow" role="main" default="true" />
|
|
|
+ </windows>
|
|
|
+
|
|
|
+ <navigation>
|
|
|
+ <action name="show-settings" target="SettingsWindow" />
|
|
|
+ <action name="reset-to-defaults" target="SettingsWindow" />
|
|
|
+ </navigation>
|
|
|
+
|
|
|
+ <behaviors>
|
|
|
+ <behavior name="load-settings" scope="view" />
|
|
|
+ <behavior name="save-settings" scope="view" />
|
|
|
+ <behavior name="validate-settings" scope="view" />
|
|
|
+ <behavior name="export-settings" scope="view" />
|
|
|
+ <behavior name="import-settings" scope="view" />
|
|
|
+ </behaviors>
|
|
|
+
|
|
|
+ <communication>
|
|
|
+ <publishes>
|
|
|
+ <event name="settings-changed" data="setting-category" />
|
|
|
+ <event name="settings-saved" data="timestamp" />
|
|
|
+ </publishes>
|
|
|
+ </communication>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ </views>
|
|
|
+
|
|
|
+ <!-- Window definitions with view associations and wireframe inheritance -->
|
|
|
+ <window name="MainWindow" title="Main Application" wireframe="StandardAppLayout" view="MainApplicationView">
|
|
|
+ <attributes>
|
|
|
+ <attribute name="width" value="1200" />
|
|
|
+ <attribute name="height" value="800" />
|
|
|
+ <attribute name="resizable" value="true" />
|
|
|
+ <attribute name="start-position" value="center" />
|
|
|
+ <attribute name="minimize-to-tray" value="true" />
|
|
|
+ </attributes>
|
|
|
+
|
|
|
+ <!-- NEW: View properties for view integration -->
|
|
|
+ <view-properties>
|
|
|
+ <role>main</role>
|
|
|
+ <default>true</default>
|
|
|
+ <data-context-binding>dashboardData</data-context-binding>
|
|
|
+ </view-properties>
|
|
|
+
|
|
|
+ <!-- Override specific slots from the wireframe -->
|
|
|
+ <slot-overrides>
|
|
|
+ <slot name="header-actions">
|
|
|
+ <Button name="userProfileButton" text="Profile" />
|
|
|
+ <Button name="settingsButton" text="Settings" />
|
|
|
+ <Button name="helpButton" text="Help" />
|
|
|
+ </slot>
|
|
|
+
|
|
|
+ <slot name="navigation-items">
|
|
|
+ <menu-items>
|
|
|
+ <menu-item text="Dashboard" action="show-dashboard" />
|
|
|
+ <menu-item text="Users" action="show-users" />
|
|
|
+ <menu-item text="Reports" action="show-reports" />
|
|
|
+ <menu-item text="Settings" action="show-settings" />
|
|
|
+ <menu-item text="" separator="true" />
|
|
|
+ <menu-item text="About" action="show-about" />
|
|
|
+ </menu-items>
|
|
|
+ </slot>
|
|
|
+
|
|
|
+ <slot name="main-content">
|
|
|
+ <!-- Main application content -->
|
|
|
+ <Panel name="dashboardPanel">
|
|
|
+ <Label name="welcomeLabel" text="Welcome to Dashboard" font-size="18" />
|
|
|
+
|
|
|
+ <Panel name="statisticsPanel" orientation="horizontal">
|
|
|
+ <Panel name="statsLeft" width="400">
|
|
|
+ <Label name="totalUsersLabel" text="Total Users: 0" />
|
|
|
+ <Label name="activeSessionsLabel" text="Active Sessions: 0" />
|
|
|
+ <Label name="systemStatusLabel" text="System Status: Running" />
|
|
|
+ </Panel>
|
|
|
+
|
|
|
+ <Panel name="statsRight" fill="true">
|
|
|
+ <ListView name="recentItems" view-mode="details">
|
|
|
+ <columns>
|
|
|
+ <column name="name" text="Name" width="200" sortable="true" />
|
|
|
+ <column name="date" text="Date" width="150" sortable="true" />
|
|
|
+ <column name="user" text="User" width="120" sortable="true" />
|
|
|
+ <column name="status" text="Status" width="100" sortable="true" />
|
|
|
+ </columns>
|
|
|
+ </ListView>
|
|
|
+ </Panel>
|
|
|
+ </Panel>
|
|
|
+
|
|
|
+ <Panel name="quickActionsPanel">
|
|
|
+ <ButtonBar name="quickActions" alignment="left">
|
|
|
+ <Button name="addUserButton" text="Add User" style="primary" />
|
|
|
+ <Button name="generateReportButton" text="Generate Report" />
|
|
|
+ <Button name="backupDataButton" text="Backup Data" />
|
|
|
+ </ButtonBar>
|
|
|
+ </Panel>
|
|
|
+ </Panel>
|
|
|
+ </slot>
|
|
|
+
|
|
|
+ <slot name="footer-content">
|
|
|
+ <Label name="statusLabel" text="Connected - System Ready" />
|
|
|
+ <Label name="versionLabel" text="v1.1.0" alignment="right" />
|
|
|
+ <Label name="timeLabel" text="00:00:00" alignment="right" />
|
|
|
+ </slot>
|
|
|
+ </slot-overrides>
|
|
|
+ </window>
|
|
|
+
|
|
|
+ <!-- User management window inheriting dialog wireframe -->
|
|
|
+ <window name="UserListWindow" title="User Management" wireframe="StandardAppLayout" view="UserManagementView">
|
|
|
+ <attributes>
|
|
|
+ <attribute name="width" value="900" />
|
|
|
+ <attribute name="height" value="600" />
|
|
|
+ <attribute name="modal" value="false" />
|
|
|
+ </attributes>
|
|
|
+
|
|
|
+ <view-properties>
|
|
|
+ <role>main</role>
|
|
|
+ <default>true</default>
|
|
|
+ <data-context-binding>userList</data-context-binding>
|
|
|
+ </view-properties>
|
|
|
+
|
|
|
+ <slot-overrides>
|
|
|
+ <slot name="header-content">
|
|
|
+ <Label name="titleLabel" text="User Management" font-size="16" />
|
|
|
+ <Panel name="searchPanel" orientation="horizontal">
|
|
|
+ <TextBox name="searchInput" placeholder="Search users..." />
|
|
|
+ <Button name="searchButton" text="Search" />
|
|
|
+ </Panel>
|
|
|
+ </slot>
|
|
|
+
|
|
|
+ <slot name="main-content">
|
|
|
+ <Panel name="userManagementPanel">
|
|
|
+ <Panel name="toolbarPanel" height="40" orientation="horizontal">
|
|
|
+ <ButtonBar name="userActions" alignment="left">
|
|
|
+ <Button name="addUserButton" text="Add User" style="primary" />
|
|
|
+ <Button name="editUserButton" text="Edit" enabled="false" />
|
|
|
+ <Button name="deleteUserButton" text="Delete" enabled="false" style="danger" />
|
|
|
+ <Button name="resetPasswordButton" text="Reset Password" enabled="false" />
|
|
|
+ </ButtonBar>
|
|
|
+
|
|
|
+ <ButtonBar name="viewActions" alignment="right">
|
|
|
+ <Button name="refreshButton" text="Refresh" />
|
|
|
+ <Button name="exportButton" text="Export" />
|
|
|
+ </ButtonBar>
|
|
|
+ </Panel>
|
|
|
+
|
|
|
+ <ListView name="userGrid" view-mode="details" multi-select="true">
|
|
|
+ <columns>
|
|
|
+ <column name="id" text="ID" width="80" sortable="true" />
|
|
|
+ <column name="username" text="Username" width="150" sortable="true" />
|
|
|
+ <column name="fullname" text="Full Name" width="200" sortable="true" />
|
|
|
+ <column name="email" text="Email" width="250" sortable="true" />
|
|
|
+ <column name="role" text="Role" width="120" sortable="true" />
|
|
|
+ <column name="status" text="Status" width="100" sortable="true" />
|
|
|
+ <column name="lastlogin" text="Last Login" width="150" sortable="true" />
|
|
|
+ </columns>
|
|
|
+ </ListView>
|
|
|
+ </Panel>
|
|
|
+ </slot>
|
|
|
+ </slot-overrides>
|
|
|
+ </window>
|
|
|
+
|
|
|
+ <!-- User edit dialog inheriting dialog wireframe -->
|
|
|
+ <window name="UserEditDialog" title="Edit User" wireframe="DialogLayout" view="UserManagementView">
|
|
|
+ <attributes>
|
|
|
+ <attribute name="width" value="500" />
|
|
|
+ <attribute name="height" value="400" />
|
|
|
+ <attribute name="modal" value="true" />
|
|
|
+ <attribute name="resizable" value="false" />
|
|
|
+ </attributes>
|
|
|
+
|
|
|
+ <view-properties>
|
|
|
+ <role>editor</role>
|
|
|
+ <modal>true</modal>
|
|
|
+ <data-context-binding>currentUser</data-context-binding>
|
|
|
+ <parent-window>UserListWindow</parent-window>
|
|
|
+ </view-properties>
|
|
|
+
|
|
|
+ <slot-overrides>
|
|
|
+ <slot name="dialog-title">
|
|
|
+ <Label name="titleLabel" text="User Details" />
|
|
|
+ </slot>
|
|
|
+
|
|
|
+ <slot name="dialog-body">
|
|
|
+ <!-- Use FormLayout as nested wireframe -->
|
|
|
+ <wireframe-instance name="userForm" wireframe="FormLayout">
|
|
|
+ <slot name="form-content">
|
|
|
+ <FormField name="usernameField" label-text="Username:" required="true">
|
|
|
+ <TextBox name="usernameInput" slot="input" max-length="50" />
|
|
|
+ </FormField>
|
|
|
+
|
|
|
+ <FormField name="fullnameField" label-text="Full Name:" required="true">
|
|
|
+ <TextBox name="fullnameInput" slot="input" max-length="100" />
|
|
|
+ </FormField>
|
|
|
+
|
|
|
+ <FormField name="emailField" label-text="Email:" required="true">
|
|
|
+ <TextBox name="emailInput" slot="input" max-length="255" />
|
|
|
+ </FormField>
|
|
|
+
|
|
|
+ <FormField name="roleField" label-text="Role:">
|
|
|
+ <ComboBox name="roleCombo" slot="input">
|
|
|
+ <items>
|
|
|
+ <item value="admin" text="Administrator" />
|
|
|
+ <item value="user" text="Standard User" />
|
|
|
+ <item value="viewer" text="Viewer Only" />
|
|
|
+ <item value="moderator" text="Moderator" />
|
|
|
+ </items>
|
|
|
+ </ComboBox>
|
|
|
+ </FormField>
|
|
|
+
|
|
|
+ <FormField name="statusField" label-text="Status:">
|
|
|
+ <ComboBox name="statusCombo" slot="input">
|
|
|
+ <items>
|
|
|
+ <item value="active" text="Active" />
|
|
|
+ <item value="inactive" text="Inactive" />
|
|
|
+ <item value="suspended" text="Suspended" />
|
|
|
+ <item value="pending" text="Pending Approval" />
|
|
|
+ </items>
|
|
|
+ </ComboBox>
|
|
|
+ </FormField>
|
|
|
+
|
|
|
+ <FormField name="passwordField" label-text="Password:" required="false">
|
|
|
+ <TextBox name="passwordInput" slot="input" />
|
|
|
+ </FormField>
|
|
|
+ </slot>
|
|
|
+
|
|
|
+ <slot name="form-buttons">
|
|
|
+ <Button name="saveButton" text="Save User" style="primary" />
|
|
|
+ <Button name="cancelButton" text="Cancel" />
|
|
|
+ <Button name="resetPasswordButton" text="Reset Password" style="secondary" />
|
|
|
+ </slot>
|
|
|
+ </wireframe-instance>
|
|
|
+ </slot>
|
|
|
+
|
|
|
+ <slot name="dialog-buttons">
|
|
|
+ <Button name="saveButton" text="Save Changes" style="primary" />
|
|
|
+ <Button name="cancelButton" text="Cancel" />
|
|
|
+ <Button name="deleteButton" text="Delete User" style="danger" />
|
|
|
+ </slot>
|
|
|
+ </slot-overrides>
|
|
|
+ </window>
|
|
|
+
|
|
|
+ <!-- User permissions dialog -->
|
|
|
+ <window name="UserPermissionsDialog" title="User Permissions" wireframe="DialogLayout" view="UserManagementView">
|
|
|
+ <attributes>
|
|
|
+ <attribute name="width" value="600" />
|
|
|
+ <attribute name="height" value="500" />
|
|
|
+ <attribute name="modal" value="true" />
|
|
|
+ </attributes>
|
|
|
+
|
|
|
+ <view-properties>
|
|
|
+ <role>utility</role>
|
|
|
+ <modal>true</modal>
|
|
|
+ <data-context-binding>currentUser</data-context-binding>
|
|
|
+ <parent-window>UserListWindow</parent-window>
|
|
|
+ </view-properties>
|
|
|
+
|
|
|
+ <slot-overrides>
|
|
|
+ <slot name="dialog-title">
|
|
|
+ <Label name="titleLabel" text="Manage User Permissions" />
|
|
|
+ </slot>
|
|
|
+
|
|
|
+ <slot name="dialog-body">
|
|
|
+ <Panel name="permissionsPanel">
|
|
|
+ <Label name="userInfoLabel" text="User: {currentUser.username}" font-size="14" />
|
|
|
+
|
|
|
+ <TabControl name="permissionTabs">
|
|
|
+ <tab name="basic" text="Basic Permissions">
|
|
|
+ <Panel name="basicPermissions">
|
|
|
+ <TreeView name="basicPermissionsTree" checkboxes="true">
|
|
|
+ <nodes>
|
|
|
+ <node text="Application Access" value="app.access" checked="true">
|
|
|
+ <nodes>
|
|
|
+ <node text="Dashboard View" value="dashboard.view" checked="true" />
|
|
|
+ <node text="Reports View" value="reports.view" checked="false" />
|
|
|
+ <node text="Settings Access" value="settings.read" checked="false" />
|
|
|
+ </nodes>
|
|
|
+ </node>
|
|
|
+ <node text="User Management" value="user.manage" checked="false">
|
|
|
+ <nodes>
|
|
|
+ <node text="View Users" value="user.read" checked="false" />
|
|
|
+ <node text="Create Users" value="user.create" checked="false" />
|
|
|
+ <node text="Edit Users" value="user.write" checked="false" />
|
|
|
+ <node text="Delete Users" value="user.delete" checked="false" />
|
|
|
+ </nodes>
|
|
|
+ </node>
|
|
|
+ </nodes>
|
|
|
+ </TreeView>
|
|
|
+ </Panel>
|
|
|
+ </tab>
|
|
|
+
|
|
|
+ <tab name="advanced" text="Advanced Permissions">
|
|
|
+ <Panel name="advancedPermissions">
|
|
|
+ <ListView name="advancedPermissionsList" view-mode="details" multi-select="true">
|
|
|
+ <columns>
|
|
|
+ <column name="permission" text="Permission" width="200" />
|
|
|
+ <column name="description" text="Description" width="300" />
|
|
|
+ <column name="granted" text="Granted" width="80" />
|
|
|
+ </columns>
|
|
|
+ </ListView>
|
|
|
+ </Panel>
|
|
|
+ </tab>
|
|
|
+
|
|
|
+ <tab name="roles" text="Role Assignment">
|
|
|
+ <Panel name="roleAssignment">
|
|
|
+ <FormField name="primaryRoleField" label-text="Primary Role:">
|
|
|
+ <ComboBox name="primaryRoleCombo" slot="input">
|
|
|
+ <items>
|
|
|
+ <item value="admin" text="Administrator" />
|
|
|
+ <item value="user" text="Standard User" />
|
|
|
+ <item value="viewer" text="Viewer" />
|
|
|
+ </items>
|
|
|
+ </ComboBox>
|
|
|
+ </FormField>
|
|
|
+
|
|
|
+ <FormField name="additionalRolesField" label-text="Additional Roles:">
|
|
|
+ <ListView name="additionalRolesList" slot="input" view-mode="list" multi-select="true">
|
|
|
+ <columns>
|
|
|
+ <column name="role" text="Role" width="150" />
|
|
|
+ </columns>
|
|
|
+ </ListView>
|
|
|
+ </FormField>
|
|
|
+ </Panel>
|
|
|
+ </tab>
|
|
|
+ </TabControl>
|
|
|
+ </Panel>
|
|
|
+ </slot>
|
|
|
+
|
|
|
+ <slot name="dialog-buttons">
|
|
|
+ <Button name="savePermissionsButton" text="Save Permissions" style="primary" />
|
|
|
+ <Button name="cancelButton" text="Cancel" />
|
|
|
+ <Button name="resetToDefaultButton" text="Reset to Default" />
|
|
|
+ </slot>
|
|
|
+ </slot-overrides>
|
|
|
+ </window>
|
|
|
+
|
|
|
+ <!-- Settings window with partial wireframe override -->
|
|
|
+ <window name="SettingsWindow" title="Application Settings" wireframe="StandardAppLayout" view="SettingsView">
|
|
|
+ <attributes>
|
|
|
+ <attribute name="width" value="800" />
|
|
|
+ <attribute name="height" value="600" />
|
|
|
+ <attribute name="modal" value="false" />
|
|
|
+ </attributes>
|
|
|
+
|
|
|
+ <view-properties>
|
|
|
+ <role>main</role>
|
|
|
+ <default>true</default>
|
|
|
+ <data-context-binding>currentSettings</data-context-binding>
|
|
|
+ </view-properties>
|
|
|
+
|
|
|
+ <slot-overrides>
|
|
|
+ <!-- Keep default header but override navigation -->
|
|
|
+ <slot name="navigation-items">
|
|
|
+ <menu-items>
|
|
|
+ <menu-item text="General" action="settings-general" />
|
|
|
+ <menu-item text="Appearance" action="settings-appearance" />
|
|
|
+ <menu-item text="Security" action="settings-security" />
|
|
|
+ <menu-item text="Database" action="settings-database" />
|
|
|
+ <menu-item text="Logging" action="settings-logging" />
|
|
|
+ <menu-item text="Advanced" action="settings-advanced" />
|
|
|
+ </menu-items>
|
|
|
+ </slot>
|
|
|
+
|
|
|
+ <slot name="main-content">
|
|
|
+ <Panel name="settingsContent">
|
|
|
+ <!-- Settings tabs or sections would go here -->
|
|
|
+ <TabControl name="settingsTabs">
|
|
|
+ <tab name="general" text="General Settings">
|
|
|
+ <Panel name="generalSettings">
|
|
|
+ <FormField name="appNameField" label-text="Application Name:">
|
|
|
+ <TextBox name="appNameInput" slot="input" value="Sample Application" />
|
|
|
+ </FormField>
|
|
|
+
|
|
|
+ <FormField name="languageField" label-text="Language:">
|
|
|
+ <ComboBox name="languageCombo" slot="input">
|
|
|
+ <items>
|
|
|
+ <item value="en" text="English" />
|
|
|
+ <item value="de" text="Deutsch" />
|
|
|
+ <item value="fr" text="Français" />
|
|
|
+ <item value="es" text="Español" />
|
|
|
+ </items>
|
|
|
+ </ComboBox>
|
|
|
+ </FormField>
|
|
|
+
|
|
|
+ <FormField name="timezoneField" label-text="Timezone:">
|
|
|
+ <ComboBox name="timezoneCombo" slot="input">
|
|
|
+ <items>
|
|
|
+ <item value="UTC" text="UTC" />
|
|
|
+ <item value="EST" text="Eastern Time" />
|
|
|
+ <item value="PST" text="Pacific Time" />
|
|
|
+ <item value="CET" text="Central European Time" />
|
|
|
+ </items>
|
|
|
+ </ComboBox>
|
|
|
+ </FormField>
|
|
|
+
|
|
|
+ <FormField name="autoSaveField" label-text="Auto-save interval (minutes):">
|
|
|
+ <TextBox name="autoSaveInput" slot="input" value="5" />
|
|
|
+ </FormField>
|
|
|
+ </Panel>
|
|
|
+ </tab>
|
|
|
+
|
|
|
+ <tab name="appearance" text="Appearance">
|
|
|
+ <Panel name="appearanceSettings">
|
|
|
+ <FormField name="themeField" label-text="Theme:">
|
|
|
+ <ComboBox name="themeCombo" slot="input">
|
|
|
+ <items>
|
|
|
+ <item value="light" text="Light Theme" />
|
|
|
+ <item value="dark" text="Dark Theme" />
|
|
|
+ <item value="auto" text="Auto (System)" />
|
|
|
+ <item value="high-contrast" text="High Contrast" />
|
|
|
+ </items>
|
|
|
+ </ComboBox>
|
|
|
+ </FormField>
|
|
|
+
|
|
|
+ <FormField name="fontSizeField" label-text="Font Size:">
|
|
|
+ <ComboBox name="fontSizeCombo" slot="input">
|
|
|
+ <items>
|
|
|
+ <item value="small" text="Small" />
|
|
|
+ <item value="medium" text="Medium" />
|
|
|
+ <item value="large" text="Large" />
|
|
|
+ <item value="extra-large" text="Extra Large" />
|
|
|
+ </items>
|
|
|
+ </ComboBox>
|
|
|
+ </FormField>
|
|
|
+
|
|
|
+ <FormField name="colorSchemeField" label-text="Color Scheme:">
|
|
|
+ <ComboBox name="colorSchemeCombo" slot="input">
|
|
|
+ <items>
|
|
|
+ <item value="blue" text="Blue" />
|
|
|
+ <item value="green" text="Green" />
|
|
|
+ <item value="purple" text="Purple" />
|
|
|
+ <item value="orange" text="Orange" />
|
|
|
+ </items>
|
|
|
+ </ComboBox>
|
|
|
+ </FormField>
|
|
|
+ </Panel>
|
|
|
+ </tab>
|
|
|
+
|
|
|
+ <tab name="security" text="Security">
|
|
|
+ <Panel name="securitySettings">
|
|
|
+ <FormField name="sessionTimeoutField" label-text="Session Timeout (minutes):">
|
|
|
+ <TextBox name="sessionTimeoutInput" slot="input" value="30" />
|
|
|
+ </FormField>
|
|
|
+
|
|
|
+ <FormField name="passwordPolicyField" label-text="Password Policy:">
|
|
|
+ <ComboBox name="passwordPolicyCombo" slot="input">
|
|
|
+ <items>
|
|
|
+ <item value="basic" text="Basic (6+ characters)" />
|
|
|
+ <item value="standard" text="Standard (8+ chars, mixed case)" />
|
|
|
+ <item value="strong" text="Strong (12+ chars, symbols)" />
|
|
|
+ <item value="custom" text="Custom Policy" />
|
|
|
+ </items>
|
|
|
+ </ComboBox>
|
|
|
+ </FormField>
|
|
|
+
|
|
|
+ <FormField name="twoFactorField" label-text="Two-Factor Authentication:">
|
|
|
+ <ComboBox name="twoFactorCombo" slot="input">
|
|
|
+ <items>
|
|
|
+ <item value="disabled" text="Disabled" />
|
|
|
+ <item value="optional" text="Optional" />
|
|
|
+ <item value="required" text="Required" />
|
|
|
+ </items>
|
|
|
+ </ComboBox>
|
|
|
+ </FormField>
|
|
|
+ </Panel>
|
|
|
+ </tab>
|
|
|
+
|
|
|
+ <tab name="database" text="Database">
|
|
|
+ <Panel name="databaseSettings">
|
|
|
+ <FormField name="connectionStringField" label-text="Connection String:">
|
|
|
+ <TextBox name="connectionStringInput" slot="input" multiline="true" />
|
|
|
+ </FormField>
|
|
|
+
|
|
|
+ <FormField name="backupIntervalField" label-text="Backup Interval (hours):">
|
|
|
+ <TextBox name="backupIntervalInput" slot="input" value="24" />
|
|
|
+ </FormField>
|
|
|
+
|
|
|
+ <FormField name="queryTimeoutField" label-text="Query Timeout (seconds):">
|
|
|
+ <TextBox name="queryTimeoutInput" slot="input" value="30" />
|
|
|
+ </FormField>
|
|
|
+
|
|
|
+ <Panel name="databaseActions">
|
|
|
+ <ButtonBar name="dbActionButtons" alignment="left">
|
|
|
+ <Button name="testConnectionButton" text="Test Connection" />
|
|
|
+ <Button name="backupNowButton" text="Backup Now" />
|
|
|
+ <Button name="optimizeButton" text="Optimize Database" />
|
|
|
+ </ButtonBar>
|
|
|
+ </Panel>
|
|
|
+ </Panel>
|
|
|
+ </tab>
|
|
|
+ </TabControl>
|
|
|
+
|
|
|
+ <Panel name="settingsActions" height="60">
|
|
|
+ <ButtonBar name="settingsButtons" alignment="right">
|
|
|
+ <Button name="saveSettingsButton" text="Save Settings" style="primary" />
|
|
|
+ <Button name="cancelButton" text="Cancel" />
|
|
|
+ <Button name="resetToDefaultsButton" text="Reset to Defaults" style="secondary" />
|
|
|
+ <Button name="exportSettingsButton" text="Export" />
|
|
|
+ <Button name="importSettingsButton" text="Import" />
|
|
|
+ </ButtonBar>
|
|
|
+ </Panel>
|
|
|
+ </Panel>
|
|
|
+ </slot>
|
|
|
+
|
|
|
+ <!-- Use default footer -->
|
|
|
+ </slot-overrides>
|
|
|
+ </window>
|
|
|
+
|
|
|
+</ui-layout-def>
|
|
|
+
|