home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / powergui / dm / menudrag / menudrag.cpp < prev    next >
Text File  |  1996-10-29  |  2KB  |  78 lines

  1. //************************************************************
  2. // Direct Manipulation - Menu Drag 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 <iframe.hpp>
  9. #include <imenubar.hpp>
  10. #include <ipushbut.hpp>
  11. #include <istattxt.hpp>
  12. #include <icconst.h>
  13. #include <itrace.hpp>
  14. #include <ifont.hpp>
  15. #include <idmhndlr.hpp>
  16. #include <idmmenit.hpp>
  17. #include <idmprov.hpp>
  18. #include "cmditem.hpp"
  19.  
  20. static const int
  21.   numButtons  = 3,
  22.   buttonWidth = 75;
  23.  
  24. void main()
  25.   {
  26.   // Create the frame and its components.
  27.   IFrameWindow
  28.     frame( "Menu Direct Manipulation Example" );
  29.   IMenuBar
  30.     menuBar( IC_DEFAULT_FRAME_ID, &frame );
  31.   IStaticText
  32.     text( 0, &frame, &frame );
  33.   IPushButton
  34.    *buttons[ numButtons ];
  35.  
  36.   // Create some buttons for dropping.
  37.   IDMItemProviderFor< CommandItem >
  38.     provider;
  39.   for ( unsigned i = 0; i < numButtons; i++ )
  40.     {
  41.     IPushButton
  42.      *p = new IPushButton( 0, &frame, &frame );
  43.     p -> setText( "" );
  44.     p -> disable();
  45.     p -> setItemProvider( &provider );
  46.     IDMHandler::enableDropOn( p );
  47.     frame.addExtension( p,
  48.                         IFrameWindow::rightOfMenuBar,
  49.                         buttonWidth );
  50.     buttons[ i ] = p;
  51.     }
  52.  
  53.   // Enable drag for menu items.
  54.   IDMHandler::enableDragFrom( &menuBar );
  55.  
  56.   // Create and attach the command handler.
  57.   CmdHandler
  58.     cmdHandler( text );
  59.   cmdHandler.handleEventsFor( &frame );
  60.  
  61.   // Set up the alignment and font of the text.
  62.   text
  63.     .setAlignment( IStaticText::centerCenter )
  64.     .setFont( IFont( "Times Roman", 72 ) );
  65.  
  66.   // Give the frame and icon, put the text in
  67.   // the client window, and show the frame.
  68.   frame.setFocus();
  69.   frame
  70.     .setIcon( IC_DEFAULT_FRAME_ID )
  71.     .setClient( &text )
  72.     .showModally();
  73.  
  74.   // Clean up the buttons.
  75.   for ( i = 0; i < numButtons; i++ )
  76.     delete buttons[ i ];
  77.   }
  78.