File:  [mozdev] / chimera / BookmarksToolbar.mm
Revision 1.4: download - view: text, annotated - select for diffs - revision graph
Wed Apr 17 08:31:11 2002 UTC (15 years, 6 months ago) by hyatt
Branches: MAIN
CVS tags: HEAD
Nearly have the personal toolbar going.

//
//  BookmarksToolbar.mm
//  Chimera
//
//  Created by David Hyatt on Mon Apr 15 2002.
//  Copyright (c) 2001 __MyCompanyName__. All rights reserved.
//

#import "BookmarksButton.h"
#import "BookmarksToolbar.h"
#import "BookmarksService.h"
#include "nsIDOMElement.h"

@implementation BookmarksToolbar

- (id)initWithFrame:(NSRect)frame {
  self = [super initWithFrame:frame];
  if (self) {
    mBookmarks = nsnull;
  }
  return self;
}

-(void)initializeToolbar
{
  // Initialization code here.
  mBookmarks = new BookmarksService(self);
  mBookmarks->AddObserver();
  mBookmarks->EnsureToolbarRoot();
  [self buildButtonList];
}

-(void) dealloc
{
  mBookmarks->RemoveObserver();
  delete mBookmarks;
  [super dealloc];
}

- (void)drawRect:(NSRect)aRect {
  // Fill the background with our background color.
//  [[NSColor colorWithCalibratedWhite: 0.98 alpha: 1.0] set];
//  NSRectFill(aRect);

  //printf("The rect is: %f %f %f %f\n", aRect.origin.x, aRect.origin.y, aRect.size.width, aRect.size.height);
  
  if (aRect.origin.y + aRect.size.height ==
      [self bounds].size.height) {
    // The personal toolbar is 21 pixels tall.  The bottom two pixels
    // are a separator.
    [[NSColor colorWithCalibratedWhite: 0.92 alpha: 1.0] set];
    NSRectFill(NSMakeRect(aRect.origin.x, aRect.origin.y, aRect.size.width, 2));
  }

  // The buttons will paint themselves.
}

-(void)buildButtonList
{
  // Build the buttons, and then lay them all out.
  nsCOMPtr<nsIDOMNode> child;
  BookmarksService::gToolbarRoot->GetFirstChild(getter_AddRefs(child));
  while (child) {
    nsCOMPtr<nsIDOMElement> childElt(do_QueryInterface(child));
    if (childElt) {
      BookmarksButton* button = [[[BookmarksButton alloc] initWithFrame: NSMakeRect(2, 1, 100, 17)] autorelease];
      [button setElement: childElt];
      [self addSubview: button];
    }

    nsCOMPtr<nsIDOMNode> temp = child;
    temp->GetNextSibling(getter_AddRefs(child));
  }

  [self reflowButtons];
}

-(void)reflowButtons
{
}
@end

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>