What is GUI for .NET and Why aren't I using It?
“GUI for .NET for Dummies”
Mike Fechner, Director, Consultingwerk Ltd.
Consultingwerk Ltd. Independent IT consulting organization Focusing on OpenEdge and .NET Located in Cologne, Germany Vendor of tools and consulting programs 22 years of Progress experience (V5 … OE11) GUI for .NET early adaptor (since 10/2006) Recently started with iPhone/iPad development http://www.consultingwerk.de/
2
OpenEdge® application modernisation solutions WinKit SmartComponent Library Dynamics4.NET Tools can be used together or separately Share common code base SmartComponents.Mobile, SmartComponents.Web SmartBPMAdapter for OpenEdge BPM/Savvion Introduction to GUI for .NET
3
Agenda
Overview OpenEdge GUI for .NET Language integration Visual Designer OpenEdge Ultra Controls Data Binding Mix and Match with classic ABL GUI Windows API access using .NET Conclusion
Introduction to GUI for .NET
4
OpenEdge GUI for .NET
A Microsoft® .NET™ based Windows graphical user interface that can replace or be integrated into an existing OpenEdge GUI application
Introduction to GUI for .NET
OpenEdge GUI for .NET State-of-the-art UI on the Windows desktop Integrated feature of OpenEdge 10.2A and 10.2B Supported by both GUI clients – fat client, prowin32.exe – WebClient No separate license required – Deployment – Development Access and use any .NET control Introduction to GUI for .NET
AVM and .NET CLR in the same process OpenEdge Client OpenEdge AVM OpenEdge UI Bridge (Controller)
• GUI components • Data access • I/O blocking • Event handlers
http://www.consultingwerk.de/
Microsoft CLR Bridge
.NET UI (View)
• GUI Visualization • User interaction and events
7
OpenEdge GUI for .NET .NET Framework hosted in Progress client Direct access from ABL to .NET Objects or Controls using object orientation Based on OOABL Data binding support (Query, ProDataset, Buffer) Tool support – Visual Designer (OpenEdge Architect) – Class browser – Code completion Introduction to GUI for .NET
8
OpenEdge products involved OpenEdge GUI Client Products – Use object-oriented ABL to access .NET objects – Data binding between ABL data sources and .NET controls – Write ABL event handlers for .NET controls
OpenEdge Architect (in theory optional) – Build forms using new Visual Designer – WYSIWYG editor – Basic set of .NET UI controls
OpenEdge Ultra Controls for .NET (optional) – Available as an optional product providing additional feature rich .NET controls from Infragistics Introduction to GUI for .NET
9
OpenEdge AVM access to .NET classes OpenEdge 10.2A, 10.2B: access to .NET 1.x, 2.0, 3.x OpenEdge 11 adds support for .NET 4.0 OpenEdge 10.2A and 10.2B: .NET access in prowin32.exe and prowc.exe OpenEdge 11.0 adds access to Windows TTY client and AppServer
http://www.consultingwerk.de/
10
Agenda
Overview OpenEdge GUI for .NET Language integration Visual Designer OpenEdge Ultra Controls Data Binding Mix and Match with classic ABL GUI Windows API access using .NET Conclusion
Introduction to GUI for .NET
11
Language Integration .NET integration based on language, not tools .NET classes become “integrated” part of the ABL classes set ABL to define reference variables of .NET objects ABL to “NEW” .NET objects, use properties and methods ABL to subscribe to events
Introduction to GUI for .NET
12
Language Integration OpenEdge Form Progress.Lang.Object
.NET Control ABL
Progress.Lang.Object
ABL
System.Object System.Object .NET .NET System.MarshalByRefObject System.MarshalByRefObject System.ComponentModel.Component System.ComponentModel.Component System.Windows.Forms.Control System.Windows.Forms.Control System.Windows.Forms.ScrollableControl Infragistics.Win.UltraControlBase System.Windows.Forms.ContainerControl Infragistics.Win.Misc.ControlBase System.Windows.Forms.Form Infragistics.Win.Misc.AutoSizeControl Infragistics.Win.Misc.UltraButtonBase Progress.Windows.Form OE Infragistics.Win.Misc.UltraButton CustEntryForm OE ABL Class
.NET class
Infragistics Class
OpenEdge form
Introduction to GUI for .NET
OpenEdge derived Class 13
Language Integration Object oriented code preferred programming pattern, but
Procedural code can create .NET objects as well Procedural code can use .NET objects as well Procedural code can respond to .NET events …
Introduction to GUI for .NET
14
Demo Use procedure editor to create .NET Form Button Event handler
Introduction to GUI for .NET
15
Introduction to GUI for .NET
16
Agenda
Overview OpenEdge GUI for .NET Language integration Visual Designer OpenEdge Ultra Controls Data Binding Mix and Match with classic ABL GUI Windows API access using .NET Conclusion
Introduction to GUI for .NET
17
Visual Designer Feature of OpenEdge Architect (10.2) or „Progress Developer Studio for OpenEdge“ (11.0) Graphical Designer for .NET Forms
Referenced Assembly management Toolbox management Class Browser
Introduction to GUI for .NET
18
Visual Designer WinForms Designer environment running inside of Eclipse Supports developer friendly design time support known from .NET In place editing, drag and drop Wizards Property sheets Customized property sheets Graphical property designers Introduction to GUI for .NET
19
Demo
Visual Designer Resizing properties Event handling Review generated source code
Introduction to GUI for .NET
20
Customizing Visual Designer http://blog.consultingwerk.de/consultingwerkblog /2011/06/presentation-download-forcustomizing-the-openedge-architect-visualdesigner/
Introduction to GUI for .NET
21
Agenda
Overview OpenEdge GUI for .NET Language integration Visual Designer OpenEdge Ultra Controls Data Binding Mix and Match with classic ABL GUI Windows API access using .NET Conclusion
Introduction to GUI for .NET
22
OpenEdge Ultra Controls 3rd party controls required to build modern user interface! Microsoft Controls just don’t rock Infragistics NetAdvantage for WinForms Leading vendor of .NET Controls Rebranded by Progress Software Technical support provided by Progress Software Samples in documentation and on PSDN Part of GUI for .NET QA Introduction to GUI for .NET
23
OpenEdge Ultra Controls
Ribbon Toolbars Explorer Bars Dockable Controls AppStylist Outlook style Calendar Controls Powerful Grid Control Editor Controls …
Introduction to GUI for .NET
24
Introduction to GUI for .NET
25
Introduction to GUI for .NET
26
OpenEdge Ultra Controls "All animals are equal, but some animals are more equal than others“, George Orwell, Animal Farm GUI for .NET designed to work with any .NET Control set Other .NET Control sets should work fine as well, in recent versions there have been very few known issues, tech support will adress them But you may have to play tech-support ping-pong Introduction to GUI for .NET
27
Demo Outlook 2010 Calendar UI in under 5 minutes
Introduction to GUI for .NET
28
Agenda
Overview OpenEdge GUI for .NET Language integration Visual Designer OpenEdge Ultra Controls Data Binding Mix and Match with classic ABL GUI Windows API access using .NET Conclusion
Introduction to GUI for .NET
29
Data Binding support Data Binding is the way .NET Controls „expect“ data Read and Update Single fields (e.g. TextBox) or List of records (e.g. Grid) Runtime Support through Progress.Data.BindingSource (extends System.Windows.Forms.BindingSource) Tool support for providing design time schema Introduction to GUI for .NET
30
ProBindingSource features Binding supported for – ABL Queries (temp-table or DB) – ABL Buffers, single record (temp-table or DB) – ProDataset, hierachical structure (temp-tables)
.NET Controls may navigate data Methods to refresh UI, when data changes Methods to update data, when UI provides modifications (user data entry) (Forward) Batching support to support large data Introduction to GUI for .NET
31
ProBindingSource Data Binding Progress.Data.BindingSource – Provides data for .NET UI Controls • How: Provides required APIs to .NET Controls • Why: OpenEdge data provided as .NET needs 1 • What: Any2 ABL Query, Buffer or ProDataSet Progress.Data. ™ Query ProDataSet BindingSource Customer
Lift Line Skiing Order Urpon Frisbee 1 53 Hoops Croquet 2 81 3 66
01/01/93 01/04/93 01/04/93
OpenEdge AVM Introduction to GUI for .NET
3 .NET CLR 32
Demo
ProBindingSource Designer in Visual Designer UltraGrid Text Editors Write code to provide query
Introduction to GUI for .NET
33
Agenda
Overview OpenEdge GUI for .NET Language integration Visual Designer OpenEdge Ultra Controls Data Binding Mix and Match with classic ABL GUI Windows API access using .NET Conclusion
Introduction to GUI for .NET
34
Mix and match support ABL GUI Windows and .NET Forms at the same time in the same client! Run ABL Windows (.w file) from .NET Form Run .NET Form (.cls file) from ABL procedural code … Common input blocking (WAIT-FOR)
Introduction to GUI for .NET
35
Introduction to GUI for .NET
36
Introduction to GUI for .NET
37
Mix and Match Support Simple integration of first GUI for .NET screens into existing ABL GUI application Modernize those screens first that need it the most – Main menu – Complex data entry screens – Scheduling screens Leave other screens ABL GUI for very long (Country master table) Introduction to GUI for .NET
38
Embedded Windows ABL Windows embedded into .NET Forms Core feature of OpenEdge 10.2A, 10.2B, 11.0 Contents of ABL Window will be embedded into a .NET control Progress.Windows.WindowContainer control to “host” ABL window at runtime Use existing code, existing layouts and Active X Controls tightly integrated in .NET UI
Introduction to GUI for .NET
39
Introduction to GUI for .NET
40
Demo WinKit Sample MDI container showing various embedding scenarios – AppBuilder view – Embedded view (runtime) – MDI Childs with Toolbar – Independent Windows with ribbons – Overlaying ABL Browse Widget with UltraGrid control – 4 Stages of Order Maintenance sample Introduction to GUI for .NET
Reference I: ESS AG, Preußisch Oldendorf German Progress ISV Software for the housing industry V8 coding style, templates, include files, AppBuilder New development with Progress OERA backend and .NET frontend Existing Progress GUI integrated into.NET frontend WinKit delivers unique style between existing and new application Introduction to GUI for .NET
42
Reference I: ESS AG, Preußisch Oldendorf
Introduction to GUI for .NET
43
Reference I: ESS AG, Preußisch Oldendorf
Introduction to GUI for .NET
44
Reference I: ESS AG, Preußisch Oldendorf
Introduction to GUI for .NET
45
Reference I: ESS AG, Preußisch Oldendorf
Introduction to GUI for .NET
46
Reference I: ESS AG, Preußisch Oldendorf
Introduction to GUI for .NET
47
Reference I: ESS AG, Preußisch Oldendorf
Introduction to GUI for .NET
48
Reference II: Shuttleworth / UK
UK-based Progress Partner Huge ERP system for printing industry V8 style framework (ADM1-like) Clear vision of Outlook look-and-feel Browse windows as MDI children Data windows as separate windows – Similar to Outlook where Emails and Appointments are opened separately Majority of changes in existing framework Minor changes to existing screens
Menu Toolbar & Browse Window
Menu Toolbar & Browse Window
Menu Toolbar & Browse Window ABL Frame
Shuttleworth: Data Window
Shuttleworth: Data Window
Shuttleworth: Data Window
ABL Frame
Reference III: CCE / Belgium ERP for food industry – before – after Own framework, developed since V8 ADM1 elements WinKit as an intermediate solution High demands for added productivity and “demo” features
User Interface modernisation
FRAME for Print Selection and Reference III: CCE /ABL Belgium Functions
User Interface modernization
57
Reference III: CCE / Belgium Ribbon for Print Selection and Functions
User Interface modernization
58
GUI for .NET adoption using WinKit Original source code used in the context of GUI for .NET Just minor modifications that maintain code compatibility with previous Progress releases NO architectural change required Existing application framework or templates used Developers may continue to use AppBuilder for maintenance of existing screens Introduction to GUI for .NET
WinKit Migration Tool automated migration of ABL Windows based on AppBuilder, AppBuilder API or Proparse for non AppBuilder source integration of required include files integration of hooks into existing program logic to refresh .NET UI when required process a single file at a time or a list of files
Introduction to GUI for .NET
60
Agenda
Overview OpenEdge GUI for .NET Language integration Visual Designer OpenEdge Ultra Controls Data Binding Mix and Match with classic ABL GUI Windows API access using .NET Conclusion
Introduction to GUI for .NET
61
OpenEdge AVM access to .NET classes Full access to all .NET classes, not just WinForms „GUI“ classes, restrictions only in multi-threading License restrictions removed in 10.2B02 http://blog.consultingwerk.de/consultingwerkblog/20 10/09/progress-relaxes-usage-restrictions-of-guifor-net-bridge-with-10-2b-service-pack/ 10.2B .NET access in GUI clients, TTY and AppServer on Windows in OE11 http://communities.progress.com/pcom/thread/3897 0?tstart=0 http://www.consultingwerk.de/
62
Windows API Access using GUI for .NET
Process interaction File System operations Taskbar API Notification icons Sample code and detailled presentation „Extreme Windows Desktop Integration“ http://blog.consultingwerk.de/consultingwerkblog /2012/04/extreme-windows-desktop-integration%E2%80%93-updated/
Introduction to GUI for .NET
63
Demo
Managing Background process from ABL File System Operations Extended Transparency Windows 7 Taskbar API
Introduction to GUI for .NET
64
Agenda
Overview OpenEdge GUI for .NET Language integration Visual Designer OpenEdge Ultra Controls Data Binding Mix and Match with classic ABL GUI Windows API access using .NET Conclusion
Introduction to GUI for .NET
65
Conclusion
New – top of the edge – UI for Windows Easy integration Powerful migration path from ABL GUI Simplified integration with Windows API Continous to work with Windows 8
Start using GUI for .NET today!
Introduction to GUI for .NET
66
More info OpenEdge documentation „GUI for .NET Programming“ http://communities.progress.com/pcom/communi ty/psdn/openedge/gui4dotnet http://blog.consultingwerk.de
Introduction to GUI for .NET
67
Questions
Introduction to GUI for .NET
68