Changes between Version 1 and Version 2 of Maestro3UI
- Timestamp:
- Jul 7, 2010, 6:49:46 AM (14 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Maestro3UI
v1 v2 3 3 In one word: everything. 4 4 5 The UI design of Maestro 3.0 is intended to mirror that of [http://fdotoolbox.googlecode.com]5 The UI architecture of Maestro 3.0 is intended to mirror that of [http://fdotoolbox.googlecode.com]. Flexible and extensible. 6 6 7 7 == Foundations == … … 18 18 Unlike FDO Toolbox however, we do not use [http://sourceforge.net/projects/dockpanelsuite/ DockPanel Suite] as our UI layout solution as that is not portable (the codebase uses lots of P/Invokes, thus windows only). Instead we are rolling our own UI layout solution, which involves a set of [http://msdn.microsoft.com/en-us/library/system.windows.forms.tabcontrol.aspx TabControl] components spread across 4 well defined zones (left, right, bottom and document). While not as flexible as DockPanel Suite, this solution runs in Mono which is one of the key criteria. 19 19 20 We use the latest SharpDevelop Core from the 3.x series a nd4.x is WPF based. This has been tested and verified to be working in Mono.20 We use the latest SharpDevelop Core from the 3.x series as 4.x is WPF based. This has been tested and verified to be working in Mono. 21 21 22 22 == Editor Architeture == … … 24 24 Most editors are now rebuilt to maximize the use of databinding and the [http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx interface]. All of the xsd generated classes implement INotifyPropertyChanged. 25 25 26 The editor infrastructure uses INotifyPropertyChanged to automatically trigger dirty state notification for any editor. This approach is much easier and cleaner than the previous approach, which was to listen for UI events, update the internal model and signal dirty state. Databinding with INotifyPropertyChanged allows us to do all this in one shot (for most cases). Complex cases (such as UIs with grids) may require custom databinding logic, but this is a rare occurence. 26 The editor infrastructure uses INotifyPropertyChanged to automatically trigger dirty state notification for any editor. This approach is much easier and cleaner than the previous approach, which was to listen for UI events, update the internal model and signal dirty state. Databinding with INotifyPropertyChanged allows us to do all this in one shot (for most cases). Complex cases (such as UIs with grids) may require custom databinding logic, but this is a rare occurrence. 27 28 All editor components have access to the IEditorService interface. This interface provides a subset of the APIs IServerConnection interface and additional services for: 29 30 * Browsing/Selecting Coordinate Systems 31 * Editing Expressions 32 * Resource/Folder selection 33 * Resource dirty state management 34 * Resource persistence 35 36 A default implementation of IEditorService is provided by the Maestro base addin. 27 37 28 38 == Versioning ==