1999 — Automatic Data Processing, Inc.


For many years, ADP had a suite of HR application developer tools – record editor, menu editor, panel editor, etc. With the popularity of the IDE (Integrated Development Environment), they decided to create an HR application IDE. They had worked out a prototype, and asked me to come in and develop a product. They already had a design team in place to implement the project, mostly with less than senior-level experience. I had to be careful not to come up with something too complicated or the project would not succeed.


Refer to the main window above.

  • Application window
    • Loads plug-in modules at run-time
      • Each editor is a separate plug-in
      • Plug-ins can contribute toolbars, menus, windows, etc.
  • Navigation window pane to the left (with the tree control)
    • Tabbed view with multiple windows
    • Enhanced Tree controls
      • Context menus
      • Multiple selection
      • Shows state information (checked-out in this example)
  • Panel Editor window to the right
    • Duplicates most of Developer Studio’s dialog editor functions
    • Multiple control selection
    • Cut/Copy/Paste, drag and drop
    • Multi-level undo/redo
    • Two custom toolbars
    • 30 custom cursors
  • Output Window to the bottom
    • Multi-tabbed window can display results from many sources
  • Properties window to the bottom-right
    • Fully modeless property sheet
    • Pinnable, can be “always on top”
    • Shows common properties for multiple control selections


Although they had initially envisioned a monolithic application, I succeeded in selling them on a modular design. There would be the main application, essentially a framework and manager for the individual editor modules. This had the advantage of each team member being able to work on a physically separate project (their own editor), and avoid contention for single, large resource and project files, and a small amount of added complexity.

Based on ideas I had worked out before on Scientific Atlanta’s DHCI project, I designed a nearly generic application shell and a base class APlugIn, which the individual editor plug-ins would be derived from. The plug-ins were built as MFC extension DLLs, as opposed to making them into COM objects.

Click on the application image to get a full-sized picture and look at the design features


I created the projects for the main application and the first 4 plug-ins. The project manager and I worked on the main application, and I built the Panel Editor plug-in. The Panel Editor was modeled closely after the Microsoft Developer Studio dialog editor. I developed an undo/redo class that allowed full undo and redo capability in the editor.


  1. C++, MFC and Rogue Wave Objective Toolkit were the language and library used
  2. SQL was used in creating the “IO Classes” to communicate with the database. The product supported multiple database engines.
  3. WinHelp is the product’s help engine


I contributed 117k lines of C++ code, 50 toolbar bitmaps, 32 cursors, a 24 page code document, and a 90 page design document to the project.

You can click on an icon below (use the arrows to scroll the icon list) and see the screen shot and a description.: