This is ItemInsPane.m in view mode; [Download] [Up]
/* Copyright 1993 Jeremy Slade. All rights reserved. */ #import "ItemInsPane.h" #import "ItemCell.h" #import "SwapView.h" #import "Globals.h" @implementation ItemInsPane // ------------------------------------------------------------------------- // Creating, initializing // ------------------------------------------------------------------------- + initialize { [self setVersion:ItemInsPane_VERSION]; return ( self ); } - initContent:(const NXRect *)contentRect style:(int)aStyle backing:(int)bufferingType buttonMask:(int)mask defer:(BOOL)flag { [super initContent:contentRect style:aStyle backing:bufferingType buttonMask:mask defer:flag]; return ( self ); } - awakeFromNib /* Perform final initializations */ { return ( self ); } - free { fileTypePane = [fileTypePane free]; folderTypePane = [folderTypePane free]; appTypePane = [appTypePane free]; return ( [super free] ); } // ------------------------------------------------------------------------- // General Item stuff // ------------------------------------------------------------------------- - (BOOL)canInspect:anObject { return ( [anObject isKindOf:[ItemCell class]] ); } - showCurrent:sender { [[swapView window] disableFlushWindow]; [pathField setTextDelegate:nil]; [pathField setStringValue:[target path]]; [pathField setTextDelegate:self]; [groupLaunchSwitch setState:[target isGroupLaunch]]; [autoLaunchSwitch setState:[target isAutoLaunch]]; [swapView swap]; // Make sure we have the correct pane for the target type switch ( [target fileType] ) { case FT_FILE: [specificAppSwitch setState:[target hasSpecificApp]]; [specificAppField setEnabled:[target hasSpecificApp]]; [specificAppField setTextDelegate:nil]; [specificAppField setStringValue:[target appName]]; [specificAppField setTextDelegate:self]; break; case FT_SUBDIR: [createBrowserSwitch setState:[target createBrowser]]; [rootedAtField setTextDelegate:nil]; [rootedAtField setStringValue:[target browserRootedAt]]; [rootedAtField setTextDelegate:self]; break; case FT_APPLICATION: [hideIconSwitch setState:[target hideIcon]]; break; case FT_UNKNOWN: break; } [[[swapView window] reenableFlushWindow] flushWindow]; return ( [super showCurrent:self] ); } - swapPaneFor:sender { switch ( [target fileType] ) { case FT_FILE: return ( fileTypePane ); case FT_SUBDIR: return ( folderTypePane ); case FT_APPLICATION: return ( appTypePane ); } return ( nil ); } - changeItemPath:sender /* Called by pathField when editing finshes on that field */ { if ( !strlen ( [pathField stringValue] ) ) { [pathField selectText:self]; return ( self ); } [target setPath:[pathField stringValue]]; return ( self ); } - changeItemGroupLaunch:sender /* Called by groupLaunchSwitch when it is clicked */ { [target setGroupLaunch:[groupLaunchSwitch state]]; return ( self ); } - changeItemAutoLaunch:sender /* Called by autoLaunchSwitch when it is clicked */ { [target setAutoLaunch:[autoLaunchSwitch state]]; return ( self ); } // ------------------------------------------------------------------------- // File-type Items // ------------------------------------------------------------------------- - changeUseSpecificApp:sender /* Called by the specificAppSwitch when it is clicked */ { if ( [specificAppSwitch state] ) { [specificAppField setEnabled:YES]; [specificAppField selectText:self]; } else { [specificAppField setEnabled:NO]; [target setAppName:NULL]; [self showCurrent:self]; } return ( self ); } - changeSpecificApp:sender /* Called by the specificAppField when editing in the field finishes */ { [target setAppName:[specificAppField stringValue]]; return ( self ); } - changeHideIcon:sender /* Called by the hideIconSwitch when it is clicked */ { [target setHideIcon:[hideIconSwitch state]]; return ( self ); } // ------------------------------------------------------------------------- // Folder-type items // ------------------------------------------------------------------------- - changeCreateBrowser:sender /* Called by createBrowserSwitch when it is clicked */ { [target setCreateBrowser:[createBrowserSwitch state]]; if ( [createBrowserSwitch state] ) { const char *s = [rootedAtField stringValue]; if ( !(s && strlen ( s )) ) [rootedAtField setStringValue:"/"]; [rootedAtField selectText:self]; } return ( self ); } - changeRootedAt:sender /* Called by rootedAtField when editing finishes in the field */ { [target rootBrowserAt:[rootedAtField stringValue]]; return ( self ); } // ------------------------------------------------------------------------- // Text delegate methods // ------------------------------------------------------------------------- - textDidChange:sender { if ( [sender isKindOf:[Text class]] ) sender = [sender delegate]; if ( sender == pathField ) { } else if ( sender == specificAppField ) { } else if ( sender == rootedAtField ) { } return ( self ); } - textDidEnd:sender endChar:(unsigned short)endChar /* Make sure changes made in field get saved. If the field was exited with a return, then it will automatically send the action (which is where it gets saved). If the field was exited with a tab, we need to send the action ourselves. */ { if ( [sender isKindOf:[Text class]] ) sender = [sender delegate]; if ( endChar == NX_TAB ) [sender sendAction]; else [[NXApp mainWindow] makeKeyWindow]; return ( self ); } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.