README for SOMPARTS.ZIP - Parts Like Toolbar and SOMObject Demo		  v1.00
----------------------------------------------------------------------------

This is C++ IBM User Interface Class Library demo of a simple application 
that demostrates using SOMObject's Distribute Objects inside a application
written in IBM User Interface Class Library. The main purpose of this 
sample code is demostrated how a simple SOMObjects DSOM object can be 
intergrated into a GUI C++ application using the class libraries.

This demo includes source code for both the application SOMPARTS.EXE and 
the DSOM  PART object...  To execute this program you must have both the
CSet++ 2.1 runtimes and the SOM 2.0 runtines loaded on your system

The following is a brief layout of the files included in this demo

 SOMPARTS.EXE - Sample C++ DSOM Client Application
---------------------------------------------------------------------------
SOMPARTS.HPP	- Header file for main application and main window
SOMPARTS.CPP   - main source module for main application and its window
SOMPARTS.H     - #defines for main applications
SOMPARTS.RC    - resource file for main application
SOMPARTS.DEF   - DEF file for main application
PARTS.HPP		- Header file for Parts Like Notebook Toolbar
PARTS.CPP      - Source file for Parts like Notebook Toolbar, uses the new
					  Graphical Bitmap buttons in CSet++ 2.1. This note book is
					  use to create new PART DSOM objects.  This notebook is use
					  in combination with bitmaps to created a toolbar similar 
					  to what is included with Digitalks Parts product.
SETPAGES.HPP   - Header for the pages in Notebook 
SETPAGES.CPP   - Source file for pages in Notebook, including base class 
					  for all four pages, each page inherited this class.
LISTBOX.HPP    - Header for the listbox dialog window
LISTBOX.CPP    - Source file for the listbox dialog window, this window 
					  setups a timer and updates the dialog's list box with 
					  new actions that the user selects from Notebook toolbar
SOMACT.HPP     - Header	for SomAction wrapper around the Part DSOM Object
SOMACT.CPP     - Source file for SomAction wrapper around the Part DSOM
					  Object... all SOMObject's code is place in this module
					  for client. Also contains a collection class library
					  stack to hold modified items				
INFODLG.HPP    - Header file for Information Dialog class
INFODLG.CPP    - Source file for Information dialog class, this is generic
					  wrapper around resource file dialogs that only need to
					  handle OK and CANCEL buttons

Also required for compiling SOMPARTS.EXE

ATIMEHDR.HPP   - Header file from IUCL sample #6 provided with CSet++ 2.1
ATIMEHDR.CPP   - Source file from IUCL sample #6 provided with CSet++ 2.1
					  This file basic handle a timer event that use by listbox.cpp
	


 PARTS.DLL - SOMObjects 2.0 DSOM DLL
---------------------------------------------------------------------------

CLIENT.CPP		 - Non GUI Test program for PART DSOM Object

INITTERM.C   	 - DLL Initialization and termination logic
PART.C			 - Main DSOM Dll source code for Part object
PART.DEF        - DEF file for Part.dll
PART.H          - Header file for Part.dll
PART.IDL        - IDL for Part.dll
PART.IH			 - Implemention header file for Part.dll
PART.LNK 		 - Link file for Part.dll
PART.XH			 - C++ client header for Part.dll DSOM object


SomAction class designed:

The SomAction class is designed as a wrapper arround the DSOM object methods
that I created.  I designed the class in such a way that when the class is
allocated during the contructor that SOM and DSOM environments are created 
and the Part object is created.  When the destructor is freed, so are Part
object and the SOM and DSOM enviroments

SomAction class is allocated in the main window class (PartsWindow) and is 
past onto to the Part likes Notebook class (PartsNoteTool) and the listbox
class (PartListBox)

---------------------------------------------------------------------------- 
Creation of this sample program.

1.  1st you need to designed the IDL file and let the SOM compiler generated
    the basic code for the DSOM server DLL and its associated header
2.  Fill in specifics for DSOM dll and created a simple non GUI client 
    application to test the DSOM dll
3.  Using KASE:Set prototyper provided with CSet++ 2.1, Prototype and 
    Generate a basic outline for main window, Notebook and the listbox 
    dialogs.
4.  The Generated code was then modified, documented and enhanced. Notebook
    was change into a single source file which interits a base class for 
	 each page since each page is similar in designed and appearence.
5.  Modified Notebook to use new graphical buttens provided with CSet++ 2.1
6.  Create the SomAction wrapper class arround the DSOM Object.. this is done
    so that it communication to the DSOM object can be done by a simple 
    C++ class library.  This removes the necessary that any other module 
    needs to know about the details of DSOM Som object.
7.  Modied main window, note book and pages, and  the listbox functions so
    that they can communicate with SomAction class.. a single Object is
    created at beginning and destroy when program is finish.
8.  Added logic to Notebook to update edit fields butten is pressed
9.  Added logic to notebook to process SomAction - if this is a new object 
    it will be flag as new, otherwise count is incremented
10. Added logic to listbox, so on ever tick (by inherited ATimeHandler class
    provide with Sample #6 provide with CSet++) will check to see if object
    has been process. If object it was process, information is filed in
    dialogs fields
11. I created a generic InfoDialog class that can be use to create simple 
    dialogs that resource are in the resource file instead of being in
    canvas.


---------------------------------------------------------------------------- 
Future plans...

I planned to create more sample programs which combines the IBM User 
Interface Class Libraries and SOMObjects.  Including a Persistent DSOM
server use in connection with Containers with new Drag and Drop features 
included with CSet++ 2.1.  Also I planned to investigated Workplace Shell
intergrating with IBM User Interface Class Libraries and also multithreading.

---------------------------------------------------------------------------- 

Stewart Hyde
CIS:     71034,3712
GEnie:   S.HYDE       Asst Sysop OS/2 RT

 
