Deliver Awesome UI with the most complete toolboxes for .NET, Web and Mobile development
Automate UI, load and performance testing for web, desktop and mobile
Rapidly develop, manage and deploy business apps, delivered as SaaS in the cloud
Build, protect and deploy apps across any platform and mobile device
Automate decision processes with a no-code business rules engine
A complete cloud platform for an app or your entire digital business
Deploy automated machine learning to accurately predict machine failures with technology optimized for Industrial IoT.
Optimize data integration with high-performance connectivity
Connect to any cloud or on-premises data source using a standard interface
Build engaging multi-channel web and digital experiences with intuitive web content management
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:
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.
Controls:Add( custGrid ).
(controls enables by default)
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.
View all posts from Shelley Chase on the Progress blog. Connect with us about all things application development and deployment, data integration and digital business.
Copyright © 2017 Progress Software Corporation and/or its subsidiaries or affiliates.
All Rights Reserved.
Progress, Telerik, and certain product names used herein are trademarks or registered trademarks of Progress Software Corporation and/or one of its subsidiaries or affiliates in the U.S. and/or other countries. See Trademarks for appropriate markings.