/*
 
 Owner: michael@boinx.com
 Company: Boinx Software Ltd., Germany
 
 Abstract: Protocol a new Assistant Pane has to conform with. Methods will be called by BXAssistantController.
 
 
 Related:	BXAssistantController.h
			BXAssistantPaneProviderProtocoll.h
			BXAssistantPaneProvider
			BXAssistantPane.h 
			and its subclasses for all the assistants
 
 Documentation : Documentation/assistant_panes.html
 
 */

//BXAssistantPane Config Keys
#define ASSISTANT_PANE_CLASS_NAME_KEY @"BXAssistantPaneClassName"
#define ASSISTANT_PANE_ID_KEY @"BXAssistantPaneID"
#define ASSISTANT_PANE_NIB_NAME_KEY @"BXAssistantPaneNibName"

//extern NSString *BXAssistantPaneClassName;
//extern NSString *BXAssistantPaneID;
//extern NSString *BXAssistantPaneNibName;

@protocol BXAssistantPaneProtocol

+ (NSArray*) assistantPanes;

- (id)initWithPaneConfig:(NSDictionary*)paneConfigDict;

/** Called after initially loaded by AssistantController */
- (void) awakeFromAssistant;

- (NSString*) paneID;

- (NSString*) viewNibName;
	
- (NSView*) paneView;

- (NSView*) customButtonView;

- (NSString*) paneName;

- (NSString*) paneTitle;

- (BOOL) allowsHorizontalResizing;	// you don't have to set strings to the scroll view inside paneView, if this returns NO

- (BOOL) allowsVerticalResizing;	// you don't have to set strings to the scroll view inside paneView, if this returns NO

- (BOOL) allowsClosingAssistantWindow;

- (NSString *)closeAssistantTitle;
- (NSString *)closeAssistantMessage;
- (NSString *)closeAssistantContinueButton;
- (NSString *)closeAssistantCloseButton;

- (BOOL)closingAssistantTerminatesApplication;

- (BOOL) isActive;

- (id) displayingAssistantController;

- (BOOL) assistantController:(id)controller shouldEnableNextStepButton:(id)sender;
- (BOOL) assistantController:(id)controller shouldEnablePreviousStepButton:(id)sender;

- (BOOL) assistantController:(id)controller shouldPerformNextStep:(id)sender;
- (BOOL) assistantController:(id)controller shouldPerformPreviousStep:(id)sender;

- (void) assistantController:(id)controller willPerformNextStep:(id)sender;
- (void) assistantController:(id)controller didPerformNextStep:(id)sender;

- (void) assistantController:(id)controller willPerformPreviousStep:(id)sender;
- (void) assistantController:(id)controller didPerformPreviousStep:(id)sender;

- (void) assistantController:(id)controller willShowAssistantPane:(id)sender;
- (void) assistantController:(id)controller didShowAssistantPane:(id)sender;

- (void) assistantController:(id)controller willHideAssistantPane:(id)sender;
- (void) assistantController:(id)controller didHideAssistantPane:(id)sender;

@end