A18: A Deep Dive into the OpenEdge GUI for .NET™
Peter JudgeOpenEdge Principal Software Engineer
© 2008 Progress Software Corporation2
Get Ready… We’re Going Under
Attended OpenEdge GUI for .NET Intro
Understand OO concepts• Classes, Inheritance, Methods
Comfortable with OpenEdge Architect
Can hold your breath for a really long time…
© 2008 Progress Software Corporation3
Demo: OpenEdge GUI for .NET in AutoEdge
Existing application following OERA• New: OpenEdge GUI for .NET
– Main container– Customer maintenance form– Test drive scheduling form
© 2008 Progress Software Corporation4
D I S C L A I M E R
Under Development
This talk includes information about potential future products and/or product enhancements.
What I am going to say reflects our current thinking, but the information contained herein is preliminary and subject to change. Any future products we ultimately deliver may be materially different from what is described here.
D I S C L A I M E R
© 2008 Progress Software Corporation5
Agenda
ABL for the OpenEdge GUI for .NET• GUI for .NET Architecture
• ABL Forms & Controls
• ABL Data Binding
• ABL Event Handlers
• Mix and Match Support
Using the GUI for .NET in AutoEdge
© 2008 Progress Software Corporation6
OpenEdge GUI for .NET Architecture
Single Process for OpenEdge Runtime and .NET Common Language Runtime (CLR)
OpenEdge RuntimeOpenEdge Runtime .NET CLR.NET CLR
.NET GUI.NET GUIfrm = NEW Form( ).frm:Closing:Subscribe( EventHdlr1 ).WAIT-FOR Application.Run( frm ).
EventHdlr1( ) …
frm = NEW Form( ).frm:Closing:Subscribe( EventHdlr1 ).WAIT-FOR Application.Run( frm ).
EventHdlr1( ) …
ABL LogicABL Logic
OpenEdge UI (Presenter)
.NET UI (View)BridgeBridgeBridgeBridge
© 2008 Progress Software Corporation7
OpenEdge GUI for .NET Architecture
Single Process for OpenEdge Runtime and .NET Common Language Runtime (CLR)
OpenEdge RuntimeOpenEdge Runtime .NET CLR.NET CLR
.NET GUI.NET GUIfrm = NEW Form( ).frm:Closing:Subscribe( EventHdlr1 ).WAIT-FOR Application.Run( frm ).
EventHdlr1( ) …
frm = NEW Form( ).frm:Closing:Subscribe( EventHdlr1 ).WAIT-FOR Application.Run( frm ).
EventHdlr1( ) …
ABL LogicABL Logic
OpenEdge UI (Presenter)
.NET UI (View)BridgeBridgeBridgeBridge
4
12
6
7 3 5
© 2008 Progress Software Corporation8
.NET Inheritance Stack
UI components inheritance stack includes .NET root class: System.Object
…
CustEntryForm (ABL)
System… Form
Progress. Windows.Form
System… Control
Infragistics… UltraButton
…
…
Progress.Lang.Object
System.Object
All .NET Classes ABL Forms .NET Controls
.NET Classes = GreenABL Classes = Blue
© 2008 Progress Software Corporation9
.NET Windows I/O Blocking Model
Application with a single main form
WAIT-FOR Application:Run( form ).• Used for dashboard and MDI applications• Other forms are “children” of the main form• Closing the main form automatically terminates WAIT-
FOR
Application with several equal forms
WAIT-FOR Application:Run( ).• Forms shown at the same time or separately• An event handler needs to terminate WAIT-FOR
Application:Exit( ).
© 2008 Progress Software Corporation10
ABL Forms in the OpenEdge GUI for .NET
ABL Forms are containers for .NET UI Controls .NET Controls
• Microsoft® .NET Windows Form controls• OpenEdge Ultra Controls for .Net (Infragistics®
NetAdvantage)• 3rd-party .NET controls
ABL .NET controls• User controls• Inherited controls
CLASS CustForm INHERITS Progress.Windows.Form:
© 2008 Progress Software Corporation11
ABL .NET Controls - User Control
Custom ABL control container for complex behavior
Examples of user controls• Label and editor
• Address block
• Grid and viewer
CLASS AddrViewer INHERITS Progress…UserControl:
© 2008 Progress Software Corporation12
ABL .NET Controls – Inherited control
Inherits from existing .NET UI control for extending behavior
Examples on inherited controls• Buttons: Ok, Cancel, Help
• Drop-downs: States, Post codes, Countries
CLASS OkButton INHERITS Infragistics…UltraButton:
© 2008 Progress Software Corporation13
Demo: ABL Forms
Create a login dialog
© 2008 Progress Software Corporation14
.NET Event Model
Controls define events they publish• Strongly-typed events• Support a list of handlers (callbacks)
Controls fire an event when an action occurs• All subscribed handlers get called• Event specific arguments passed in from .NET
System.EventArgs
Subscribe ABL event handlers to events
CustForm:FormClosing:Subscribe( FormClosingHdlr ).
© 2008 Progress Software Corporation15
Demo: Event Handler
Validate user on OK button click
© 2008 Progress Software Corporation16
.NET Data Binding Model
Progress.Data.BindingSource• Provides data for .NET UI Controls
– How: Provides required APIs to .NET Controls (IList)– Why: OpenEdge data provided as .NET needs– What: Any ABL Query, Buffer or ProDataSet™
OpenEdge RuntimeOpenEdge Runtime .NET CLR.NET CLR
Progress.Data. BindingSource
ProDataSetCustomer
Lift Line SkiingUrpon FrisbeeHoops Croquet
Order
1 53 01/01/932 81 01/04/933 66 01/04/93
Query
12
3
© 2008 Progress Software Corporation17
Power of Progress.Data.BindingSource
Brings ABL data-centric behavior to .NET–Automatic data synchronization
–Automatic updating
–Automatic batching
–Automatic currency
Properties– Updating: AllowEdit, AllowNew, AllowRemove– Current row state: NewRow, RowModified– Typed screen value: InputValue, ChildInputValue– General Information: Position, Count
© 2008 Progress Software Corporation18
Data Binding Examples
Simple .NET control ( UltraEdit )
.NET browse-like control ( UltraGrid )
.NET list control ( UltraListView )
editBox:DataBindings:Add ( “Text”, pBS, “OrderNum” ).
list:DataSource = pBS.list:DataTextField = “State”.list:DataValueField = “State-Name”.
grid:DataSource = pBS.
© 2008 Progress Software Corporation19
Demo: Data binding
Bind a list of client types to the login dialog
© 2008 Progress Software Corporation20
ABL Mix and Match UI for Migration
.NET forms and OpenEdge GUI windows can co-exist in same session• One can parent the other• All functionality maintained independently
OpenEdge GUI windows can be embedded in a .NET forms• Client area managed in ABL• Other functionality managed in .NET• Progress.Windows.MDIChildForm• Progress.Windows.WindowContainer
© 2008 Progress Software Corporation21
Agenda
ABL for the OpenEdge GUI for .NET• GUI for .NET Architecture
• ABL Forms & Controls
• ABL Data Binding
• ABL Event Handlers
• Mix and Match Support
Using the GUI for .NET in AutoEdge
© 2008 Progress Software Corporation22
Outlook-style Container for AutoEdge
OpenEdge GUI for .NET main form• Dashboard / Container
• Dynamic menu and toolbar– Hook up events
• Re-use existing architecture– OERA and MVP
Run using WAIT-FOR Application:Run ( ).
© 2008 Progress Software Corporation23
Demo
AutoEdge main container form
© 2008 Progress Software Corporation24
In Summary
Modern, competitive UI in ABL• Uses .NET objects
– Object-oriented ABL– .NET object features (methods, properties, events)– WYSIWYG Visual Designer– Unlimited controls available
• Leverages what you know– ABL (events, business logic, data constructs)– Event-driven programming (WAIT-FOR)– OpenEdge Architect
© 2008 Progress Software Corporation25
Relevant Exchange Sessions
DEV-2: Making OpenEdge Architect Work for You DEV-6: Introduction to the OpenEdge GUI for .NET DEV-16: Leveraging the Power of Advanced GUI DEV-20: Sex and Sizzle – Developing with .NET and
OpenEdge 10 DEV-32: Using the Advanced GUI, Structured Error
Handling and SonicMQ to build a Semi-Disconnected Point of Sales
DEV-40: Using SmartDataObjects with the Advanced GUI
© 2008 Progress Software Corporation26
Questions?
© 2008 Progress Software Corporation27
Thank You
© 2008 Progress Software Corporation28
Top Related