• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag
 

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: So whats the deal with NSBrowser?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: So whats the deal with NSBrowser?


  • Subject: Re: So whats the deal with NSBrowser?
  • From: Oliver Cameron <email@hidden>
  • Date: Sun, 12 Dec 2004 21:14:26 +0000

Hi,

So, I've got basic data into my browser by doing this:

- (int)browser:(NSBrowser *)sender numberOfRowsInColumn:(int)column
{
	return [snippetObject count];
}

- (void)browser:(NSBrowser *)sender willDisplayCell:(id)cell atRow:(int)row column:(int)column
{
[cell setStringValue:@"Hello"];
}


- (void)addSnippet:(id)sender
{
SnippetsObject *newObject = [[SnippetsObject alloc] initWithFileTitled:@"Test" contents:@"Test" parent:snippetObject];
[snippetObject addSnippet:newObject];
[self reloadData];
}


This kinda works, but basically all it does is add an object to the NSBrowser titled Hello, and basically, it adds an infinite number of items exactly the same within the root Hello item.

A SnippetsObject is basically a NSObject subclass which just holds details for each instance of it, like its title and contents. snippetObject is basically like my root, I add every new SnippetsObject to that. So basically, what I want, is that every parent should contain all its children in a different column.

I'm confused as to how I would go about doing that.

Thanks,
Oliver

On 12 Dec 2004, at 20:59, Andreas Höschler wrote:


On Sonntag, Dezember 12, 2004, at 09:38 Uhr, Oliver Cameron wrote:

I'm trying to make an app with a NSBrowser in the UI. And I am just plain stumped as to how to make this work. Basically, at first I went with a NSOutlineView, so I'm trying to migrate it over, as they sound like or should use the same type of system.

For example, in a NSTableView datasource, you set its data by numberOfRows and objectValueForTableColumn. I noticed there was a similar numberOfRows method for NSBrowser, and I fed it the same data as the NSOutlineView. I noticed in the example of SimpleBrowser the method willDisplayCell. I am guessing this is similar to the objectValueForTableColumn, but I just don't *get* how it works at all, how to set the data in the NSBrowser etc. Any simpler examples than the AppKit example would really help.



In the delegate implement stuff like

- (int)browser:(NSBrowser *)sender numberOfRowsInColumn:(int)column
{
if (sender == browser)
{
if (column == 0)
{
return [_classesDisplayGroup numberOfDisplayedObjects];
}
else
{
// NSString *path = [[sender pathToColumn:column] stringAfterRemovingFirstCharacter];
NSArray *browserPath = [sender browserPathToColumn:column];
// NSLog(@"browserPath %@", browserPath);
int numberOfRows = [[self subclassesForBrowserPath:browserPath] count];
// NSLog(@"numberOfRows %d", numberOfRows);
return numberOfRows;
}
}
else // Code Browser
{
if (column == 0)
{
return [_codeClassesDisplayGroup numberOfDisplayedObjects];
}
else
{
// return [_codeMethodDisplayGroup numberOfDisplayedObjects];
SOCodeClass *codeClass = (SOCodeClass *)[_codeClassesDisplayGroup displayedObjectAtIndex:[sender selectedRowInColumn:0]];
return [[codeClass sortedMethodsForModule:_module] count];
}
}
}


- (void)browser:(NSBrowser *)sender willDisplayCell:(id)cell atRow:(int)row column:(int)column
{
if (sender == browser) // object model
{
SOClass *class;
SOModule *module;


if (column == 0)
{
class = [[_classesDisplayGroup displayedObjects] objectAtIndex:row];
}
else
{
NSArray *browserPath = [sender browserPathToColumn:column];
class = [[self subclassesForBrowserPath:browserPath] objectAtIndex:row];
}
module = [class valueForKey:@"backTo_SOModule_classes"];


NSColor *color = [[class module] color];
NSDictionary *attributeDic = ((color) ? [NSDictionary dictionaryWithObject:color forKey:NSForegroundColorAttributeName] : nil);
[cell setAttributedStringValue:[[[NSAttributedString alloc]
initWithString:[class valueForKey:@"name"] attributes:attributeDic] autorelease]];
[cell setLeaf:([[[class valueForKey:@"subclasses"] filteredArrayUsingQualifier:[FBQualifier classesQualifierForModule:_module]] count] == 0)];
}
else // code classes
{
if (column == 0)
{
SOCodeClass *codeClass = (SOCodeClass *)[_codeClassesDisplayGroup displayedObjectAtIndex:row];
[cell setAttributedStringValue:[codeClass attributedNameString]];
// [cell setLeaf:[[codeClass valueForKey:@"methods"] count] == 0];
[cell setLeaf:NO];
}
else
{
// SOCodeMethod *method = (SOCodeMethod *)[_codeMethodDisplayGroup displayedObjectAtIndex:row];
SOCodeClass *codeClass = (SOCodeClass *)[_codeClassesDisplayGroup displayedObjectAtIndex:[sender selectedRowInColumn:0]];
NSArray *methods = [codeClass sortedMethodsForModule:_module];
SOCodeMethod *method = [methods objectAtIndex:row];
[cell setAttributedStringValue:[method attributedSelectorString]];
[cell setLeaf:YES];
}
}
}


- (BOOL)browser:(NSBrowser *)sender isColumnValid:(int)column
{
   return NO;
}


_______________________________________________ Do not post admin requests to the list. They will be ignored. Cocoa-dev mailing list (email@hidden) Help/Unsubscribe/Update your Subscription: This email sent to email@hidden
  • Follow-Ups:
    • Re: So whats the deal with NSBrowser?
      • From: Andreas Höschler <email@hidden>
  • Prev by Date: So whats the deal with NSBrowser?
  • Next by Date: Re: So whats the deal with NSBrowser?
  • Previous by thread: So whats the deal with NSBrowser?
  • Next by thread: Re: So whats the deal with NSBrowser?
  • Index(es):
    • Date
    • Thread