aboutsummaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
Diffstat (limited to 'Source')
-rw-r--r--Source/SPFieldMapperController.h9
-rw-r--r--Source/SPFieldMapperController.m61
-rw-r--r--Source/SPTableView.m10
3 files changed, 75 insertions, 5 deletions
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];