ftp.nice.ch/pub/next/developer/resources/palettes/PAScrollViewDeluxe.s.tar.gz#/PAScrollViewDeluxePalette/PAScrollViewDeluxe.h

This is PAScrollViewDeluxe.h in view mode; [Download] [Up]

#import <appkit/appkit.h>

@interface PAScrollViewDeluxe:ScrollView
{
	id		topView;			// View at top that scrolls horiz with docView
	BOOL	topViewVisible;		// Wheter to show topView
	ClipView *topClip;			// The ClipView associated with topView

	id		leftView;			// View at left that scrolls vert with docView
	BOOL	leftViewVisible;	// Whether to show leftView
	ClipView *leftClip;			// The ClipView associated with leftView

	Class	rulerClass;			// The class to use for default top/left view
	NXSize	rulerSize;			// The size to use for default top/left view

	id		syncViews;			// List of views to be sync'ed with docView
	id		horizSyncViews;		// List of views to be sync'ed horizontally
	id		vertSyncViews;		// List of views to be sync'ed vertically
		
	id		horizScrollerViews;// List of views in the horizontal scroller
	id		vertScrollerViews;	// List of views in the vertical scroller

	Matrix	*pageUpDownButtons;			// Matrix with page up/down buttons
	BOOL	pageUpDownButtonsVisible;	// Whether to show page up/down buttons

	Matrix	*pageLeftRightButtons;		// Matrix with page left/right buttons
	BOOL	pageLeftRightButtonsVisible;// Whether to show page left/rt buttons
	
	Matrix	*zoomButton;				// Button with zoom popUp.
	BOOL	zoomButtonVisible;			// Whether to show zoom popUp
	
	Panel	*zoomPanel;					// Panel for arbitrary scale
	TextField *zoomText;				// Text field in zoomPanel
}

// Query and set the topView
- topView;
- setTopView:view;

// Query and set whether topView is visible
- (BOOL)topViewVisible;
- setTopViewVisible:(BOOL)flag;

// Convenience methods for setting topView visible inside of IB
- showTopView:sender;
- hideTopView:sender;
- toggleTopView:sender;

// Query and set the leftView
- leftView;
- setLeftView:view;

// Query and set whether leftView is visible
- (BOOL)leftViewVisible;
- setLeftViewVisible:(BOOL)flag;

// Convenience methods for setting leftView visible inside of IB
- showLeftView:sender;
- hideLeftView:sender;
- toggleLeftView:sender;

// Convenience methods for showing/hiding/toggling top/left views as a pair
- showRulers:sender;
- hideRulers:sender;
- toggleRulers:sender;

// Query and set the default top/left view class
- (Class)rulerClass;
- setRulerClass:(Class)class;

// Query and set the default top/left view size
- (NXSize)rulerSize;
- setRulerSize:(NXSize)size;

// Query, add and remove views that are sync'ed horizontally with docView
- syncViews;
- addSyncView:view at:(int)at;
- removeSyncView:view;
- removeSyncViewAt:(int)at;

// Query, add and remove views that are sync'ed horizontally with docView
- horizSyncViews;
- addHorizSyncView:view at:(int)at;
- removeHorizSyncView:view;
- removeHorizSyncViewAt:(int)at;

// Query, add and remove views that are sync'ed vertically with docView
- vertSyncViews;
- addVertSyncView:view at:(int)at;
- removeVertSyncView:view;
- removeVertSyncViewAt:(int)at;

// Query, add and remove views in the horizontal scroller
- horizScrollerViews;
- addHorizScrollerView:view at:(int)at;
- removeHorizScrollerView:view;
- removeHorizScrollerViewAt:(int)at;

// Query, add and remove views in the vertical scroller
- vertScrollerViews;
- addVertScrollerView:view at:(int)at;
- removeVertScrollerView:view;
- removeVertScrollerViewAt:(int)at;

// Return the matrix with the page up/down & left/right buttons or zoom button
- pageUpDownButtons;
- pageLeftRightButtons;
- zoomButton;

// Query and set whether page up/down buttons are visible or needed
- (BOOL)pageUpDownButtonsVisible;
- setPageUpDownButtonsVisible:(BOOL)flag;
- (BOOL)needPageUpDownButtons;

// Query and set whether page left/right buttons are visible or needed
- (BOOL)pageLeftRightButtonsVisible;
- setPageLeftRightButtonsVisible:(BOOL)flag;
- (BOOL)needPageLeftRightButtons;

// This is the target for the page buttons. Does page scroll based on tag
- pageButton:sender;

// Query and set whether zoom buttons are visible
- (BOOL)zoomButtonVisible;
- setZoomButtonVisible:(BOOL)flag;

// This is the target for zoomButton's popUpList. Calls zoomTo::.
- zoom:sender;

// This method tries to call zoomTo:: on support views. Failing that, it scales
- (BOOL)zoomTo:(float)zoomX :(float)zoomY;

// This method stops the zoom panels modal session
- stopZoomPanel:sender;

// This method is implemented to do scrolling for rulers and dependent views
- scrollClip:(ClipView *)clipView to:(const NXPoint *)newBoundsOrigin;

// Used by scrollClip:to: to synchronize all dependent clipViews (ruler, etc)
- synchronizeClipView:newClip withClipView:oldClip
	horizontally:(BOOL)horizSync vertically:(BOOL)vertSync;

// Overridden to account for multiple clipviews in a scroll view
- reflectScroll:view;

// Overridden to do extra work of tiling rulers & scroller views
- tile;
- tileScrollerViews;

// Archiving
- write:(NXTypedStream *)stream;
- read:(NXTypedStream *)stream;

@end

@interface RulerClass : Object
- setHorizontal;
- setVertical;
@end

@interface View(Convenience)
- (NXCoord)frameX;
- (NXCoord)frameY;
- (NXPoint)frameOrigin; 
- (NXCoord)frameWidth;
- (NXCoord)frameHeight;
- (NXSize)frameSize;
- (NXRect)frame;

- (NXCoord)boundsX;
- (NXCoord)boundsY;
- (NXPoint)boundsOrigin;
- (NXCoord)boundsWidth;
- (NXCoord)boundsHeight;
- (NXSize)boundsSize;
- (NXRect)bounds;
@end

@interface Scroller(PerCent)
- (float)perCent;
@end

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.