Title: A18: A Deep Dive into the OpenEdge GUI for .NET
1A18 A Deep Dive into the OpenEdge GUI for .NET
Peter Judge
OpenEdge Principal Software Engineer
2Get Ready Were 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
3Demo OpenEdge GUI for .NET in AutoEdge
- Existing application following OERA
- New OpenEdge GUI for .NET
- Main container
- Customer maintenance form
- Test drive scheduling form
4Under 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.
5Agenda
- 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
6OpenEdge GUI for .NET Architecture
Single Process for OpenEdge Runtime and .NET
Common Language Runtime (CLR)
.NET GUI
ABL Logic
.NET UI (View)
OpenEdge UI (Presenter)
7OpenEdge GUI for .NET Architecture
Single Process for OpenEdge Runtime and .NET
Common Language Runtime (CLR)
.NET GUI
ABL Logic
.NET UI (View)
OpenEdge UI (Presenter)
8.NET Inheritance Stack
- UI components inheritance stack includes .NET
root class System.Object
ABL Forms
.NET Controls
All .NET Classes
System Form
System Control
Progress. Windows.Form
Infragistics UltraButton
CustEntryForm (ABL)
.NET Classes Green ABL Classes Blue
9.NET Windows I/O Blocking Model
- Application with a single main form
- WAIT-FOR ApplicationRun( 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 ApplicationRun( ).
- Forms shown at the same time or separately
- An event handler needs to terminate WAIT-FOR
- ApplicationExit( ).
10ABL Forms in the OpenEdge GUI for .NET
CLASS CustForm INHERITS Progress.Windows.Form
- 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
11ABL .NET Controls - User Control
CLASS AddrViewer INHERITS ProgressUserControl
- Custom ABL control container for complex behavior
- Examples of user controls
- Label and editor
- Address block
- Grid and viewer
12ABL .NET Controls Inherited control
CLASS OkButton INHERITS InfragisticsUltraButton
- Inherits from existing .NET UI control for
extending behavior - Examples on inherited controls
- Buttons Ok, Cancel, Help
- Drop-downs States, Post codes, Countries
13Demo ABL Forms
14.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
CustFormFormClosingSubscribe( FormClosingHdlr ).
15Demo Event Handler
- Validate user on OK button click
16.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
Progress.Data. BindingSource
1
2
3
17Power 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
18Data Binding Examples
- Simple .NET control ( UltraEdit )
- .NET browse-like control ( UltraGrid )
- .NET list control ( UltraListView )
editBoxDataBindingsAdd ( Text, pBS,
OrderNum ).
gridDataSource pBS.
listDataSource pBS. listDataTextField
State. listDataValueField State-Name.
19Demo Data binding
- Bind a list of client types to the login dialog
20ABL 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
21Agenda
- 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
22Outlook-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 ApplicationRun ( ).
23Demo
- AutoEdge main container form
24In 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
25Relevant 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
26?
Questions
27Thank You
28(No Transcript)