DevExpress XAF framework provides the following main types of Actions: SimpleAction, PopupWindowShowAction, SingleChoiceAction and ParametrizedAction. Xafari extends this set by four additional Actions:
Check Action allows to check Action state; it may be "checked" or "unchecked". It is a descendant of SimpleAction. It exposes state change events.
For more information about the CheckAction, please refer to the documentation.
Aggregated Action is a dynamic container for other Actions. It may be customized in Application Model, the developer can group different Actions in a hierarchical structure. It is a descendant of SingleChoiceAction.
For more information about the AggregatedAction, please refer to the documentation.
Popup Container Show Action is a descendant of PopupWindowShowAction. It is used for displaying PopupContainer instead of PopupWindow. To see an example of use, refer to Extra Filters.For more information about the PopupContainerShowAction, please refer to the documentation.
Wizard Action is a special Simple Action, it is required to implement Wizards.
Dock Panels are intended to significantly improve the ergonomics of the user interface. Dock Panels allow to provide a user with more data on current object via the additional accompanying Views. Thus, it remains possible for a user to hide the unneeded Views or conversely show other available Views. In fact, the Dock Panels is a way to complicate View while not changing the settings of the View. This problem often occurs when new features are implemented in additional modules.
To work with the Dock Panels, it is necessary to add DockManager component to FrameTemplate. To customize the properties of the Panel and displaying rules, the developer should use the Application Model. It is necessary to assign a certain View to the Dock Panel; the assigned View will display the Panel data. The main use case assumes that there is a master-detail relationship between the Panel data and the main View data. Dock Panels functionality allows to take into account this relationship when displaying data. The master-detail relationship should be specified in the Application Model via special criteria. In this case, the data of both Views is synchronized in dependence on the parameters of the relationship. By default, the data will be synchronized in 0.5 seconds after the change of the current object or selected objects for Master View.
Extensibility. The developer can implement custom types of navigation item.
Security support. It is possible to control access to the navigation items via User Roles.
ARMs are implemented for all platforms: Win, Web, Mvc.
For more information about the Alternative Navigation Items, please refer to the documentation.
Extra Property Editors
Tabbed Detail Property Editor
Tabbed Detail Property Editor is an alternative way to design Detail View. The idea is that the properties of the object are apportioned among several Detail Views. Tabbed Detail Property Editor displays groups of hierarchical tabs and NestedFrame. Tabs can be used to change the Detail Views that is displayed in NestedFrame. Such editor is in demand for complex Detail Views with lots of View Items, tabs, and collections. It outwardly resembles Tabbed Layout Group, but there are significant differences in the implementation. The concept is to allow the user to work with only one tab with simple View at a time instead of facing large and complex View. It solves some performance problems that occur when working with large Details having more than 30 elements.
All customization for Tabbed Detail Property Editor is made in the Application Model. Customization is to create a hierarchy of tabs and to configure a simple View for each tab.
Tabbed Detail Property Editor is implemented for all platforms: Win, Web, Mvc.
For more information about the Tabbed Detail Property Editor, please refer to the documentation.
Enum Property Editor
Enum Property Editor displays Enum property. It exposes a number of additional features:
Support 3 ways of representing: Standard, Checked Combo Box, Checked List Box.
Displays enumeration in multiple columns.
Enum Property Editor is implemented for all platforms: Win, Web, Mvc.
For more information about the Enum Property Editor, please refer to the documentation.
Expression Property Editor
Xafari Expression Property Editor displays string properties that specify expressions in DevExpress Expression format. It allows to create expressions using operators, business class properties, constants, extensible set of functions, and parameters. Accessibility in the Win and Web versions of the XAF client and extended functionality are the key features of the Xafari expressions designer.
For more information about the Expression Property Editor, please refer to the documentation.
Folder Browser Property Editor
Folder Browser Property Editor displays string properties that contain folder paths. To select folders, it uses FolderBrowserDialog control.
Folder Browser Property Editor is implemented for Win platform.
Full Expression Property Editor
Hyper Link Property Editor
Hyper Link Property Editor displays string properties that contain hyperlinks in URL format.
Hyper Link Property Editor is implemented for all platforms: Win, Web, Mvc.
Label Property Editor
Visual Label Property Editor looks like StaticText but provides the ability to display properties. Unlike Default Property Editor, the editor uses LabelControl.
Label Property Editor is implemented for Win platform.
Type Image Property Editor is derived from standard Type Property Editor. In addition, it displays the icon for the type defined in the Application Model.
Type Image Property Editor is implemented for Win platform.
Vertical Grid Property Editor
Vertical Grid Property Editor displays reference properties. It is similar to standard Detail Property Editor. Vertical GridProperty Editor uses VGridControl.
Because the properties are shown in a list, adding new properties or disappearance of existing occurs naturally without disrupting the overall form design. Therefore Vertical Grid Property Editor is used in Dynamic Properties, Bulk Edit, Application Settings.
Vertical Grid Property Editor can be customized in the Application Model. Necessarily required to set a certain Detail View, it is a kind of source of properties to be displayed. Then Vertical Grid Property Editor will receive a list of View Items and its parameters from this Detail View.
Vertical Grid Property Editor is implemented for all platforms: Win, Web, Mvc.
For more information about the Vertical Grid Property Editor, please refer to the documentation.
View Id Property Editor
View Id Property Editor displays string properties containing View ID from Application Model. The editor allows to selelect View of a certain type: ListView, DetailView, DashboardView.
View Id Property Editor is implemented for all platforms: Win, Web, Mvc
For more information about the View Id Property Editor, please refer to the documentation.
Google Maps Property Editor
The editor allows to edit global coordinates using the Google map positioning.
For more information about the Google Maps Property Editor, please refer to the documentation.
Group Property Editor
The editor allows to edit a group of fields in the Detail View while all Detail Views work in View Mode.
For more information about the Group Property Editor, please refer to the documentation.
Progress Bar Property Editor
The editor is used to display the progress of the execution of a process and displays the current value as a percentage.
Quick Choice Property Editor
The editor is an alternative to the standard Lookup Property Editor and is used for fast searching by key fields without displaying additional popup windows. To implement the editor, standard ASPxComboBox control was used.
For more information about the Quick Choice Property Editor, please refer to the documentation.
Xafari Multiple Lookup Editor
The editor is used to edit the IEnumerable properties and is an alternative to the standard ListPropertyEditor in cases where the list stores multiple selected objects.
For more information about the XafariMultipleLookupEditor, please refer to the documentation.
Extra List Editors
Explorer List Editor
Explorer List Editor displays hierarchical data that implements ITreeNode or IHierarchyNode interfaces. Default List Editor for this data in XAF is Tree List Editor. Unlike standard Tree List Editor, Explorer List Editor is inherited from the Grid List Editor. Explorer List Editor is visually similar to Windows Explorer (the name comes from here).
Parent-Сhild relationship at the database level can be implemented in different ways. Explorer List Editor takes all these ways into account and adds appropriate criteria to CollectionSource. This approach allows efficient queries to retrieve data and not to load absolutely all objects (unlike Tree List Editor).
The information about the hierarchy dynamically displays in the optional navigation bar above the list. An additional column is used to identify if there are any child nodes.
For more information about the Explorer List Editor, please refer to the documentation.
This special List Editor displays a list of the data as matrix. Special additional Detail View defines the layout of the properties in the cells of the matrix. The developer can customize Card List Editor in the Application Model.
For more information about the Card List Editor, please refer to the documentation.
Hierarchy Node List Editor
Hierarchy Node List Editor displays hierarchical data that implements ITreeNode or IHierarchyNode interfaces. Default List Editor for such data in XAF is Tree List Editor. Hierarchy Node List Editor is visually similar to Tree List Editor.
Parent-Сhild relationship at the database level can be implemented in different ways. Hierarchy Node List Editor takes all these ways into account and add appropriate criteria to CollectionSource. This approach allows efficient queries to retrieve data and not to load absolutely all objects (unlike Tree List Editor).
In addition to standard features, this editor can change the structure of hierarchical data using drag'n'drop.
For more information about the Hierarchy Node List Editor, please refer to the documentation.
Web Editors Templates
Xafari adds new features to all standard XAF Web-editors. This feature allows change the design quickly and easily. By default, the editor looks like the standard one. To change the design of the editor, the developer needs to create a Template (ASPх User Control) and to refer to it in the Application Model.
Editors supporting the Templates are the next:
For more information about the Web Editors Templates, please refer to the documentation.
Wizards allow to execute complex operations sequentially (step by step). The installation procedure is a bright example of the wizards in use. Wizards implement similar functionality with some specifics of the XAF platform.
Wizard is an analog of the PopupWindowShowAction. This type of Action is useful when you want the user to input several parameters in a popup dialog before an Action is executed. The difference between them is that the Wizard allows to make a number of sequential steps for editing object's parameters. In addition to this, Wizard allows to pass some steps according to the specific conditions.
Any Wizard works in a pop-up window.
Wizard steps are shown as the Detail View for an object type.
At the finish of the Wizard steps there are two variants: to execute Action or to cancel the execution.
Xafari technology of Wizards includes a number of advanced features:
You can customize Wizard properties in the VS designer or in the Application Model.
The View for each step of the Wizard is generated automaticaly in the Application Model.
Conditional jumps between the Wizard steps are implemented.
For access and control Wizard steps in code special events is exposed.
For more information about the Wizards, please refer to the documentation.
When developing applications for various platforms (Web, Win, Console, etc.), XAF technology creates some inconveniences with modules design. Typically, the basis of the application is a specific set of platform-independent modules. This set of modules is the same for all platforms. It expands by certain platform-specific libraries and settings in each platform-dependent module. In case of a standard XAF application, all basic modules and settings should be added to each platform-dependent module and then initialized.
AppModule allocates platform independent libraries and settings in a separate module. Now when designing platform-dependent module, it is enough to add customized AppModule, rather than duplicate the entire set of core libraries and settings.
When operating the enterprise system, there are some tasks (such as data import/export or batch report generation) supposed to be performed in an automatic or batch mode, often according to schedule. The interaction with the user in such cases is minimal or non-existent.
To solve this class of problems, a lightweight console application RunCmd.exe was developed. It requires only those modules needed to perform a specific function. Command line interface provides a way to specify commands and set parameters.
The developers can implement commands in the XAF module. To support the console command infrastructure in the module, the developer must inherit from special classes and implement certain interfaces of the Xafari.Commands namespace (in Xafari.dll).
Xafari framework supplies ready-to-use commands to start Business Operation, to drop deleted objects from database, to import and export data, and to create reports.
Extra Filters is a general solution to filter data by period. It includes a convenient control to quickly create different periods: by month, quarter, year, and any other period. Naturally, after the period is specified, the data is filtered automatically.
For more information about the Extra Filters, please refer to the documentation.
XafariViewLayoutStrategy technology allows to solve specific problems of View generation. It provides the ability to configure a number of settings of List View, Lookup List View, and Detail View in the code, as well as to create an additional View.
By default, XAF places all properties of the business object in the Application Model. These properties are displayed on the UI automatically. It often causes the redundancy of fields (columns) on the Views. The developer has to spend efforts hiding the unnecessary elements. In some situations much easier to hide by default all of the properties, and to specify the desired properties personally.
The basic idea of XafariViewLayoutStrategy is that only the properties marked by the developer should appear in the Application Model (and in UI). Moreover, the developer can create a rule to generate any number of different Views directly in the class of the business object, and specify the layout of each View. The default XAF strategy and XafariViewLayoutStrategy can complement (substitute) to each other within a single application.
XafariViewLayoutStrategy is implemented for all platforms: Win, Web, Mvc.
Visual Studio Templates
Xafari templates gallery is intended to provide opportunities of flexible custom applications development.
Context Help Context Help is a tool for making links between the application and the online documentation. It is configured in the Application Model. Context Help settings are presented in several nodes of the Model:
Common root page of documentation
Default page for all Views
Calculated link for current View. It is generated using a special ObjectFormatter class.
Directly specified link for current View.
Context Help is implemented for all platforms: Win, Web, Mvc.
For more information about the Context help, please refer to the documentation.
AutoRefresh feature updates the displayed data automatically at determined time interval. The developer can activate this feature for any View of the XAF-application.
For more information about the AutoRefresh, please refer to the documentation.
Action by Timer
In some applications, the business logic may require the Action to be executed automatically by timer. WinAutoExecuteController implements this function in Xafari platform. The controller allows to configure the timer, set the countdown time, specify the Action to run, etc.
For more information about the Action by timer, please refer to the documentation.