From 51184d8f0f8359c82c46c079d0052cd60c3cfee1 Mon Sep 17 00:00:00 2001 From: Matthew Judy Date: Tue, 17 Dec 2002 12:31:37 +0000 Subject: [PATCH] Adding Kent's ITTabView class to the ITKit. Please add this class to ITKitTester. --- ITKit.h | 3 ++- ITTabView.h | 25 +++++++++++++++++++++++++ ITTabView.m | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 77 insertions(+), 1 deletion(-) create mode 100755 ITTabView.h create mode 100755 ITTabView.m diff --git a/ITKit.h b/ITKit.h index b4a974c..7168191 100755 --- a/ITKit.h +++ b/ITKit.h @@ -1,4 +1,5 @@ #import #import -#import \ No newline at end of file +#import +#import diff --git a/ITTabView.h b/ITTabView.h new file mode 100755 index 0000000..7f86e74 --- /dev/null +++ b/ITTabView.h @@ -0,0 +1,25 @@ +/* + * ITKit + * ITTabView + * NSTabView subclass which includes convenience features + * + * Original Author : Joseph Spiros + * Responsibility : Matt Judy + * Responsibility : Kent Sutherland + * + * Copyright (c) 2002 iThink Software. + * All Rights Reserved + * + */ + +/* + * This subclass enables drag-and-drop for tab view items. + */ + +#import + +@interface ITTabView : NSTabView +{ + NSTabViewItem *_draggedTab; +} +@end diff --git a/ITTabView.m b/ITTabView.m new file mode 100755 index 0000000..9fbfe56 --- /dev/null +++ b/ITTabView.m @@ -0,0 +1,50 @@ +#import "ITTabView.h" + +@implementation ITTabView + +- (id)initWithFrame:(NSRect)frame +{ + if ( (self = [super initWithFrame:frame]) ) { + _draggedTab = nil; + } + return self; +} + +- (void)mouseDown:(NSEvent *)event +{ + NSPoint clickedPoint = [self convertPoint:[event locationInWindow] fromView:[[self window] contentView]]; + NSTabViewItem *clickedTab = [self tabViewItemAtPoint:clickedPoint]; + _draggedTab = clickedTab; + [super mouseDown:event]; +} + +- (void)mouseUp:(NSEvent *)event +{ + NSPoint releasedPoint = [self convertPoint:[event locationInWindow] fromView:[[self window] contentView]]; + NSTabViewItem *releasedTab = [self tabViewItemAtPoint:releasedPoint]; + if (releasedTab && ![releasedTab isEqualTo:_draggedTab]) { + int releasedTabIndex = [self indexOfTabViewItem:releasedTab]; + [_draggedTab retain]; + [self removeTabViewItem:_draggedTab]; + [self insertTabViewItem:_draggedTab atIndex:releasedTabIndex]; + [self selectTabViewItem:_draggedTab]; + } + _draggedTab = nil; + [super mouseUp:event]; +} + +- (void)mouseDragged:(NSEvent *)event +{ + NSPoint currentPoint = [self convertPoint:[event locationInWindow] fromView:[[self window] contentView]]; + NSTabViewItem *curTab = [self tabViewItemAtPoint:currentPoint]; + if (curTab && ![curTab isEqualTo:_draggedTab]) { + int curTabIndex = [self indexOfTabViewItem:curTab]; + [_draggedTab retain]; + [self removeTabViewItem:_draggedTab]; + [self insertTabViewItem:_draggedTab atIndex:curTabIndex]; + [self selectTabViewItem:_draggedTab]; + } + [super mouseDragged:event]; +} + +@end -- 2.20.1