home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / gpfcnt.zip / UFCONT1.CPP < prev   
Text File  |  1994-05-01  |  9KB  |  268 lines

  1. //-----------------
  2. //UICL Headers
  3. //-----------------
  4. #include <iwindow.hpp>                
  5. #include <ientryfd.hpp>               
  6. #include <imle.hpp>
  7. #include <istring.hpp>                
  8. #include <ireslib.hpp>                
  9. #include <idmefit.hpp>
  10. #include <icnr.hpp>                     //Containers Classes
  11. #include <idmhndlr.hpp>
  12. #include <icnrctl.hpp>
  13. #include <icnrehdr.hpp>
  14. #include <ihelphdr.hpp>
  15. #include <idmhndlr.hpp>
  16.  
  17. //-----------------
  18. // PM Headers
  19. //-----------------
  20. #define INCL_DOS        /*   Need DOS support              */
  21. #define INCL_PM                /*   Need DOS support              */
  22. #include <os2.h>        /* Presentation Manager include file  */
  23.  
  24. //--------------------------------------------------
  25. // Interfaces to Gpf main program
  26. //--------------------------------------------------
  27. #include "cont1.ids"
  28. #include "cont1.ext"
  29. #include "cont1.h"
  30. #include "cont1.hpp"
  31.  
  32. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  33. // User function InitClient
  34. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  35. VOID InitClient (PGPFPARMS pGpfParms)
  36. {
  37.   //-------------------------------------------------------
  38.   // Wrap a Client object around the client area
  39.   // and store the object pointer in pUsrParms
  40.   //-------------------------------------------------------
  41.   pGpfParms->pUsrParms =  new AClient( pGpfParms->hwnd);
  42. }
  43.  
  44.  
  45. //**************************************************************************
  46. // AClient :: AClient - Constructor for text dialog window         *
  47. //**************************************************************************
  48. AClient :: AClient(IWindowHandle hwndClient)
  49.              : IWindow(hwndClient)
  50. {
  51.  
  52.  
  53.   //-------------------------------------------
  54.   // Set the command handler
  55.   //-------------------------------------------
  56.   ICommandHandler::handleEventsFor(this);
  57.  
  58.   //-------------------------------------------
  59.   // Put a wrapper around the PM containers 
  60.   //-------------------------------------------
  61.   cnr1 = new IContainerControl(ID_CONTAINER1, this);
  62.   cnr2 = new IContainerControl (ID_CONTAINER2, this);
  63.                            
  64.   //-----------------------------------
  65.   // Default behavior for Drag/Drop
  66.   //-----------------------------------
  67.   IDMHandler::enableDragDropFor( cnr1 );
  68.   IDMHandler::enableDragDropFor( cnr2 );
  69.  
  70.   //---------------------------------------------------
  71.   // Default behavior for editing container objects
  72.   //---------------------------------------------------
  73.   cnrEdit=new ICnrEditHandler();
  74.   cnrEdit->handleEventsFor(cnr1);
  75.  
  76.   //---------------------------------------
  77.   // Column description for Details view
  78.   //---------------------------------------
  79.  
  80.   //------------
  81.   // Column 1
  82.   //------------
  83.   colName = new IContainerColumn (IContainerObject::iconTextOffset(),
  84.                             IContainerColumn::defaultHeadingStyle (),
  85.                             IContainerColumn::string |
  86.                             IContainerColumn::alignVerticallyCentered |
  87.                             IContainerColumn::alignLeft |
  88.                             IContainerColumn::horizontalSeparator);
  89.   colName->enableDataUpdate();
  90.   colName->setHeadingText("Department Name");
  91.   colName->showSeparators(IContainerColumn::verticalSeparator);
  92.   cnr1->addColumn(colName);
  93.  
  94.   //------------
  95.   // Column 2
  96.   //------------
  97.   colCode = new IContainerColumn (offsetof(Objekt, strCode));
  98.   colCode->enableDataUpdate();
  99.   colCode->setHeadingText("Code");
  100.   colCode->showSeparators(IContainerColumn::verticalSeparator);
  101.   cnr1->addColumn(colCode);
  102.  
  103.   //------------
  104.   // Column 3
  105.   //------------
  106.   colNumber = new IContainerColumn(offsetof(Objekt, ulNumber),
  107.                              IContainerColumn::defaultHeadingStyle (),
  108.                              IContainerColumn::number |
  109.                              IContainerColumn::alignVerticallyCentered |
  110.                              IContainerColumn::alignLeft |
  111.                              IContainerColumn::horizontalSeparator);
  112.   colNumber->setHeadingText("Number");
  113.   colNumber->showSeparators(IContainerColumn::verticalSeparator);
  114.   cnr1->addColumn(colNumber);
  115.   
  116.  
  117. } /* end AClient :: AClient(...) */
  118.  
  119.  
  120. //**************************************************************************
  121. // AClient :: ~AClient - Destructor                                *
  122. //**************************************************************************
  123. AClient :: ~AClient()
  124. {
  125. } /* end AClient :: ~Client(...) */
  126.  
  127. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  128. // WM_COMMAND handler 
  129. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  130.  
  131. Boolean AClient :: command(ICommandEvent& cmdevt)
  132. {
  133.   switch(cmdevt.commandId()) {
  134.         case ID_PUSHBUTTON1:
  135.            Push();
  136.            break;
  137.        
  138.         case ID_TREE:
  139.            cnr1->showTreeIconView();
  140.            break;
  141.        
  142.         case ID_ARRANGEICONS:
  143.            cnr1->arrangeIconView();
  144.            cnr2->arrangeIconView();
  145.            break;
  146.  
  147.         case ID_DETAILS:
  148.            cnr1->showDetailsView();
  149.            break;
  150.  
  151.         case ID_VIEW:
  152.         case ID_EDIT: 
  153.           ObjektDetails();
  154.           break;
  155.        
  156.         default:
  157.            break;
  158.     return (false);
  159.   }/* end switch */
  160.  
  161.   return(false);                       //Allow Default Processing to occur
  162. } /* end AClient :: command(...) */
  163.  
  164. //**************************************************************************
  165. // AClient :: push
  166. //**************************************************************************
  167. void AClient :: Push()
  168. {
  169.    Objekt *obj1, *obj2;
  170.    
  171.    //--------------------------------------------------
  172.    // Create a new container object to container 1
  173.    //--------------------------------------------------
  174.  
  175.    obj1 = new Objekt( "Workstation1",
  176.                      IResourceLibrary().loadIcon(ID_ICON1),
  177.                      "TWPD",
  178.                      10000,
  179.                      this);
  180.   obj1->enableDataUpdate();
  181.  
  182.   obj2 = new Objekt ( "UI Development",
  183.                      IResourceLibrary().loadIcon(ID_ICON2),
  184.                      "TUID",
  185.                      200,
  186.                      this);
  187.   obj2->enableDataUpdate();
  188.  
  189.   //-------------------------------------------------------
  190.   // Insert the item
  191.   //-------------------------------------------------------
  192.   cnr1->addObject(obj1);
  193.   cnr1->addObject(obj2,obj1);
  194.  
  195. } /* end AClient :: Push(...) */
  196.  
  197.  
  198. //**************************************************************************
  199. // AClient :: ObjektDetails
  200. //**************************************************************************
  201. void AClient :: ObjektDetails()
  202. {
  203.    //-----------------------------------------------------
  204.    // Use a Gpf generated function to display the window
  205.    //-----------------------------------------------------
  206.    IContainerControl::ObjectCursor CO3 (*cnr1, IContainerObject::cursored);
  207.    CO3.setToFirst();
  208.    Objekt *CurObj = (Objekt *) CO3.current();
  209.    ShowObjektDetails (CurObj);
  210.  
  211. } /* end AClient :: ObjectDetails(...) */
  212.  
  213.  
  214.  
  215. //**************************************************************************
  216. //**************************************************************************
  217. // Objekt :: Objekt - Constructor for Objekt object
  218. //**************************************************************************
  219. //**************************************************************************
  220. Objekt :: Objekt(const IString& Name, 
  221.                 const IPointerHandle& Icon,
  222.                 const IString& Code,
  223.                 const ULONG number,
  224.                 AClient *client) :
  225.        IContainerObject(Name, Icon),    //Call IContainerObject Constructor
  226.        strCode (Code)                   //Set Code
  227. {
  228.    ulNumber = number;
  229.    owner = client;
  230. } // end Objekt::Objekt
  231.  
  232.  
  233.  
  234. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  235. // User function InitObjektDetails
  236. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  237. VOID InitObjektDetails (PGPFPARMS pGpfParms)
  238. {
  239.   //-------------------------------------------------------
  240.   // Wrap a Client object around the client area
  241.   // and store the object pointer in pUsrParms
  242.   //-------------------------------------------------------
  243.   pGpfParms->pUsrParms =  new ADialog( pGpfParms->hwnd, 
  244.                                       (Objekt*) pGpfParms->pCrtParms);
  245. }
  246.  
  247. //**************************************************************************
  248. // ADialog :: ADialog - Constructor for text dialog window         *
  249. //**************************************************************************
  250. ADialog :: ADialog(IWindowHandle hwndClient, Objekt *cnrObjekt)
  251.              : IWindow(hwndClient)
  252. {
  253.    EFName = new IEntryField (ID_EFNAME, this);
  254.    EFCode = new IEntryField (ID_EFCODE, this);
  255. //   EFNumber = new IEntryField (ID_EFNUMBER, this);
  256.    Obj = cnrObjekt;
  257.    EFName->setText (Obj->iconText());
  258.    EFCode->setText (Obj->Code());
  259. }
  260.  
  261.  
  262. //**************************************************************************
  263. // ADialog :: ~ADialog - Destructor                                *
  264. //**************************************************************************
  265. ADialog :: ~ADialog()
  266. {
  267. } /* end ADialog :: ~ADialog(...) */
  268.