Revision: 7663
http://skim-app.svn.sourceforge.net/skim-app/?rev=7663&view=rev
Author: hofman
Date: 2012-02-22 12:32:50 +0000 (Wed, 22 Feb 2012)
Log Message:
-----------
hide tablecolumns instead of removing them
Modified Paths:
--------------
trunk/SKNoteOutlineView.h
trunk/SKNoteOutlineView.m
Modified: trunk/SKNoteOutlineView.h
===================================================================
--- trunk/SKNoteOutlineView.h 2012-02-22 11:53:09 UTC (rev 7662)
+++ trunk/SKNoteOutlineView.h 2012-02-22 12:32:50 UTC (rev 7663)
@@ -41,9 +41,7 @@
@protocol SKNoteOutlineViewDelegate;
-@interface SKNoteOutlineView : SKOutlineView {
- NSArray *allTableColumns;
-}
+@interface SKNoteOutlineView : SKOutlineView
@property (nonatomic, retain) NSArray *tableColumnIdentifiers;
@property (nonatomic, retain) NSDictionary *tableColumnWidths;
Modified: trunk/SKNoteOutlineView.m
===================================================================
--- trunk/SKNoteOutlineView.m 2012-02-22 11:53:09 UTC (rev 7662)
+++ trunk/SKNoteOutlineView.m 2012-02-22 12:32:50 UTC (rev 7663)
@@ -59,11 +59,6 @@
@dynamic tableColumnIdentifiers, tableColumnWidths;
-- (void)dealloc {
- SKDESTROY(allTableColumns);
- [super dealloc];
-}
-
static inline NSString *titleForTableColumnIdentifier(NSString *identifier) {
if ([identifier isEqualToString:NOTE_COLUMNID])
return NSLocalizedString(@"Note", @"Table header title");
@@ -82,8 +77,6 @@
}
- (void)awakeFromNib {
- allTableColumns = [[self tableColumns] copy];
-
[[self tableColumnWithIdentifier:COLOR_COLUMNID]
setDataCell:[[[SKColorCell alloc] init] autorelease]];
NSMenu *menu = [NSMenu menu];
@@ -219,17 +212,16 @@
}
}
-- (NSTableColumn *)tableColumnWithIdentifier:(NSString *)identifier {
- NSTableColumn *tc = [super tableColumnWithIdentifier:identifier];
- if (tc == nil) {
- for (tc in allTableColumns)
- if ([[tc identifier] isEqualToString:identifier]) break;
- }
- return tc;
+- (NSArray *)shownTableColumns {
+ NSMutableArray *tableColumns = [NSMutableArray array];
+ for (NSTableColumn *tc in [self tableColumns])
+ if ([tc isHidden] == NO)
+ [tableColumns addObject:tc];
+ return tableColumns;
}
- (NSArray *)tableColumnIdentifiers {
- return [[self tableColumns] valueForKey:@"identifier"];
+ return [[self shownTableColumns] valueForKey:@"identifier"];
}
- (void)setTableColumnIdentifiers:(NSArray *)identifiers {
@@ -237,35 +229,20 @@
if (outlineIdentifier && [identifiers containsObject:outlineIdentifier] ==
NO)
identifiers = [[NSArray arrayWithObject:outlineIdentifier]
arrayByAddingObjectsFromArray:identifiers];
if ([identifiers isEqualToArray:[self tableColumnIdentifiers]] == NO) {
- NSInteger column, currentColumn = 0;
- for (NSString *identifier in identifiers) {
- column = [self columnWithIdentifier:identifier];
- if (column == -1) {
- NSTableColumn *tc = [self
tableColumnWithIdentifier:identifier];
- if (tc == nil)
- continue;
- column = [self numberOfColumns];
- [self addTableColumn:tc];
- }
- if (column > currentColumn)
- [self moveColumn:column toColumn:currentColumn];
- ++currentColumn;
- }
- while (currentColumn < [self numberOfColumns])
- [self removeTableColumn:[[self tableColumns] lastObject]];
- [self sizeToFit];
+ for (NSTableColumn *tc in [self tableColumns])
+ [tc setHidden:[identifiers containsObject:[tc identifier]] == NO];
}
}
- (NSDictionary *)tableColumnWidths {
- NSArray *tableColumns = [self tableColumns];
+ NSArray *tableColumns = [self shownTableColumns];
return [NSDictionary dictionaryWithObjects:[tableColumns
valueForKey:@"width"] forKeys:[tableColumns valueForKey:@"identifier"]];
}
- (void)setTableColumnWidths:(NSDictionary *)widths {
if (widths) {
BOOL didChange = NO;
- for (NSTableColumn *tc in [self tableColumns]) {
+ for (NSTableColumn *tc in [self shownTableColumns]) {
if (([tc resizingMask] & NSTableColumnUserResizingMask)) {
NSNumber *width = [widths objectForKey:[tc identifier]];
if (width) {
@@ -280,22 +257,15 @@
}
- (void)toggleTableColumn:(id)sender {
- NSString *identifier = [sender representedObject];
- NSTableColumn *tc = [self tableColumnWithIdentifier:identifier];
- if (tc) {
- if ([[self tableColumns] containsObject:tc])
- [self removeTableColumn:tc];
- else
- [self addTableColumn:tc];
- [self sizeToFit];
- if ([[self delegate]
respondsToSelector:@selector(outlineViewTableColumnsDidChange:)])
- [[self delegate] outlineViewTableColumnsDidChange:self];
- }
+ NSTableColumn *tc = [self tableColumnWithIdentifier:[sender
representedObject]];
+ [tc setHidden:[tc isHidden] == NO];
+ if ([[self delegate]
respondsToSelector:@selector(outlineViewTableColumnsDidChange:)])
+ [[self delegate] outlineViewTableColumnsDidChange:self];
}
- (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
if ([menuItem action] == @selector(toggleTableColumn:)) {
- [menuItem setState:[[self tableColumnIdentifiers]
containsObject:[menuItem representedObject]] ? NSOnState : NSOffState];
+ [menuItem setState:[[self tableColumnWithIdentifier:[menuItem
representedObject]] isHidden] ? NSOffState : NSOnState];
return YES;
} else if ([[SKNoteOutlineView superclass]
instancesRespondToSelector:_cmd]) {
return [super validateMenuItem:menuItem];
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Virtualization & Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit