a18: a deep dive into the openedge gui for.net peter judge openedge principal software engineer

28
A18: A Deep Dive into the OpenEdge GUI for .NET Peter Judge OpenEdge Principal Software Engineer

Upload: abigail-morales

Post on 26-Mar-2015

227 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: A18: A Deep Dive into the OpenEdge GUI for.NET Peter Judge OpenEdge Principal Software Engineer

A18: A Deep Dive into the OpenEdge GUI for .NET™

Peter JudgeOpenEdge Principal Software Engineer

Page 2: A18: A Deep Dive into the OpenEdge GUI for.NET Peter Judge OpenEdge 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…

Page 3: A18: A Deep Dive into the OpenEdge GUI for.NET Peter Judge OpenEdge Principal Software Engineer

© 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

Page 4: A18: A Deep Dive into the OpenEdge GUI for.NET Peter Judge OpenEdge Principal Software Engineer

© 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

Page 5: A18: A Deep Dive into the OpenEdge GUI for.NET Peter Judge OpenEdge Principal Software Engineer

© 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

Page 6: A18: A Deep Dive into the OpenEdge GUI for.NET Peter Judge OpenEdge Principal Software Engineer

© 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

Page 7: A18: A Deep Dive into the OpenEdge GUI for.NET Peter Judge OpenEdge Principal Software Engineer

© 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

Page 8: A18: A Deep Dive into the OpenEdge GUI for.NET Peter Judge OpenEdge Principal Software Engineer

© 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

Page 9: A18: A Deep Dive into the OpenEdge GUI for.NET Peter Judge OpenEdge Principal Software Engineer

© 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( ).

Page 10: A18: A Deep Dive into the OpenEdge GUI for.NET Peter Judge OpenEdge Principal Software Engineer

© 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:

Page 11: A18: A Deep Dive into the OpenEdge GUI for.NET Peter Judge OpenEdge Principal Software Engineer

© 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:

Page 12: A18: A Deep Dive into the OpenEdge GUI for.NET Peter Judge OpenEdge Principal Software Engineer

© 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:

Page 13: A18: A Deep Dive into the OpenEdge GUI for.NET Peter Judge OpenEdge Principal Software Engineer

© 2008 Progress Software Corporation13

Demo: ABL Forms

Create a login dialog

Page 14: A18: A Deep Dive into the OpenEdge GUI for.NET Peter Judge OpenEdge Principal Software Engineer

© 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 ).

Page 15: A18: A Deep Dive into the OpenEdge GUI for.NET Peter Judge OpenEdge Principal Software Engineer

© 2008 Progress Software Corporation15

Demo: Event Handler

Validate user on OK button click

Page 16: A18: A Deep Dive into the OpenEdge GUI for.NET Peter Judge OpenEdge Principal Software Engineer

© 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

Page 17: A18: A Deep Dive into the OpenEdge GUI for.NET Peter Judge OpenEdge Principal Software Engineer

© 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

Page 18: A18: A Deep Dive into the OpenEdge GUI for.NET Peter Judge OpenEdge Principal Software Engineer

© 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.

Page 19: A18: A Deep Dive into the OpenEdge GUI for.NET Peter Judge OpenEdge Principal Software Engineer

© 2008 Progress Software Corporation19

Demo: Data binding

Bind a list of client types to the login dialog

Page 20: A18: A Deep Dive into the OpenEdge GUI for.NET Peter Judge OpenEdge Principal Software Engineer

© 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

Page 21: A18: A Deep Dive into the OpenEdge GUI for.NET Peter Judge OpenEdge Principal Software Engineer

© 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

Page 22: A18: A Deep Dive into the OpenEdge GUI for.NET Peter Judge OpenEdge Principal Software Engineer

© 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 ( ).

Page 23: A18: A Deep Dive into the OpenEdge GUI for.NET Peter Judge OpenEdge Principal Software Engineer

© 2008 Progress Software Corporation23

Demo

AutoEdge main container form

Page 24: A18: A Deep Dive into the OpenEdge GUI for.NET Peter Judge OpenEdge Principal Software Engineer

© 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

Page 25: A18: A Deep Dive into the OpenEdge GUI for.NET Peter Judge OpenEdge Principal Software Engineer

© 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

Page 26: A18: A Deep Dive into the OpenEdge GUI for.NET Peter Judge OpenEdge Principal Software Engineer

© 2008 Progress Software Corporation26

Questions?

Page 27: A18: A Deep Dive into the OpenEdge GUI for.NET Peter Judge OpenEdge Principal Software Engineer

© 2008 Progress Software Corporation27

Thank You

Page 28: A18: A Deep Dive into the OpenEdge GUI for.NET Peter Judge OpenEdge Principal Software Engineer

© 2008 Progress Software Corporation28