服务器 频道

MAC OS X Cocoa NSToolbar 的使用

  【IT168 服务器学院】//向NSToolbar控件添加自定义的NSToolbarItem项
  - (NSToolbarItem *) toolbar: (NSToolbar *)toolbar itemForItemIdentifier:
  (NSString *) itemIdent willBeInsertedIntoToolbar:(BOOL) willBeInserted {
  // Required delegate method Given an item identifier, self method
  returns an item
  // The toolbar will use self method to obtain toolbar items that can
  be displayed in the customization sheet, or in the toolbar itself
  NSToolbarItem *toolbarItem = [[[NSToolbarItem alloc]
  initWithItemIdentifier: itemIdent] autorelease];

  if ([itemIdent isEqual: SquareDotViewItemIdentifier]) {
  SquareDotView *dv = [[SquareDotView alloc] initWithFrame:
  NSMakeRect(0,0,100,32)];

  [toolbarItem setView: dv];

  // set a reasonable minimum size
  [toolbarItem setMinSize: NSMakeSize(100,32)];
  // set a maximum size that allows us to stretch.
  [toolbarItem setMaxSize: NSMakeSize(300,32)];

  [toolbarItem setLabel: @"Dot View"];
  [toolbarItem setPaletteLabel: @"A Dot View"];
  [toolbarItem setToolTip: @"This is a dot view"];
  }
  .....
  }
  
  //返回单击后能被选中且为高亮显示的NSToolbarItem的集合。
  - (NSArray *)toolbarSelectableItemIdentifiers:(NSToolbar *)toolbar
  {// return an array of all the items that can be highlight display after selected
  return [NSArray arrayWithObjects:
  NSColorToolbarItemIdentifier,
  NSFontToolbarItemIdentifier,nil];
  }
  
  //返回程序加载后的默认的NSToolbarItem的集合。
  - (NSArray *)toolbarDefaultItemIdentifiers:(NSToolbar *)toolbar
  { // return an array of the items found in the default toolbar
  return [NSArray arrayWithObjects:
  NSToolbarSeparatorItemIdentifier,
  NSFontToolbarItemIdentifier,
  NSToolbarCustomizeToolbarItemIdentifier,
  nil];
  }
  
  
  //以下是作为NSToolbarItem出现的自定义类
  The "SquareDotView" class:

  
  @interface SquareDotView : NSView {
  @private
  float sdSide;
  NSPoint sdLocation;
  }
  @end

  @implementation SquareDotView

  #define START_SIDE 10
  #define START_LOCATION NSMakePoint(10,10)

  - (id)initWithFrame:(NSRect)frame {
  self = [super initWithFrame:frame];
  if (self) {
  sdSide = START_SIDE;
  sdLocation = START_LOCATION;
  }
  return self;
  }

  - (void)mouseDown:(NSEvent *)theEvent {
  sdLocation = [self convertPoint: [theEvent locationInWindow]
  fromView: nil];
  [self setNeedsDisplay: YES];
  }

  - (void)drawRect:(NSRect)rect {
  [[NSColor redColor] set];
  [[NSBezierPath bezierPathWithRect: NSMakeRect(sdLocation.x,
  sdLocation.y, sdSide, sdSide)] fill];

  [[NSColor blackColor] set];
  [[NSBezierPath bezierPathWithRect: [self bounds]] stroke];
  }

  - (id)initWithCoder:(NSCoder *)coder {
  self = [super initWithCoder: coder];
  if (self) {
  [coder decodeValuesOfObjCTypes: "fff", &sdSide, &sdLocation.x,
  &sdLocation.y];
  }
  return self;
  }

  - (void)encodeWithCoder:(NSCoder *)coder {
  [super encodeWithCoder: coder];
  if (self) {
  [coder encodeValuesOfObjCTypes: "fff", &sdSide, &sdLocation.x,
  &sdLocation.y];
  }
  }

  @end

0
相关文章