I'm back from Exchange and vacation and I would like to share some of the questions (and concerns) I heard regarding the Advanced GUI. First and foremost, let's get talk about a new name. It was announced at Exchange that the new names are OpenEdge GUI for .NET and OpenEdge Ultra Controls for .NET. I like these names as they convey exactly what the feature and product is.
Exchange was a great experience for me this year since this year is the culmination of all of the hard work we've been doing to natively integrate a .NET user interface into OpenEdge. I was at both Exchange workshops and sessions for the "Advanced GUI" - presenter of "A Deep Dive into the Advanced GUI". The interest was gratifying for me and most everyone was excited with the feature. I got a lot of accolades. But the looming question in everyone's mind was how hard is this going to be for me . I have a few comments on this.
GUI programming is GUI programming. An application gets into a wait state and an event loop takes over any processing. GUIs can be well architected or not. This remains true with .NET.
The OpenEdge GUI for .NET can easily be compared with the current OpenEdge GUI and there are a lot of similarities. I gave out a 2-page handout at Exchange on this topic. The following is an excerpt:
DEFINE VAR C-Win AS WIDGET-HANDLE. CREATE WINDOW C-Win ASSIGN … |
DEFINE VAR custForm AS CLASS CustomerForm. custForm = NEW CustomerForm( ). |
DEFINE QUERY CustQry FOR Customer SCROLLING. … |
DEFINE QUERY custQry FOR Customer SCROLLING. …
DEFINE VAR custSource AS Progress.Data.BindingSource. custSrc = NEW Progress.Data.BindingSource ( custQry ). |
DEFINE BROWSE CustBrowse QUERY CustQry … |
DEFINE VAR custGrid AS Infragistics...UltraGrid. custGrid = NEW Infragistrics…UltraGrid( ). custGrid:DataSource = custSrc. |
DEFINE FRAME Default-Frame CustBrowse …
ENABLE CustBrowse WITH FRAME Default-Frame IN WINDOW C-Win. |
InitializeComponents( ): Controls:Add( custGrid ). …
(controls enables by default) |
VIEW C-Win. |
custForm:Show( ). |
WAIT-FOR CLOSE OF THIS-PROCEDURE. |
WAIT-FOR Application:Run( custForm ). |
While it might take some getting used to the syntax to create and access .NET controls, it is not that hard and as you can see often a one-to-one mapping. The complexity of OOABL comes with using inheritance, interfaces and polymorphism. Getting started with the OpenEdge GUI for .NET generally does not require the use of any of these concepts except within generated code from the Visual Designer. It's good to have some of the hard work done for you!
The challenge really comes in with using the extensive features provided by the .NET controls. There are common properties, methods and events that will easily become second nature. The more specific, custom behavior of each control is more difficult to navigate. To help with this learning we are translating the samples that come with the Infragistics controls from C# to ABL. These demonstrate a large amount of custom behavior of the controls. These samples will be available with the FCS of 10.2A.
I have seen a growing beta participant list for 10.2A which is very exciting. So get out there and catch the wave! I'll try to keep back the lions.
-Shelley
Shelley Chase
Shelley Chase, a Software Fellow with Progress Software for over 20 years, takes a whole product view over the company’s core product, OpenEdge. Her technical skills and customer-driven focus drive the architectural direction of the product. Shelley is extremely talented in system architecture, object-oriented programming, and cloud deployment technologies. Her passion is to provide a well-architected product with an excellent user experience and works with engineers, product managers and services to guarantee success. Shelley has a patent for her work on “Alternate Presentation Types for Human Workflow Activities.”