platform-config-sample.xml 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- ENHANCED Platform-specific UI Layout Definition with Data Binding and Accessibility -->
  3. <ui-layout-def xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns="ui-layout-definition"
  5. xsi:schemaLocation="ui-layout-definition ui-layout-def.xsd"
  6. version="1.2"
  7. schema-version="1.2"
  8. min-version="1.0"
  9. max-version="2.0"
  10. target-platform="winforms"
  11. accessibility-compliance="wcag-aa">
  12. <!-- ENHANCEMENT: Platform-specific pattern includes with version constraints -->
  13. <patterns>
  14. <!-- Always include basic controls -->
  15. <pattern-include src="abstract-controls.xml" important="true" platform="basic" min-version="1.0" max-version="2.0" />
  16. <!-- Platform-specific control definitions -->
  17. <pattern-include src="winform-controls.xml" important="true" platform="winforms" min-version="1.2" />
  18. <!-- Avalonia would be optional for WinForms projects -->
  19. <pattern-include src="avalonia-controls.xml" important="false" platform="avalonia" />
  20. <!-- Custom controls for this project -->
  21. <pattern-include src="custom-business-controls.xml" important="false" platform="basic" />
  22. </patterns>
  23. <!-- Views (platform-agnostic) -->
  24. <views>
  25. <view-include src="business-views.xml" important="true" min-version="1.0" />
  26. </views>
  27. <!-- Platform-specific window includes -->
  28. <window-includes>
  29. <window-include src="winforms-windows.xml" important="true" platform="winforms" min-version="1.2" />
  30. <window-include src="common-dialogs.xml" important="false" platform="basic" />
  31. </window-includes>
  32. <!-- ENHANCEMENT: Enhanced WinForms-specific main window with data binding and accessibility -->
  33. <window name="MainWindow" title="Enhanced WinForms Application"
  34. wireframe="StandardAppLayout" view="MainApplicationView"
  35. target-platform="winforms"
  36. schema-version="1.2">
  37. <attributes>
  38. <attribute name="width" value="1200" />
  39. <attribute name="height" value="800" />
  40. <attribute name="start-position" value="CenterScreen" />
  41. <attribute name="window-state" value="Normal" />
  42. </attributes>
  43. <view-properties>
  44. <role>main</role>
  45. <default>true</default>
  46. <data-context-binding>dashboardData</data-context-binding>
  47. </view-properties>
  48. <!-- ENHANCEMENT: Data Binding Configuration -->
  49. <data-binding>
  50. <data-context source="MainApplicationViewModel" type="ViewModels.MainApplicationViewModel" mode="TwoWay" />
  51. <view-model class="MainApplicationViewModel" assembly="MyApp.ViewModels" namespace="MyApp.ViewModels" />
  52. <binding-properties>
  53. <property control="statusLabel" property="text" binding-path="StatusMessage" mode="OneWay" />
  54. <property control="dataGrid" property="ItemsSource" binding-path="DataItems" mode="OneWay" />
  55. <property control="filterTextBox" property="text" binding-path="FilterText" mode="TwoWay" validation-rule="RequiredValidator" />
  56. </binding-properties>
  57. </data-binding>
  58. <!-- ENHANCEMENT: Accessibility Configuration -->
  59. <accessibility compliance-level="wcag-aa">
  60. <screen-reader window-title="Main Application Window"
  61. description="Primary application interface for data management"
  62. landmark-role="main" />
  63. <keyboard-navigation tab-order-start="1" focus-trap="false" escape-closes="false" />
  64. <color-contrast high-contrast-support="true" minimum-ratio="4.5" />
  65. </accessibility>
  66. <slot-overrides>
  67. <slot name="main-content">
  68. <!-- ENHANCEMENT: Enhanced Panel with accessibility -->
  69. <Panel name="mainPanel"
  70. layout-mode="flex"
  71. aria-label="Main application content area"
  72. high-contrast-support="true">
  73. <!-- ENHANCEMENT: Enhanced MenuStrip with accessibility -->
  74. <MenuStrip name="mainMenu"
  75. aria-label="Main application menu"
  76. tab-index="1">
  77. <menu-items>
  78. <menu-item text="File" aria-label="File menu" shortcut-key="Alt+F">
  79. <menu-items>
  80. <menu-item text="New" shortcut-key="Ctrl+N"
  81. command-binding="NewCommand"
  82. aria-label="Create new item" />
  83. <menu-item text="Open" shortcut-key="Ctrl+O"
  84. command-binding="OpenCommand"
  85. aria-label="Open existing item" />
  86. <menu-item text="" separator="true" />
  87. <menu-item text="Exit"
  88. command-binding="ExitCommand"
  89. aria-label="Exit application" />
  90. </menu-items>
  91. </menu-item>
  92. <menu-item text="Tools" aria-label="Tools menu">
  93. <menu-items>
  94. <menu-item text="Options"
  95. command-binding="OptionsCommand"
  96. aria-label="Application options" />
  97. </menu-items>
  98. </menu-item>
  99. </menu-items>
  100. </MenuStrip>
  101. <!-- ENHANCEMENT: Enhanced ToolStrip with data binding -->
  102. <ToolStrip name="mainToolbar"
  103. aria-label="Main toolbar"
  104. tab-index="2">
  105. <items>
  106. <ToolStripButton name="newButton"
  107. text="New"
  108. image="new.png"
  109. command-binding="NewCommand"
  110. aria-label="Create new item" />
  111. <ToolStripButton name="openButton"
  112. text="Open"
  113. image="open.png"
  114. command-binding="OpenCommand"
  115. aria-label="Open existing item" />
  116. <ToolStripSeparator />
  117. <ToolStripComboBox name="viewCombo"
  118. items-source="{Binding ViewOptions}"
  119. aria-label="Select view mode" />
  120. </items>
  121. </ToolStrip>
  122. <!-- ENHANCEMENT: Search and filter panel -->
  123. <Panel name="filterPanel"
  124. orientation="horizontal"
  125. padding="5"
  126. aria-label="Search and filter controls"
  127. tab-index="3">
  128. <Label name="filterLabel"
  129. text="Search:"
  130. aria-label="Search filter" />
  131. <TextBox name="filterTextBox"
  132. placeholder="Enter search terms..."
  133. binding-path="FilterText"
  134. binding-mode="TwoWay"
  135. validation-rule="StringLengthValidator"
  136. aria-label="Search input field"
  137. aria-description="Enter text to filter the data grid results"
  138. auto-complete="on"
  139. tab-index="4" />
  140. <Button name="searchButton"
  141. text="Search"
  142. style="primary"
  143. command-binding="SearchCommand"
  144. is-default="true"
  145. aria-label="Execute search"
  146. tab-index="5" />
  147. </Panel>
  148. <!-- ENHANCEMENT: Enhanced WinForms DataGridView with comprehensive data binding -->
  149. <DataGridView name="dataGrid"
  150. allowusertoaddrows="true"
  151. allowusertodeleterows="true"
  152. selectionmode="FullRowSelect"
  153. aria-label="Data grid"
  154. aria-description="Table displaying application data with sorting and filtering capabilities"
  155. tab-index="6">
  156. <!-- ENHANCEMENT: Enhanced columns with data binding -->
  157. <columns>
  158. <column name="id"
  159. headertext="ID"
  160. datapropertyname="Id"
  161. binding-path="Id"
  162. width="80"
  163. readonly="true"
  164. aria-label="Item identifier" />
  165. <column name="name"
  166. headertext="Name"
  167. datapropertyname="Name"
  168. binding-path="Name"
  169. width="200"
  170. aria-label="Item name" />
  171. <column name="category"
  172. headertext="Category"
  173. datapropertyname="Category"
  174. binding-path="Category.Name"
  175. width="150"
  176. converter="CategoryToStringConverter"
  177. aria-label="Item category" />
  178. <column name="created"
  179. headertext="Created"
  180. datapropertyname="CreatedDate"
  181. binding-path="CreatedDate"
  182. width="120"
  183. readonly="true"
  184. aria-label="Creation date" />
  185. </columns>
  186. </DataGridView>
  187. <!-- ENHANCEMENT: Enhanced StatusStrip with data binding -->
  188. <StatusStrip name="statusBar"
  189. aria-label="Status information">
  190. <items>
  191. <ToolStripStatusLabel name="statusLabel"
  192. text="{Binding StatusMessage}"
  193. binding-path="StatusMessage"
  194. binding-mode="OneWay"
  195. aria-live="polite"
  196. aria-label="Application status" />
  197. <ToolStripProgressBar name="progressBar"
  198. visible="{Binding IsLoading}"
  199. value="{Binding LoadingProgress}"
  200. minimum="0"
  201. maximum="100"
  202. aria-label="Loading progress" />
  203. </items>
  204. </StatusStrip>
  205. </Panel>
  206. </slot>
  207. </slot-overrides>
  208. </window>
  209. <!-- ENHANCEMENT: Enhanced Dialog Window Example -->
  210. <window name="ItemEditDialog" title="Edit Item"
  211. wireframe="DialogLayout" view="ItemEditView"
  212. target-platform="winforms"
  213. schema-version="1.2">
  214. <attributes>
  215. <attribute name="width" value="500" />
  216. <attribute name="height" value="400" />
  217. <attribute name="start-position" value="CenterParent" />
  218. <attribute name="window-state" value="Normal" />
  219. </attributes>
  220. <view-properties>
  221. <role>editor</role>
  222. <modal>true</modal>
  223. <data-context-binding>editItemData</data-context-binding>
  224. <parent-window>MainWindow</parent-window>
  225. </view-properties>
  226. <!-- ENHANCEMENT: Data Binding for Dialog -->
  227. <data-binding>
  228. <data-context source="ItemEditViewModel" type="ViewModels.ItemEditViewModel" mode="TwoWay" />
  229. <view-model class="ItemEditViewModel" assembly="MyApp.ViewModels" namespace="MyApp.ViewModels" />
  230. <binding-properties>
  231. <property control="nameTextBox" property="text" binding-path="Item.Name" mode="TwoWay" validation-rule="RequiredValidator" />
  232. <property control="categoryComboBox" property="selected-value" binding-path="Item.CategoryId" mode="TwoWay" />
  233. <property control="okButton" property="enabled" binding-path="CanSave" mode="OneWay" />
  234. </binding-properties>
  235. </data-binding>
  236. <!-- ENHANCEMENT: Dialog Accessibility -->
  237. <accessibility compliance-level="wcag-aa">
  238. <screen-reader window-title="Edit Item Dialog"
  239. description="Form for editing item properties"
  240. landmark-role="dialog" />
  241. <keyboard-navigation tab-order-start="1" focus-trap="true" escape-closes="true" />
  242. </accessibility>
  243. <slot-overrides>
  244. <slot name="dialog-content">
  245. <TableLayoutPanel name="editFormLayout"
  246. columncount="2"
  247. rowcount="4"
  248. padding="10"
  249. aria-label="Item edit form">
  250. <!-- ENHANCEMENT: Enhanced form fields with validation and accessibility -->
  251. <Label name="nameLabel"
  252. text="Name:"
  253. aria-label="Item name label" />
  254. <TextBox name="nameTextBox"
  255. binding-path="Item.Name"
  256. binding-mode="TwoWay"
  257. validation-rule="RequiredValidator"
  258. max-length="100"
  259. required="true"
  260. aria-label="Item name"
  261. aria-description="Enter the name for this item"
  262. tab-index="1" />
  263. <Label name="categoryLabel"
  264. text="Category:"
  265. aria-label="Item category label" />
  266. <ComboBox name="categoryComboBox"
  267. items-source="{Binding Categories}"
  268. display-member-path="Name"
  269. value-member-path="Id"
  270. selected-value="{Binding Item.CategoryId, Mode=TwoWay}"
  271. aria-label="Item category"
  272. aria-description="Select the category for this item"
  273. tab-index="2" />
  274. <Label name="descriptionLabel"
  275. text="Description:"
  276. aria-label="Item description label" />
  277. <TextBox name="descriptionTextBox"
  278. multiline="true"
  279. binding-path="Item.Description"
  280. binding-mode="TwoWay"
  281. max-length="500"
  282. height="80"
  283. aria-label="Item description"
  284. aria-description="Enter a detailed description for this item"
  285. tab-index="3" />
  286. </TableLayoutPanel>
  287. </slot>
  288. <slot name="dialog-buttons">
  289. <Panel name="buttonPanel"
  290. orientation="horizontal"
  291. alignment="right"
  292. padding="10"
  293. aria-label="Dialog buttons">
  294. <Button name="okButton"
  295. text="OK"
  296. style="primary"
  297. is-default="true"
  298. command-binding="SaveCommand"
  299. enabled="{Binding CanSave}"
  300. aria-label="Save changes"
  301. tab-index="4" />
  302. <Button name="cancelButton"
  303. text="Cancel"
  304. style="secondary"
  305. is-cancel="true"
  306. command-binding="CancelCommand"
  307. aria-label="Cancel without saving"
  308. tab-index="5" />
  309. </Panel>
  310. </slot>
  311. </slot-overrides>
  312. </window>
  313. </ui-layout-def>