--- /dev/null
+//
+// MenuController.h
+// MenuTunes
+//
+// Created by Joseph Spiros on Wed Apr 30 2003.
+// Copyright (c) 2003 iThink Software. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+
+// Internal: To be used with NSMenuItems as their tag, for use with the NSMenuValidation stuff.
+// Also will be used in supplying the controller with the layout to use for the MenuItems, unless
+// we have the controller read the prefs itself.
+typedef enum {
+ MTMenuSeperator = -1,
+ MTMenuTrackInfoHeader,
+ MTMenuTrackInfoTitle,
+ MTMenuTrackInfoAlbum,
+ MTMenuTrackInfoArtist,
+ MTMenuTrackInfoTrackTime,
+ MTMenuTrackInfoTrackNumber,
+ MTMenuTrackInfoRating,
+ MTMenuRatingMenu,
+ MTMenuPlaylistMenu,
+ MTMenuEqualizerMenu,
+ MTMenuUpcomingSongsMenu,
+ // MTMenuBrowseMenu,
+ // MTMenuVolumeMenu,
+ // MTMenuSourceMenu,
+ MTMenuPlayPauseItem,
+ MTMenuFastForwardItem,
+ MTMenuRewindItem,
+ MTMenuPreviousTrackItem,
+ MTMenuNextTrackItem,
+ MTMenuPreferencesItem,
+ MTMenuQuitItem
+} MTMenuItemTag;
+
+@interface MenuController : NSObject
+{
+ NSMutableArray *_menuLayout;
+}
+
+- (NSMenu *)menu;
+
+// - (NSArray *)menuLayout;
+// - (void)setMenuLayout:(NSArray *)newLayoutArray;
+
+@end
--- /dev/null
+//
+// MenuController.m
+// MenuTunes
+//
+// Created by Joseph Spiros on Wed Apr 30 2003.
+// Copyright (c) 2003 iThink Software. All rights reserved.
+//
+
+#import "MenuController.h"
+
+
+@implementation MenuController
+
+- (NSMenu *)menu
+{
+ // dynamically create menu from supplied data and layout information.
+ // ...
+ // right before returning the menu, set the created menu to instance variable _currentMenu.
+}
+
+- (void)performMainMenuAction:(id)sender
+{
+ switch ( [sender tag] )
+ {
+ case MTMenuPlayPauseItem:
+ NSLog(@"MenuController: Play/Pause");
+ break;
+ case MTMenuFastForwardItem:
+ NSLog(@"MenuController: Fast Forward");
+ break;
+ case MTMenuRewindItem:
+ NSLog(@"MenuController: Rewind");
+ break;
+ case MTMenuPreviousTrackItem:
+ NSLog(@"MenuController: Previous Track");
+ break;
+ case MTMenuNextTrackItem:
+ NSLog(@"MenuController: Next Track");
+ break;
+ case MTMenuPreferencesItem:
+ NSLog(@"MenuController: Preferences...");
+ break;
+ case MTMenuQuitItem:
+ NSLog(@"MenuController: Quit");
+ break;
+ default:
+ NSLog(@"MenuController: Unimplemented Menu Item OR Child-bearing Menu Item");
+ break;
+ }
+}
+
+- (void)performRatingMenuAction
+{
+}
+
+- (void)performPlaylistMenuAction
+{
+}
+
+- (void)performEqualizerMenuAction
+{
+}
+
+- (void)performUpcomingSongsMenuAction
+{
+}
+
+- (void)updateMenu
+{
+ [_currentMenu update];
+}
+
+- (BOOL)validateMenuItem:(id <NSMenuItem>)menuItem
+{
+}
+
+@end