From 7a5af6632f0c6797466372358327ddd75a4e7f22 Mon Sep 17 00:00:00 2001 From: Bibiko Date: Fri, 3 Sep 2010 21:15:32 +0000 Subject: =?UTF-8?q?=E2=80=A2=20further=20improvements=20for=20CSV=20import?= =?UTF-8?q?=20into=20new=20table=20-=20fixed=20some=20RETURN/ENTER=20logic?= =?UTF-8?q?=20while=20editing=20a=20table=20cell=20-=20added=20context=20m?= =?UTF-8?q?enu=20to=20table=20for:=20--=20'Set=20all=20Field=20Types=20to:?= =?UTF-8?q?'=20which=20sets=20all=20types=20to=20the=20current=20selected?= =?UTF-8?q?=20one=20=E2=8C=98=3D=20--=20'Add=20Column=20to=20Table=20Targe?= =?UTF-8?q?t'=20(not=20yet=20implemented)=20-=20some=20minor=20code=20issu?= =?UTF-8?q?es=20-=20added=20Info=20button=20which=20will=20come=20up=20wit?= =?UTF-8?q?h=20a=20GUI=20for=20setting=20new=20table=20encoding=20and=20en?= =?UTF-8?q?gine=20(not=20yet=20implemented)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Source/SPFieldMapperController.h | 9 +++++- Source/SPFieldMapperController.m | 61 ++++++++++++++++++++++++++++++++++++++-- Source/SPTableView.m | 10 ++++++- 3 files changed, 75 insertions(+), 5 deletions(-) (limited to 'Source') diff --git a/Source/SPFieldMapperController.h b/Source/SPFieldMapperController.h index b824e3ed..17b6db9a 100644 --- a/Source/SPFieldMapperController.h +++ b/Source/SPFieldMapperController.h @@ -30,7 +30,7 @@ @interface SPFieldMapperController : NSWindowController { - IBOutlet id fieldMapperTableView; + IBOutlet SPTableView *fieldMapperTableView; IBOutlet id fieldMapperTableScrollView; IBOutlet NSTableView *globalValuesTableView; IBOutlet NSPopUpButton *tableTargetPopup; @@ -48,9 +48,12 @@ IBOutlet id importMethodLabel; IBOutlet id advancedLabel; IBOutlet NSMenuItem *matchingNameMenuItem; + IBOutlet NSMenuItem *addNewColumnMenuItem; + IBOutlet NSMenuItem *setAllTypesToMenuItem; IBOutlet NSTextField *newTableNameTextField; IBOutlet NSTextField *newTableNameLabel; + IBOutlet NSButton *newTableNameInfoButton; IBOutlet id globalValuesSheet; IBOutlet NSButton *addGlobalValueButton; @@ -148,6 +151,7 @@ - (NSString*)onupdateString; - (NSString*)importHeaderString; - (BOOL)canBeClosed; +- (BOOL)isGlobalValueSheetOpen; // IBAction methods - (IBAction)changeTableTarget:(id)sender; @@ -166,6 +170,9 @@ - (IBAction)closeGlobalValuesSheet:(id)sender; - (IBAction)advancedCheckboxValidation:(id)sender; +- (IBAction)addNewColumn:(id)sender; +- (IBAction)setAllTypesTo:(id)sender; + // Others - (void)resizeWindowByHeightDelta:(NSInteger)delta; - (void)matchHeaderNames; diff --git a/Source/SPFieldMapperController.m b/Source/SPFieldMapperController.m index dbdf3d31..c7ba8ee7 100644 --- a/Source/SPFieldMapperController.m +++ b/Source/SPFieldMapperController.m @@ -90,7 +90,8 @@ [fieldMapperTableView setDelegate:self]; [fieldMapperTableView setDataSource:self]; - + [[[fieldMapperTableView menu] itemAtIndex:0] setHidden:YES]; + [[[fieldMapperTableView menu] itemAtIndex:1] setHidden:YES]; // Set source path // Note: [fileSourcePath setURL:[NSURL fileWithPath:sourcePath]] does NOT work @@ -108,6 +109,7 @@ [newTableNameTextField setHidden:YES]; [newTableNameLabel setHidden:YES]; + [newTableNameInfoButton setHidden:YES]; // Init table target popup menu [tableTargetPopup removeAllItems]; @@ -348,6 +350,11 @@ return [importButton isEnabled]; } +- (BOOL)isGlobalValueSheetOpen +{ + return addGlobalSheetIsOpen; +} + #pragma mark - #pragma mark IBAction methods @@ -433,6 +440,9 @@ newTableMode = YES; + [[[fieldMapperTableView menu] itemAtIndex:0] setHidden:NO]; + [[[fieldMapperTableView menu] itemAtIndex:1] setHidden:NO]; + [importMethodPopup selectItemWithTitle:@"INSERT"]; [[importMethodPopup itemWithTitle:@"UPDATE"] setEnabled:NO]; [[importMethodPopup itemWithTitle:@"REPLACE"] setEnabled:NO]; @@ -440,7 +450,9 @@ [tableTargetPopup setHidden:YES]; [newTableNameTextField setHidden:NO]; [newTableNameLabel setHidden:NO]; + [newTableNameInfoButton setHidden:NO]; [newTableNameTextField selectText:nil]; + [fieldMappingTableColumnNames removeAllObjects]; [fieldMappingTableDefaultValues removeAllObjects]; [fieldMappingTableTypes removeAllObjects]; @@ -726,6 +738,30 @@ } } +- (IBAction)addNewColumn:(id)sender +{ + +} + +/* + * Set all table target field types to that one of the current selected type + */ +- (IBAction)setAllTypesTo:(id)sender +{ + NSInteger row = [fieldMapperTableView selectedRow]; + if(row<0 || row>=[fieldMappingTableColumnNames count]) { + NSBeep(); + return; + } + NSString *type = [[fieldMappingTableTypes objectAtIndex:row] retain]; + [fieldMappingTableTypes removeAllObjects]; + NSInteger i; + for(i=0; i<[fieldMappingTableColumnNames count]; i++) + [fieldMappingTableTypes addObject:type]; + [fieldMapperTableView reloadData]; + [type release]; +} + #pragma mark - #pragma mark Global Value Sheet @@ -963,9 +999,11 @@ - (void)sheetDidEnd:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo { if ([sheet respondsToSelector:@selector(orderOut:)]) [sheet orderOut:nil]; - addGlobalSheetIsOpen = NO; - if (sheet == globalValuesSheet) + + if (sheet == globalValuesSheet) { + addGlobalSheetIsOpen = NO; [self updateFieldMappingButtonCell]; + } } - (void)matchHeaderNames @@ -1134,6 +1172,23 @@ } +/** + * Menu item interface validation + */ +- (BOOL)validateMenuItem:(NSMenuItem *)menuItem +{ + + if (newTableMode && [menuItem action] == @selector(setAllTypesTo:)) { + NSInteger row = [fieldMapperTableView selectedRow]; + NSMenuItem *setAllItem = [[fieldMapperTableView menu] itemAtIndex:0]; + NSString *orgTitle = [[setAllItem title] substringToIndex:[[setAllItem title] rangeOfString:@":"].location]; + [setAllItem setTitle:[NSString stringWithFormat:@"%@: %@", orgTitle, [fieldMappingTableTypes objectAtIndex:row]]]; + } + + return YES; + +} + #pragma mark - #pragma mark Table view datasource methods diff --git a/Source/SPTableView.m b/Source/SPTableView.m index 7e212884..c3f76baf 100644 --- a/Source/SPTableView.m +++ b/Source/SPTableView.m @@ -92,8 +92,15 @@ if([self numberOfSelectedRows] == 1 && ([theEvent keyCode] == 36 || [theEvent keyCode] == 76)) { - // ENTER or RETURN closes the SPFieldMapperController sheet by sending an object with the tag 1 if([[[[self delegate] class] description] isEqualToString:@"SPFieldMapperController"]) { + + if([[self delegate] isGlobalValueSheetOpen]) { + [[self delegate] closeGlobalValuesSheet:nil]; + return; + } + + // ENTER or RETURN closes the SPFieldMapperController sheet + // by sending an object with the tag 1 if no table cell is edited if([[self delegate] canBeClosed]) { NSButton *b = [[[NSButton alloc] init] autorelease]; [b setTag:1]; @@ -117,6 +124,7 @@ [self editColumn:0 row:[self selectedRow] withEvent:nil select:YES]; return; } + } [super keyDown:theEvent]; -- cgit v1.2.3