home *** CD-ROM | disk | FTP | other *** search
/ Nebula / nebula.bin / SourceCode / MiniExamples / BananaSplit / BananaSplit.m < prev    next >
Text File  |  1991-05-10  |  2KB  |  80 lines

  1. /*  
  2.  * 
  3.  * BananaSplit.m    -- How to resize an NXSplitView
  4.  * 
  5.  * 
  6.  * You may freely copy, distribute, and reuse the code in this example.
  7.  * NeXT disclaims any warranty of any kind, expressed or  implied, as to its
  8.  * fitness for any particular use.
  9.  *
  10.  * Written by Henry Krempel -- NeXT Developer Support
  11.  *
  12.  */
  13. #import "BananaSplit.h"
  14.  
  15. @implementation BananaSplit
  16.  
  17. // Application Delegate Method -- set up the contents of the SplitView
  18.  
  19. -appDidInit:sender
  20. {
  21.     [doubleView addSubview: topView];
  22.     [doubleView addSubview: bottomView];
  23.     [doubleView display];
  24.     return self;
  25. }
  26.  
  27. // NXSplitView Delegate methods
  28.  
  29. // Constrain the divider
  30.  
  31. - splitView:sender 
  32.     getMinY:(NXCoord *)minY // in the split view's flipped coordinates
  33.     maxY:(NXCoord *)maxY
  34.     ofSubviewAt:(int)offset     // offset = 0 is the first divider
  35. {
  36.     *minY = 100.0;      // approx. 1 in. from top
  37.     *maxY -= 100.0;     // ditto from bottom
  38.     if ( *maxY < 100.0 ) *maxY = 100.0;
  39.     return self;
  40. }
  41.  
  42. // Use automatic adjuster when the window resizes.  
  43. // If the top view gets too small,  fix it.
  44.  
  45. - splitView:sender 
  46.     resizeSubviews:(const NXSize *)oldSize
  47. {
  48.     NXRect lower, upper;
  49.     float delta;
  50.     
  51.     [[sender window] disableDisplay];
  52.     [sender adjustSubviews];
  53.     
  54.     [topView getFrame:&upper];
  55.     [bottomView getFrame:&lower];
  56.     if (upper.size.height < 100) {
  57.         delta = 100.0 - upper.size.height;
  58.         upper.size.height=100;
  59.         lower.size.height-=delta;
  60.         [topView setFrame:&upper];
  61.         [bottomView setFrame:&lower];
  62.         }
  63.         
  64.     [[sender window] reenableDisplay];
  65.     [[sender window] display];
  66.  
  67.     return self;
  68. }
  69.  
  70. // Window Delegate method -- constrain window resizing
  71.  
  72. - windowWillResize:sender toSize:(NXSize *)frameSize
  73. {
  74.     if ( frameSize->height < 280 ) frameSize->height=280;
  75.     if ( frameSize->width < 150 ) frameSize->width=150;
  76.     return self;
  77. }
  78.  
  79. @end
  80.