home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / powergui / advframe / winview / treeview.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1996-10-29  |  3.2 KB  |  132 lines

  1. //************************************************************
  2. // Advanced Frame - Window Viewer Example
  3. //
  4. // Copyright (C) 1994, Law, Leong, Love, Olson, Tsuji.
  5. // Copyright (c) 1997 John Wiley & Sons, Inc. 
  6. // All Rights Reserved.
  7. //************************************************************
  8. #include "treeview.hpp"
  9. #include "hwindow.hpp"
  10. #include "hwinobj.hpp"
  11. #include "winview.h"
  12.  
  13. TreeView::TreeView ( HWindow& hwindow )
  14.   : hwindow( hwindow ),
  15.     frame( WND_MAIN, 0, 0,
  16.            IFrameWindow::nextShellRect().scaleBy( 0.5, 1.0 ),
  17.            IFrameWindow::defaultStyle() |
  18.            IFrameWindow::menuBar | IFrameWindow::minimizedIcon  ),
  19.     title( &frame ),
  20.     client(IC_FRAME_CLIENT_ID, &frame, &frame, IRectangle(),
  21.            IContainerControl::defaultStyle() |
  22.            IContainerControl::noSharedObjects ),
  23.     fmenu( &frame, IMenuBar::wrapper ),
  24.     fcommandHandler( *this ),
  25.     fmenuHandler( )
  26.  
  27. {
  28.   title.setObjectText( "WinView" );
  29.   title.setViewText( "Tree View" );
  30.  
  31.   client.setDeleteObjectsOnClose( true );
  32.   client.showTreeTextView();
  33.  
  34.   frame.setClient( &client );
  35.  
  36.   handler.handleEventsFor( &client );
  37.   fcommandHandler.handleEventsFor( &frame );
  38.   fmenuHandler.handleEventsFor( &client );
  39. }
  40.  
  41. TreeView &TreeView::open ( )
  42. {
  43.   frame.setFocus();
  44.   frame.show();
  45.   populate();
  46.   return *this;
  47. }
  48.  
  49. TreeView&  TreeView::close    ( )
  50. {
  51.    frame.close();
  52.    return *this;
  53. }
  54.  
  55. const IContainerControl& TreeView::container( ) const
  56. {
  57.    return client;
  58. }
  59.  
  60. TreeView& TreeView::refreshView ( )
  61. {
  62.    client.setRefreshOff();
  63.    client.deleteAllObjects();
  64.    populate();
  65.    client.setRefreshOn();
  66.    client.refresh();
  67.    return *this;
  68. }
  69.  
  70. TreeView& TreeView::populate ( )
  71. {
  72.   HWindowObject* root =
  73.      new HWindowObject( hwindow, APP_ICON_ID, &client );
  74.   client.addObject( root );
  75.   populateChildren( root );
  76.   client.expand( root );
  77.   return *this;
  78. }
  79.  
  80. TreeView& TreeView::populateChildren( HWindowObject* root )
  81. {
  82.   HWindow::ChildCursor cursor( root->hWindow() );
  83.   for ( cursor.setToFirst();
  84.         cursor.isValid();
  85.         cursor.setToNext() )
  86.     {
  87.     HWindowObject* child =
  88.        new HWindowObject( cursor.hWindow(), APP_ICON_ID, &client);
  89.     client.addObject( child, root);
  90.     populateChildren( child );
  91.     }
  92.   return *this;
  93. }
  94.  
  95. CommandHandler::CommandHandler( TreeView& view ) :
  96.   fview( view )
  97. { }
  98.  
  99. IBase::Boolean CommandHandler::command( ICommandEvent& event )
  100. {
  101.    Boolean handled = true;
  102.    switch (event.commandId())
  103.       {
  104.       case MI_EXIT     :
  105.          fview.close();
  106.          break;
  107.       case MI_OPENICON :
  108.          {
  109.          HWindowObject* object = (HWindowObject*)
  110.             fview.container().cursoredObject();
  111.          if (object)
  112.             object->openIconView( );
  113.          }
  114.          break;
  115.       case MI_OPENINFO :
  116.          {
  117.          HWindowObject* object = (HWindowObject*)
  118.             fview.container().cursoredObject();
  119.          if (object)
  120.             object->openInfoView( );
  121.          }
  122.          break;
  123.       case MI_REFRESH  :
  124.          fview.refreshView( );
  125.          break;
  126.       default:
  127.          handled = false;
  128.       }
  129.    return handled;
  130. }
  131.  
  132.