Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Initial import from svn repo

  • Loading branch information...
commit a13026e0ded738b6912e669c73386d5dd6a6f427 0 parents
@zachwaugh authored
Showing with 12,652 additions and 0 deletions.
  1. BIN  English.lproj/InfoPlist.strings
  2. +24 −0 English.lproj/MainMenu.nib/classes.nib
  3. +21 −0 English.lproj/MainMenu.nib/info.nib
  4. BIN  English.lproj/MainMenu.nib/keyedobjects.nib
  5. BIN  English.lproj/MainMenu.nib/objects.nib
  6. +26 −0 English.lproj/PSMTabBarControlInspector.nib/classes.nib
  7. +16 −0 English.lproj/PSMTabBarControlInspector.nib/info.nib
  8. BIN  English.lproj/PSMTabBarControlInspector.nib/keyedobjects.nib
  9. BIN  English.lproj/PSMTabBarControlInspector.nib/objects.nib
  10. +28 −0 English.lproj/PSMTabBarControlPalette.nib/classes.nib
  11. +16 −0 English.lproj/PSMTabBarControlPalette.nib/info.nib
  12. BIN  English.lproj/PSMTabBarControlPalette.nib/keyedobjects.nib
  13. BIN  English.lproj/PSMTabBarControlPalette.nib/objects.nib
  14. +67 −0 English.lproj/Window.nib/classes.nib
  15. +24 −0 English.lproj/Window.nib/info.nib
  16. BIN  English.lproj/Window.nib/keyedobjects.nib
  17. +24 −0 Info.plist
  18. +7 −0 PSMTabBarControl.ibclassdescription
  19. +1,102 −0 PSMTabBarControl.xcodeproj/project.pbxproj
  20. +7 −0 PSMTabBarControl.xcodeproj/project.xcworkspace/contents.xcworkspacedata
  21. +22 −0 PSMTabBarControlFramework-Info.plist
  22. +186 −0 ReadMe.rtfd/TXT.rtf
  23. BIN  ReadMe.rtfd/startpage.gif
  24. +24 −0 TabBarControlDemo-Info.plist
  25. +301 −0 documentation/PSMTabBarControlDoc.html
  26. +943 −0 documentation/frameset_styles.css
  27. BIN  images/32x32_log.png
  28. BIN  images/32x32cancel.png
  29. BIN  images/AdiumGradient.png
  30. BIN  images/AquaTabCloseDirty_Front.png
  31. BIN  images/AquaTabCloseDirty_Front_Pressed.png
  32. BIN  images/AquaTabCloseDirty_Front_Rollover.png
  33. BIN  images/AquaTabClose_Front.png
  34. BIN  images/AquaTabClose_Front_Pressed.png
  35. BIN  images/AquaTabClose_Front_Rollover.png
  36. BIN  images/AquaTabNew.png
  37. BIN  images/AquaTabNewPressed.png
  38. BIN  images/AquaTabNewRollover.png
  39. BIN  images/AquaTabsBackground.png
  40. BIN  images/AquaTabsDown.png
  41. BIN  images/AquaTabsDownGraphite.png
  42. BIN  images/AquaTabsDownNonKey.png
  43. BIN  images/AquaTabsSeparator.png
  44. BIN  images/AquaTabsSeparatorDown.png
  45. BIN  images/Folder.png
  46. BIN  images/Globe.png
  47. BIN  images/TabClose_Dirty.png
  48. BIN  images/TabClose_Dirty_Pressed.png
  49. BIN  images/TabClose_Dirty_Rollover.png
  50. BIN  images/TabClose_Front.png
  51. BIN  images/TabClose_Front_Pressed.png
  52. BIN  images/TabClose_Front_Rollover.png
  53. BIN  images/TabControlRep.png
  54. BIN  images/TabIcon.png
  55. BIN  images/TabNewMetal.png
  56. BIN  images/TabNewMetalPressed.png
  57. BIN  images/TabNewMetalRollover.png
  58. BIN  images/Warning.png
  59. BIN  images/largeImage.png
  60. BIN  images/mater_large.jpg
  61. BIN  images/mcqueen_large.jpg
  62. BIN  images/overflowImage.png
  63. BIN  images/overflowImagePressed.png
  64. BIN  images/pi.png
  65. BIN  images/sally_large.jpg
  66. +43 −0 palette.table
  67. +17 −0 source/AppController.h
  68. +31 −0 source/AppController.m
  69. +35 −0 source/FakeModel.h
  70. +95 −0 source/FakeModel.m
  71. +5 −0 source/Framework_Prefix.pch
  72. +23 −0 source/NSBezierPath_AMShading.h
  73. +127 −0 source/NSBezierPath_AMShading.m
  74. +12 −0 source/NSString_AITruncation.h
  75. +34 −0 source/NSString_AITruncation.m
  76. +39 −0 source/PSMAdiumTabStyle.h
  77. +1,057 −0 source/PSMAdiumTabStyle.m
  78. +38 −0 source/PSMAquaTabStyle.h
  79. +572 −0 source/PSMAquaTabStyle.m
  80. +34 −0 source/PSMMetalTabStyle.h
  81. +651 −0 source/PSMMetalTabStyle.m
  82. +28 −0 source/PSMOverflowPopUpButton.h
  83. +161 −0 source/PSMOverflowPopUpButton.m
  84. +23 −0 source/PSMProgressIndicator.h
  85. +27 −0 source/PSMProgressIndicator.m
  86. +29 −0 source/PSMRolloverButton.h
  87. +183 −0 source/PSMRolloverButton.m
  88. +117 −0 source/PSMTabBarCell.h
  89. +535 −0 source/PSMTabBarCell.m
  90. +235 −0 source/PSMTabBarControl.h
  91. +2,099 −0 source/PSMTabBarControl.m
  92. +27 −0 source/PSMTabBarControlInspector.h
  93. +105 −0 source/PSMTabBarControlInspector.m
  94. +21 −0 source/PSMTabBarControlPalette.h
  95. +35 −0 source/PSMTabBarControlPalette.m
  96. +10 −0 source/PSMTabBarControl_Prefix.pch
  97. +33 −0 source/PSMTabBarController.h
  98. +663 −0 source/PSMTabBarController.m
  99. +100 −0 source/PSMTabDragAssistant.h
  100. +872 −0 source/PSMTabDragAssistant.m
  101. +20 −0 source/PSMTabDragView.h
  102. +68 −0 source/PSMTabDragView.m
  103. +20 −0 source/PSMTabDragWindow.h
  104. +51 −0 source/PSMTabDragWindow.m
  105. +33 −0 source/PSMTabDragWindowController.h
  106. +119 −0 source/PSMTabDragWindowController.m
  107. +57 −0 source/PSMTabStyle.h
  108. +30 −0 source/PSMUnifiedTabStyle.h
  109. +599 −0 source/PSMUnifiedTabStyle.m
  110. +85 −0 source/WindowController.h
  111. +586 −0 source/WindowController.m
  112. +14 −0 source/main.m
  113. +16 −0 version.plist
BIN  English.lproj/InfoPlist.strings
Binary file not shown
24 English.lproj/MainMenu.nib/classes.nib
@@ -0,0 +1,24 @@
+{
+ IBClasses = (
+ {
+ ACTIONS = {newWindow = id; };
+ CLASS = AppController;
+ LANGUAGE = ObjC;
+ SUPERCLASS = NSObject;
+ },
+ {CLASS = FakeModel; LANGUAGE = ObjC; SUPERCLASS = NSObject; },
+ {
+ ACTIONS = {addNewTab = id; closeTab = id; };
+ CLASS = FirstResponder;
+ LANGUAGE = ObjC;
+ SUPERCLASS = NSObject;
+ },
+ {
+ CLASS = PSMTabBarControl;
+ LANGUAGE = ObjC;
+ OUTLETS = {delegate = id; partnerView = id; style = id; tabView = NSTabView; };
+ SUPERCLASS = NSControl;
+ }
+ );
+ IBVersion = 1;
+}
21 English.lproj/MainMenu.nib/info.nib
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>IBDocumentLocation</key>
+ <string>135 107 356 240 0 0 1680 1028 </string>
+ <key>IBEditorPositions</key>
+ <dict>
+ <key>29</key>
+ <string>130 357 371 44 0 0 1680 1028 </string>
+ </dict>
+ <key>IBFramework Version</key>
+ <string>443.0</string>
+ <key>IBOpenObjects</key>
+ <array>
+ <integer>29</integer>
+ </array>
+ <key>IBSystem Version</key>
+ <string>8H14</string>
+</dict>
+</plist>
BIN  English.lproj/MainMenu.nib/keyedobjects.nib
Binary file not shown
BIN  English.lproj/MainMenu.nib/objects.nib
Binary file not shown
26 English.lproj/PSMTabBarControlInspector.nib/classes.nib
@@ -0,0 +1,26 @@
+{
+ IBClasses = (
+ {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; },
+ {
+ CLASS = PSMTabBarControlInspector;
+ LANGUAGE = ObjC;
+ OUTLETS = {
+ "_allowsBackgroundTabClosing" = NSButton;
+ "_automaticallyAnimates" = NSButton;
+ "_canCloseOnlyTab" = NSButton;
+ "_cellMaxWidth" = NSTextField;
+ "_cellMinWidth" = NSTextField;
+ "_cellOptimumWidth" = NSTextField;
+ "_disableTabClose" = NSButton;
+ "_hideForSingleTab" = NSButton;
+ "_selectsTabsOnMouseDown" = NSButton;
+ "_showAddTab" = NSButton;
+ "_sizeToFit" = NSButton;
+ "_stylePopUp" = NSPopUpButton;
+ "_useOverflowMenu" = NSButton;
+ };
+ SUPERCLASS = IBInspector;
+ }
+ );
+ IBVersion = 1;
+}
16 English.lproj/PSMTabBarControlInspector.nib/info.nib
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>IBDocumentLocation</key>
+ <string>78 86 356 240 0 0 1600 1178 </string>
+ <key>IBFramework Version</key>
+ <string>446.1</string>
+ <key>IBOpenObjects</key>
+ <array>
+ <integer>3</integer>
+ </array>
+ <key>IBSystem Version</key>
+ <string>8J135</string>
+</dict>
+</plist>
BIN  English.lproj/PSMTabBarControlInspector.nib/keyedobjects.nib
Binary file not shown
BIN  English.lproj/PSMTabBarControlInspector.nib/objects.nib
Binary file not shown
28 English.lproj/PSMTabBarControlPalette.nib/classes.nib
@@ -0,0 +1,28 @@
+{
+ IBClasses = (
+ {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; },
+ {CLASS = PSMAquaTabStyle; LANGUAGE = ObjC; SUPERCLASS = NSObject; },
+ {CLASS = PSMMetalTabStyle; LANGUAGE = ObjC; SUPERCLASS = NSObject; },
+ {CLASS = PSMOverflowPopUpButton; LANGUAGE = ObjC; SUPERCLASS = NSPopUpButton; },
+ {
+ CLASS = PSMProgressIndicator;
+ LANGUAGE = ObjC;
+ SUPERCLASS = NSProgressIndicator;
+ },
+ {CLASS = PSMRolloverButton; LANGUAGE = ObjC; SUPERCLASS = NSButton; },
+ {CLASS = PSMTabBarCell; LANGUAGE = ObjC; SUPERCLASS = NSActionCell; },
+ {
+ CLASS = PSMTabBarControl;
+ LANGUAGE = ObjC;
+ OUTLETS = {delegate = id; partnerView = id; style = id; tabView = NSTabView; };
+ SUPERCLASS = NSControl;
+ },
+ {
+ CLASS = PSMTabBarControlPalette;
+ LANGUAGE = ObjC;
+ OUTLETS = {repImage = NSImageView; };
+ SUPERCLASS = IBPalette;
+ }
+ );
+ IBVersion = 1;
+}
16 English.lproj/PSMTabBarControlPalette.nib/info.nib
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>IBDocumentLocation</key>
+ <string>83 142 356 240 0 0 1680 1028 </string>
+ <key>IBFramework Version</key>
+ <string>443.0</string>
+ <key>IBOpenObjects</key>
+ <array>
+ <integer>2</integer>
+ </array>
+ <key>IBSystem Version</key>
+ <string>8H14</string>
+</dict>
+</plist>
BIN  English.lproj/PSMTabBarControlPalette.nib/keyedobjects.nib
Binary file not shown
BIN  English.lproj/PSMTabBarControlPalette.nib/objects.nib
Binary file not shown
67 English.lproj/Window.nib/classes.nib
@@ -0,0 +1,67 @@
+{
+ IBClasses = (
+ {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; },
+ {CLASS = NSObject; LANGUAGE = ObjC; },
+ {
+ CLASS = PSMTabBarControl;
+ LANGUAGE = ObjC;
+ OUTLETS = {delegate = id; partnerView = id; style = id; tabView = NSTabView; };
+ SUPERCLASS = NSControl;
+ },
+ {
+ ACTIONS = {
+ addNewTab = id;
+ closeTab = id;
+ configAddTabButton = id;
+ configAllowsScrubbing = id;
+ configAutomaticallyAnimates = id;
+ configCanCloseOnlyTab = id;
+ configDisableTabClose = id;
+ configHideForSingleTab = id;
+ configOrientation = id;
+ configStyle = id;
+ configTabMaxWidth = id;
+ configTabMinWidth = id;
+ configTabOptimumWidth = id;
+ configTabSizeToFit = id;
+ configTearOffStyle = id;
+ configUseOverflowMenu = id;
+ isEditedAction = id;
+ isProcessingAction = id;
+ setIconNamed = id;
+ setObjectCount = id;
+ setTabLabel = id;
+ stopProcessing = id;
+ toggleToolbar = id;
+ };
+ CLASS = WindowController;
+ LANGUAGE = ObjC;
+ OUTLETS = {
+ "button_allowScrubbing" = NSButton;
+ "button_automaticallyAnimate" = NSButton;
+ "button_canCloseOnlyTab" = NSButton;
+ "button_disableTabClosing" = NSButton;
+ "button_hideForSingleTab" = NSButton;
+ "button_showAddTab" = NSButton;
+ "button_sizeToFit" = NSButton;
+ "button_useOverflow" = NSButton;
+ drawer = NSDrawer;
+ iconButton = NSPopUpButton;
+ isEditedButton = NSButton;
+ isProcessingButton = NSButton;
+ objectCounterField = NSTextField;
+ "popUp_orientation" = NSPopUpButton;
+ "popUp_style" = NSPopUpButton;
+ "popUp_tearOff" = NSPopUpButton;
+ tabBar = PSMTabBarControl;
+ tabField = NSTextField;
+ tabView = NSTabView;
+ "textField_maxWidth" = NSTextField;
+ "textField_minWidth" = NSTextField;
+ "textField_optimumWidth" = NSTextField;
+ };
+ SUPERCLASS = NSWindowController;
+ }
+ );
+ IBVersion = 1;
+}
24 English.lproj/Window.nib/info.nib
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>IBDocumentLocation</key>
+ <string>255 606 356 240 0 0 1440 878 </string>
+ <key>IBEditorPositions</key>
+ <dict>
+ <key>18</key>
+ <string>477 553 481 64 0 0 1440 878 </string>
+ <key>20</key>
+ <string>608 296 224 572 0 0 1440 878 </string>
+ </dict>
+ <key>IBFramework Version</key>
+ <string>446.1</string>
+ <key>IBOpenObjects</key>
+ <array>
+ <integer>20</integer>
+ <integer>5</integer>
+ </array>
+ <key>IBSystem Version</key>
+ <string>8R2218</string>
+</dict>
+</plist>
BIN  English.lproj/Window.nib/keyedobjects.nib
Binary file not shown
24 Info.plist
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleExecutable</key>
+ <string>PSMTabBarControl</string>
+ <key>CFBundleIconFile</key>
+ <string></string>
+ <key>CFBundleIdentifier</key>
+ <string>com.positivespinmedia.PSMTabBarControl</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>${PRODUCT_NAME}</string>
+ <key>CFBundlePackageType</key>
+ <string>BNDL</string>
+ <key>CFBundleSignature</key>
+ <string>PSM1</string>
+ <key>CFBundleVersion</key>
+ <string>1.1</string>
+</dict>
+</plist>
7 PSMTabBarControl.ibclassdescription
@@ -0,0 +1,7 @@
+{
+ PSMTabBarControl = {
+ SuperClass = NSControl;
+ Attributes = {
+ };
+ };
+}
1,102 PSMTabBarControl.xcodeproj/project.pbxproj
@@ -0,0 +1,1102 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 45;
+ objects = {
+
+/* Begin PBXAggregateTarget section */
+ 53DF6901067E5B8E0090B5B0 /* All */ = {
+ isa = PBXAggregateTarget;
+ buildConfigurationList = C056398708A954F8003078D8 /* Build configuration list for PBXAggregateTarget "All" */;
+ buildPhases = (
+ );
+ dependencies = (
+ 53DF6903067E5B930090B5B0 /* PBXTargetDependency */,
+ 53DF6905067E5B930090B5B0 /* PBXTargetDependency */,
+ 3767A65D0A2D0C5C005F7522 /* PBXTargetDependency */,
+ );
+ name = All;
+ productName = All;
+ };
+/* End PBXAggregateTarget section */
+
+/* Begin PBXBuildFile section */
+ 13EB9DBE07DE0F1E00EB933A /* InterfaceBuilder.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 13EB9DBD07DE0F1E00EB933A /* InterfaceBuilder.framework */; };
+ 13F8B89007B43554008AE28D /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD92D38A0106425D02CA0E72 /* Cocoa.framework */; };
+ 148279B50B8B6F1800076718 /* TabClose_Dirty_Pressed.png in Resources */ = {isa = PBXBuildFile; fileRef = 148279B20B8B6F1800076718 /* TabClose_Dirty_Pressed.png */; };
+ 148279B60B8B6F1800076718 /* TabClose_Dirty_Rollover.png in Resources */ = {isa = PBXBuildFile; fileRef = 148279B30B8B6F1800076718 /* TabClose_Dirty_Rollover.png */; };
+ 148279B70B8B6F1800076718 /* TabClose_Dirty.png in Resources */ = {isa = PBXBuildFile; fileRef = 148279B40B8B6F1800076718 /* TabClose_Dirty.png */; };
+ 317A8F260C7BF0C20019DEC6 /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 317A8F240C7BF0C20019DEC6 /* MainMenu.nib */; };
+ 318F2E330C7D17E300DE79A7 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 318F2E320C7D17E300DE79A7 /* Carbon.framework */; };
+ 3437A2EA0BC8E86F003A0BAE /* largeImage.png in Resources */ = {isa = PBXBuildFile; fileRef = 3437A2E90BC8E86F003A0BAE /* largeImage.png */; };
+ 346373660BCA21F800AD57AD /* NSBezierPath_AMShading.h in Headers */ = {isa = PBXBuildFile; fileRef = A2D98B0F0A2B43FA0064C6F8 /* NSBezierPath_AMShading.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 346A5E080C58E38B004563F0 /* Folder.png in Resources */ = {isa = PBXBuildFile; fileRef = 34FD82790BAC685B00BBAA24 /* Folder.png */; };
+ 346A5E100C58E3C5004563F0 /* Globe.png in Resources */ = {isa = PBXBuildFile; fileRef = 34FD82860BAC685B00BBAA24 /* Globe.png */; };
+ 346A5E110C58E3C5004563F0 /* Warning.png in Resources */ = {isa = PBXBuildFile; fileRef = 34FD827C0BAC685B00BBAA24 /* Warning.png */; };
+ 347545B00C4944DA003E81B8 /* NSString_AITruncation.h in Headers */ = {isa = PBXBuildFile; fileRef = 347545AE0C4944DA003E81B8 /* NSString_AITruncation.h */; };
+ 347545B10C4944DB003E81B8 /* NSString_AITruncation.m in Sources */ = {isa = PBXBuildFile; fileRef = 347545AF0C4944DA003E81B8 /* NSString_AITruncation.m */; };
+ 3482DF100C5BF90700426F15 /* PSMAdiumTabStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = 3767A7560A2D449B005F7522 /* PSMAdiumTabStyle.m */; };
+ 3482DF150C5BF90E00426F15 /* PSMAdiumTabStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = 3767A7560A2D449B005F7522 /* PSMAdiumTabStyle.m */; };
+ 34FD82880BAC685B00BBAA24 /* AquaTabsSeparator.png in Resources */ = {isa = PBXBuildFile; fileRef = 34FD82620BAC685B00BBAA24 /* AquaTabsSeparator.png */; };
+ 34FD828B0BAC685B00BBAA24 /* AquaTabsDown.png in Resources */ = {isa = PBXBuildFile; fileRef = 34FD82650BAC685B00BBAA24 /* AquaTabsDown.png */; };
+ 34FD828C0BAC685B00BBAA24 /* pi.png in Resources */ = {isa = PBXBuildFile; fileRef = 34FD82660BAC685B00BBAA24 /* pi.png */; };
+ 34FD828F0BAC685B00BBAA24 /* overflowImagePressed.png in Resources */ = {isa = PBXBuildFile; fileRef = 34FD82690BAC685B00BBAA24 /* overflowImagePressed.png */; };
+ 34FD82900BAC685B00BBAA24 /* AquaTabsBackground.png in Resources */ = {isa = PBXBuildFile; fileRef = 34FD826A0BAC685B00BBAA24 /* AquaTabsBackground.png */; };
+ 34FD82910BAC685B00BBAA24 /* AquaTabNewRollover.png in Resources */ = {isa = PBXBuildFile; fileRef = 34FD826B0BAC685B00BBAA24 /* AquaTabNewRollover.png */; };
+ 34FD82920BAC685B00BBAA24 /* 32x32cancel.png in Resources */ = {isa = PBXBuildFile; fileRef = 34FD826C0BAC685B00BBAA24 /* 32x32cancel.png */; };
+ 34FD82930BAC685B00BBAA24 /* AquaTabClose_Front_Pressed.png in Resources */ = {isa = PBXBuildFile; fileRef = 34FD826D0BAC685B00BBAA24 /* AquaTabClose_Front_Pressed.png */; };
+ 34FD82940BAC685B00BBAA24 /* TabNewMetalPressed.png in Resources */ = {isa = PBXBuildFile; fileRef = 34FD826E0BAC685B00BBAA24 /* TabNewMetalPressed.png */; };
+ 34FD82950BAC685B00BBAA24 /* AquaTabNewPressed.png in Resources */ = {isa = PBXBuildFile; fileRef = 34FD826F0BAC685B00BBAA24 /* AquaTabNewPressed.png */; };
+ 34FD82960BAC685B00BBAA24 /* AquaTabClose_Front.png in Resources */ = {isa = PBXBuildFile; fileRef = 34FD82700BAC685B00BBAA24 /* AquaTabClose_Front.png */; };
+ 34FD82970BAC685B00BBAA24 /* 32x32_log.png in Resources */ = {isa = PBXBuildFile; fileRef = 34FD82710BAC685B00BBAA24 /* 32x32_log.png */; };
+ 34FD82980BAC685B00BBAA24 /* TabNewMetal.png in Resources */ = {isa = PBXBuildFile; fileRef = 34FD82720BAC685B00BBAA24 /* TabNewMetal.png */; };
+ 34FD82990BAC685B00BBAA24 /* AquaTabsDownGraphite.png in Resources */ = {isa = PBXBuildFile; fileRef = 34FD82730BAC685B00BBAA24 /* AquaTabsDownGraphite.png */; };
+ 34FD829A0BAC685B00BBAA24 /* TabClose_Front_Rollover.png in Resources */ = {isa = PBXBuildFile; fileRef = 34FD82740BAC685B00BBAA24 /* TabClose_Front_Rollover.png */; };
+ 34FD829B0BAC685B00BBAA24 /* overflowImage.png in Resources */ = {isa = PBXBuildFile; fileRef = 34FD82750BAC685B00BBAA24 /* overflowImage.png */; };
+ 34FD829C0BAC685B00BBAA24 /* AquaTabClose_Front_Rollover.png in Resources */ = {isa = PBXBuildFile; fileRef = 34FD82760BAC685B00BBAA24 /* AquaTabClose_Front_Rollover.png */; };
+ 34FD829D0BAC685B00BBAA24 /* AquaTabsDownNonKey.png in Resources */ = {isa = PBXBuildFile; fileRef = 34FD82770BAC685B00BBAA24 /* AquaTabsDownNonKey.png */; };
+ 34FD829E0BAC685B00BBAA24 /* AquaTabsSeparatorDown.png in Resources */ = {isa = PBXBuildFile; fileRef = 34FD82780BAC685B00BBAA24 /* AquaTabsSeparatorDown.png */; };
+ 34FD82A10BAC685B00BBAA24 /* AquaTabCloseDirty_Front.png in Resources */ = {isa = PBXBuildFile; fileRef = 34FD827B0BAC685B00BBAA24 /* AquaTabCloseDirty_Front.png */; };
+ 34FD82A30BAC685B00BBAA24 /* AquaTabCloseDirty_Front_Pressed.png in Resources */ = {isa = PBXBuildFile; fileRef = 34FD827D0BAC685B00BBAA24 /* AquaTabCloseDirty_Front_Pressed.png */; };
+ 34FD82A50BAC685B00BBAA24 /* AquaTabNew.png in Resources */ = {isa = PBXBuildFile; fileRef = 34FD827F0BAC685B00BBAA24 /* AquaTabNew.png */; };
+ 34FD82A60BAC685B00BBAA24 /* AquaTabCloseDirty_Front_Rollover.png in Resources */ = {isa = PBXBuildFile; fileRef = 34FD82800BAC685B00BBAA24 /* AquaTabCloseDirty_Front_Rollover.png */; };
+ 34FD82A70BAC685B00BBAA24 /* TabNewMetalRollover.png in Resources */ = {isa = PBXBuildFile; fileRef = 34FD82810BAC685B00BBAA24 /* TabNewMetalRollover.png */; };
+ 34FD82A80BAC685B00BBAA24 /* TabClose_Front_Pressed.png in Resources */ = {isa = PBXBuildFile; fileRef = 34FD82820BAC685B00BBAA24 /* TabClose_Front_Pressed.png */; };
+ 34FD82A90BAC685B00BBAA24 /* AdiumGradient.png in Resources */ = {isa = PBXBuildFile; fileRef = 34FD82830BAC685B00BBAA24 /* AdiumGradient.png */; };
+ 34FD82AB0BAC685B00BBAA24 /* TabClose_Front.png in Resources */ = {isa = PBXBuildFile; fileRef = 34FD82850BAC685B00BBAA24 /* TabClose_Front.png */; };
+ 34FD82B00BAC686D00BBAA24 /* mater_large.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 34FD827E0BAC685B00BBAA24 /* mater_large.jpg */; };
+ 34FD82B10BAC686D00BBAA24 /* mcqueen_large.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 34FD82840BAC685B00BBAA24 /* mcqueen_large.jpg */; };
+ 34FD82B20BAC686D00BBAA24 /* sally_large.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 34FD82670BAC685B00BBAA24 /* sally_large.jpg */; };
+ 34FD82B70BAC687900BBAA24 /* TabControlRep.png in Resources */ = {isa = PBXBuildFile; fileRef = 34FD82610BAC685B00BBAA24 /* TabControlRep.png */; };
+ 34FD82C00BAC688500BBAA24 /* TabIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = 34FD82680BAC685B00BBAA24 /* TabIcon.png */; };
+ 3748D19D0B17834D002D71C0 /* PSMTabBarController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3748D19C0B17834D002D71C0 /* PSMTabBarController.m */; };
+ 3748D19E0B17834D002D71C0 /* PSMTabBarController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3748D19B0B17834D002D71C0 /* PSMTabBarController.h */; };
+ 3748D19F0B17834D002D71C0 /* PSMTabBarController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3748D19C0B17834D002D71C0 /* PSMTabBarController.m */; };
+ 3767A7590A2D449B005F7522 /* PSMAdiumTabStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = 3767A7550A2D449B005F7522 /* PSMAdiumTabStyle.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 3767A91D0A2F7A11005F7522 /* PSMTabDragWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 3767A91A0A2F7A11005F7522 /* PSMTabDragWindow.m */; };
+ 3767A91E0A2F7A11005F7522 /* PSMTabDragWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 3767A91A0A2F7A11005F7522 /* PSMTabDragWindow.m */; };
+ 3769D0850A349FCD00D71EDA /* PSMTabBarControl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 53DF68FD067E5B5A0090B5B0 /* PSMTabBarControl.framework */; };
+ 3769D08A0A349FDD00D71EDA /* PSMTabBarControl.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 53DF68FD067E5B5A0090B5B0 /* PSMTabBarControl.framework */; };
+ 37A9009E0C279CAD0062045C /* PSMTabDragWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 37A9009D0C279CAD0062045C /* PSMTabDragWindowController.m */; };
+ 37A9009F0C279CAD0062045C /* PSMTabDragWindowController.h in Headers */ = {isa = PBXBuildFile; fileRef = 37A9009C0C279CAD0062045C /* PSMTabDragWindowController.h */; };
+ 37A900A00C279CAD0062045C /* PSMTabDragWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 37A9009D0C279CAD0062045C /* PSMTabDragWindowController.m */; };
+ 37A9FB6E0C25FE2B0062045C /* PSMTabDragView.h in Headers */ = {isa = PBXBuildFile; fileRef = 37A9FB6C0C25FE2B0062045C /* PSMTabDragView.h */; };
+ 37A9FB6F0C25FE2B0062045C /* PSMTabDragView.m in Sources */ = {isa = PBXBuildFile; fileRef = 37A9FB6D0C25FE2B0062045C /* PSMTabDragView.m */; };
+ 37A9FB700C25FE2B0062045C /* PSMTabDragView.m in Sources */ = {isa = PBXBuildFile; fileRef = 37A9FB6D0C25FE2B0062045C /* PSMTabDragView.m */; };
+ 37AF9DE10C945DC8003CAABC /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 318F2E320C7D17E300DE79A7 /* Carbon.framework */; };
+ 546DEAF1067F63070098DCC4 /* PSMTabBarControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 0259C576FE90428111CA0C5A /* PSMTabBarControl.m */; };
+ 546DEAF2067F630E0098DCC4 /* PSMTabBarControl.h in Headers */ = {isa = PBXBuildFile; fileRef = 0259C57AFE90428111CA0C5A /* PSMTabBarControl.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 54D33B2906778E3300C9C163 /* PSMTabBarControl.ibclassdescription in Resources */ = {isa = PBXBuildFile; fileRef = 54D33B2806778E3300C9C163 /* PSMTabBarControl.ibclassdescription */; };
+ 8D1AC9670486D14A00FE50C9 /* PSMTabBarControlInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = 0259C57EFE90428111CA0C5A /* PSMTabBarControlInspector.nib */; };
+ 8D1AC9680486D14A00FE50C9 /* PSMTabBarControlPalette.nib in Resources */ = {isa = PBXBuildFile; fileRef = 0259C580FE90428111CA0C5A /* PSMTabBarControlPalette.nib */; };
+ 8D1AC9690486D14A00FE50C9 /* palette.table in Resources */ = {isa = PBXBuildFile; fileRef = 0259C583FE90428111CA0C5A /* palette.table */; };
+ 8D1AC96C0486D14A00FE50C9 /* PSMTabBarControlInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = 0259C577FE90428111CA0C5A /* PSMTabBarControlInspector.m */; settings = {ATTRIBUTES = (); }; };
+ 8D1AC96D0486D14A00FE50C9 /* PSMTabBarControlPalette.m in Sources */ = {isa = PBXBuildFile; fileRef = 0259C578FE90428111CA0C5A /* PSMTabBarControlPalette.m */; settings = {ATTRIBUTES = (); }; };
+ 8D1AC9700486D14A00FE50C9 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD92D38A0106425D02CA0E72 /* Cocoa.framework */; };
+ 8D1AC9800486D23B00FE50C9 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8D1AC97F0486D23B00FE50C9 /* InfoPlist.strings */; };
+ A2082A9109EAEB34009AC8BE /* PSMTabDragAssistant.m in Sources */ = {isa = PBXBuildFile; fileRef = A2082A8E09EAEB33009AC8BE /* PSMTabDragAssistant.m */; };
+ A2082A9209EAEB34009AC8BE /* PSMTabDragAssistant.m in Sources */ = {isa = PBXBuildFile; fileRef = A2082A8E09EAEB33009AC8BE /* PSMTabDragAssistant.m */; };
+ A2129BB309AEB58F00724E6C /* PSMProgressIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = A2129BB009AEB58F00724E6C /* PSMProgressIndicator.m */; };
+ A251BE850959A1B90058BC7F /* PSMOverflowPopUpButton.h in Headers */ = {isa = PBXBuildFile; fileRef = A251BE810959A1B90058BC7F /* PSMOverflowPopUpButton.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ A251BE860959A1B90058BC7F /* PSMOverflowPopUpButton.m in Sources */ = {isa = PBXBuildFile; fileRef = A251BE820959A1B90058BC7F /* PSMOverflowPopUpButton.m */; };
+ A251BE870959A1B90058BC7F /* PSMTabBarCell.h in Headers */ = {isa = PBXBuildFile; fileRef = A251BE830959A1B90058BC7F /* PSMTabBarCell.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ A251BE880959A1B90058BC7F /* PSMTabBarCell.m in Sources */ = {isa = PBXBuildFile; fileRef = A251BE840959A1B90058BC7F /* PSMTabBarCell.m */; };
+ A251BEBA0959BBDF0058BC7F /* AppController.m in Sources */ = {isa = PBXBuildFile; fileRef = A251BE8A0959A1EA0058BC7F /* AppController.m */; };
+ A251BEBE0959BBE60058BC7F /* FakeModel.m in Sources */ = {isa = PBXBuildFile; fileRef = A251BE8C0959A1EA0058BC7F /* FakeModel.m */; };
+ A251BEC10959BBEC0058BC7F /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = A251BE8D0959A1EA0058BC7F /* main.m */; };
+ A268EA6209A9831800E082AA /* PSMRolloverButton.h in Headers */ = {isa = PBXBuildFile; fileRef = A268EA5F09A9831800E082AA /* PSMRolloverButton.h */; };
+ A268EA6309A9831800E082AA /* PSMRolloverButton.m in Sources */ = {isa = PBXBuildFile; fileRef = A268EA6009A9831800E082AA /* PSMRolloverButton.m */; };
+ A2A711BB09E5AE1E00D0089B /* Window.nib in Resources */ = {isa = PBXBuildFile; fileRef = A2A711B909E5AE1E00D0089B /* Window.nib */; };
+ A2A711BF09E5BF0500D0089B /* WindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = A2A711BE09E5BF0500D0089B /* WindowController.m */; };
+ A2BEC7DD09C1E80400B8B4B6 /* PSMTabBarControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 0259C576FE90428111CA0C5A /* PSMTabBarControl.m */; };
+ A2BEC7DE09C1E80400B8B4B6 /* PSMTabBarCell.m in Sources */ = {isa = PBXBuildFile; fileRef = A251BE840959A1B90058BC7F /* PSMTabBarCell.m */; };
+ A2BEC7DF09C1E80400B8B4B6 /* PSMAquaTabStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = A2D32EE709A6399300EC8662 /* PSMAquaTabStyle.m */; };
+ A2BEC7E009C1E80400B8B4B6 /* PSMMetalTabStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = A2D32EFF09A63D7A00EC8662 /* PSMMetalTabStyle.m */; };
+ A2BEC7E109C1E80400B8B4B6 /* PSMRolloverButton.m in Sources */ = {isa = PBXBuildFile; fileRef = A268EA6009A9831800E082AA /* PSMRolloverButton.m */; };
+ A2BEC7E209C1E80400B8B4B6 /* PSMOverflowPopUpButton.m in Sources */ = {isa = PBXBuildFile; fileRef = A251BE820959A1B90058BC7F /* PSMOverflowPopUpButton.m */; };
+ A2BEC7E309C1E80400B8B4B6 /* PSMProgressIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = A2129BB009AEB58F00724E6C /* PSMProgressIndicator.m */; };
+ A2D32EDC09A634C900EC8662 /* PSMTabStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = A2D32EDA09A634C900EC8662 /* PSMTabStyle.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ A2D32EE809A6399300EC8662 /* PSMAquaTabStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = A2D32EE609A6399300EC8662 /* PSMAquaTabStyle.h */; };
+ A2D32EE909A6399300EC8662 /* PSMAquaTabStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = A2D32EE709A6399300EC8662 /* PSMAquaTabStyle.m */; };
+ A2D32F0009A63D7A00EC8662 /* PSMMetalTabStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = A2D32EFE09A63D7A00EC8662 /* PSMMetalTabStyle.h */; };
+ A2D32F0109A63D7A00EC8662 /* PSMMetalTabStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = A2D32EFF09A63D7A00EC8662 /* PSMMetalTabStyle.m */; };
+ A2D98B0A0A2B432C0064C6F8 /* PSMUnifiedTabStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = A2D98B070A2B432C0064C6F8 /* PSMUnifiedTabStyle.h */; };
+ A2D98B0B0A2B432C0064C6F8 /* PSMUnifiedTabStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = A2D98B080A2B432C0064C6F8 /* PSMUnifiedTabStyle.m */; };
+ A2D98B0C0A2B432C0064C6F8 /* PSMUnifiedTabStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = A2D98B080A2B432C0064C6F8 /* PSMUnifiedTabStyle.m */; };
+ A2D98B130A2B43FA0064C6F8 /* NSBezierPath_AMShading.m in Sources */ = {isa = PBXBuildFile; fileRef = A2D98B100A2B43FA0064C6F8 /* NSBezierPath_AMShading.m */; };
+ A2D98B140A2B43FA0064C6F8 /* NSBezierPath_AMShading.m in Sources */ = {isa = PBXBuildFile; fileRef = A2D98B100A2B43FA0064C6F8 /* NSBezierPath_AMShading.m */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ 34FD7C080BA9FB5900BBAA24 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0259C573FE90428111CA0C5A /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 53DF68FC067E5B5A0090B5B0;
+ remoteInfo = PSMTabBarControlFramework;
+ };
+ 3767A65C0A2D0C5C005F7522 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0259C573FE90428111CA0C5A /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = A251BE9F0959BB5B0058BC7F;
+ remoteInfo = TabBarControlDemo;
+ };
+ 53DF6902067E5B930090B5B0 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0259C573FE90428111CA0C5A /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 8D1AC9600486D14A00FE50C9;
+ remoteInfo = PSMTabBarControl;
+ };
+ 53DF6904067E5B930090B5B0 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0259C573FE90428111CA0C5A /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 53DF68FC067E5B5A0090B5B0;
+ remoteInfo = PSMTabBarControlFramework;
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+ 3769D0860A349FD200D71EDA /* CopyFiles */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 10;
+ files = (
+ 3769D08A0A349FDD00D71EDA /* PSMTabBarControl.framework in CopyFiles */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+ 0259C576FE90428111CA0C5A /* PSMTabBarControl.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = PSMTabBarControl.m; path = source/PSMTabBarControl.m; sourceTree = "<group>"; };
+ 0259C577FE90428111CA0C5A /* PSMTabBarControlInspector.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = PSMTabBarControlInspector.m; path = source/PSMTabBarControlInspector.m; sourceTree = "<group>"; };
+ 0259C578FE90428111CA0C5A /* PSMTabBarControlPalette.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = PSMTabBarControlPalette.m; path = source/PSMTabBarControlPalette.m; sourceTree = "<group>"; };
+ 0259C57AFE90428111CA0C5A /* PSMTabBarControl.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PSMTabBarControl.h; path = source/PSMTabBarControl.h; sourceTree = "<group>"; };
+ 0259C57BFE90428111CA0C5A /* PSMTabBarControlInspector.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PSMTabBarControlInspector.h; path = source/PSMTabBarControlInspector.h; sourceTree = "<group>"; };
+ 0259C57CFE90428111CA0C5A /* PSMTabBarControlPalette.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PSMTabBarControlPalette.h; path = source/PSMTabBarControlPalette.h; sourceTree = "<group>"; };
+ 0259C57FFE90428111CA0C5A /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/PSMTabBarControlInspector.nib; sourceTree = "<group>"; };
+ 0259C581FE90428111CA0C5A /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/PSMTabBarControlPalette.nib; sourceTree = "<group>"; };
+ 0259C583FE90428111CA0C5A /* palette.table */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = palette.table; sourceTree = "<group>"; };
+ 13EB9DBD07DE0F1E00EB933A /* InterfaceBuilder.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = InterfaceBuilder.framework; path = /System/Library/Frameworks/InterfaceBuilder.framework; sourceTree = "<absolute>"; };
+ 13F8B88807B434F6008AE28D /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
+ 13F8B88A07B434F6008AE28D /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
+ 148279B20B8B6F1800076718 /* TabClose_Dirty_Pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = TabClose_Dirty_Pressed.png; path = images/TabClose_Dirty_Pressed.png; sourceTree = "<group>"; };
+ 148279B30B8B6F1800076718 /* TabClose_Dirty_Rollover.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = TabClose_Dirty_Rollover.png; path = images/TabClose_Dirty_Rollover.png; sourceTree = "<group>"; };
+ 148279B40B8B6F1800076718 /* TabClose_Dirty.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = TabClose_Dirty.png; path = images/TabClose_Dirty.png; sourceTree = "<group>"; };
+ 317A8F250C7BF0C20019DEC6 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/MainMenu.nib; sourceTree = "<group>"; };
+ 318F2E320C7D17E300DE79A7 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
+ 318F2ED20C7D185700DE79A7 /* Framework_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Framework_Prefix.pch; path = source/Framework_Prefix.pch; sourceTree = "<group>"; };
+ 32DBCF980370C29C00C91783 /* PSMTabBarControl_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PSMTabBarControl_Prefix.pch; path = source/PSMTabBarControl_Prefix.pch; sourceTree = "<group>"; };
+ 3437A2E90BC8E86F003A0BAE /* largeImage.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = largeImage.png; path = images/largeImage.png; sourceTree = "<group>"; };
+ 347545AE0C4944DA003E81B8 /* NSString_AITruncation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NSString_AITruncation.h; path = source/NSString_AITruncation.h; sourceTree = "<group>"; };
+ 347545AF0C4944DA003E81B8 /* NSString_AITruncation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NSString_AITruncation.m; path = source/NSString_AITruncation.m; sourceTree = "<group>"; };
+ 34FD82610BAC685B00BBAA24 /* TabControlRep.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = TabControlRep.png; path = images/TabControlRep.png; sourceTree = "<group>"; };
+ 34FD82620BAC685B00BBAA24 /* AquaTabsSeparator.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = AquaTabsSeparator.png; path = images/AquaTabsSeparator.png; sourceTree = "<group>"; };
+ 34FD82650BAC685B00BBAA24 /* AquaTabsDown.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = AquaTabsDown.png; path = images/AquaTabsDown.png; sourceTree = "<group>"; };
+ 34FD82660BAC685B00BBAA24 /* pi.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = pi.png; path = images/pi.png; sourceTree = "<group>"; };
+ 34FD82670BAC685B00BBAA24 /* sally_large.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = sally_large.jpg; path = images/sally_large.jpg; sourceTree = "<group>"; };
+ 34FD82680BAC685B00BBAA24 /* TabIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = TabIcon.png; path = images/TabIcon.png; sourceTree = "<group>"; };
+ 34FD82690BAC685B00BBAA24 /* overflowImagePressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = overflowImagePressed.png; path = images/overflowImagePressed.png; sourceTree = "<group>"; };
+ 34FD826A0BAC685B00BBAA24 /* AquaTabsBackground.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = AquaTabsBackground.png; path = images/AquaTabsBackground.png; sourceTree = "<group>"; };
+ 34FD826B0BAC685B00BBAA24 /* AquaTabNewRollover.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = AquaTabNewRollover.png; path = images/AquaTabNewRollover.png; sourceTree = "<group>"; };
+ 34FD826C0BAC685B00BBAA24 /* 32x32cancel.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = 32x32cancel.png; path = images/32x32cancel.png; sourceTree = "<group>"; };
+ 34FD826D0BAC685B00BBAA24 /* AquaTabClose_Front_Pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = AquaTabClose_Front_Pressed.png; path = images/AquaTabClose_Front_Pressed.png; sourceTree = "<group>"; };
+ 34FD826E0BAC685B00BBAA24 /* TabNewMetalPressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = TabNewMetalPressed.png; path = images/TabNewMetalPressed.png; sourceTree = "<group>"; };
+ 34FD826F0BAC685B00BBAA24 /* AquaTabNewPressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = AquaTabNewPressed.png; path = images/AquaTabNewPressed.png; sourceTree = "<group>"; };
+ 34FD82700BAC685B00BBAA24 /* AquaTabClose_Front.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = AquaTabClose_Front.png; path = images/AquaTabClose_Front.png; sourceTree = "<group>"; };
+ 34FD82710BAC685B00BBAA24 /* 32x32_log.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = 32x32_log.png; path = images/32x32_log.png; sourceTree = "<group>"; };
+ 34FD82720BAC685B00BBAA24 /* TabNewMetal.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = TabNewMetal.png; path = images/TabNewMetal.png; sourceTree = "<group>"; };
+ 34FD82730BAC685B00BBAA24 /* AquaTabsDownGraphite.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = AquaTabsDownGraphite.png; path = images/AquaTabsDownGraphite.png; sourceTree = "<group>"; };
+ 34FD82740BAC685B00BBAA24 /* TabClose_Front_Rollover.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = TabClose_Front_Rollover.png; path = images/TabClose_Front_Rollover.png; sourceTree = "<group>"; };
+ 34FD82750BAC685B00BBAA24 /* overflowImage.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = overflowImage.png; path = images/overflowImage.png; sourceTree = "<group>"; };
+ 34FD82760BAC685B00BBAA24 /* AquaTabClose_Front_Rollover.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = AquaTabClose_Front_Rollover.png; path = images/AquaTabClose_Front_Rollover.png; sourceTree = "<group>"; };
+ 34FD82770BAC685B00BBAA24 /* AquaTabsDownNonKey.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = AquaTabsDownNonKey.png; path = images/AquaTabsDownNonKey.png; sourceTree = "<group>"; };
+ 34FD82780BAC685B00BBAA24 /* AquaTabsSeparatorDown.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = AquaTabsSeparatorDown.png; path = images/AquaTabsSeparatorDown.png; sourceTree = "<group>"; };
+ 34FD82790BAC685B00BBAA24 /* Folder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Folder.png; path = images/Folder.png; sourceTree = "<group>"; };
+ 34FD827B0BAC685B00BBAA24 /* AquaTabCloseDirty_Front.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = AquaTabCloseDirty_Front.png; path = images/AquaTabCloseDirty_Front.png; sourceTree = "<group>"; };
+ 34FD827C0BAC685B00BBAA24 /* Warning.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Warning.png; path = images/Warning.png; sourceTree = "<group>"; };
+ 34FD827D0BAC685B00BBAA24 /* AquaTabCloseDirty_Front_Pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = AquaTabCloseDirty_Front_Pressed.png; path = images/AquaTabCloseDirty_Front_Pressed.png; sourceTree = "<group>"; };
+ 34FD827E0BAC685B00BBAA24 /* mater_large.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = mater_large.jpg; path = images/mater_large.jpg; sourceTree = "<group>"; };
+ 34FD827F0BAC685B00BBAA24 /* AquaTabNew.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = AquaTabNew.png; path = images/AquaTabNew.png; sourceTree = "<group>"; };
+ 34FD82800BAC685B00BBAA24 /* AquaTabCloseDirty_Front_Rollover.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = AquaTabCloseDirty_Front_Rollover.png; path = images/AquaTabCloseDirty_Front_Rollover.png; sourceTree = "<group>"; };
+ 34FD82810BAC685B00BBAA24 /* TabNewMetalRollover.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = TabNewMetalRollover.png; path = images/TabNewMetalRollover.png; sourceTree = "<group>"; };
+ 34FD82820BAC685B00BBAA24 /* TabClose_Front_Pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = TabClose_Front_Pressed.png; path = images/TabClose_Front_Pressed.png; sourceTree = "<group>"; };
+ 34FD82830BAC685B00BBAA24 /* AdiumGradient.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = AdiumGradient.png; path = images/AdiumGradient.png; sourceTree = "<group>"; };
+ 34FD82840BAC685B00BBAA24 /* mcqueen_large.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = mcqueen_large.jpg; path = images/mcqueen_large.jpg; sourceTree = "<group>"; };
+ 34FD82850BAC685B00BBAA24 /* TabClose_Front.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = TabClose_Front.png; path = images/TabClose_Front.png; sourceTree = "<group>"; };
+ 34FD82860BAC685B00BBAA24 /* Globe.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Globe.png; path = images/Globe.png; sourceTree = "<group>"; };
+ 3748D19B0B17834D002D71C0 /* PSMTabBarController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PSMTabBarController.h; path = source/PSMTabBarController.h; sourceTree = "<group>"; };
+ 3748D19C0B17834D002D71C0 /* PSMTabBarController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PSMTabBarController.m; path = source/PSMTabBarController.m; sourceTree = "<group>"; };
+ 3767A7550A2D449B005F7522 /* PSMAdiumTabStyle.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PSMAdiumTabStyle.h; path = source/PSMAdiumTabStyle.h; sourceTree = "<group>"; };
+ 3767A7560A2D449B005F7522 /* PSMAdiumTabStyle.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = PSMAdiumTabStyle.m; path = source/PSMAdiumTabStyle.m; sourceTree = "<group>"; };
+ 3767A9190A2F7A11005F7522 /* PSMTabDragWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PSMTabDragWindow.h; path = source/PSMTabDragWindow.h; sourceTree = "<group>"; };
+ 3767A91A0A2F7A11005F7522 /* PSMTabDragWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PSMTabDragWindow.m; path = source/PSMTabDragWindow.m; sourceTree = "<group>"; };
+ 37A9009C0C279CAD0062045C /* PSMTabDragWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PSMTabDragWindowController.h; path = source/PSMTabDragWindowController.h; sourceTree = "<group>"; };
+ 37A9009D0C279CAD0062045C /* PSMTabDragWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PSMTabDragWindowController.m; path = source/PSMTabDragWindowController.m; sourceTree = "<group>"; };
+ 37A9FB6C0C25FE2B0062045C /* PSMTabDragView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PSMTabDragView.h; path = source/PSMTabDragView.h; sourceTree = "<group>"; };
+ 37A9FB6D0C25FE2B0062045C /* PSMTabDragView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PSMTabDragView.m; path = source/PSMTabDragView.m; sourceTree = "<group>"; };
+ 53DF68FD067E5B5A0090B5B0 /* PSMTabBarControl.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PSMTabBarControl.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 53DF68FE067E5B5A0090B5B0 /* PSMTabBarControlFramework-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "PSMTabBarControlFramework-Info.plist"; sourceTree = "<group>"; };
+ 54D33B2806778E3300C9C163 /* PSMTabBarControl.ibclassdescription */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = PSMTabBarControl.ibclassdescription; sourceTree = "<group>"; };
+ 8D1AC9730486D14A00FE50C9 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
+ 8D1AC9740486D14A00FE50C9 /* PSMTabBarControl.palette */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PSMTabBarControl.palette; sourceTree = BUILT_PRODUCTS_DIR; };
+ 8D1AC97B0486D23100FE50C9 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+ A2082A8D09EAEB33009AC8BE /* PSMTabDragAssistant.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PSMTabDragAssistant.h; path = source/PSMTabDragAssistant.h; sourceTree = "<group>"; };
+ A2082A8E09EAEB33009AC8BE /* PSMTabDragAssistant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PSMTabDragAssistant.m; path = source/PSMTabDragAssistant.m; sourceTree = "<group>"; };
+ A2129BAF09AEB58F00724E6C /* PSMProgressIndicator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PSMProgressIndicator.h; path = source/PSMProgressIndicator.h; sourceTree = "<group>"; };
+ A2129BB009AEB58F00724E6C /* PSMProgressIndicator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PSMProgressIndicator.m; path = source/PSMProgressIndicator.m; sourceTree = "<group>"; };
+ A246FB040A2BD6F9005BDF7B /* PSMTabBarControlDoc.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html.documentation; name = PSMTabBarControlDoc.html; path = documentation/PSMTabBarControlDoc.html; sourceTree = "<group>"; };
+ A251BE810959A1B90058BC7F /* PSMOverflowPopUpButton.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = PSMOverflowPopUpButton.h; path = source/PSMOverflowPopUpButton.h; sourceTree = "<group>"; };
+ A251BE820959A1B90058BC7F /* PSMOverflowPopUpButton.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = PSMOverflowPopUpButton.m; path = source/PSMOverflowPopUpButton.m; sourceTree = "<group>"; };
+ A251BE830959A1B90058BC7F /* PSMTabBarCell.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PSMTabBarCell.h; path = source/PSMTabBarCell.h; sourceTree = "<group>"; };
+ A251BE840959A1B90058BC7F /* PSMTabBarCell.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = PSMTabBarCell.m; path = source/PSMTabBarCell.m; sourceTree = "<group>"; };
+ A251BE890959A1EA0058BC7F /* AppController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = AppController.h; path = source/AppController.h; sourceTree = "<group>"; };
+ A251BE8A0959A1EA0058BC7F /* AppController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = AppController.m; path = source/AppController.m; sourceTree = "<group>"; };
+ A251BE8B0959A1EA0058BC7F /* FakeModel.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = FakeModel.h; path = source/FakeModel.h; sourceTree = "<group>"; };
+ A251BE8C0959A1EA0058BC7F /* FakeModel.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = FakeModel.m; path = source/FakeModel.m; sourceTree = "<group>"; };
+ A251BE8D0959A1EA0058BC7F /* main.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = main.m; path = source/main.m; sourceTree = "<group>"; };
+ A251BE9B0959A2530058BC7F /* ReadMe.rtfd */ = {isa = PBXFileReference; lastKnownFileType = wrapper.rtfd; path = ReadMe.rtfd; sourceTree = "<group>"; };
+ A251BEA00959BB5B0058BC7F /* TabBarControlDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TabBarControlDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ A251BEA20959BB5B0058BC7F /* TabBarControlDemo-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "TabBarControlDemo-Info.plist"; sourceTree = "<group>"; };
+ A268EA5F09A9831800E082AA /* PSMRolloverButton.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PSMRolloverButton.h; path = source/PSMRolloverButton.h; sourceTree = "<group>"; };
+ A268EA6009A9831800E082AA /* PSMRolloverButton.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = PSMRolloverButton.m; path = source/PSMRolloverButton.m; sourceTree = "<group>"; };
+ A2A711BA09E5AE1E00D0089B /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Window.nib; sourceTree = "<group>"; };
+ A2A711BD09E5BF0500D0089B /* WindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WindowController.h; path = source/WindowController.h; sourceTree = "<group>"; };
+ A2A711BE09E5BF0500D0089B /* WindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = WindowController.m; path = source/WindowController.m; sourceTree = "<group>"; };
+ A2D32EDA09A634C900EC8662 /* PSMTabStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PSMTabStyle.h; path = source/PSMTabStyle.h; sourceTree = "<group>"; };
+ A2D32EE609A6399300EC8662 /* PSMAquaTabStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PSMAquaTabStyle.h; path = source/PSMAquaTabStyle.h; sourceTree = "<group>"; };
+ A2D32EE709A6399300EC8662 /* PSMAquaTabStyle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PSMAquaTabStyle.m; path = source/PSMAquaTabStyle.m; sourceTree = "<group>"; };
+ A2D32EFE09A63D7A00EC8662 /* PSMMetalTabStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PSMMetalTabStyle.h; path = source/PSMMetalTabStyle.h; sourceTree = "<group>"; };
+ A2D32EFF09A63D7A00EC8662 /* PSMMetalTabStyle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PSMMetalTabStyle.m; path = source/PSMMetalTabStyle.m; sourceTree = "<group>"; };
+ A2D98B070A2B432C0064C6F8 /* PSMUnifiedTabStyle.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PSMUnifiedTabStyle.h; path = source/PSMUnifiedTabStyle.h; sourceTree = "<group>"; };
+ A2D98B080A2B432C0064C6F8 /* PSMUnifiedTabStyle.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = PSMUnifiedTabStyle.m; path = source/PSMUnifiedTabStyle.m; sourceTree = "<group>"; };
+ A2D98B0F0A2B43FA0064C6F8 /* NSBezierPath_AMShading.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = NSBezierPath_AMShading.h; path = source/NSBezierPath_AMShading.h; sourceTree = "<group>"; };
+ A2D98B100A2B43FA0064C6F8 /* NSBezierPath_AMShading.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = NSBezierPath_AMShading.m; path = source/NSBezierPath_AMShading.m; sourceTree = "<group>"; };
+ DD92D38A0106425D02CA0E72 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 53DF68FB067E5B5A0090B5B0 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 13F8B89007B43554008AE28D /* Cocoa.framework in Frameworks */,
+ 318F2E330C7D17E300DE79A7 /* Carbon.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 8D1AC96E0486D14A00FE50C9 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 8D1AC9700486D14A00FE50C9 /* Cocoa.framework in Frameworks */,
+ 37AF9DE10C945DC8003CAABC /* Carbon.framework in Frameworks */,
+ 13EB9DBE07DE0F1E00EB933A /* InterfaceBuilder.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ A251BE9E0959BB5B0058BC7F /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 3769D0850A349FCD00D71EDA /* PSMTabBarControl.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 0259C574FE90428111CA0C5A /* PSMTabBarControl */ = {
+ isa = PBXGroup;
+ children = (
+ A251BE9B0959A2530058BC7F /* ReadMe.rtfd */,
+ A246FADE0A2BD446005BDF7B /* Documentation */,
+ 32DBCF9E0370C38000C91783 /* Palette */,
+ 54D33B2C06778E4400C9C163 /* Framework */,
+ A251BE590959A0550058BC7F /* Demo App */,
+ 0259C582FE90428111CA0C5A /* Resources */,
+ 1ED78706FE9D4A0611CA0C5A /* Products */,
+ 2E58F364FFB232C311CA0CBA /* Frameworks */,
+ );
+ name = PSMTabBarControl;
+ sourceTree = "<group>";
+ };
+ 0259C582FE90428111CA0C5A /* Resources */ = {
+ isa = PBXGroup;
+ children = (
+ 3437A2E90BC8E86F003A0BAE /* largeImage.png */,
+ 148279B20B8B6F1800076718 /* TabClose_Dirty_Pressed.png */,
+ 148279B30B8B6F1800076718 /* TabClose_Dirty_Rollover.png */,
+ 148279B40B8B6F1800076718 /* TabClose_Dirty.png */,
+ 317A8F240C7BF0C20019DEC6 /* MainMenu.nib */,
+ A251BE8E0959A21A0058BC7F /* Images */,
+ 8D1AC9730486D14A00FE50C9 /* Info.plist */,
+ 53DF68FE067E5B5A0090B5B0 /* PSMTabBarControlFramework-Info.plist */,
+ A251BEA20959BB5B0058BC7F /* TabBarControlDemo-Info.plist */,
+ 8D1AC97F0486D23B00FE50C9 /* InfoPlist.strings */,
+ A2A711B909E5AE1E00D0089B /* Window.nib */,
+ );
+ name = Resources;
+ sourceTree = "<group>";
+ };
+ 131E8FE8067F80F40006E0CE /* Resources */ = {
+ isa = PBXGroup;
+ children = (
+ 34FD82610BAC685B00BBAA24 /* TabControlRep.png */,
+ 34FD82680BAC685B00BBAA24 /* TabIcon.png */,
+ 0259C57EFE90428111CA0C5A /* PSMTabBarControlInspector.nib */,
+ 0259C580FE90428111CA0C5A /* PSMTabBarControlPalette.nib */,
+ );
+ name = Resources;
+ sourceTree = "<group>";
+ };
+ 13F8B6FD07B43410008AE28D /* Linked Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 13EB9DBD07DE0F1E00EB933A /* InterfaceBuilder.framework */,
+ DD92D38A0106425D02CA0E72 /* Cocoa.framework */,
+ 318F2E320C7D17E300DE79A7 /* Carbon.framework */,
+ );
+ name = "Linked Frameworks";
+ sourceTree = "<group>";
+ };
+ 13F8B70407B43425008AE28D /* Other Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 13F8B88807B434F6008AE28D /* AppKit.framework */,
+ 13F8B88A07B434F6008AE28D /* Foundation.framework */,
+ );
+ name = "Other Frameworks";
+ sourceTree = "<group>";
+ };
+ 1ED78706FE9D4A0611CA0C5A /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 8D1AC9740486D14A00FE50C9 /* PSMTabBarControl.palette */,
+ 53DF68FD067E5B5A0090B5B0 /* PSMTabBarControl.framework */,
+ A251BEA00959BB5B0058BC7F /* TabBarControlDemo.app */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ 2E58F364FFB232C311CA0CBA /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 13F8B6FD07B43410008AE28D /* Linked Frameworks */,
+ 13F8B70407B43425008AE28D /* Other Frameworks */,
+ );
+ name = Frameworks;
+ sourceTree = "<group>";
+ };
+ 32DBCF9E0370C38000C91783 /* Palette */ = {
+ isa = PBXGroup;
+ children = (
+ 54D33B2406778DD400C9C163 /* Undo Support */,
+ 54D33B2506778DF000C9C163 /* Classes */,
+ 32DBCF9F0370C38200C91783 /* Other Sources */,
+ 131E8FE8067F80F40006E0CE /* Resources */,
+ 0259C583FE90428111CA0C5A /* palette.table */,
+ );
+ name = Palette;
+ sourceTree = "<group>";
+ };
+ 32DBCF9F0370C38200C91783 /* Other Sources */ = {
+ isa = PBXGroup;
+ children = (
+ 32DBCF980370C29C00C91783 /* PSMTabBarControl_Prefix.pch */,
+ );
+ name = "Other Sources";
+ sourceTree = "<group>";
+ };
+ 3767A55A0A2C0449005F7522 /* Styles */ = {
+ isa = PBXGroup;
+ children = (
+ A2D32EDA09A634C900EC8662 /* PSMTabStyle.h */,
+ 3767A7550A2D449B005F7522 /* PSMAdiumTabStyle.h */,
+ 3767A7560A2D449B005F7522 /* PSMAdiumTabStyle.m */,
+ A2D32EE609A6399300EC8662 /* PSMAquaTabStyle.h */,
+ A2D32EE709A6399300EC8662 /* PSMAquaTabStyle.m */,
+ A2D32EFE09A63D7A00EC8662 /* PSMMetalTabStyle.h */,
+ A2D32EFF09A63D7A00EC8662 /* PSMMetalTabStyle.m */,
+ A2D98B070A2B432C0064C6F8 /* PSMUnifiedTabStyle.h */,
+ A2D98B080A2B432C0064C6F8 /* PSMUnifiedTabStyle.m */,
+ );
+ name = Styles;
+ sourceTree = "<group>";
+ };
+ 54D33B2406778DD400C9C163 /* Undo Support */ = {
+ isa = PBXGroup;
+ children = (
+ 54D33B2806778E3300C9C163 /* PSMTabBarControl.ibclassdescription */,
+ );
+ name = "Undo Support";
+ sourceTree = "<group>";
+ };
+ 54D33B2506778DF000C9C163 /* Classes */ = {
+ isa = PBXGroup;
+ children = (
+ 0259C57BFE90428111CA0C5A /* PSMTabBarControlInspector.h */,
+ 0259C577FE90428111CA0C5A /* PSMTabBarControlInspector.m */,
+ 0259C57CFE90428111CA0C5A /* PSMTabBarControlPalette.h */,
+ 0259C578FE90428111CA0C5A /* PSMTabBarControlPalette.m */,
+ );
+ name = Classes;
+ sourceTree = "<group>";
+ };
+ 54D33B2C06778E4400C9C163 /* Framework */ = {
+ isa = PBXGroup;
+ children = (
+ 318F2ED20C7D185700DE79A7 /* Framework_Prefix.pch */,
+ 3767A55A0A2C0449005F7522 /* Styles */,
+ 0259C57AFE90428111CA0C5A /* PSMTabBarControl.h */,
+ 0259C576FE90428111CA0C5A /* PSMTabBarControl.m */,
+ 3748D19B0B17834D002D71C0 /* PSMTabBarController.h */,
+ 3748D19C0B17834D002D71C0 /* PSMTabBarController.m */,
+ A251BE830959A1B90058BC7F /* PSMTabBarCell.h */,
+ A251BE840959A1B90058BC7F /* PSMTabBarCell.m */,
+ A268EA5F09A9831800E082AA /* PSMRolloverButton.h */,
+ A268EA6009A9831800E082AA /* PSMRolloverButton.m */,
+ A251BE810959A1B90058BC7F /* PSMOverflowPopUpButton.h */,
+ A251BE820959A1B90058BC7F /* PSMOverflowPopUpButton.m */,
+ A2129BAF09AEB58F00724E6C /* PSMProgressIndicator.h */,
+ A2129BB009AEB58F00724E6C /* PSMProgressIndicator.m */,
+ A2082A8D09EAEB33009AC8BE /* PSMTabDragAssistant.h */,
+ A2082A8E09EAEB33009AC8BE /* PSMTabDragAssistant.m */,
+ 37A9009C0C279CAD0062045C /* PSMTabDragWindowController.h */,
+ 37A9009D0C279CAD0062045C /* PSMTabDragWindowController.m */,
+ 3767A9190A2F7A11005F7522 /* PSMTabDragWindow.h */,
+ 3767A91A0A2F7A11005F7522 /* PSMTabDragWindow.m */,
+ 37A9FB6C0C25FE2B0062045C /* PSMTabDragView.h */,
+ 37A9FB6D0C25FE2B0062045C /* PSMTabDragView.m */,
+ A2D98B0F0A2B43FA0064C6F8 /* NSBezierPath_AMShading.h */,
+ A2D98B100A2B43FA0064C6F8 /* NSBezierPath_AMShading.m */,
+ 347545AE0C4944DA003E81B8 /* NSString_AITruncation.h */,
+ 347545AF0C4944DA003E81B8 /* NSString_AITruncation.m */,
+ );
+ name = Framework;
+ sourceTree = "<group>";
+ };
+ A246FADE0A2BD446005BDF7B /* Documentation */ = {
+ isa = PBXGroup;
+ children = (
+ A246FB040A2BD6F9005BDF7B /* PSMTabBarControlDoc.html */,
+ );
+ name = Documentation;
+ sourceTree = "<group>";
+ };
+ A251BE590959A0550058BC7F /* Demo App */ = {
+ isa = PBXGroup;
+ children = (
+ A251BE890959A1EA0058BC7F /* AppController.h */,
+ A251BE8A0959A1EA0058BC7F /* AppController.m */,
+ A2A711BD09E5BF0500D0089B /* WindowController.h */,
+ A2A711BE09E5BF0500D0089B /* WindowController.m */,
+ A251BE8B0959A1EA0058BC7F /* FakeModel.h */,
+ A251BE8C0959A1EA0058BC7F /* FakeModel.m */,
+ A251BE8D0959A1EA0058BC7F /* main.m */,
+ );
+ name = "Demo App";
+ sourceTree = "<group>";
+ };
+ A251BE8E0959A21A0058BC7F /* Images */ = {
+ isa = PBXGroup;
+ children = (
+ 34FD82710BAC685B00BBAA24 /* 32x32_log.png */,
+ 34FD826C0BAC685B00BBAA24 /* 32x32cancel.png */,
+ 34FD82830BAC685B00BBAA24 /* AdiumGradient.png */,
+ 34FD82700BAC685B00BBAA24 /* AquaTabClose_Front.png */,
+ 34FD826D0BAC685B00BBAA24 /* AquaTabClose_Front_Pressed.png */,
+ 34FD82760BAC685B00BBAA24 /* AquaTabClose_Front_Rollover.png */,
+ 34FD827B0BAC685B00BBAA24 /* AquaTabCloseDirty_Front.png */,
+ 34FD827D0BAC685B00BBAA24 /* AquaTabCloseDirty_Front_Pressed.png */,
+ 34FD82800BAC685B00BBAA24 /* AquaTabCloseDirty_Front_Rollover.png */,
+ 34FD827F0BAC685B00BBAA24 /* AquaTabNew.png */,
+ 34FD826F0BAC685B00BBAA24 /* AquaTabNewPressed.png */,
+ 34FD826B0BAC685B00BBAA24 /* AquaTabNewRollover.png */,
+ 34FD826A0BAC685B00BBAA24 /* AquaTabsBackground.png */,
+ 34FD82650BAC685B00BBAA24 /* AquaTabsDown.png */,
+ 34FD82730BAC685B00BBAA24 /* AquaTabsDownGraphite.png */,
+ 34FD82770BAC685B00BBAA24 /* AquaTabsDownNonKey.png */,
+ 34FD82620BAC685B00BBAA24 /* AquaTabsSeparator.png */,
+ 34FD82780BAC685B00BBAA24 /* AquaTabsSeparatorDown.png */,
+ 34FD82790BAC685B00BBAA24 /* Folder.png */,
+ 34FD82860BAC685B00BBAA24 /* Globe.png */,
+ 34FD827E0BAC685B00BBAA24 /* mater_large.jpg */,
+ 34FD82840BAC685B00BBAA24 /* mcqueen_large.jpg */,
+ 34FD82750BAC685B00BBAA24 /* overflowImage.png */,
+ 34FD82690BAC685B00BBAA24 /* overflowImagePressed.png */,
+ 34FD82660BAC685B00BBAA24 /* pi.png */,
+ 34FD82670BAC685B00BBAA24 /* sally_large.jpg */,
+ 34FD82850BAC685B00BBAA24 /* TabClose_Front.png */,
+ 34FD82820BAC685B00BBAA24 /* TabClose_Front_Pressed.png */,
+ 34FD82740BAC685B00BBAA24 /* TabClose_Front_Rollover.png */,
+ 34FD82720BAC685B00BBAA24 /* TabNewMetal.png */,
+ 34FD826E0BAC685B00BBAA24 /* TabNewMetalPressed.png */,
+ 34FD82810BAC685B00BBAA24 /* TabNewMetalRollover.png */,
+ 34FD827C0BAC685B00BBAA24 /* Warning.png */,
+ );
+ name = Images;
+ sourceTree = "<group>";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ 53DF68F8067E5B5A0090B5B0 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 546DEAF2067F630E0098DCC4 /* PSMTabBarControl.h in Headers */,
+ A251BE850959A1B90058BC7F /* PSMOverflowPopUpButton.h in Headers */,
+ A251BE870959A1B90058BC7F /* PSMTabBarCell.h in Headers */,
+ A2D32EDC09A634C900EC8662 /* PSMTabStyle.h in Headers */,
+ A2D32EE809A6399300EC8662 /* PSMAquaTabStyle.h in Headers */,
+ A2D32F0009A63D7A00EC8662 /* PSMMetalTabStyle.h in Headers */,
+ A268EA6209A9831800E082AA /* PSMRolloverButton.h in Headers */,
+ A2D98B0A0A2B432C0064C6F8 /* PSMUnifiedTabStyle.h in Headers */,
+ 3767A7590A2D449B005F7522 /* PSMAdiumTabStyle.h in Headers */,
+ 3748D19E0B17834D002D71C0 /* PSMTabBarController.h in Headers */,
+ 346373660BCA21F800AD57AD /* NSBezierPath_AMShading.h in Headers */,
+ 37A9FB6E0C25FE2B0062045C /* PSMTabDragView.h in Headers */,
+ 37A9009F0C279CAD0062045C /* PSMTabDragWindowController.h in Headers */,
+ 347545B00C4944DA003E81B8 /* NSString_AITruncation.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ 53DF68FC067E5B5A0090B5B0 /* PSMTabBarControlFramework */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = C056397F08A954F8003078D8 /* Build configuration list for PBXNativeTarget "PSMTabBarControlFramework" */;
+ buildPhases = (
+ 53DF68F8067E5B5A0090B5B0 /* Headers */,
+ 53DF68F9067E5B5A0090B5B0 /* Resources */,
+ 53DF68FA067E5B5A0090B5B0 /* Sources */,
+ 53DF68FB067E5B5A0090B5B0 /* Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = PSMTabBarControlFramework;
+ productName = PSMTabBarControlFramework;
+ productReference = 53DF68FD067E5B5A0090B5B0 /* PSMTabBarControl.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+ 8D1AC9600486D14A00FE50C9 /* PSMTabBarControl */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = C056398308A954F8003078D8 /* Build configuration list for PBXNativeTarget "PSMTabBarControl" */;
+ buildPhases = (
+ 8D1AC9660486D14A00FE50C9 /* Resources */,
+ 8D1AC96A0486D14A00FE50C9 /* Sources */,
+ 8D1AC96E0486D14A00FE50C9 /* Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = PSMTabBarControl;
+ productInstallPath = "$(HOME)/Developer/Palettes";
+ productName = PSMTabBarControl;
+ productReference = 8D1AC9740486D14A00FE50C9 /* PSMTabBarControl.palette */;
+ productType = "com.apple.product-type.bundle";
+ };
+ A251BE9F0959BB5B0058BC7F /* TabBarControlDemo */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = A251BEA30959BB5C0058BC7F /* Build configuration list for PBXNativeTarget "TabBarControlDemo" */;
+ buildPhases = (
+ A251BE9C0959BB5B0058BC7F /* Resources */,
+ A251BE9D0959BB5B0058BC7F /* Sources */,
+ A251BE9E0959BB5B0058BC7F /* Frameworks */,
+ 3769D0860A349FD200D71EDA /* CopyFiles */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 34FD7C090BA9FB5900BBAA24 /* PBXTargetDependency */,
+ );
+ name = TabBarControlDemo;
+ productName = TabBarControlDemo;
+ productReference = A251BEA00959BB5B0058BC7F /* TabBarControlDemo.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 0259C573FE90428111CA0C5A /* Project object */ = {
+ isa = PBXProject;
+ buildConfigurationList = C056398B08A954F8003078D8 /* Build configuration list for PBXProject "PSMTabBarControl" */;
+ compatibilityVersion = "Xcode 3.1";
+ hasScannedForEncodings = 1;
+ mainGroup = 0259C574FE90428111CA0C5A /* PSMTabBarControl */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 8D1AC9600486D14A00FE50C9 /* PSMTabBarControl */,
+ A251BE9F0959BB5B0058BC7F /* TabBarControlDemo */,
+ 53DF68FC067E5B5A0090B5B0 /* PSMTabBarControlFramework */,
+ 53DF6901067E5B8E0090B5B0 /* All */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 53DF68F9067E5B5A0090B5B0 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 148279B50B8B6F1800076718 /* TabClose_Dirty_Pressed.png in Resources */,
+ 148279B60B8B6F1800076718 /* TabClose_Dirty_Rollover.png in Resources */,
+ 148279B70B8B6F1800076718 /* TabClose_Dirty.png in Resources */,
+ 34FD82880BAC685B00BBAA24 /* AquaTabsSeparator.png in Resources */,
+ 34FD828B0BAC685B00BBAA24 /* AquaTabsDown.png in Resources */,
+ 34FD828C0BAC685B00BBAA24 /* pi.png in Resources */,
+ 34FD828F0BAC685B00BBAA24 /* overflowImagePressed.png in Resources */,
+ 34FD82900BAC685B00BBAA24 /* AquaTabsBackground.png in Resources */,
+ 34FD82910BAC685B00BBAA24 /* AquaTabNewRollover.png in Resources */,
+ 34FD82920BAC685B00BBAA24 /* 32x32cancel.png in Resources */,
+ 34FD82930BAC685B00BBAA24 /* AquaTabClose_Front_Pressed.png in Resources */,
+ 34FD82940BAC685B00BBAA24 /* TabNewMetalPressed.png in Resources */,
+ 34FD82950BAC685B00BBAA24 /* AquaTabNewPressed.png in Resources */,
+ 34FD82960BAC685B00BBAA24 /* AquaTabClose_Front.png in Resources */,
+ 34FD82970BAC685B00BBAA24 /* 32x32_log.png in Resources */,
+ 34FD82980BAC685B00BBAA24 /* TabNewMetal.png in Resources */,
+ 34FD82990BAC685B00BBAA24 /* AquaTabsDownGraphite.png in Resources */,
+ 34FD829A0BAC685B00BBAA24 /* TabClose_Front_Rollover.png in Resources */,
+ 34FD829B0BAC685B00BBAA24 /* overflowImage.png in Resources */,
+ 34FD829C0BAC685B00BBAA24 /* AquaTabClose_Front_Rollover.png in Resources */,
+ 34FD829D0BAC685B00BBAA24 /* AquaTabsDownNonKey.png in Resources */,
+ 34FD829E0BAC685B00BBAA24 /* AquaTabsSeparatorDown.png in Resources */,
+ 34FD82A10BAC685B00BBAA24 /* AquaTabCloseDirty_Front.png in Resources */,
+ 34FD82A30BAC685B00BBAA24 /* AquaTabCloseDirty_Front_Pressed.png in Resources */,
+ 34FD82A50BAC685B00BBAA24 /* AquaTabNew.png in Resources */,
+ 34FD82A60BAC685B00BBAA24 /* AquaTabCloseDirty_Front_Rollover.png in Resources */,
+ 34FD82A70BAC685B00BBAA24 /* TabNewMetalRollover.png in Resources */,
+ 34FD82A80BAC685B00BBAA24 /* TabClose_Front_Pressed.png in Resources */,
+ 34FD82A90BAC685B00BBAA24 /* AdiumGradient.png in Resources */,
+ 34FD82AB0BAC685B00BBAA24 /* TabClose_Front.png in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 8D1AC9660486D14A00FE50C9 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 8D1AC9670486D14A00FE50C9 /* PSMTabBarControlInspector.nib in Resources */,
+ 8D1AC9680486D14A00FE50C9 /* PSMTabBarControlPalette.nib in Resources */,
+ 8D1AC9690486D14A00FE50C9 /* palette.table in Resources */,
+ 8D1AC9800486D23B00FE50C9 /* InfoPlist.strings in Resources */,
+ 54D33B2906778E3300C9C163 /* PSMTabBarControl.ibclassdescription in Resources */,
+ 34FD82B70BAC687900BBAA24 /* TabControlRep.png in Resources */,
+ 34FD82C00BAC688500BBAA24 /* TabIcon.png in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ A251BE9C0959BB5B0058BC7F /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ A2A711BB09E5AE1E00D0089B /* Window.nib in Resources */,
+ 34FD82B00BAC686D00BBAA24 /* mater_large.jpg in Resources */,
+ 34FD82B10BAC686D00BBAA24 /* mcqueen_large.jpg in Resources */,
+ 34FD82B20BAC686D00BBAA24 /* sally_large.jpg in Resources */,
+ 3437A2EA0BC8E86F003A0BAE /* largeImage.png in Resources */,
+ 346A5E080C58E38B004563F0 /* Folder.png in Resources */,
+ 346A5E100C58E3C5004563F0 /* Globe.png in Resources */,
+ 346A5E110C58E3C5004563F0 /* Warning.png in Resources */,
+ 317A8F260C7BF0C20019DEC6 /* MainMenu.nib in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 53DF68FA067E5B5A0090B5B0 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 546DEAF1067F63070098DCC4 /* PSMTabBarControl.m in Sources */,
+ A251BE860959A1B90058BC7F /* PSMOverflowPopUpButton.m in Sources */,
+ A251BE880959A1B90058BC7F /* PSMTabBarCell.m in Sources */,
+ A2D32EE909A6399300EC8662 /* PSMAquaTabStyle.m in Sources */,
+ A2D32F0109A63D7A00EC8662 /* PSMMetalTabStyle.m in Sources */,
+ A268EA6309A9831800E082AA /* PSMRolloverButton.m in Sources */,
+ A2129BB309AEB58F00724E6C /* PSMProgressIndicator.m in Sources */,
+ A2082A9109EAEB34009AC8BE /* PSMTabDragAssistant.m in Sources */,
+ A2D98B0B0A2B432C0064C6F8 /* PSMUnifiedTabStyle.m in Sources */,
+ A2D98B130A2B43FA0064C6F8 /* NSBezierPath_AMShading.m in Sources */,
+ 3767A91D0A2F7A11005F7522 /* PSMTabDragWindow.m in Sources */,
+ 3748D19F0B17834D002D71C0 /* PSMTabBarController.m in Sources */,
+ 37A9FB6F0C25FE2B0062045C /* PSMTabDragView.m in Sources */,
+ 37A900A00C279CAD0062045C /* PSMTabDragWindowController.m in Sources */,
+ 347545B10C4944DB003E81B8 /* NSString_AITruncation.m in Sources */,
+ 3482DF100C5BF90700426F15 /* PSMAdiumTabStyle.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 8D1AC96A0486D14A00FE50C9 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 8D1AC96C0486D14A00FE50C9 /* PSMTabBarControlInspector.m in Sources */,
+ 8D1AC96D0486D14A00FE50C9 /* PSMTabBarControlPalette.m in Sources */,
+ A2BEC7DD09C1E80400B8B4B6 /* PSMTabBarControl.m in Sources */,
+ A2BEC7DE09C1E80400B8B4B6 /* PSMTabBarCell.m in Sources */,
+ A2BEC7DF09C1E80400B8B4B6 /* PSMAquaTabStyle.m in Sources */,
+ A2BEC7E009C1E80400B8B4B6 /* PSMMetalTabStyle.m in Sources */,
+ A2BEC7E109C1E80400B8B4B6 /* PSMRolloverButton.m in Sources */,
+ A2BEC7E209C1E80400B8B4B6 /* PSMOverflowPopUpButton.m in Sources */,
+ A2BEC7E309C1E80400B8B4B6 /* PSMProgressIndicator.m in Sources */,
+ A2082A9209EAEB34009AC8BE /* PSMTabDragAssistant.m in Sources */,
+ A2D98B0C0A2B432C0064C6F8 /* PSMUnifiedTabStyle.m in Sources */,
+ A2D98B140A2B43FA0064C6F8 /* NSBezierPath_AMShading.m in Sources */,
+ 3767A91E0A2F7A11005F7522 /* PSMTabDragWindow.m in Sources */,
+ 3748D19D0B17834D002D71C0 /* PSMTabBarController.m in Sources */,
+ 37A9FB700C25FE2B0062045C /* PSMTabDragView.m in Sources */,
+ 37A9009E0C279CAD0062045C /* PSMTabDragWindowController.m in Sources */,
+ 3482DF150C5BF90E00426F15 /* PSMAdiumTabStyle.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ A251BE9D0959BB5B0058BC7F /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ A251BEBA0959BBDF0058BC7F /* AppController.m in Sources */,
+ A251BEBE0959BBE60058BC7F /* FakeModel.m in Sources */,
+ A251BEC10959BBEC0058BC7F /* main.m in Sources */,
+ A2A711BF09E5BF0500D0089B /* WindowController.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ 34FD7C090BA9FB5900BBAA24 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 53DF68FC067E5B5A0090B5B0 /* PSMTabBarControlFramework */;
+ targetProxy = 34FD7C080BA9FB5900BBAA24 /* PBXContainerItemProxy */;
+ };
+ 3767A65D0A2D0C5C005F7522 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = A251BE9F0959BB5B0058BC7F /* TabBarControlDemo */;
+ targetProxy = 3767A65C0A2D0C5C005F7522 /* PBXContainerItemProxy */;
+ };
+ 53DF6903067E5B930090B5B0 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 8D1AC9600486D14A00FE50C9 /* PSMTabBarControl */;
+ targetProxy = 53DF6902067E5B930090B5B0 /* PBXContainerItemProxy */;
+ };
+ 53DF6905067E5B930090B5B0 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 53DF68FC067E5B5A0090B5B0 /* PSMTabBarControlFramework */;
+ targetProxy = 53DF6904067E5B930090B5B0 /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
+/* Begin PBXVariantGroup section */
+ 0259C57EFE90428111CA0C5A /* PSMTabBarControlInspector.nib */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 0259C57FFE90428111CA0C5A /* English */,
+ );
+ name = PSMTabBarControlInspector.nib;
+ sourceTree = "<group>";
+ };
+ 0259C580FE90428111CA0C5A /* PSMTabBarControlPalette.nib */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 0259C581FE90428111CA0C5A /* English */,
+ );
+ name = PSMTabBarControlPalette.nib;
+ sourceTree = "<group>";
+ };
+ 317A8F240C7BF0C20019DEC6 /* MainMenu.nib */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 317A8F250C7BF0C20019DEC6 /* English */,
+ );
+ name = MainMenu.nib;
+ sourceTree = "<group>";
+ };
+ 8D1AC97F0486D23B00FE50C9 /* InfoPlist.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 8D1AC97B0486D23100FE50C9 /* English */,
+ );
+ name = InfoPlist.strings;
+ sourceTree = "<group>";
+ };
+ A2A711B909E5AE1E00D0089B /* Window.nib */ = {
+ isa = PBXVariantGroup;
+ children = (
+ A2A711BA09E5AE1E00D0089B /* English */,
+ );
+ name = Window.nib;
+ sourceTree = "<group>";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ A251BEA40959BB5C0058BC7F /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ COPY_PHASE_STRIP = NO;
+ GCC_C_LANGUAGE_STANDARD = c99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_ENABLE_FIX_AND_CONTINUE = YES;
+ GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
+ GCC_MODEL_TUNING = G5;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h";
+ INFOPLIST_FILE = "TabBarControlDemo-Info.plist";
+ INSTALL_PATH = "$(HOME)/Applications";
+ OTHER_LDFLAGS = (
+ "-framework",
+ Foundation,
+ "-framework",
+ AppKit,
+ );
+ PREBINDING = NO;
+ PRODUCT_NAME = TabBarControlDemo;
+ WRAPPER_EXTENSION = app;
+ ZERO_LINK = NO;
+ };
+ name = Debug;
+ };
+ A251BEA50959BB5C0058BC7F /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ COPY_PHASE_STRIP = YES;
+ GCC_C_LANGUAGE_STANDARD = c99;
+ GCC_ENABLE_FIX_AND_CONTINUE = NO;
+ GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+ GCC_MODEL_TUNING = G5;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h";
+ INFOPLIST_FILE = "TabBarControlDemo-Info.plist";
+ INSTALL_PATH = "$(HOME)/Applications";
+ OTHER_LDFLAGS = (
+ "-framework",
+ Foundation,
+ "-framework",
+ AppKit,
+ );
+ PREBINDING = NO;
+ PRODUCT_NAME = TabBarControlDemo;
+ WRAPPER_EXTENSION = app;
+ ZERO_LINK = NO;
+ };
+ name = Release;
+ };
+ C056398008A954F8003078D8 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ COPY_PHASE_STRIP = NO;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ FRAMEWORK_VERSION = A;
+ GCC_C_LANGUAGE_STANDARD = c99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_ENABLE_FIX_AND_CONTINUE = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = source/Framework_Prefix.pch;
+ INFOPLIST_FILE = "PSMTabBarControlFramework-Info.plist";
+ INSTALL_PATH = "@executable_path/../Frameworks";
+ OTHER_LDFLAGS = (
+ "-seg1addr",
+ 0xb0000000,
+ );
+ PRODUCT_NAME = PSMTabBarControl;
+ ZERO_LINK = NO;
+ };
+ name = Debug;
+ };
+ C056398108A954F8003078D8 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ FRAMEWORK_VERSION = A;
+ GCC_C_LANGUAGE_STANDARD = c99;
+ GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = source/Framework_Prefix.pch;
+ INFOPLIST_FILE = "PSMTabBarControlFramework-Info.plist";
+ INSTALL_PATH = "@executable_path/../Frameworks";
+ OTHER_LDFLAGS = (
+ "-seg1addr",
+ 0xb0000000,
+ );
+ PRODUCT_NAME = PSMTabBarControl;
+ };
+ name = Release;
+ };
+ C056398408A954F8003078D8 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ COPY_PHASE_STRIP = NO;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(FRAMEWORK_SEARCH_PATHS)",
+ "$(SRCROOT)/../../../Library/Frameworks",
+ );
+ GCC_C_LANGUAGE_STANDARD = c99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_ENABLE_FIX_AND_CONTINUE = YES;
+ GCC_MODEL_TUNING = G5;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = source/PSMTabBarControl_Prefix.pch;
+ INFOPLIST_FILE = Info.plist;
+ INSTALL_PATH = "$(HOME)/Library/Palettes";
+ PRODUCT_NAME = PSMTabBarControl;
+ WRAPPER_EXTENSION = palette;
+ ZERO_LINK = NO;
+ };
+ name = Debug;
+ };
+ C056398508A954F8003078D8 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ARCHS = (
+ ppc,
+ i386,
+ );
+ FRAMEWORK_SEARCH_PATHS = "$(FRAMEWORK_SEARCH_PATHS)";
+ GCC_C_LANGUAGE_STANDARD = c99;
+ GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+ GCC_MODEL_TUNING = G5;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = source/PSMTabBarControl_Prefix.pch;
+ INFOPLIST_FILE = Info.plist;
+ INSTALL_PATH = "$(HOME)/Library/Palettes";
+ PRODUCT_NAME = PSMTabBarControl;
+ SDKROOT = macosx10.4;
+ WRAPPER_EXTENSION = palette;
+ };
+ name = Release;
+ };
+ C056398808A954F8003078D8 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ COPY_PHASE_STRIP = NO;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_ENABLE_FIX_AND_CONTINUE = YES;
+ GCC_MODEL_TUNING = G5;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ PRODUCT_NAME = All;
+ WARNING_CFLAGS = (
+ "-Wmost",
+ "-Wno-four-char-constants",
+ "-Wno-unknown-pragmas",
+ );
+ ZERO_LINK = YES;
+ };
+ name = Debug;
+ };
+ C056398908A954F8003078D8 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ARCHS = (
+ ppc,
+ i386,
+ );
+ GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+ GCC_MODEL_TUNING = G5;
+ PRODUCT_NAME = All;
+ WARNING_CFLAGS = (
+ "-Wmost",
+ "-Wno-four-char-constants",
+ "-Wno-unknown-pragmas",
+ );
+ };
+ name = Release;
+ };
+ C056398C08A954F8003078D8 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ GCC_MODEL_TUNING = G5;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ PREBINDING = NO;
+ SDKROOT = macosx10.5;
+ };
+ name = Debug;
+ };
+ C056398D08A954F8003078D8 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ARCHS = (
+ ppc,
+ i386,
+ x86_64,
+ );
+ GCC_MODEL_TUNING = G5;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ PREBINDING = NO;
+ SDKROOT = macosx10.5;
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ A251BEA30959BB5C0058BC7F /* Build configuration list for PBXNativeTarget "TabBarControlDemo" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ A251BEA40959BB5C0058BC7F /* Debug */,
+ A251BEA50959BB5C0058BC7F /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ C056397F08A954F8003078D8 /* Build configuration list for PBXNativeTarget "PSMTabBarControlFramework" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ C056398008A954F8003078D8 /* Debug */,
+ C056398108A954F8003078D8 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ C056398308A954F8003078D8 /* Build configuration list for PBXNativeTarget "PSMTabBarControl" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ C056398408A954F8003078D8 /* Debug */,
+ C056398508A954F8003078D8 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ C056398708A954F8003078D8 /* Build configuration list for PBXAggregateTarget "All" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ C056398808A954F8003078D8 /* Debug */,
+ C056398908A954F8003078D8 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ C056398B08A954F8003078D8 /* Build configuration list for PBXProject "PSMTabBarControl" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ C056398C08A954F8003078D8 /* Debug */,
+ C056398D08A954F8003078D8 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 0259C573FE90428111CA0C5A /* Project object */;
+}
7 PSMTabBarControl.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Workspace
+ version = "1.0">
+ <FileRef
+ location = "self:PSMTabBarControl.xcodeproj">
+ </FileRef>
+</Workspace>
22 PSMTabBarControlFramework-Info.plist
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleExecutable</key>
+ <string>PSMTabBarControl</string>
+ <key>CFBundleIdentifier</key>
+ <string>com.positivespinmedia.PSMTabBarControlFramework</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundlePackageType</key>
+ <string>FMWK</string>
+ <key>CFBundleSignature</key>
+ <string>PSM1</string>
+ <key>CFBundleVersion</key>
+ <string>1.1</string>
+ <key>NSPrincipalClass</key>
+ <string>PSMTabBarControl</string>
+</dict>
+</plist>
186 ReadMe.rtfd/TXT.rtf
@@ -0,0 +1,186 @@
+{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf380
+{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;\f1\fswiss\fcharset77 Helvetica;\f2\fswiss\fcharset77 Helvetica-Oblique;
+\f3\fnil\fcharset77 Monaco;}
+{\colortbl;\red255\green255\blue255;\red118\green15\blue80;\red0\green0\blue255;\red35\green110\blue37;
+}
+{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid1}}
+{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}}
+\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc\pardirnatural
+
+\f0\b\fs24 \cf0 \
+PSMTabBarControl (and related classes)\
+
+\f1\b0 developed by John Pannell, Positive Spin Media\
+\
+as seen in the super-cool app...\
+\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc\pardirnatural
+\cf0 {{\NeXTGraphic startpage.gif \width7200 \height2820
+}�}\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc\pardirnatural
+\cf0 \
+\
+\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
+\cf0 This source code and all related materials are released under the BSD license, which is explained at the end of this document, along with some other legalese. I've made my best effort to make everything bug free, but please let me know of any bugs found or suggestions you have: johnp@positivespinmedia.com.\
+\
+
+\f0\b Purpose
+\f1\b0 \
+\
+PSMTabBarControl seeks to provide developers with a high-quality, easy to use GUI to manage an NSTabView (or subclasses) in a manner similar to Safari's tabbed browsing implementation. It attempts to add a few features as well. Here's what you get:\
+\
+
+\f0\b The look:
+\f1\b0 a control/cell architecture that draws the expected tab appearance below a toolbar or similar view. Included styles work consistently in Aqua, Metal, or customized metal variations by basing fills on the window's background color. Includes drawing of a close button, and rollover states for the close button and tab cell. Also provides pop-up button and menu when tabs overflow available space, and support for individual tab progress indicators, icons, and object counters. Tabs can be drawn sized to fit the string content of the label, or uniformly sized.\
+\
+
+\f0\b The functionality:
+\f1\b0 Close button removes tabs, click on a tab cell selects. Indicators start, stop, and hide if things are hooked up correctly.\
+\
+
+\f0\b Extras:
+\f1\b0 Supports multi-window drag-and-drop reordering of the tabs with aqua-licious animation.\
+\
+
+\f0\b Files
+\f1\b0 \
+\
+Your project will need the files in the "Framework" folder of the project. The actual framework packages these (and some images) up nicely for you, if desired. Please look over the "TabBarControlDemo" target of the source code project to see exactly what is needed to get everything to build. Building and playing with the demo is also a good way to get a feel for the features provided by these classes.\
+\
+
+\f0\b Usage
+\f1\b0 \
+\
+Simply drag a custom view object from the views palette in IB, read the PSMTabBarControl class into IB, and set the view's custom class to PSMTabBarControl. Then connect the control's tabview outlet to the tab view being controlled, and make the control the delegate of the tab view. You can also connect the control's "partner view" outlet to another view that will resize in response to the hide/show behavior of the control.\
+\
+Alternately, you can build the Palette subproject and add the built IB palette to Interface Builder. In this case, creating and configuring an instance is as easy and drag, drop, and a few clicks. A demo movie and the built palette are available in a separate download from my website: http://www.positivespinmedia.com/dev/PSMTabBarControl.html\
+\
+
+\f2\i Please read the PSMTabBarControlDoc.html file in the documentation folder of this project. It provides an Apple-ish page describing the interface and usage of this object.
+\f1\i0 \
+\
+
+\f0\b Patterns of Use
+\f1\b0 \
+\
+There are a few random notes I can think of for usage guidelines...\
+\
+- You may see a line between the toolbar and the control in your app; it is part of the toolbar. In Tiger, you can eliminate the appearance of this line:\
+\
+\pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\tx10560\tx11520\tx12480\tx13440\tx14400\tx15360\tx16320\tx17280\tx18240\tx19200\tx20160\tx21120\tx22080\tx23040\tx24000\tx24960\tx25920\tx26880\tx27840\tx28800\tx29760\tx30720\tx31680\tx32640\tx33600\tx34560\tx35520\tx36480\tx37440\tx38400\tx39360\tx40320\tx41280\tx42240\tx43200\tx44160\tx45120\tx46080\tx47040\tx48000\tx48960\tx49920\tx50880\tx51840\tx52800\tx53760\tx54720\tx55680\tx56640\tx57600\tx58560\tx59520\tx60480\tx61440\tx62400\tx63360\tx64320\tx65280\tx66240\tx67200\tx68160\tx69120\tx70080\tx71040\tx72000\tx72960\tx73920\tx74880\tx75840\tx76800\tx77760\tx78720\tx79680\tx80640\tx81600\tx82560\tx83520\tx84480\tx85440\tx86400\tx87360\tx88320\tx89280\tx90240\tx91200\tx92160\tx93120\tx94080\tx95040\tx96000\ql\qnatural\pardirnatural
+
+\f3\fs20 \cf0 \CocoaLigature0 SInt32 MacVersion;\
+\pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\tx10560\tx11520\tx12480\tx13440\tx14400\tx15360\tx16320\tx17280\tx18240\tx19200\tx20160\tx21120\tx22080\tx23040\tx24000\tx24960\tx25920\tx26880\tx27840\tx28800\tx29760\tx30720\tx31680\tx32640\tx33600\tx34560\tx35520\tx36480\tx37440\tx38400\tx39360\tx40320\tx41280\tx42240\tx43200\tx44160\tx45120\tx46080\tx47040\tx48000\tx48960\tx49920\tx50880\tx51840\tx52800\tx53760\tx54720\tx55680\tx56640\tx57600\tx58560\tx59520\tx60480\tx61440\tx62400\tx63360\tx64320\tx65280\tx66240\tx67200\tx68160\tx69120\tx70080\tx71040\tx72000\tx72960\tx73920\tx74880\tx75840\tx76800\tx77760\tx78720\tx79680\tx80640\tx81600\tx82560\tx83520\tx84480\tx85440\tx86400\tx87360\tx88320\tx89280\tx90240\tx91200\tx92160\tx93120\tx94080\tx95040\tx96000\ql\qnatural\pardirnatural
+\cf2 if\cf0 (Gestalt(gestaltSystemVersion, &MacVersion) == noErr)\{\
+ \cf2 if\cf0 (MacVersion >= \cf3 0x1040\cf0 )\{\
+ \cf4 // this call is Tiger only\cf0 \
+ [toolbar setShowsBaselineSeparator:\cf2 NO\cf0 ];\
+ \}\
+\}\
+\
+\pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\tx10560\tx11520\tx12480\tx13440\tx14400\tx15360\tx16320\tx17280\tx18240\tx19200\tx20160\tx21120\tx22080\tx23040\tx24000\tx24960\tx25920\tx26880\tx27840\tx28800\tx29760\tx30720\tx31680\tx32640\tx33600\tx34560\tx35520\tx36480\tx37440\tx38400\tx39360\tx40320\tx41280\tx42240\tx43200\tx44160\tx45120\tx46080\tx47040\tx48000\tx48960\tx49920\tx50880\tx51840\tx52800\tx53760\tx54720\tx55680\tx56640\tx57600\tx58560\tx59520\tx60480\tx61440\tx62400\tx63360\tx64320\tx65280\tx66240\tx67200\tx68160\tx69120\tx70080\tx71040\tx72000\tx72960\tx73920\tx74880\tx75840\tx76800\tx77760\tx78720\tx79680\tx80640\tx81600\tx82560\tx83520\tx84480\tx85440\tx86400\tx87360\tx88320\tx89280\tx90240\tx91200\tx92160\tx93120\tx94080\tx95040\tx96000\ql\qnatural\pardirnatural
+
+\f1\fs24 \cf0 - In general, there is no reason for your app objects to communicate (outside of configuration) with the PSMTabBarControl at all. Changes made to the NSTabView instance programmatically should be directed at the NSTabView instance itself, and the control will update to reflect the changes made.\
+\
+- Your app might want to receive tab view delegate notifications in order to perform some actions. No problem, simply make the desired object the delegate of the PSMTabBarControl instance... it passes along all tab view notifications. Note that it uses these notifications to make changes itself - read the source code to make sure you aren't tripping over something.\
+\
+- The control creates bindings between each cell's progress indicator and the represented NSTabViewItem's identifier object, if it can. In my app design, I set an instance of NSObjectController as the NSTabViewItem's identifier, and then bind to the "isProcessing" key of the controller's content object. All of this can be seen in the source of the demo app...\
+\
+- The control can be set to hide itself when there is only a single tab, and can also be told to hide/show on demand. It can animate to appear and disappear, and will resize something to compensate for the missing window real estate. By default, it will resize the window, but you can also connect the "partnerView" outlet in IB to specify another view to resize to take up the missing space. Note that this takes some attention to sizing springs and wires to get right, and complex views may need a container view to achieve the desired effect.\
+\
+- The control can be configured to draw an attractive "Add Tab" button at the end of the tab cells. Unfortunately, the button is all looks and no brains - it has no idea what your app wants to do when adding a tab. If you configure your app to show the add tab button, you need to hook up the add tab button to the proper target with the proper selector. Something like this will do nicely in your app controller's awakeFromNib:\
+\
+\pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\tx10560\tx11520\tx12480\tx13440\tx14400\tx15360\tx16320\tx17280\tx18240\tx19200\tx20160\tx21120\tx22080\tx23040\tx24000\tx24960\tx25920\tx26880\tx27840\tx28800\tx29760\tx30720\tx31680\tx32640\tx33600\tx34560\tx35520\tx36480\tx37440\tx38400\tx39360\tx40320\tx41280\tx42240\tx43200\tx44160\tx45120\tx46080\tx47040\tx48000\tx48960\tx49920\tx50880\tx51840\tx52800\tx53760\tx54720\tx55680\tx56640\tx57600\tx58560\tx59520\tx60480\tx61440\tx62400\tx63360\tx64320\tx65280\tx66240\tx67200\tx68160\tx69120\tx70080\tx71040\tx72000\tx72960\tx73920\tx74880\tx75840\tx76800\tx77760\tx78720\tx79680\tx80640\tx81600\tx82560\tx83520\tx84480\tx85440\tx86400\tx87360\tx88320\tx89280\tx90240\tx91200\tx92160\tx93120\tx94080\tx95040\tx96000\ql\qnatural\pardirnatural
+
+\f3\fs20 \cf4 // hook up add tab button\cf0 \
+[[tabBar addTabButton] setTarget:\cf2 self\cf0 ];\
+[[tabBar addTabButton] setAction:\cf2 @selector\cf0 (addNewTab:)];
+\f1\fs24 \
+\
+- The tabs have some sizing options: You can specify the minimum width, maximum width, and optimum width, as well as spcifying if the tabs should size to fit their label or not. The sizing bahavior of the tabs is as follows: If "size to fit" is specified, then tabs will be generated to fit the label, but will never exceed the specified max or min widths. Once the end of the control is reached, the overflow menu will appear as tabs are added; the last tab will squeeze in if it can, or the remaining tabs will stretch to occupy the full control. If "size to fit" is not specified, then all successive tabs will appear at the optimum width. Once the end of the control is reached, adding new tabs will cause all tabs to shrink to accomodate, until the minumum width is reached, and then the overflow menu will be used; max width is ignored in this case. Hopefully that all makes sense :-)\
+\
+- PSMTabBarControl will load the existing tabs from the tabView outlet at startup. However, many of the advanced features (icon display, progress indicator, object count) rely on binding to a controller that is likely not set up in IB. Solution? Nuke the existing tabs in the NSTabView and add new ones, configured the way you like. The demo app does this in the awakeFromNib: method of the app controller.\
+\
+- As a design choice, I elected to keep a cell object around until its tab was closed, instead of "churning" cell objects in each update cycle. Each cell keeps its NSTabViewItem as its representedObject and maintains reference that way, rather than by any index. As a result of this, drag-and-drop reordering of tabs does not change the underlying NSTabView instance at all. All that to say: don't rely on numerical indices if communicating with both the control and the tab view - the indices may not correlate if the user moved some tabs around (and remember - you shouldn't need to communicate with the control anyway :-). The Shiira Project, from which I gained much insight and inspiration from for this UI element, elected to scrap and rebuild the array of cells each time through the update cycle, and rely on indices to correlate between cells and NSTabViewItems. I felt the representedObject route was cleaner, and preferred not to churn objects.\
+\
+\pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\tx10560\tx11520\tx12480\tx13440\tx14400\tx15360\tx16320\tx17280\tx18240\tx19200\tx20160\tx21120\tx22080\tx23040\tx24000\tx24960\tx25920\tx26880\tx27840\tx28800\tx29760\tx30720\tx31680\tx32640\tx33600\tx34560\tx35520\tx36480\tx37440\tx38400\tx39360\tx40320\tx41280\tx42240\tx43200\tx44160\tx45120\tx46080\tx47040\tx48000\tx48960\tx49920\tx50880\tx51840\tx52800\tx53760\tx54720\tx55680\tx56640\tx57600\tx58560\tx59520\tx60480\tx61440\tx62400\tx63360\tx64320\tx65280\tx66240\tx67200\tx68160\tx69120\tx70080\tx71040\tx72000\tx72960\tx73920\tx74880\tx75840\tx76800\tx77760\tx78720\tx79680\tx80640\tx81600\tx82560\tx83520\tx84480\tx85440\tx86400\tx87360\tx88320\tx89280\tx90240\tx91200\tx92160\tx93120\tx94080\tx95040\tx96000\ql\qnatural\pardirnatural
+
+\f0\b \cf0 Improvements?
+\f1\b0 \
+\
+Pipe up if you think of something you'd like to see; here's my current list:\
+\
+- "Pop-up" tabs - like pop-up folders in the finder, in case you want to drag to a destination in another tab.\
+- Support for the
+\f3\fs22 \CocoaLigature1 NSUnifiedTitleAndToolbarWindowMask
+\f1\fs24 \CocoaLigature0 "unified" window appearance. (Help! I really searched around to try to make this work... the color pattern of the title and toolbar seem to be top secret! The new "unified" style is an excellent replication of a unified look, but isn't "built from" the unified appearance like the metal is.)\
+- During multi-window drag, having a "drag window/image" that shows the represented view getting moved to the other window.\
+- During multi-window drag, support for dragging out solo tabs to consolidate in another window, removing the source window in the process.\
+- Support vertical as well as horizontal alignment.\
+\
+
+\f0\b Version History
+\f1\b0 \
+\
+Version 1.3 (May 29, 2006)\
+- new feature: Unified tab style, compliments of Keith Blount\
+- new feature: allow multi-window drag config option (again from Keith).\
+- fixed bug: Palette installation/usage instructions were wrong.\
+- enhancement: exposed the
+\f3\fs20 representedTabViewItems
+\f1\fs24 method, which can be used to retrieve the order of the tabs as displayed in the control, since the underlying NSTabView does not get reordered during drag and drop rearrangement.\
+\
+Version 1.2 (April 20, 2006)\
+- new feature: multi-window drag and drop support.\
+- bug fixed: zombie issue with tabView:didCloseTabViewItem\
+- bugs fixed: some drawing issues around the progress indicators in tabs, and the add tab button.\
+- enhancement: the hide/show animation has been improved with less "flickering" of progress indicators during the hide and show.\
+\
+Version 1.1.2 (April 5, 2006)\
+- fixed bug: tabs of non-integer width resulted in occasional anti-aliased drawing issues of dividers between tabs in the Metal style (Thanks, Kent).\
+- added feature: delegate can now respond to -tabView:shouldCloseTabViewItem: and -tabView:willCloseTabViewItem:, and -tabView:didCloseTabViewItem: messages, so your app can take care of any needed setup/cleanup for these actions.\
+- fixed bug: tab close buttons now show down state when pressed down.\
+\
+Version 1.1.1 (March 16, 2006)\
+- fixed bug: Palette inspector would not reflect state of previously instantiated control. This has been fixed (Thanks, Guillaume).\
+- enhancement: Overflow button now highlights when mouse down (Thanks, Kent).\
+- fixed bug: when set to not close a solo tab, the close button would be hidden for the tab, but could still be closed if you clicked the tab in the right location. This has been fixed (Thanks, malcom).\
+\
+Version 1.1 (March 10, 2006)\
+- Bound the "title" of the cell to the "label" of the source tabview item. Just in case you wanted to change the label on the tab during the running of your application.\
+- PSMTabBarCell factored to support new tab "styles", or appearances in drawing. Now supported are the existing "Metal" style and a new "Aqua" style. Many thanks to David Smith, Seth Willits, and Chris Forsythe for their contributions!\
+- Control can be configured to "Hide for single tab", so it doesn't appear unless there are more than a single tab view present. Features animated show/hide behavior (that can be called anytime, and is called automatically in the case that a single tab exists). The show/hide behavior can also be set up to resize either the window (default) or a selected "partner view" to compensate for the lost height of the tab bar.\
+- Control can be configured for "Can close only tab" behavior. If set to NO, no close button will appear on a lone tab.\
+- Cells can be set to "size to fit", or given uniform min/max/optimum sizes.\
+- Added support for display of an icon and an object count, if the proper app design pattern is followed.\
+- Sweet animated drag-and-drop drawing!\
+- A few drawing bugs surrounding the progress indicators in cells were squished.\
+- New documentation, in case you found this read me a little pithy.\
+\
+Version 1.0 (December 2005)\
+Initial release of safari-like tab implementation.\
+\
+
+\f0\b The standard disavowal of this beautiful mess
+\f1\b0 \
+\
+I should note that portions of this source code were inspired by the Shiira project's implementation of Safari-style tabs. While I made some different design decisions, the drawing and some other aspects are only slight modifications of their excellent work. As such, I note their copyright under their BSD licence:\
+\
+\pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\tx10560\tx11520\tx12480\tx13440\tx14400\tx15360\tx16320\tx17280\tx18240\tx19200\tx20160\tx21120\tx22080\tx23040\tx24000\tx24960\tx25920\tx26880\tx27840\tx28800\tx29760\tx30720\tx31680\tx32640\tx33600\tx34560\tx35520\tx36480\tx37440\tx38400\tx39360\tx40320\tx41280\tx42240\tx43200\tx44160\tx45120\tx46080\tx47040\tx48000\tx48960\tx49920\tx50880\tx51840\tx52800\tx53760\tx54720\tx55680\tx56640\tx57600\tx58560\tx59520\tx60480\tx61440\tx62400\tx63360\tx64320\tx65280\tx66240\tx67200\tx68160\tx69120\tx70080\tx71040\tx72000\tx72960\tx73920\tx74880\tx75840\tx76800\tx77760\tx78720\tx79680\tx80640\tx81600\tx82560\tx83520\tx84480\tx85440\tx86400\tx87360\tx88320\tx89280\tx90240\tx91200\tx92160\tx93120\tx94080\tx95040\tx96000\ql\qnatural\pardirnatural
+
+\f3\fs20 \cf4 Portions of this software Copyright 2004 The Shiira Project. All rights reserved.\
+\pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\tx10560\tx11520\tx12480\tx13440\tx14400\tx15360\tx16320\tx17280\tx18240\tx19200\tx20160\tx21120\tx22080\tx23040\tx24000\tx24960\tx25920\tx26880\tx27840\tx28800\tx29760\tx30720\tx31680\tx32640\tx33600\tx34560\tx35520\tx36480\tx37440\tx38400\tx39360\tx40320\tx41280\tx42240\tx43200\tx44160\tx45120\tx46080\tx47040\tx48000\tx48960\tx49920\tx50880\tx51840\tx52800\tx53760\tx54720\tx55680\tx56640\tx57600\tx58560\tx59520\tx60480\tx61440\tx62400\tx63360\tx64320\tx65280\tx66240\tx67200\tx68160\tx69120\tx70080\tx71040\tx72000\tx72960\tx73920\tx74880\tx75840\tx76800\tx77760\tx78720\tx79680\tx80640\tx81600\tx82560\tx83520\tx84480\tx85440\tx86400\tx87360\tx88320\tx89280\tx90240\tx91200\tx92160\tx93120\tx94080\tx95040\tx96000\ql\qnatural\pardirnatural
+
+\f1\fs24 \cf0 Check them out at: http://hmdt-web.net/shiira/\
+\
+This source code is provided under BSD license, the conditions of which are listed below. I hope you'll make note somewhere in your about window or ReadMe stating the sweet coding goodness of Positive Spin Media and link to the fascinating and informative website at www.positivespinmedia.com\
+\
+\pard\pardeftab720\sa320\ql\qnatural
+\cf0 \CocoaLigature1 Copyright (c) 2005, Positive Spin Media\uc0\u8232 All rights reserved.\
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\
+\pard\tx220\tx720\pardeftab720\li720\fi-720\ql\qnatural
+\ls1\ilvl0\cf0 {\listtext \'a5 }Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\
+{\listtext \'a5 }Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\
+{\listtext \'a5 }Neither the name of Positive Spin Media nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.\
+ \
+\pard\pardeftab720\sa320\ql\qnatural
+\cf0 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\CocoaLigature0 \
+}
BIN  ReadMe.rtfd/startpage.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
24 TabBarControlDemo-Info.plist
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleExecutable</key>
+ <string>${EXECUTABLE_NAME}</string>
+ <key>CFBundleIdentifier</key>
+ <string>com.positivespinmedia.TabBarControlDemo</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>1.1</string>
+ <key>NSMainNibFile</key>
+ <string>MainMenu</string>
+ <key>NSPrincipalClass</key>
+ <string>NSApplication</string>
+</dict>
+</plist>
301 documentation/PSMTabBarControlDoc.html
@@ -0,0 +1,301 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+ <head>
+
+ <TITLE>PSMTabBarControl - Safari-style Tabs (Objective-C)</TITLE>
+
+
+ <LINK REL="stylesheet" TYPE="text/css" HREF="frameset_styles.css">
+
+ </head>
+
+ <BODY bgcolor="#ffffff">
+
+ <h1>PSMTabBarControl</h1><div class="spec_sheet_info_box"><table cellspacing="0" class="specbox">
+<tr><td scope="row"><b><span style="white-space: nowrap;">Inherits from</span></b></td><td><div style="margin-bottom:1px"><a href="file:///Developer/ADC%20Reference%20Library/documentation/Cocoa/Reference/ApplicationKit/ObjC_classic/Classes/NSControl.html#//apple_ref/occ/cl/NSControl" target="_top">NSControl</a> : <a href="file:///Developer/ADC%20Reference%20Library/documentation/Cocoa/Reference/ApplicationKit/ObjC_classic/Classes/NSView.html#//apple_ref/occ/cl/NSView" target="_top">NSView</a> : <a href="file:///Developer/ADC%20Reference%20Library/documentation/Cocoa/Reference/ApplicationKit/ObjC_classic/Classes/NSResponder.html#//apple_ref/occ/cl/NSResponder" target="_top">NSResponder</a> : <a href="file:///Developer/ADC%20Reference%20Library/documentation/Cocoa/Reference/Foundation/ObjC_classic/Classes/NSObject.html#//apple_ref/occ/cl/NSObject" target="_top">NSObject</a></div></td></tr>
+<tr><td scope="row"><b><span style="white-space: nowrap;">Conforms to</span></b></td><td><div style="margin-bottom:1px">
+<span class="content_text"><a href="file:///Developer/ADC%20Reference%20Library/documentation/Cocoa/Reference/Foundation/ObjC_classic/Protocols/NSCoding.html#//apple_ref/occ/intf/NSCoding" target="_top">NSCoding (NSResponder)</a></span><br>
+
+<span class="content_text"><a href="file:///Developer/ADC%20Reference%20Library/documentation/Cocoa/Reference/Foundation/ObjC_classic/Protocols/NSObjectProtocol.html#//apple_ref/occ/intf/NSObject" target="_top">NSObject (NSObject)</a></span><br>
+</div></td></tr>
+<tr><td scope="row"><b><span style="white-space: nowrap;">Declared in</span></b></td><td><div style="margin-bottom:1px"><span class="content_text">PSMTabBarControl.h</span><br>
+</div></td></tr>
+</table></div><br><a name="//apple_ref/doc/uid/20000092-50187" title="Class Description"></a><a name="50187" title="Class Description"></a><h2>Class Description</h2>
+
+<p class="spaceabove">PSMTabBarControl provides a user interface for the management of tabbed views that has an appearance similar to Apple's Safari web browser.<p>
+<p>Internally, PSMTabBarControl uses a custom cell class and supporting style objects to implement its user interface.</p>
+<p>Currently, this object supports "Aqua" and "Metal" tab styles to present an appearance consistent with the rest of your application. Numerous configuration options exist to customize behavior, as outlined below. PSMTabBarControl instances require a few specific connections with other application objects to perform properly at runtime:</p>
+<ul>
+<li><b>The control's "tabView" outlet must be connected to the desired NSTabView instance in Interface Builder, or set programmatically with the setTabView: method.</b></li>
+<li><b>The "delegate" outlet of the NSTabView being controlled must be connected to the instance of PSMTabBarControl, either programmatically or in IB.</b></li>
+<li>Optionally, you may connect the control's "partnerView" outlet to a view that will be resized to compensate when PSMTabBarControl changes size due to hide/show behavior. If no connection is made, PSMTabBarControl will resize the window in response to hide/show messages.</li>
+</ul>
+<p>A PSMTabBarControl instance should occupy the width of the window, and should be precisely 22 pixels in height. It should be resizable in width, but not height. It can be placed at the top or botton of the window (or anywhere in between, if desired).</p>
+<p>Outside of configuring it, your application should have little interaction with this class. The presented tabs will change in conjunction with changes your application makes in the NSTabView being controlled.</p>
+
+<h2>A Usage Pattern</h2>
+
+<p class="spaceabove">PSMTabBarControl becomes even more powerful if your application design matches an expected pattern: the control attempts to bind a number of tab attributes to the NSTabViewItem's identifier object if possible. These visible attributes include a progress indicator, an icon, and an object counter. Additionally, the control binds each tab's title to the label of the represented NSTabViewItem.<p>
+
+<p>Taking advantage of these features requires no glue code on your part, but it does require providing a particular object graph. Here's the basics...</p>
+
+<ul><li>For each tab that is created, your application should have a model object that keeps the state of model attributes: isProcessing (a BOOL), objectCount (an int), and icon (an NSImage). You can pick and choose any number of these to support, or none, at your option.
+<li>Your application should create an NSObjectController to control your model (the model object is the "content" of the NSObjectController instance).
+<li>When you create new tabs (via the NSTabView interface), you should set the object controller instance to be the identifier object of the newly created NSTabViewItem object.</ul>
+
+<p>The demo application included with this project illustrates a very quick way to accomplish these goals. If this pattern is followed, PSMTabBarControl will take care of the rest.</p>
+
+
+<h2>Methods by Task</h2>
+<h3 class="tight">Setting needed connections</h3>
+<dl class="termdef"> <dt><code><a href="#addTabButton">&#8211;&#xA0;setTabView:</a></code></dt><dd><p>Specifies the instance of NSTabView to be controlled.</p></dd></dl>
+
+<dl class="termdef"> <dt><code><a href="#tabView">&#8211;&#xA0;tabView</a></code></dt><dd><p>Returns the instance of NSTabView being controlled.</p></dd></dl>
+
+<h3 class="tight">Setting optional connections</h3>
+<dl class="termdef"> <dt><code><a href="#setPartnerView">&#8211;&#xA0;setPartnerView:</a></code></dt><dd><p>Specifies a view that will resize to compensate for control size changes in response to hide and show messages.</p></dd></dl>
+
+<dl class="termdef"> <dt><code><a href="#partnerView">&#8211;&#xA0;partnerView</a></code></dt><dd><p>Returns the instance of a view that will resize to compensate for control size changes in response to hide and show messages.</p></dd></dl>
+
+<dl class="termdef"> <dt><code><a href="#setDelegate">&#8211;&#xA0;setDelegate:</a></code></dt><dd><p>Specifies an object that will receive delegate messages as passed through from the NSTabView instance.</p></dd></dl>
+
+<dl class="termdef"> <dt><code><a href="#delegate">&#8211;&#xA0;delegate:</a></code></dt><dd><p>Returns the specified delegate object.</p></dd></dl>
+
+<h3 class="tight">Control configuration</h3>
+<dl class="termdef"> <dt><code><a href="#canCloseOnlyTab">&#8211;&#xA0;canCloseOnlyTab</a></code></dt><dd><p>Returns YES if the user is allowed to close a tab when it is the only tab left, NO otherwise.</p></dd></dl>
+
+<dl class="termdef"> <dt><code><a href="#setCanCloseOnlyTab">&#8211;&#xA0;setCanCloseOnlyTab:</a></code></dt><dd><p>Controls whether the receiver will present a close button for a single tab in a tab bar. </p></dd></dl>
+
+<dl class="termdef"> <dt><code><a href="#styleName">&#8211;&#xA0;styleName</a></code></dt><dd><p>Returns the name of the current drawing style. "Aqua", "Metal", and "Unified" are the currently supported options.</p></dd></dl>
+
+<dl class="termdef"> <dt><code><a href="#setStyleNamed">&#8211;&#xA0;setStyleNamed:</a></code></dt><dd><p>Specifies the style in which the tabs and control are drawn. "Aqua", "Metal", and "Unified" are the currently supported options. </p></dd></dl>
+
+<dl class="termdef"> <dt><code><a href="#hideForSingleTab">&#8211;&#xA0;hideForSingleTab</a></code></dt><dd><p>Returns YES if the control will hide if there is only one tab left, NO otherwise.</p></dd></dl>
+
+<dl class="termdef"> <dt><code><a href="#setHideForSingleTab">&#8211;&#xA0;setHideForSingleTab:</a></code></dt><dd><p>Controls whether the receiver will hide when the user closes all but a single tab in a tab bar. </p></dd></dl>
+
+<dl class="termdef"> <dt><code><a href="#showAddTabButton">&#8211;&#xA0;showAddTabButton</a></code></dt><dd><p>Returns YES if the control will display a small "add tab" button at the rightmost end of the tabs, NO otherwise.</p></dd></dl>
+
+<dl class="termdef"> <dt><code><a href="#setShowAddTabButton">&#8211;&#xA0;setShowAddTabButton:</a></code></dt><dd><p>Controls whether the receiver will will display a small "add tab" button at the rightmost end of the tabs. </p></dd></dl>
+
+<dl class="termdef"> <dt><code><a href="#cellMinWidth">&#8211;&#xA0;cellMinWidth</a></code></dt><dd><p>Returns the minimum width (in pixels) that a tab will be allowed to occupy.</p></dd></dl>
+
+<dl class="termdef"> <dt><code><a href="#setCellMinWidth">&#8211;&#xA0;setCellMinWidth:</a></code></dt><dd><p>Specifies the maximum width (in pixels) that a tab will be allowed to occupy.</p></dd></dl>
+
+<dl class="termdef"> <dt><code><a href="#cellMaxWidth">&#8211;&#xA0;cellMaxWidth</a></code></dt><dd><p>Returns the maximum width (in pixels) that a tab will be allowed to occupy.</p></dd></dl>
+
+<dl class="termdef"> <dt><code><a href="#setCellMaxWidth">&#8211;&#xA0;setCellMaxWidth:</a></code></dt><dd><p>Specifies the maximum width (in pixels) that a tab will be allowed to occupy.</p></dd></dl>
+
+<dl class="termdef"> <dt><code><a href="#cellOptimumWidth">&#8211;&#xA0;cellOptimumWidth</a></code></dt><dd><p>Returns the default width (in pixels) that a tab will be allowed to occupy when tabs are drawn with uniform size.</p></dd></dl>
+
+<dl class="termdef"> <dt><code><a href="#setCellMaxWidth">&#8211;&#xA0;setCellMaxWidth:</a></code></dt><dd><p>Specifies the default width (in pixels) that a tab will be allowed to occupy when tabs are drawn with uniform size.</p></dd></dl>
+
+<dl class="termdef"> <dt><code><a href="#sizeCellsToFit">&#8211;&#xA0;sizeCellsToFit</a></code></dt><dd><p>Returns YES if the control will make the tabs sized to fit the content of the tab, NO otherwise.</p></dd></dl>
+
+<dl class="termdef"> <dt><code><a href="#setSizeCellsToFit">&#8211;&#xA0;setSizeCellsToFit:</a></code></dt><dd><p>Controls whether the receiver will make the tabs sized to fit the content of the tab.</p></dd></dl>
+
+<dl class="termdef"> <dt><code><a href="#allowsDragBetweenWindows">&#8211;&#xA0;allowsDragBetweenWindows</a></code></dt><dd><p>Returns YES if the control allows a user to drag a tab to another instance of this control, NO otherwise.</p></dd></dl>
+
+<dl class="termdef"> <dt><code><a href="#setAllowsDragBetweenWindows">&#8211;&#xA0;setAllowsDragBetweenWindows:</a></code></dt><dd><p>Controls whether the receiver will allow a user to drag a tab to another instance of this control.</p></dd></dl>
+
+<h3 class="tight">Internal UI components</h3>
+<dl class="termdef"> <dt><code><a href="#addTabButton">&#8211;&#xA0;addTabButton</a></code></dt><dd><p>Returns an instance of an NSButton subclass that is used to present the "add tab" button. If "showAddTabButton" is YES, developers must use this method to access the button and specify a target and action for the button.</p></dd></dl>
+
+<dl class="termdef"> <dt><code><a href="#overflowPopUpButton">&#8211;&#xA0;overflowPopUpButton</a></code></dt><dd><p>Returns an instance of an NSPopUpButton subclass that is used to present the overflow menu (which shows when there are more tabs than can fit across the control).</p></dd></dl>
+
+<dl class="termdef"> <dt><code><a href="#representedTabViewItems">&#8211;&#xA0;representedTabViewItems</a></code></dt><dd><p>Returns an array of the NSTabViewItems represented by the tabs in the control. Useful if you want to archive the order of the tabs between runs of your program.</p></dd></dl>
+
+<h3 class="tight">Visibility</h3>
+<dl class="termdef"> <dt><code><a href="#hideTabBar">&#8211;&#xA0;hideTabBar:animate:</a></code></dt><dd><p>If desired, obejcts can tell the tab bar to hide (reduce in size to a single pixel line spanning the window) or show, and optionally whether to animate this effect or not.</p></dd></dl>
+
+<h2>Instance Methods</h2>
+
+<a name="addTabButton"></a><h3 class="tight">addTabButton</h3>
+<p class="spaceabove">Returns an instance of an NSButton subclass that is used to present the "add tab" button. If "showAddTabButton" is YES, developers must use this method to access the button and specify a target and action for the button.</p><p class="spaceabovemethod">- (PSMRolloverButton *)addTabButton;</p>
+<h5 class="tight">Discussion</h5><p> If you have configured the control to show the add tab button, you must use this method to access the button and set the target and action for it. Example:</p> <code>[[tabBar addTabButton] setTarget:self];<br>
+[[tabBar addTabButton] setAction:@selector(addNewTab:)];</code> </p>
+<h5 class="tight">See Also</h5><ul class="availability">
+<li class="availability"> <code><a href="#setShowAddTabButton">&#8211;&#xA0;setShowAddTabButton:</a></code><li><li class="availability"> <code><a href="#showAddTabButton">&#8211;&#xA0;showAddTabButton</a></code><li></ul>
+
+<a name="allowsDragBetweenWindows"></a><h3 class="tight">allowsDragBetweenWindows</h3>
+<p class="spaceabove">Returns <code>YES</code> if the control allows a user to drag a tab to another instance of this control, NO otherwise.</p><p class="spaceabovemethod">- (BOOL)allowsDragBetweenWindows</p>
+<h5 class="tight">Discussion</h5><p>The default is <code>YES</code>.</p>
+<h5 class="tight">See Also</h5><ul class="availability">
+<li class="availability"> <code><a href="#setAllowsDragBetweenWindows">&#8211;&#xA0;setAllowsDragBetweenWindows:</a></code><li></ul>
+
+<a name="canCloseOnlyTab"></a><h3 class="tight">canCloseOnlyTab</h3>
+<p class="spaceabove">Returns <code>YES</code> if the receiver has been configured to allow users to close a single remaining tab.</p><p class="spaceabovemethod">- (BOOL)canCloseOnlyTab</p>
+<h5 class="tight">Discussion</h5><p>The default is <code>NO</code>.</p>
+<h5 class="tight">See Also</h5><ul class="availability">
+<li class="availability"> <code><a href="#setCanCloseOnlyTab">&#8211;&#xA0;setCanCloseOnlyTab:</a></code><li></ul>
+
+<a name="cellMaxWidth"></a><h3 class="tight">cellMaxWidth</h3>
+<p class="spaceabove">Returns the maximum width (in pixels) that a tab will be allowed to occupy.</p><p class="spaceabovemethod">- (int)cellMaxWidth</p>
+<h5 class="tight">Discussion</h5><p>The cellMaxWidth value applies to both uniformly sized tabs, and tabs that are sized to fit. No tab will be drawn wider than the specified value.</p>
+<h5 class="tight">See Also</h5><ul class="availability">
+<li class="availability"> <code><a href="#setCellMaxWidth">&#8211;&#xA0;setCellMaxWidth:</a></code><li><li class="availability"> <code><a href="#cellMinWidth">&#8211;&#xA0;cellMinWidth</a></code><li class="availability"> <code><a href="#cellOptimumWidth">&#8211;&#xA0;cellOptimumWidth</a></code><li></ul>
+
+<a name="cellMinWidth"></a><h3 class="tight">cellMinWidth</h3>
+<p class="spaceabove">Returns the minimum width (in pixels) that a tab will be allowed to occupy.</p><p class="spaceabovemethod">- (int)cellMinWidth</p>
+<h5 class="tight">Discussion</h5><p>The cellMinWidth value applies only to uniformly sized tabs. No tab will be drawn smaller than the specified value. Size-to-fit tabs ignore this value, and are made just small enough to fit their content.</p>
+<h5 class="tight">See Also</h5><ul class="availability">
+<li class="availability"> <code><a href="#setCellMinWidth">&#8211;&#xA0;setCellMinWidth:</a></code><li><li class="availability"> <code><a href="#cellMaxWidth">&#8211;&#xA0;cellMaxWidth</a></code><li class="availability"> <code><a href="#cellOptimumWidth">&#8211;&#xA0;cellOptimumWidth</a></code><li></ul>
+
+<a name="cellOptimumWidth"></a><h3 class="tight">cellOptimumWidth</h3>
+<p class="spaceabove">Returns the width (in pixels) that a tab will be made to occupy if the tabs are uniformly sized.</p><p class="spaceabovemethod">- (int)cellOptimumWidth</p>
+<h5 class="tight">Discussion</h5><p>The cellOptimumWidth value applies only to uniformly sized tabs. All tabs will be drawn at the specified value. Size-to-fit tabs ignore this value, and are made just small enough to fit their content.</p>
+<h5 class="tight">See Also</h5><ul class="availability">
+<li class="availability"> <code><a href="#setCellOptimumWidth">&#8211;&#xA0;setCellOptimumWidth:</a></code><li><li class="availability"> <code><a href="#cellMaxWidth">&#8211;&#xA0;cellMaxWidth</a></code><li class="availability"> <code><a href="#cellMinWidth">&#8211;&#xA0;cellMinWidth</a></code><li></ul>
+
+<a name="delegate"></a><h3 class="tight">delegate</h3>
+<p class="spaceabove">Returns the object that will be sent passed-through NSTabView delegate messages.</p><p class="spaceabovemethod">- (id)delegate</p>
+<h5 class="tight">See Also</h5><ul class="availability">
+<li class="availability"> <code><a href="#setDelegate">&#8211;&#xA0;setDelegate:</a></code><li></ul>
+
+<a name="hideForSingleTab"></a><h3 class="tight">hideForSingleTab</h3>
+<p class="spaceabove">Returns <code>YES</code> if the receiver has been configured to hide if there is a single remaining tab.</p><p class="spaceabovemethod">- (BOOL)hideForSingleTab</p>
+<h5 class="tight">Discussion</h5><p>The default is <code>NO</code>.</p>
+<h5 class="tight">See Also</h5><ul class="availability">
+<li class="availability"> <code><a href="#setHideForSingleTab">&#8211;&#xA0;setHideForSingleTab:</a></code><li></ul>
+
+<a name="hideTabBar"></a><h3 class="tight">hideTabBar:animate:</h3>
+<p class="spaceabove"><p>If desired, obejcts can tell the tab bar to hide (reduce in size to a single pixel line spanning the window) or show, and optionally whether to animate this effect or not.</p></p><p class="spaceabovemethod">- (void)hideTabBar:(BOOL)hide animate:(BOOL)animate</p>
+<h5 class="tight">Discussion</h5><p> If <i>hide</i> is <code>YES</code> the control will shrink to a single pixel line spanning the window; otherwise the control will expand to its normal appearance. If <i>animate</i> is <code>YES</code>, the shrinking and expanding will happen in a visible animation; otherwise the transition will be instant. There is no effect if the control is already in the specified state.</p>
+
+<a name="overflowPopUpButton"></a><h3 class="tight">overflowPopUpButton</h3>
+<p class="spaceabove">Returns an instance of an NSPopUpButton subclass that is used to present the overflow menu. </p><p class="spaceabovemethod">- (PSMOverflowPopUpButton *)overflowPopUpButton;</p>
+<h5 class="tight">Discussion</h5><p> This method could be used to modify the button or menu if desired.</p>
+
+<a name="partnerView"></a><h3 class="tight">partnerView</h3>
+<p class="spaceabove">Returns the object that will be resized to compensate for the changing size of the control during hide/show behavior.</p><p class="spaceabovemethod">- (id)partnerView</p>
+<h5 class="tight">Discussion</h5><p> If a partnerView has not been specified, the window will be resized during hide/show.</p>
+<h5 class="tight">See Also</h5><ul class="availability">
+<li class="availability"> <code><a href="#setPartnerView">&#8211;&#xA0;setPartnerView:</a></code><li></ul>
+
+<a name="representedTabViewItems"></a><h3 class="tight">representedTabViewItems</h3>
+<p class="spaceabove">Returns an array of NSTabViewItems, ordered according to the display order of the tabs in the control. </p><p class="spaceabovemethod">- (NSMutableArray *)representedTabViewItems;</p>
+<h5 class="tight">Discussion</h5><p> This method could be used archive the order of the tabs between application runs. When the user reorders tabs via drag and drop, the represented NSTabView does <i>not</i> change order.</p>
+
+<a name="setAllowsDragBetweenWindows"></a><h3 class="tight">setAllowsDragBetweenWindows</h3>
+<p class="spaceabove">If set to <code>YES</code>, the receiver is configured to allow users to drag a tab to an instance of PSMTabBarControl in another window.</p><p class="spaceabovemethod">- (void)setAllowsDragBetweenWindows:(BOOL)value</p>
+<h5 class="tight">Discussion</h5><p>The default is <code>YES</code>.</p>
+<h5 class="tight">See Also</h5><ul class="availability">
+<li class="availability"> <code><a href="#allowsDragBetweenWindows">&#8211;&#xA0;allowsDragBetweenWindows:</a></code><li></ul>
+
+<a name="setCanCloseOnlyTab"></a><h3 class="tight">setCanCloseOnlyTab:</h3>
+<p class="spaceabove">If set to <code>YES</code>, the receiver is configured to allow users to close a single remaining tab.</p><p class="spaceabovemethod">- (void)setCanCloseOnlyTab:(BOOL)value</p>
+<h5 class="tight">Discussion</h5><p>The default is <code>NO</code>.</p>
+<h5 class="tight">See Also</h5><ul class="availability">
+<li class="availability"> <code><a href="#canCloseOnlyTab">&#8211;&#xA0;canCloseOnlyTab:</a></code><li></ul>
+
+<a name="setCellMaxWidth"></a><h3 class="tight">setCellMaxWidth:</h3>
+<p class="spaceabove">Specifies the maximum width (in pixels) that a tab will be allowed to occupy.</p><p class="spaceabovemethod">- (void)setCellMaxWidth:(int)value</p>
+<h5 class="tight">Discussion</h5><p> No tab will be drawn any wider than the specified value.</p>
+<h5 class="tight">See Also</h5><ul class="availability">
+<li class="availability"> <code><a href="#cellMaxWidth">&#8211;&#xA0;cellMaxWidth</a></code><li></ul>
+
+<a name="setCellMinWidth"></a><h3 class="tight">setCellMinWidth:</h3>
+<p class="spaceabove">Specifies the minimum width (in pixels) that a tab will be allowed to occupy.</p><p class="spaceabovemethod">- (void)setCellMinWidth:(int)value</p>
+<h5 class="tight">Discussion</h5><p> No tab will be drawn any smaller than the specified value. This value is ignored when drawing in size-to-fit; tabs are made just small enough to fit their content.</p>
+<h5 class="tight">See Also</h5><ul class="availability">
+<li class="availability"> <code><a href="#cellMinWidth">&#8211;&#xA0;cellMinWidth</a></code><li></ul>
+
+<a name="setCellOptimumWidth"></a><h3 class="tight">setCellOptimumWidth:</h3>
+<p class="spaceabove">Specifies the width (in pixels) that a tab will occupy when tabs are uniformly sized.</p><p class="spaceabovemethod">- (void)setCellOptimumWidth:(int)value</p>
+<h5 class="tight">Discussion</h5><p> This value is ignored when drawing in size-to-fit; tabs are made just small enough to fit their content.</p>
+<h5 class="tight">See Also</h5><ul class="availability">
+<li class="availability"> <code><a href="#cellOptimumWidth">&#8211;&#xA0;cellOptimumWidth</a></code><li></ul>
+
+<a name="setDelegate"></a><h3 class="tight">setDelegate:</h3>
+<p class="spaceabove">Specifies an object that will receive delegate messages as passed through from the NSTabView instance.</p><p class="spaceabovemethod">- (void)setDelegate:(id)object</p>
+<h5 class="tight">See Also</h5><ul class="availability">
+<li class="availability"> <code><a href="#delegate">&#8211;&#xA0;delegate:</a></code><li></ul>
+
+<a name="setHideForSingleTab"></a><h3 class="tight">setHideForSingleTab:</h3>
+<p class="spaceabove">If set to <code>YES</code>, the receiver is configured to hide when there is a single remaining tab.</p><p class="spaceabovemethod">- (void)setHideForSingleTab:(BOOL)value</p>
+<h5 class="tight">Discussion</h5><p>The default is <code>NO</code>.</p>
+<h5 class="tight">See Also</h5><ul class="availability">
+<li class="availability"> <code><a href="#hideForSingleTab">&#8211;&#xA0;hideForSingleTab</a></code><li></ul>
+
+<a name="setPartnerView"></a><h3 class="tight">setPartnerView:</h3>
+<p class="spaceabove">Specifies a view that will resize to compensate for control size changes in response to hide and show messages.</p><p class="spaceabovemethod">- (void)setPartnerView:(id)view</p>
+<h5 class="tight">Discussion</h5><p>if <i>nil</i>, the control will resize the window in response to hide/show messages.</p>
+<h5 class="tight">See Also</h5><ul class="availability">
+<li class="availability"> <code><a href="#partnerView">&#8211;&#xA0;partnerView</a></code><li></ul>
+
+<a name="setStyleNamed"></a><h3 class="tight">setStyleNamed:</h3>
+<p class="spaceabove">Specifies the style in which the tabs and control are drawn. </p><p class="spaceabovemethod">- (void)setStyleNamed:(NSString *)name</p>
+<h5 class="tight">Discussion</h5><p>"Aqua" and "Metal" are the currently supported options.</p>
+<h5 class="tight">See Also</h5><ul class="availability">
+<li class="availability"> <code><a href="#styleName">&#8211;&#xA0;styleName</a></code><li></ul>
+
+<a name="setShowAddTabButton"></a><h3 class="tight">setShowAddTabButton:</h3>
+<p class="spaceabove">Controls whether the receiver will will display a small "add tab" button at the rightmost end of the tabs. </p><p class="spaceabovemethod">- (void)setShowAddTabButton:(BOOL)value</p>
+<h5 class="tight">Discussion</h5><p>Default is <code>NO</code>.</p>
+<h5 class="tight">See Also</h5><ul class="availability">
+<li class="availability"> <code><a href="#showAddTabButton">&#8211;&#xA0;showAddTabButton</a></code><li></ul>
+
+<a name="setSizeCellsToFit"></a><h3 class="tight">setSizeCellsToFit:</h3>
+<p class="spaceabove">Controls whether the receiver will make the tabs sized to fit the content of the tab. </p><p class="spaceabovemethod">- (void)setSizeCellsToFit:(BOOL)value</p>
+<h5 class="tight">Discussion</h5><p>Default is <code>NO</code>.</p>
+<h5 class="tight">See Also</h5><ul class="availability">
+<li class="availability"> <code><a href="#sizeCellsToFit">&#8211;&#xA0;sizeCellsToFit</a></code><li></ul>
+
+<a name="setTabView"></a><h3 class="tight">setTabView:</h3>
+<p class="spaceabove">Specifies the instance of NSTabView to be controlled. </p><p class="spaceabovemethod">- (void)setTabView:(NSTabView *)view</p>
+<h5 class="tight">Discussion</h5><p>This class will not function properly without this outlet being set.</p>
+<h5 class="tight">See Also</h5><ul class="availability">
+<li class="availability"> <code><a href="#tabView">&#8211;&#xA0;tabView</a></code><li></ul>
+
+<a name="sizeCellsToFit"></a><h3 class="tight">sizeCellsToFit</h3>
+<p class="spaceabove">Returns YES if the control will make the tabs sized to fit the content of the tab, NO otherwise.</p><p class="spaceabovemethod"- (BOOL)sizeCellsToFit</p>
+<h5 class="tight">Discussion</h5><p>The default is <code>NO</code>.</p>
+<h5 class="tight">See Also</h5><ul class="availability">
+<li class="availability"> <code><a href="#setSizeCellsToFit">&#8211;&#xA0;setSizeCellsToFit:</a></code><li></ul>
+
+<a name="styleName"></a><h3 class="tight">styleName:</h3>
+<p class="spaceabove">Returns the name of the current drawing style. </p><p class="spaceabovemethod">- (NSString *)styleName</p>
+<h5 class="tight">Discussion</h5><p>"Aqua" and "Metal" are the currently supported options.</p>
+<h5 class="tight">See Also</h5><ul class="availability">
+<li class="availability"> <code><a href="#setStyleNamed">&#8211;&#xA0;setStyleNamed:</a></code><li></ul>
+
+<a name="tabView"></a><h3 class="tight">tabView:</h3>
+<p class="spaceabove">Returns the instance of NSTabView being controlled. </p><p class="spaceabovemethod">- (NSTabView *)tabView</p>
+<h5 class="tight">Discussion</h5><p>This class will not function properly if this object is <i>nil</i>.</p>
+<h5 class="tight">See Also</h5><ul class="availability">
+<li class="availability"> <code><a href="#setTabView">&#8211;&#xA0;setTabView</a></code><li></ul>
+
+<h2>Delegate Methods</h2>
+
+<p class="spaceabove">You application controller can keep track of activity from the tab view and the user via the following delegate methods.<p>
+
+<a name="shouldCloseTabViewItem"></a><h3 class="tight">tabView:shouldCloseTabViewItem:</h3>
+<p class="spaceabove">Sent when a user clicks the close button on a tab. </p><p class="spaceabovemethod">- (BOOL)tabView:(NSTabView *)tabView shouldCloseTabViewItem:(NSTabViewItem *)tabViewItem</p>
+<h5 class="tight">Discussion</h5><p>If you return <code>NO</code>, the tab will not be closed. Please make sure to alert the user as to why with a sheet or dialog.</p>
+
+<a name="willCloseTabViewItem"></a><h3 class="tight">tabView:willCloseTabViewItem:</h3>
+<p class="spaceabove">Sent when tab is about to be closed. </p><p class="spaceabovemethod">- (void)tabView:(NSTabView *)tabView willCloseTabViewItem:(NSTabViewItem *)tabViewItem</p>
+<h5 class="tight">Discussion</h5><p>This presents you with an opportunity to clean up the application objects/events/sessions represented by the tab.</p>
+
+<a name="didCloseTabViewItem"></a><h3 class="tight">tabView:didCloseTabViewItem:</h3>
+<p class="spaceabove">Sent after a tab has been closed. </p><p class="spaceabovemethod">- (void)tabView:(NSTabView *)tabView didCloseTabViewItem:(NSTabViewItem *)tabViewItem</p>
+<h5 class="tight">Discussion</h5><p>This presents you with an opportunity to clean up the application objects/events/sessions represented by the tab. Don't go trying to modify the tabViewItem - it is about to be released, and has already been removed from the tabView!</p>
+
+<h3 class="tight">tabView:didSelectTabViewItem:</h3>
+<p class="spaceabove">Informs the delegate that <i>tabView</i> has selected <i>tabViewItem</i>.</p><p class="spaceabovemethod">- (void)tabView:(NSTabView *)<i>tabView</i> didSelectTabViewItem:(NSTabViewItem *)<i>tabViewItem</i></p>
+
+<h3 class="tight">tabView:shouldSelectTabViewItem:</h3>
+<p class="spaceabove">Invoked just before <i>tabViewItem</i> in <i>tabView</i> is selected.</p><p class="spaceabovemethod">- (BOOL)tabView:(NSTabView *)<i>tabView</i> shouldSelectTabViewItem:(NSTabViewItem *)<i>tabViewItem</i></p>
+<h5 class="tight">Discussion</h5><p> The delegate can return <code>NO</code> to prevent selection of specific tabs.</p>
+
+<h3 class="tight">tabView:willSelectTabViewItem:</h3>
+<p class="spaceabove">Informs the delegate that <i>tabView</i> is about to select <i>tabViewItem</i>.</p><p class="spaceabovemethod">- (void)tabView:(NSTabView *)<i>tabView</i> willSelectTabViewItem:(NSTabViewItem *)<i>tabViewItem</i></p>
+
+<h3 class="tight">tabViewDidChangeNumberOfTabViewItems:</h3>
+<p class="spaceabove">Informs the delegate that the number of tab view items in <i>tabView</i> has changed.</p><p class="spaceabovemethod">- (void)tabViewDidChangeNumberOfTabViewItems:(NSTabView *)<i>tabView</i></p>
+
+
+
+
+ </BODY>
+</html>
943 documentation/frameset_styles.css
@@ -0,0 +1,943 @@
+/* link classes */
+A:link { COLOR: #0000FF; TEXT-DECORATION: none; }
+A:link:hover { COLOR: #FF6600; TEXT-DECORATION: underline; }
+A:active { COLOR: #FF6600; TEXT-DECORATION: underline; }
+
+/* apple.com site does not explicitly define visited link properties, but we do here */
+A:visited { COLOR: #0000AA; TEXT-DECORATION: none; }
+A:visited:hover { COLOR: #FF6600; TEXT-DECORATION: underline; }
+
+/* used to convert otherCodeCharacters to code, thus saving character space in HTML for smaller file sizes */
+tt {
+ FONT-SIZE: 11px; FONT-FAMILY: monaco, courier, monospace; }
+
+/* redefine preformated text and code blocks */
+PRE {
+ FONT-SIZE: 11px; FONT-FAMILY: monaco, courier, monospace; margin-top: 5px; margin-bottom: 10px;}
+CODE {
+ FONT-SIZE: 11px; FONT-FAMILY: monaco, courier, monospace; }
+
+
+/* JavaScript toc frame */
+.jtoc_closed { background-color: #e9e9e9; }
+.jtoc_open { background-color: #FFFFFF; padding-bottom: 10px; }
+.jtoc_open_top_line {border-top: 1px solid #CCC; background-color: #fff; padding-bottom: 10px;}
+.jtoc_open_bottom_line {border-bottom: 1px solid #CCC; background-color: #fff; padding-bottom: 10px;}
+.jtoc_open_both_lines {border-bottom: 1px solid #CCC; border-top: 1px solid #CCC; background-color: #fff; padding-bottom: 10px;}
+
+/* frameset: toc frame */
+.toc_contents_text {
+ font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: 12px; font-weight: bold; padding-top: 4px 0;
+ color: #0000FF;
+}
+.toc_contents_text_open {
+ font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: 12px;
+ background: #FFFFFF; color: #0000FF;
+}
+.low_level_text {
+ font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: 11px; padding: 4px 5px 4px 5px
+ color: #0000FF;
+}
+
+#toc_contents_title {
+ font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: 16px; color: #FFFFFF; font-weight: bold;
+}
+.toc_contents_heading {
+ font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: 12px; font-weight: bold;
+}
+
+/* Special TOC heading for Help books only */
+.toc_contents_help_heading {
+ font-family: lucida grande, geneva, helvetica, arial, sans-serif; font-size: 14px; color: #330099; font-weight: bold;
+}
+
+/* frameset: toc frame styles WEB AS. used for any document that uses the disclosure model for TOC like conceptural and procedural C documents*/
+#toc {
+ padding: 0 0 0 0;
+}
+
+#toc p.download {
+ padding: 5px 10px;
+ margin: 0;
+ font-weight: normal; font-size: 11px;
+}
+
+#toc_PDFbottomborder {
+ padding-top: 5px;
+ border-bottom: 1px solid #CCC;
+}
+
+
+#toc h2 {
+ margin: 0;
+ padding: 10px;
+ font-size: 15px; font-weight: bold;
+ border-bottom: 0px solid;
+}
+
+#toc h3 {
+ margin: 6px 5px 0 10px;
+ font-size: 13px; font-weight: bold; color: black;
+}
+
+#toc h4 {
+ font-size: 11px; font-weight: bold; color: black;
+ margin: -5px 0px 0 14px;
+}
+
+#toc_staticbox {
+ padding: 0 0 0 0;
+ border: 1px solid #919699;
+ background: #e9e9e9;
+}
+
+#toc ul {
+ list-style: none outside;
+ margin-left: 20px; margin-bottom: -2px;
+ padding: 0px;
+}
+
+#toc ul ul{
+ list-style: none outside;
+ margin-left: 10px; margin-bottom: -2px;
+ padding: 0px;
+}
+
+#toc li a {
+ margin-left: 5px;
+ display: block;
+ padding: 0px 5px 0px 5px;
+}
+
+#toc li a.location {
+ font-weight: bold; color: #000;
+ text-decoration: none;
+}
+
+#toc li{
+ font-weight: normal; font-size: 11px;
+ padding: 0px 5px 0px 0px;
+ list-style-type: none; background: url(../Images/bullet.gif) no-repeat 0px .5em;
+ }
+
+#toc li li a {
+ margin-left: 0px;
+}
+
+
+#toc ul ul li {
+ background: url(../Images/dash.gif) no-repeat 0px .6em;
+}
+
+#toc ul ul ul li {
+ background: url(../Images/sm_bullet.gif) no-repeat 0px .5em;
+}
+
+#toc li.open {
+ border-top: 1px solid #CCC; border-bottom: 1px solid #CCC; background-color: #fff;
+}
+
+#toc .open ul {
+ background-color: #fff;
+}
+
+li img {
+ margin-left: 0px;
+}
+/*#toc li.open { background: #FFF;}*/
+
+
+/* frameset: toc frame styles WEB AS. used for any document that uses the static model for TOC topics documents*/
+
+#topicstoc {
+ padding: 0px 0px 0px;
+}
+
+
+#topicstoc p.download {
+ border-bottom: 1px solid #CCC;
+ padding: 5px 10px;
+ margin: 0px;
+ font-weight: normal; font-size: 11px;
+}
+
+#topicstoc h2 {
+ margin: 0;
+ padding: 10px;
+ font-size: 15px; font-weight: bold;
+ border-bottom: 0px solid;
+}
+
+#topicstoc h3 {
+ margin: 6px 5px 0 10px;
+ font-size: 13px; font-weight: bold; color: black;
+}
+
+#topicstoc h4 {
+ font-size: 11px; font-weight: bold; color: black;
+ margin: 2px 0px 0px 14px;
+}
+
+#topicstoc ul {
+ list-style: none outside;
+ margin-left: 13px; margin-bottom: -2px;
+ padding: 0px;
+}
+
+
+#topicstoc ul ul{
+ list-style: none outside;
+ margin-left: 10px; margin-bottom: -2px;
+ padding: 0px;
+}
+
+#topicstoc li{
+ font-weight: normal; font-size: 12px;
+ padding: 0px 5px 2px 10px;
+ list-style-type: none; background: url(../Images/bullet.gif) no-repeat 0px .5em;
+}
+
+#topicstoc li.intro {
+ font-weight: normal;
+ padding: 0px 0px;
+ list-style-type: none; background: none;
+}
+
+#topicstoc li a {
+ display: block;
+ padding: 0px 5px 0px 0px;
+}
+
+#topicstoc li a.location {
+ font-weight: bold; color: #000;
+ text-decoration: none;
+}
+
+#topicstoc li.intro a {
+ margin-left: -5px;
+ display: block;
+}
+
+
+img.toplevel { float: left; }
+
+
+
+/* frameset: content frame */
+BODY {
+ margin-top: 0;
+ color: #000;
+ font: 12px lucida grande, geneva, helvetica, arial, sans-serif;
+ }
+
+/* frameset: H1,H2,H3,H4,H5,Head for code voice */
+
+h1 {
+ margin-top: 1em;
+ margin-bottom: 25px;
+ font: bold 30px lucida grande, geneva, helvetica, arial, sans-serif;
+ color: #000;
+ }
+h2 {
+ margin-top: 2.5em;
+ font-size: 24px;
+ color: #000;
+ padding-bottom: 2px; border-bottom: 1px solid black;
+ }
+h3 {
+ margin-top: 2em;
+ margin-bottom: .5em;
+ font-size: 19px;
+ color: #000;
+ }
+h3.tight {
+ margin-top: 3em;
+ margin-bottom: -.25em;
+ font-size: 19px;
+ color: #000;
+ }
+h4 {
+ margin-top: 2em;
+ margin-bottom: .5em;
+ font-size: 15px;
+ color: #000;
+ }
+h5 {
+ margin: 20 0 0 0;
+ padding: 0;
+ font-size: 13px;
+ color: #000;
+ }
+.mach4{
+ margin-top: 40;
+ margin-bottom: 0;
+ padding-top: 0;
+ font: bold 16px lucida grande, geneva, helvetica, arial, sans-serif;
+ color: #000;
+ }
+.mach5{
+ margin: 30 0 -9 0;
+ font: bold 13px lucida grande, geneva, helvetica, arial, sans-serif;