The GeneXus development environment is actually a generic, extensible IDE, where modules (called packages) can be added to provide specific features.
The generic IDE provides both a generic UI framework -with services allowing for management and interaction with documents, menus, toolbars, toolwindows, etc.- and a Universal Data Model -which handles basic concepts such as knowledge base, model, object, object versions, etc. Everything else is incorporated by means of additional packages that define new concepts, add features and enrich the user interface. In fact, what we know as GeneXus X is implemented as a collection of packages integrated into the generic IDE. The packages that implement GeneXus define specific object types (e.g.: Transaction, Domain, Attribute, SubtypeGroup, etc.), provide editors for each of them, validate them, and implement operations such as normalization, specification, generation, etc., among other functions.
In theory, there is no difference between the packages that can be developed by third parties to integrate into GeneXus IDE and those developed by Artech itself to implement GeneXus, although of course, not every package needs to have such a degree of complexity or provide that much functionality.
Some of the features that may be included in a package are:
- Defining new object types
- Defining new object parts (to be added to objects of types defined either by the same package or by any other package)
- Providing user interface editors (associated to object part types defined in the same package or in any other)
- Adding options to the main menu and handling the commands associated with any of the menu options
- Adding its own toolbars and toolwindows
- Defining new properties for any object type or any object part type
- Subscription to events published by the IDE or other packages, and publication of its own events.
- Using services exposed by the IDE or other packages, and exposing its own services.
To try out these possibilities you can download the SDK platform from the Download Center, and subscribe to the GeneXus Extensions Forum here.