| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071 |
- <?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.2">
-
- <!-- 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>
-
|