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 is a descendant of SimpleAction that allows checking Action state; it may be "checked" or "unchecked". The action exposes state change events.
Aggregated Action is a descendant of SingleChoiceAction that serves as a dynamic container for other Actions. Developers can customize it in Application Model, grouping different Actions in a hierarchical structure as shown in the figure below.
Popup Container Show Action is a descendant of DevExpress XAF PopupWindowShowAction. This Action is used when the user needs to input several parameters in a popup dialog before the Action execution, dialog displayed as a popup-container. To see an example of use, refer to Extra Filters.
Read more about Popup Container Show Action in the documentation.
WizardAction is a descendant of Popup Window Show Action and is used to implement Wizards.The action allows creating a number of sequential steps for editing object's parameters. In addition to this, WizardAction allows passing some steps according to the specific conditions.
Dock Panels significantly improve the user interface of applications developed with DevExpress XAF. Dock Panels provide a user with more data on the current object via additional accompanying Views. Users can hide the Views they don’t need 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 issue often occurs when new features are implemented in additional modules.
To work with the Dock Panels, the developer has to add DockManager component to FrameTemplate and customize the properties of the Panel and displaying rules in 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 taking 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.
Xafari Framework components extend the standard DevExpress XAF navigation system by means of ARMs mechanism. It differs from XAF Navigation Items in a number of ways, providing such additional features:
Developers can design templates for similar groups of navigation items.
A special navigation item allows executing Actions directly from the navigation bar.
Developers can implement custom types of navigation items.
It is possible to control access to the navigation items via User Roles.
ARMs mechanism works on Win, Web, and MVC.
Read more about Alternative Navigation Items in the documentation.
Extra Property Editors
You can find the complete list of Xafari extra property editors in the documentation.
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 in NestedFrame. It is designed for complex Detail Views with lots of View Items, tabs, and collections.
Tabbed Detail Property Editor outwardly resembles XAF Tabbed Layout Group, but there are significant differences in the implementation. The concept allows the user to work with only one tab with simple View at a time instead of manipulating large and complex Views. It also solves performance problems that occur when working with large Details having more than 30 elements.
Developers can customize the Tabbed Detail Property Editor in the Application Model, creating the hierarchy of tabs and configuring the View of each tab.
Tabbed Detail Property Editor is implemented for Win, Web, and MVC.
Read more about Tabbed Detail Property Editor in the documentation.
Enum Property Editor
Enum Property Editor displays Enum property with FlagsAttribute. It supports 3 views (Standard, Checked Combo Box, Checked List Box) and allows displaying enumeration in multiple columns.
Enum Property Editor is implemented for Win, Web, and MVC.
Vertical Grid Property Editor can be customized in the Application Model.
The Editor is available for Win, Web, and MVC.
Read more about Vertical Grid Property Editor in the documentation.
View Id Property Editor
View Id Property Editor displays string type properties containing View ID from Application Model. User can select required View, View types (ListView, DetailView, DashboardView) and View captions in the dropdown list.
View Id Property Editor is available for Win, Web, and MVC.
The Editor allows displaying and editing GeoPoint type properties. Latitude and Longitude define the position of the object on the map in the XAF application, Name and Description properties are shown as a snippet.
Read more about Google Maps Property Editor in the documentation.
Group Property Editor
Group Property Editor allows dividing Detail View on groups of properties and edit them separately. When one property group is being edited, the other groups are displayed in the View mode. This approach helps to accelerate the application.
The editor displays the progress of the process execution showing the current value as a percentage.
Quick Choice Property Editor
Quick Choice Property Editor is an alternative to the standard Lookup Property Editor and is used for searching a specific value in a list of fields without displaying additional popup windows. The standard ASPxComboBox control was used to implement the editor.
Read more about Quick Choice Property Editor in 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.
Read more about Xafari Multiple Lookup Editor in the documentation.
Period Struct Property Editor
The editor is used for customizing a date filter when working with lists. Users can specify any range of dates for filtering data in the List View in a XAF application.
Xafari Lookup Editor displays reference properties in Windows forms applications. It allows users to quickly navigate to the Detail View of the referenced object and open the lookup list in a separate View.
For the complete list of Xafari Extra List Editors, please refer to the documentation.
Explorer List Editor
Explorer List Editor displays hierarchical data that implements ITreeNode or IHierarchyNode interfaces. Default List Editor for this data in DevExpress 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).
Explorer List Editor displays the data hierarchy in nested folders structure. This approach allows efficient queries to retrieve the required data and not load 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.
This special List Editor displays a list of the data as a 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.
Hierarchy Node List Editor displays hierarchical data that implements ITreeNode or IHierarchyNode interfaces. Default List Editor for such data in DevExpress XAF is Tree List Editor. Hierarchy Node List Editor is visually similar to Tree List Editor.
The component allows displaying the hierarchical structure in a List View using special editors and supports multiple hierarchies (users can change a current hierarchy in the runtime).
In addition to standard features, the editor can change the structure of hierarchical data using drag'n'drop.
Xafari adds new features to all standard XAF Web editors. This feature allows changing 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.
Here is the list of editors that support the Templates:
Wizards allow executing complex operations sequentially (step by step).
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 making a number of sequential steps for editing object's parameters. In addition to this, Wizard allows passing some steps according to the specific conditions.
Wizards work in pop-up windows.
Wizard steps are shown as the Detail View for an object type.
At the end of the Wizard steps, there are two options: to execute Action or to cancel the execution.
Xafari technology of Wizards has a number of advanced features:
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.
Extra filters are available for Win Forms and ASP.NET MVC
For more information about the Extra Filters, please refer to the documentation.
Xafari Smart Design technology allows solving 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 additional Views.
By default, DevExpress XAF places all properties of the business object in the Application Model. The properties are displayed on the UI automatically, which often leads to redundant fields (columns) on the Views. The developer has to spend time and effort to hide the unnecessary elements. In some situations, it is easier to hide unnecessary properties by default and instead specify the list of required.
The basic idea of Xafari Smart Design is that only the properties specified by the developer should appear in the Application Model (and the 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 Smart Design can complement each other within a single application.
Xafari Smart Design is available for Win, Web, and MVC.
In some applications, the business logic may require the Action to be executed automatically by timer. Action by Timer component implements this function in Xafari Framework. The controller allows configuring the timer, setting the countdown time, specifying the Action to run, etc.
This technology allows user or the system to execute several operations using one Action. Wherein, functionality depends on the context. Thus, depending on the used context a Simple Action can has different functionalities:
Criteria Object Creation is a Xafari component that is intended to optimize the creation of a new object in the List View in case filters are applied to the data in the List View. When a new object is created, the existing filter criteria values automatically apply to it.
In order to activate the component, the user needs to configure the business object or the corresponding List View in the application model.
Criteria Object Creation is available for any List View in business applications developed on Xafari Framework.
There is an option to show the end user a message saying that an Action was successfully executed. By default, no messages are shown.
Xafari extends the functionality of DevExpress XAF IModelAction component in the Application Model with an extra setting that allows displaying both static messages and formatted strings. Users can set up the Success Message property in the appropriate Action node in the Application Model.
Model Differences (Application Model Differences, User Model Differences) are customizations of the Application Model.
Xafari Framework expands the mechanism provided by DevExpress XAF to store Model Differences, which allows avoiding some of its shortcomings.
Xafari Win Module initializes the Model Differences storage management system for Win applications, and the application uses FileUserModelDifferenceStore storage, which stores the User Model Differences for each user and allows adding other layers. Xafari Web Module initializes the Model Differences storage management system for ASP.NET applications, which use SessionUserModelDifferenceStore storage. Developers can use their own types of storage in case they need to.
Xafari Differences Store provides an option to store Model Differences in the database. In this case, if Win and Web applications work together with a common database, user settings are also used in conjunction.
Processing hierarchical data for developer means the need to implement recursive algorithm. This action requires several supplementary methods. Recursive Helper performs the basic operations for hierarchical data recursive processing and helps developer to save the time.
Xafari Helpers set aimed to extend DevExpress classes. The class set helps to get access to non-public members and implement additional properties and methods. Helper class also can be extended in another module.
When there is a large number of modules in the application, the Application Model becomes very complicated. Due to the increasing number of layers, the performance of the Application Model is slowed down, which leads to major lags in the application.
Xafari Accelerator is a general component of Xafari Framework developed specifically to overcome the issue of DevExpress XAF application slow performance when the Application Model is overcomplicated.
According to the tests we ran on demo applications, applications with enabled Xafari Accelerator had in average twice shorter starting time that application without the Accelerator.
The core principle of Xafari Accelerator performance is keeping the unchangeable part of the Application Model in a special .xml file and then building the constant part of the Application Model on this file, which significantly speeds up its starting time and, subsequently, the performance of the DevExpress XAF application.
There is a possibility to popup Window minimum size to 640x480 using Xafari.Win.Core.WinSetMinimumSizeController. If needed, you can disallow this action using Active property.
Xafari Tray Notification component allows interacting with the application through the notification area, or status area. It provides quick access to the application when it is running in the background.
The following functions are now available for Xafari applications via the context menu:
Minimize (minimizes the application window to the icon in the notification area),
Open (expands the application window back to the full screen),
Navigation (provides quick access to the navigation menu of the application),
Exit (closes the application).
The module adds a Xafari application icon to the notification area.
Applications with enabled Tray Notification have a Minimize button in the File context menu. Besides, the module alters the action of the Exit button. It minimizes the window into the notification area, instead of closing it altogether.
Tray Notification is enabled in the Model Editor where developers can customize the actions in the context menu and the File context menu. Developers can also adjust the behavior of Tray Notification in the source code.
Xafari Encryption Service ensures that end users cannot view the database connection string.
Instead of storing the connection string locally on the user's computer, Xafari has a special web service that provides the connection string only when the application starts, right before initializing the DB connection.
Before using Xafari Encryption Service, the developer has to:
add authentication (now only Windows authentication is available, we are planning to implement standard authentication in the future versions)