This is MiscSwapView.h in view mode; [Download] [Up]
/* MiscSwapView.h
*
* This subclass of View is able to swap different views into itself. It's
* used to implement any kind of multipage windows. (Inspectors, Prefs...)
* This object is a redesign of Greg Bruds swapView.
*
* Catergories: - ByObject: Handles automatic swapping. See next headersction.
*
* Usage: Just instantiate a view inside IB and tell it what view to show
* next. The MiscSwapView will take care of putting the views back where
* they came from once they will swap out again.
* You can used buffered (faster) or nonButffered (less memory and fast
* enough) swapping.
*
* Notes: This view by default resizes its subview to it current size. But you
* can decide how they are resized by the default NeXTSTEP view resizing
* settings as with every view.
* When using buffered composing resizing is turned OFF because of some
* ugly problems.
*
* Not using buffered views will save memory and allow resizing
* over the slightly faster swapping. With fast hardware this might not
* be of any concern at all...so keep the ports rolling:HP, Sun, PPC...?
* To implement buffered views the views windows have to be none
* deffered and retained. You HAVE to make your window non defered
* inside IB. (SwapView makes them retained on its own)
* If you know a way to make windows non defered during runtime..please
* let me know.
*
* Remember to deactivate objects inside a view that has swapped out.
* ColorWell are a good example of such a object!
*
* Improved by: Thomas Engel
* First changes: 24.01.1994 (Copyright 1994 Thomas Engel)
* Last modified: 24.02.1994
*/
// This object is included in the MiscKit by permission from the author
// and its use is governed by the MiscKit license, found in the file
// "LICENSE.rtf" in the MiscKit distribution. Please refer to that file
// for a list of all applicable permissions and restrictions.
#import <AppKit/AppKit.h>
@class MiscSwapViewItem;
@interface MiscSwapView : NSView
{
NSView * contentView;
NSView * contentViewsHomeView;
NSRect contentViewsHomeRect;
id delegate;
NSColor * backgroundColor;
BOOL backgroundDrawing;
int alignment; // Determins how nonesizeable contentviews will be positioned. NOT implemented.
// Instances for the ByObject category
NSMutableArray * itemArray;
MiscSwapViewItem * currentSwapItem;
BOOL tagComparison;
// Propably not supported in the future...
BOOL useBuffering;
// <<HACK>> This is only present so that we can hook up the initial "trigger" button for the first swap.
// Its not a clean solution and might be changed in the future...
id identifier;
}
// Basic view init and freeing
+ (void)initialize;
- (id)init;
- (id)initWithFrame:(NSRect)frameRect;
- (void)dealloc;
// Archiving
- (id)initWithCoder:(NSCoder *)aDecoder;
- (void)encodeWithCoder:(NSCoder *)aCoder;
// Awaking
- (void)awake;
- (void)awakeFromNib;
- (id)awakeAfterUsingCoder:(NSCoder *)aCoder;
// Basic instance-control method and delegate setting.
// More details on buffering are at the top of this header file.
- (void)setDelegate:(id)anObject;
- (id)delegate;
- (void)setBackgroundColor:(NSColor *)aColor;
- (NSColor *)backgroundColor;
- (void)setDrawsBackground:(BOOL)flag;
- (BOOL)drawsBackground;
- (BOOL)isOpaque;
// The real work..there's some swapping swapping going on...tadadatadaa..
- (void)setContentView:(NSView *)aView;
- (NSView *)contentView;
// Drawing
- (void)drawRect:(NSRect)rect;
@end
// Get the by Object methods loaded...
#import "MiscSwapView_ByObject.h"
/*
* History: 24.02.94 Some changes to support buffering.
*
* 24.01.94 Took my old swapView and wrote it again...
*
* 21.01.94 Did some work to the resizing of swapView.
*
* 19.11.93 Started to do some cleanups in this HeaderFile and
* resizing got implemented into the object.
*
* 17.11.93 Played around with resizing and found it right.
*
*
* Bugs: - There might be problems with swapping out a view with an active
* colorWell. Here some should take care a deactive them.
* You might use the delegate and viewWillSwap.
* Normally you will use subviewitemArray and they will recieve
* swapIn/Out too and can take care of that inside their revert/ok
* methods or what ever.
*
* - Using buffering doe disable resizing. Maybe there is a solution to
* this porblem. If there is one I might add a setResizing:YES/NO
* method.
*
* - Read & write do nothing at all. I'm not even sure wether they should
* do something ?
*/
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.