Design of portable and reusable GUI controls
A highly customizable, portable, and fast control can deal with huge data sets and be tuned for use in many applications, avoiding such common problems as bad performance and usability issues such as the inability to present big data sets in clear way.

By Egor Kazachkov, software engineer, Data Visualization Controls team, Intel Corp.

This paper is intended for GUI developers who want to write portable, reusable, and fast controls for visualizing big and complex data. There are some common problems such as bad performance and usability issues such as the inability to present big data sets in clear way, so the user can easily navigate and analyze it. Also, program data structures and visual data representation often becomes very dependent. Thus control becomes very specialized and cannot be used in other applications without making significant changes. This paper presents an approach to design complex controls that allow solving the problems discussed above. In this paper, examples of the graph viewer control are used to illustrate the basic ideas. These ideas can also be applied to a variety of other controls.

Definitions
A Graph is a set of objects and relations between them. Objects are called nodes. The relation between the nodes is called edges. So, a visible graph is a set of nodes (squares, rectangles, circles with or without labels, and so on), and edges (lines or curves) connecting the nodes. The algorithm that defines the position of the nodes and edges is called a layout.

Note that the nodes can contain other nodes and edges (subgraphs). All nodes that have edges going from them to any given node are called parents of this node. All nodes that have edges going to them from any given node are called children of this node.

Common problems in graph control
There are many applications where graph control can be used for visualizing data. If you want to use the same graph control for different applications you must provide a way to customize it. Any such customization must not affect the performance of the application. Following is a list of possible problems that you may encounter when you apply control to different applications:

  • Appearance of nodes and edges. Graph elements may either have a different color and shape, or may or may not have a text label, and so on. It is impossible to predict the appearance of the graph elements and implement them in advance. Also, there are a lot of possible graph layouts used in different cases. You may need a way to change this according to the application.

If you're interested in this topic, these articles may be helpful:

ASP.NET validator controls
by Andrew Ma This tutorial gives a brief overview of how to use the...
.Mac SDK 2.0
from Apple Computer Inc. With .Mac SDK 2.0, you can extend an appli...
Embedding .NET controls in Java
by Heath Stewart, Microsoft MVP, directory of technology, Proplanne...
OOP Demystified: A Self-Teaching Guide, Chapter 8: Real World Modeling
by Jim Keogh and Mario Giannini. McGraw-Hill/Osborne Books. Theory ...
Eclipse 3.1.1
from The Eclipse Foundation Eclipse, a Java-based open platform for...

Related Jobs:

Software Development Engineer #151166 - WA - Redmond - Microsoft Corporation
PC, Media Center, Palm PC, Smart Phone, Portable Media Center, and Sof...
Open Systems Engineer - TS/SCI + #6751 - VA - Chantilly - CACI International Inc
Requirements Applies software, hardware, and standards informatio...
Apprentice IT Analyst #siin-00004404 - MD - Aberdeen - SI International
Title: Apprentice IT Analyst Req Number: siin-00004404 Location(s)...
Network Technician #1025 - SD - N. Sioux City - Trilogy Networks
Responsibilities include: * Repairing portable computers ᦙ...
Test Manager #151216 - WA - Redmond - Microsoft Corporation
The Entertainment and Devices Division is leading the company’s digita...
Software Development Engineer in Test #145296 - WA - Redmond - Microsoft Corporation
Do you love data? Are you passionate about increasing product quality ...
Software Application Developer/Analyst #13451 - NJ - MiddleTown - Radiant Systems, Inc
The position is for a BEA Portal Engineer / Java Developer who has exp...
Research Scientist #RX1000018754 - CA - Sunnyvale - Yahoo! Inc.
Research Scientist Job No. RX1000018754 Location US - Sunnyvale...
Senior Software Engineer #8CD54BFEC76D5E65 - CA - Campbell - Ask Jeeves,Inc.
Title Senior Software Engineer City Campbell State CA Zip Code 9...
Development Manager #151215 - WA - Redmond - Microsoft Corporation
The Entertainment and Devices Division (E&D) is leading the company’s ...