home *** CD-ROM | disk | FTP | other *** search
-
- // TablePrinter -- A cover class for DBTableViewPrinter.
- //
- // By Eric T. Seymour, NeXT Computer, Inc.
- //
- // This object creates and maintains an instance of DBTableViewPrinter in
- // an off screen window. This was designed primarily for ease of use in IB.
- //
- // You may freely copy, distribute, and reuse the code in this example.
- // NeXT disclaims any warranty of any kind, expressed or implied, as to its
- // fitness for any particular use.
- //
- // This file looks best when using tabstops of 3.
-
-
- #import "TablePrinter.h"
- #import "DBTableViewPrinter.h"
-
- @implementation TablePrinter
-
- // return the image for the instance icon in the IB file
- - (NXImage *)getIBImage
- {
- char path[MAXPATHLEN + 1];
-
- [[NXBundle bundleForClass:[self class]] getPath:path
- forResource:"TablePrinter" ofType:"tiff"];
- return [[NXImage alloc] initFromFile:path];
- }
-
- - init
- {
- id theWindow,
- theScrollView;
- NXRect frm = {100.0,100.0,200.0,200.0};
-
- // init things
- [super init];
- tableView = nil;
-
- // Create a hidden window
- theWindow = [[Window alloc] initContent:&frm
- style:NX_TITLEDSTYLE
- backing:NX_BUFFERED
- buttonMask:NX_CLOSEBUTTONMASK
- defer:NO];
-
- // Create a scrollview and place inside the window
- NXSetRect(&frm,0.0,0.0,190.0,190.0);
- theScrollView = [[ScrollView alloc] initFrame:&frm];
- [theScrollView setHorizScrollerRequired:YES];
- [theScrollView setVertScrollerRequired:YES];
- [theWindow setContentView:theScrollView];
-
- // Create a printerView and place it in the scrollView
- printerView = [[DBTableViewPrinter alloc] initFrame:&frm];
- [theScrollView setDocView:printerView];
-
- return self;
- }
-
- - copyFromZone:(NXZone *)zone
- {
- // Copy self
- self = [super copyFromZone:zone];
- [self awake];
-
- return self;
- }
-
- - awake
- {
- id theWindow,
- theScrollView;
- NXRect frm = {100.0,100.0,200.0,200.0};
-
- [super awake];
-
- // Create a hidden window
- theWindow = [[Window alloc] initContent:&frm
- style:NX_TITLEDSTYLE
- backing:NX_BUFFERED
- buttonMask:NX_CLOSEBUTTONMASK
- defer:NO];
-
- // Create a scrollview and place inside the window
- NXSetRect(&frm,0.0,0.0,190.0,190.0);
- theScrollView = [[ScrollView alloc] initFrame:&frm];
- [theScrollView setHorizScrollerRequired:YES];
- [theScrollView setVertScrollerRequired:YES];
- [theWindow setContentView:theScrollView];
-
- // Place the TablePrinter inside the ScrollView
- [theScrollView setDocView:printerView];
- [theWindow display];
-
- return self;
- }
-
- - free
- {
- // free my hidden window, which in turn frees all its contents
- [[printerView window] free];
- return [super free];
- }
-
- - setTableView:table
- {
- tableView = table;
- return self;
- }
- - tableView{return tableView;}
-
- // return the actual DBTablePrinterView
- - printerView{return printerView;}
-
- - printPSCode:sender
- {
- // Set the table and print
- [printerView setTableView:tableView];
- return [printerView printPSCode:sender];
- }
-
- - read:(NXTypedStream*)stream
- {
- [super read:stream];
- printerView = NXReadObject(stream);
- NXReadTypes(stream,"@",&tableView);
- return self;
- }
-
- - write:(NXTypedStream*)stream
- {
- [super write:stream];
- NXWriteObject(stream,printerView);
- NXWriteTypes(stream,"@",&tableView);
- return self;
- }
-
- - (const char *)getInspectorClassName
- {
- return "TablePrinterInspector";
- }
-
- // DBTableViewPrinter Cover Methods. These are designed to respond to UI
- // target/action events. For example, "forceColorToggle:" could be the
- // target of a toggle button. After being messaged, "forceColorToggle" would
- // then query the state of that toggle button (sender) and set the value
- // directly in the printerView.
-
- - headerBezelToggle:sender
- {
- if ( sender && [sender respondsTo:@selector(state)] )
- [printerView setColumnHeadersBezeled:[sender state]];
- return self;
- }
-
- - forceColorToggle:sender
- {
- if ( sender && [sender respondsTo:@selector(state)] )
- [printerView setForceDrawColor:[sender state]];
- return self;
- }
-
- - pageNumbersToggle:sender
- {
- if ( sender && [sender respondsTo:@selector(state)] )
- [printerView setPageNumbersEnabled:[sender state]];
- return self;
- }
-
- - rowNumbersToggle:sender
- {
- if ( sender && [sender respondsTo:@selector(state)] )
- [printerView setRowNumbersEnabled:[sender state]];
- return self;
- }
-
- - gridLinesToggle:sender
- {
- if ( sender && [sender respondsTo:@selector(state)] )
- [printerView setGridLinesOn:[sender state]];
- return self;
- }
-
- - selectedRowsToggle:sender
- {
- if ( sender && [sender respondsTo:@selector(state)] )
- [printerView setSelectedRowsOnly:[sender state]];
- return self;
- }
-
- - startPageNum:sender
- {
- if ( sender && [sender respondsTo:@selector(intValue)] )
- [printerView setStartingPageNumber:[sender intValue]];
- return self;
- }
-
- - startRowNum:sender
- {
- if ( sender && [sender respondsTo:@selector(intValue)] )
- [printerView setStartingRowNumber:[sender intValue]];
- return self;
- }
-
- - pageNumSeparator:sender
- {
- if ( sender && [sender respondsTo:@selector(stringValue)] )
- [printerView setPageNumberSeparator:[sender stringValue][0]];
- return self;
- }
-
- - rowNumHeader:sender
- {
- if ( sender && [sender respondsTo:@selector(stringValue)] )
- [printerView setRowNumbersTitle:[sender stringValue]];
- return self;
- }
-
- - headerTextColor:sender
- {
- if ( sender && [sender respondsTo:@selector(color)] )
- [printerView setColumnHeadersTextColor:[sender color]];
- return self;
- }
-
- - headerBackColor:sender
- {
- if ( sender && [sender respondsTo:@selector(color)] )
- [printerView setColumnHeadersBackColor:[sender color]];
- return self;
- }
-
- - rowNumTextColor:sender
- {
- if ( sender && [sender respondsTo:@selector(color)] )
- [printerView setRowNumbersTextColor:[sender color]];
- return self;
- }
-
- - rowNumBackColor:sender
- {
- if ( sender && [sender respondsTo:@selector(color)] )
- [printerView setRowNumbersBackColor:[sender color]];
- return self;
- }
-
- - gridColor:sender
- {
- if ( sender && [sender respondsTo:@selector(color)] )
- [printerView setGridLinesColor:[sender color]];
- return self;
- }
-
- - pageNumColor:sender
- {
- if ( sender && [sender respondsTo:@selector(color)] )
- [printerView setPageNumberColor:[sender color]];
- return self;
- }
-
- - backgroundColor:sender
- {
- if ( sender && [sender respondsTo:@selector(color)] )
- [printerView setBackgroundColor:[sender color]];
- return self;
- }
-
- @end