October 13, 2009

Australia The Tour, Part 1: Sydney

Posted by Mike Ormerod

We finally arrived in Sydney on Friday, after leaving Boston on Wednesday, 20+ hours of flying and somehow managing to misplace Thursday!  If you've ever had the chance to travel 'down under' you'll know that the journey is well worth the effort.  I've been fortunate in my working life to travel to many cities around the world, and I must say that Sydney is one of the few I could happily call home.  Don't get too excited though Ken, I will be returning back to Boston...this time!!

I'm writing this post on Tuesday from Brisbane, the day after the PTW event in Sydney.  And what a great event it was.  The registrations were fully booked out with 50+ people attending the day long festivities.  As I mentioned in my previous post there was lots of great content, much of which which was delivered by local Progress employee's with Shelley and I delivering a few sessions each.  At the close of the event even I was starting to get fed up of me speaking, so thanks to all those who stuck with me through my sessions and didn't fall asleep, or if you did, thanks for not snoring :)

It was a great chance to catch up and talk with many Application Partners and Direct Customers about their current situations and challenges going forward, in addition to hopefully answering a question or two.  No matter where I go in the world I'm always impressed with attendee's passion for OpenEdge and what they do with it.  It was also great to note the number of hands that were raised when the room was asked who's currently using OpenEdge Architect.  If you're reading this and you're not currently using OpenEdge Architect, I strongly recommend you go and have a look at the latest version in OpenEdge 10.2a, it really does make you more productive as a developer.  And that's not just marketing speak, a number of people yesterday were more than happy to extol it's virtues.

So many thanks to all those that attended the Sydney event and helped make it a great success.

We've now rolled into Brisbane where we'll present the same event again to a new audience. I must say, it's strange to fly an hour North from Sydney to Brisbane, and then have to alter my watch an hour back!  I kind of understand it when you travel East/West, but North??  The locals tell me it's something to do with the cows!!!

I'm not sure what's going on with the weather since we arrived, but we seem to have brought the New England rain with us.  The weekend weather in Sydney was full of showers, and when we arrived in Brisbane is was approaching 80+ degree heat and sunny, but we've been here a couple of hours and now it's throwing it down with rain!!

From what I understand Brisbane is fully subscribed so it should be another great event.  I'll keep you posted, and next time remind me to tell you about the will power of an architect and a certain Australian biscuit/cookie.

Thanks for reading

Mike

March 02, 2009

GUI presentation models - more than just look and feel

Posted by Shelley Chase

While working on a new ABL sample using OpenEdge GUI for .NET, I started thinking about the different presentation models that are available to an ABL programmer in 10.2A. While much of Microsoft geeks are focused on the cool new features of Vista, OpenEdge stays focused on real world business applications. Business applications need a productive, full-featured user interface whose purpose goes beyond catching the user’s attention. Since these applications must be functional above all else, the need for Vista’s multimedia effects (video, animation, graphics) might be nice but not critical. Business applications have a typical set of features that are often reused over and over again. These features include:

  • Support Create, Read, Update, Delete (CRUD) capabilities – data entry and persistence
  • Data managed in a grid or multiple entry fields

One of ABL’s core strengths has always been its ability to manage the backend data easily, with built-in and native data awareness and transactional support in the language. Now with OpenEdge GUI for .NET, you have even more choices available to select the right presentation model for your applications. In general business applications have many different screens to show to their users and often there is need to show more than one simultaneously. There usually is a central way of managing the various screens (a window manager), as well as some means of transitioning between them. It is crucial that users can easily navigate the application, and can use it in a flexible way that fits with their needs.

The presentation models to consider are:

  • Single Document Interface (SDI)
  • Multiple Document Interface (MDI)
  • Tabbed Document Interface (TDI)
  • IDE Style Interface (IDE)

Single Document Interface

SDI organizes graphical user interface applications into individual windows that the operating system's window manager handles separately. Each window contains its own menu or toolbar – there is no concept of a “parent” window. Applications which allow the editing of more than one document at a time, e.g. word processors give the user the impression that more than one instance of an application is open instead of a single application with multiple documents. Each window displays as an individual entry in the operating system's task bar or manager – which might group windows of the same application.

          Microsoft Word and Excel are examples of an SDI application.

Multiple Document Interface

MDI organizes graphical user interface applications into many windows that reside under a single parent as opposed to all windows being separate from each other like SDI. A single menu bar and/or toolbaris shared between all child windows, reducing clutter and increasing available screen space. In MDI a single instance of the application is shared and the child windows all float within the parent (container) window.

The disadvantage of MDI is that it is easy to “lose” a child window when many windows are open simultaneously. In order to view the list of windows open in MDI applications the user typically has to go to the menu bar, moving their focus out of the child window area.

Tabbed Document Interface

This is a specialization of the MDI model. Like MDI, TDI organizes graphical user interface applications into many windows that reside under a single parent window. Unlike the floating child windows of MDI, in TDI each “window” is displayed in its own tab. This makes it much easier to find open windows than traditional MDI. TDI windows must always be maximized inside their parent window, and as a result only one tab can be viewed at a time.

The disadvantage of TDI is with only a single window available at a time, comparing information or copy-and-pasting between two windows is more difficult. Additionally although tabs make it easier to find open child windows, if there are a large number of windows opened simultaneously there are many tabs for the user to search before finding the one they are looking for.

Firefox is an example of a TDI application.

IDE Style Interface

IDE Style Interface is another specialization of the MDI model. Like MDI, IDE organizes graphical user interface applications into many windows that reside under a single parent window. An IDE-style interface is a superset of the MDI model with features available to support the child windows that are not normally available in traditional MDI applications. These child-window features include:

  • TDI model for child window
  • Ability to view child windows simultaneously using splitter
  • Separate window management for child windows - normally tree-based
  • Additional, independent panels to support application – these often use a tabbed interface

Microsoft Visual Studio.NET and Eclipse are examples of IDE applications.

Microsoft Outlook

Microsoft Outlook, and its very popular user interface metaphor, is not true to any of these models. It is closest to an IDE application without tabs for the child windows. Or you could consider it an MDI application with child-window features.

When you plan to redesign your appIication's user interface, consider which of there models works best for your application and users. This is not a one size fits all solution but one that is customizable for your needs. With the new GUI for .NET you get access to Microsoft .NET Windows Forms, an extremely full-featured user interface solution. In Microsoft’s own words “With Windows Forms, you can create powerful Windows-based applications. You can harness the power of Windows Forms to display data, handle user input, and deploy your applications easily and with enhanced security.”

July 01, 2008

Lions and Tigers and Bears... Oh My!

Posted by Shelley Chase

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:

DEFINE VAR

C-Win

AS

WIDGET-HANDLE.

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.

InitializeComponents( ):

 Controls:Add( custGrid ).

 …

(controls enables by default)

VIEW C-Win.

custForm:Show( ).

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.

-Shelley

Progress Software
Progress Software