This is SelectPanelController.m in view mode; [Download] [Up]
//*****************************************************************************
//
// PanelController.h.
//
// Preferences logic.
//
// by Felipe A. Rodriguez
//
// This code is supplied "as is" the author makes no warranty as to its
// suitability for any purpose. This code is free and may be distributed
// in accordance with the terms of the:
//
// GNU GENERAL PUBLIC LICENSE
// Version 2, June 1991
// copyright (C) 1989, 1991 Free Software Foundation, Inc.
// 675 Mass Ave, Cambridge, MA 02139, USA
//
//*****************************************************************************
#import "SelectPanelController.h"
#import "../Coordinator.h"
#import "../DLDelegate.h"
@implementation SelectPanelController
//*****************************************************************************
//
// sent to us after nib objects are unarchived and init'd
//
//*****************************************************************************
- awakeFromNib
{
[[[[[[[[DLBrowser setTitled:NO] // create and configure nxbrowser
setHorizontalScrollButtonsEnabled:NO]
setDelegate:[[NXApp delegate] docLDelegate]]
setTarget:[[NXApp delegate] docLDelegate]]
setAction:@selector(browserHit:)]
setDoubleAction:@selector(browserDoubleClick:)]
setMinColumnWidth:200]
setMaxVisibleColumns:1];
[DLPathField setStringValue:NXGetDefaultValue([NXApp appName], LIBPATH)];
[self initDList]; // load browser
return self;
}
//*****************************************************************************
//
// initialize the hotlist and reinit if path to it is changed
//
//*****************************************************************************
- initDList
{
char *sC;
id DList = [[DLBrowser delegate] DList];
// cell selection in hotList should persist between sessions
// so recall previous selection
sC = NXCopyStringBuffer(NXGetDefaultValue([NXApp appName],SELCELL));
selCell = atoi(sC);
free(sC);
[DLBrowser loadColumnZero]; // NXBrowser s/load cols from its delegate
if([DList count] > 0) // if hotList path is valid
{
mat = [DLBrowser matrixInColumn:0];
[DLBrowser useScrollButtons:NO];
if(!(selCell < [DList count]))
selCell = 0;
if(selCell < [DList count])
{
[mat selectCellAt:selCell :0];
[mat scrollCellToVisible:selCell :0];
}
}
return self;
}
//*****************************************************************************
//
// document directory path changed
//
//*****************************************************************************
- setDListPath:sender
{ // write an entry to defaults database
if(!NXWriteDefault([NXApp appName], LIBPATH, [sender stringValue]))
[[NXApp delegate] showAlert:"ddbWriteError"];
[self resetDLBrowser];
return self;
}
//*****************************************************************************
//
// select a document List path
//
//*****************************************************************************
- selectDListPath:sender
{
id theOpenPanel;
const char *filter[2] = {"Gate", NULL}; // filter for Gate doc path's
theOpenPanel = [OpenPanel new];
[theOpenPanel setTitle:"Documents"];
if(NX_OKTAG == [theOpenPanel runModalForDirectory:
NXGetDefaultValue([NXApp appName], LIBPATH) file:NULL
types:filter])
{
if(!NXWriteDefault([NXApp appName], LIBPATH, [theOpenPanel directory]))
[[NXApp delegate] showAlert:"ddbWriteError"];
[DLPathField setStringValue:[theOpenPanel directory]];
[self resetDLBrowser];
}
return self;
}
//*****************************************************************************
//
// reset preferences document List browswer
//
//*****************************************************************************
- resetDLBrowser
{
[DLBrowser loadColumnZero]; // NXBrowser s/load cols from its delegate
[[[NXApp delegate] docLDelegate] initDList];
mat = [DLBrowser matrixInColumn:0];
[mat selectCellAt:[[[NXApp delegate] docLDelegate] hLSelectedCell]:0];
return self;
}
//*****************************************************************************
//
// returns the inspector panel we control
//
//*****************************************************************************
- inspectorPanel
{
return [DLPathField window];
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.