Basic Requirements For The Online-GUI-API
The following states the basic requirement that must be satisfied to create a viable Online-GUI-API. The examples in the webpage prove that those requirements can be satisfied.
First Invention:
Online GUI-API to build graphics intensive Web Applications
The Computer graphics and Graphical User Interfaces (or “GUI”) is arguable one of the most successful technologies in the software industry. The successes of Apple computers and then Microsoft were mainly attributed to their successful deployment of the Computer Graphics. Due to the advancements of the Internet, it made those GUI technologies obsolete. Today even Microsoft decisively moving towards XML-graphics (called XAML/Avalon) in the Wondows-2006 (code named Longhorn).
It is very complex to present data driven large custom graphics Components using bare XML instructions (e.g. SVG, X3D, Microsoft’s Avalon/XAML or Macromedia’s MXML/Flash, DHTML etc.), therefore, it costs many times more than desktop application, to build online applications that can barely match 50% of the GUI-capabilities of the desktop GUI-applications. Our innovative GUI-API technology leverages those XML-graphics technologies (e.g. XAML or SVG) and provides simple and elegant GUI-API (e.g. Java or C# class library) abstraction for the developers to build superior next generation online GUI-applications.
Our GUI-technology consists of GUI-API (i.e. a class library), akin to UNIX/X11/Motif, Windows-API or Java/Swing (but simpler, highly flexible and not as much blotted). The GUI class generates 2D or 3D XML-graphics code (e.g. SVG, X3D, Microsoft’s XAML or Macromedia’s MXML/Flash) to present the component. To build a GUI-application, the GUI-Class system must support (i). Processes to build GUI-component hierarchy; and (ii). Processes to integrate the GUI-components. These are the two basic requirements for any GUI-API to build applications; and not much else.
Capabilities supported by Windows-GUI-API to build applications: To build desktop GUI-applications using Visual Basic, one uses Windows GUI-class API to build the components and places them in container components (to build component hierarchy). The GUI components can be manually assembled to build larger and larger interactive presentations in the application.
Then he needs to integrate the GUI-components. To accomplish this, he would register event-listener (or callback) functions for the control-components, and implements the callback-functions, which (i.e. code in the body of the function) request the services of other components. When a given event occurs on the control-component, the callback function will be invoked, which calls the service functions of other components. This is the general way two components communicate in the GUI-applications. The developer repeats similar code to integrate all the components in the application.
Pioneer-soft’s Online-GUI Classes can support these capabilities: In addition to generating 2D or 3D XML-graphics code, the classes in our GUI-API support innovative special characteristics (resulted from amazing discoveries), which make it possible to seamlessly create complex component hierarchies, than ever possible before, by writing just few lines of simple code.
By leveraging this capability (i.e. easily build complex component hierarchies) one can (i) quickly assemble fine-grained components to build large and highly customized components; and (ii) quickly assemble fine-grained classes to build large and highly flexible GUI classes (both reusable or custom) then never possible before. These processes would allow developers to build superior graphics intensive applications than possible before, at far less cost.
Furthermore, the GUI objects not only generate components for the application but also support special features, such as, support methods, such as, to provide the function names to access its services and many other elegant innovative processes to integrate the component. Hence, they make it possible to integrate the generated-components in the application, so that the components in the hierarchy could exchange messages and collaborate with each other.

Therefore, the online-GUI-API or class library satisfy both needs stated above, hence can be used to build next generation online graphics intensive IT applications.

How does this technology works? & How Pioneer-soft’s GUI-API different from other technologies out there?
There are thousands vendors selling reusable GUI-Classes to present data-driven charts and graphs to include in the web pages. They all basically work similarly. Developer usually instantiate the reusable GUI-Class and supply real-time data and the GUI-Class generated necessary code (e.g. Flash or SVG) to present the component:

// The Data variables: Variables could be initialized at run-time.
// (i.e. this data may be calculated at run-time, from the data
// accessed from databases, obtained live-wire or Web-services)

Double val[] = { 10000, 12000, 14000, 16000, 18000};
String names[] = {"Sun", "Microsoft", "IBM", "Intel", "Oracle"};


//Example for Reusable GUI Class:: ATPie is a Java Class for pie-chart
//It contains presentation logic to generate SVG code to display a chart.

//Sample code below, illustrates how to use the GUI-class for pie chart.
//
Instantiate & Initialize an Object for the Reusable GUI Class 
ATPie Pie1 = new ATPie(" Portfolio at the end of 2dn Quarter");
Pie1.setData(usr_data, 5, val, names);
//Use Class method to set Data

// Method writes SVG-code for Pie-chart to ‘OUT’ stream (e.g. webpage)

Pie1.CGM ( Out ); // Code generation Method

Pseudo-code listing#1

Using this technique, any one could include one or more components in his web page. But, if you notice how desktop applications are build, it is absolutely essential that the components in the application need to be integrated, for example, to collaborate or to exchange data or notify events. If we like to build full-fledged online-applications; it is essential that the components in the web page must be integrated, so that they can communicate with each other.

JSP/Servilet may instantiate & initialize GUI-Objects using respective reusable GUI Classes, where each Object generates a 'code-block' for presenting a GUI component.
(Likewise, GUI Class for a larger GUI component may use other GUI Classes to build subcomponents) 

Figure#2

Note: Due to the recent legacy of the Internet, we are calling them web pages, but they can be millions of line of source code (or even large compiled binaries, for example, Flash or MAXL real-time compiler) of the complex applications.
If you use the Reusable GUI-API (e.g. Java Classes in your JSP file) to include two components in your web page, how do you integrate the components that are placed in the web page? Today it is not Possible!
Important Note: Remember that the components are dynamically generated using reusable-GUI-Classes (and may have used real-time data from data sources). Of course, one might integrate the components, if he hand written all the code using bare DHTML/HTML, XAML, SVG or MXML/Flash instructions to present each of the components and include the component code in the web page (or online graphics application). 

One may be able write bare X3D or XAML code for small components. However, for many large components, this may be impractical. It is highly desirable to use a reusable GUI Class as shown in the listing#1. For example, the code for large components (e.g. interactive charts, trees, dials, meters and maps), the bare XML graphics instructions/code runs in to thousands of lines, which further may require complex calculation based on the custom real-time data (or for AJAX updates). Don’t forget, it might require complex application logic to get the custom data (e.g. based on each user's preferences and profile) from databases or live data sources.

One or more GUI components may be included in the webpage as shown in above Fig#2
Then implement Simple Integration-logic code at server (e.g. in JSP) for generating communication code, so that the GUI components can exchange data/events at client

Figure#3

How do you integrate any two GUI-Components?
Imagine that you display two GUI-components (which are created using Windows GUI-API and VB or VC++) in your desktop application’s window. If you cannot integrate (e.g. implement communication code) the components that are displayed in the application window, how can you build any application? Isn’t it impossible?

The above figure shows stock quote for 'ORCL'. If user clicks on the radio button for 'MSFT', it calls Stock-quote component's service method to update the Quote-display
(Please Click here if you wish to see the real SVG example and Code listing)

Imagine, if there is no way that you could set a callback to any GUI-component, how can you integrate any two GUI-components in your VB/VC++ application. If you press the button, nothing would happen, because it cannot communicate the user event to any other component. Therefore, a viable GUI-class must support a mechanism to integrate the components.
Furthermore, if the other component does not support a method to accept the request, how can the callback-function send the message? Therefore, the GUI-classes/components should support (A) mechanisms to set callbacks (i.e. register one or more event notify functions) and/or (B) export methods for the external code to communicate, for example to request its services.
Pioneer-soft invented simple and elegant technique to integrate the components in the web application (or subcomponents in a large component). We have perfected the concepts and process over the years to make it extremely simple. The reusable GUI-Objects that run on the server can provide necessary information and capabilities to integrate the component.
One such mechanism is given below (we have many other simpler mechanisms). For Example, you have displayed Radio-button group and wish to update the stock-quote, if user selects a new ticker-symbol.
How do you integrate Two VB/VC++ Components?
Sample VB/VC++ pseudo code to integrate two GUI components in the traditional GUI applications (e.g. Windows or Unix/Motif):
Write a callback function as shown below, which calls the service method of other component to update its status, upon the user selection of new item.
Function VB_RadioGroup_callback( new_selection_ticker) {
  // The code to Communicate with other component: For example:
  Stock_Quote_Obj.display_new_comp (new_selection_ticker);
}
// Then register the callback for the Radio Button Group.
// The code to register the function
VB_RadioGroup_callback
// as a callback to the Radio-button group:

Radio_Group_obj.setCallback (VB_RadioGroup_callback);
Likewise, our IL (Integration Logic) in the JSP file looks like the following;
// The simple yet great innovative TWIST of IL ('Integration Logic') that runs at server:
// The JSP includes communication code, so that, components to collaborate with each other 

<script>
Function Online_RadioGroup_callback( new_selection_ticker) {

// The code to Communicate with other component (e.g. inform the user selection).
//Request the name of the Service-function of the component (In the generated code)

<%=
Stock_Quote_Obj.display_new_comp()%>(new_selection_ticker);%>
}
</script>

<%
// Include the component-code in the web-page (Notice the double quotes)
Radio_Group_obj.setCallback(“Online_RadioGroup_callback”);
// This would make the Radio-button-group to call the Callback.
%>
The online-GUI-classes support rich set of methods to set callbacks. Also, the online-GUI-classes support rich set of service-methods to request the services of the components. Upon the user event, one component may call the service method of the other component. This is not that much different than the traditional-GUI component integration. (See comparison table at the end of this webpage)

JSP Code runs at server

Webpage code runs at Client

Note: Upon an event on AC2, the AC2 calls the callback (Blue-dotter-arrow in above figure). The callback calls the service method of AC1 (Red-dotter-arrow in above figure)

Note: The Integration-logic on server has only 4 lines code (and rest is just comments to explain it). In fact, in this case, it can be written in just one line: The following line is equivalent to the above IL code. (a).Get service method of Stick_Quote_obj, then (b) make the Radio_Group to call the service-method. In this case, the GUI-Class includes necessary code in the AC for the Radio-Group to call the given function.

<% Radio_Group_obj.setCallback ( Stock_Quote_Obj.display_new_comp());%>

This directly registers one component’s service method as the callback for the other component. Therefore, the process to integrate any two GUI-components in the web page (that are generated using reusable GUI-API), is not that much different from integrating any two GUI-components in the traditional desktop GUI-applications.
One could use GUI-objects to create components and place any number of GUI-components (e.g. 5 or 500) in the web page as shown in the Fig#2. Then use the Integration logic process outlined (e.g. Fig#3) to integrate them.
Notice: Raju's reusable GUI-Classes not only support a method to generate code to present the component, but also support functions to facilitate the integration of the generated components, so that the components can collaborate with each other.
Can you name any reason it won’t work?
We have many examples to prove this not only works,
but also offers far more flexible than traditional GUI paradigm.

SUMMARY: Comparison between Raju's GUI-API Framework
and The
Traditional desktop GUI-API Frameworks

Actions In The Traditional 
GUI-API Framework

Corresponding Actions for 
Our Online GUI-API Framework

The application developers instantiate and initialize each GUI Object. Then request the GUI Objects to present their GUI Components

The application developers instantiate and initialize each GUI Object (Listing#1). Then request the GUI Objects to generate code-block to present their GUI Components (Fig#2)

If two or more GUI components in the application need to collaborate or communicate, the developers implement required communication code for the components to collaborate with each other.

If two or more GUI components in the application (e.g. webpage) need to collaborate or communicate, the developers implement code at server, which generates communication code for the components to collaborate with each other. (Please see Figures #3)

 Therefore, Raju's GUI-API is "functionally equivalent" to the traditional GUI-API

 
Miscellaneous Documents Privacy Policy | Site Map | Services
Designed By SINDHU SYNERGY
Copy Right © 2006 Pioneer Soft, LLC. All Rights Reserved.