Support for multiple project roots and the Shared AVM feature
By default the SmartComponent Library designer verbs "Insert UserControl" (of the SmartWindowForm) and "Select Business Entity" and "Select Dataset Controller" of the SmartBusinessEntityAdapter, SmartBusinessBindingSource and SmartBusinessEntityLookup controls or components will search for matching class names (Progress.Windows.UserControl, BusinessEntity derived or IDatasetController implementing classes) in the current working directory of the Visual Designer AVM.
When using multiple projects in OpenEdge Architect to develop a single application or when using the Shared AVM it is required to specify additional directories that may contain classes for lookup by the support dialogs. When using the Shared AVM the working directory of the Shared AVM typically does not contain any source or R-Code.
For this purpose we have implemented the ability to specify alternative directories in which we search (recursively) for classes.
These directories can be specified using an absolute or relative (to the working directory) path name notation. The file .classpath in the working directory of the Visual Designer AVM can be used to set these directories:
<?xml version="1.0"?> <ClassPath xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ClassPathRow DirectoryEntry="."/> <ClassPathRow DirectoryEntry="../AlternativeLocation"/> <ClassPathRow DirectoryEntry="c:\Work\Framework"/> </ClassPath>
Please note that when using the ClassPath feature it is still required to make all classes available using the Propath. The .classpath file will just specify directory entry point to search for classes for the SmartComponent Library class lookup dialoges.
Update
Due to customer requests we have extended this feature to allow filtering of directories within a project folder structure.
Entries in the .classpath file like the following will provide a more flexible use of the .classpath file.
<ClassPathRow DirectoryEntry="Consultingwerk\SmartComponentsDemo" PrefixWith="Consultingwerk.SmartComponentsDemo"/>
The search for class files is limited to fiels in the foldet "Consultingwerk\SmartComponentsDemo" (folder could be relative or absolute). Classnames will be built using the relative filename (relative to the directory entry) and the prefix. This is required to make up valid class names.
The PrefixWith entry is optional.