Introduction
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.
Features
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.
- Loads plug-in modules at run-time
- 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
Architecture
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
Development
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.
Technologies
- C++, MFC and Rogue Wave Objective Toolkit were the language and library used
- SQL was used in creating the “IO Classes” to communicate with the database. The product supported multiple database engines.
- WinHelp is the product’s help engine
Conclusion
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.: