aboutsummaryrefslogtreecommitdiffstats
path: root/Source/SPTableTriggersDelegate.m
diff options
context:
space:
mode:
authorstuconnolly <stuart02@gmail.com>2013-02-21 22:00:31 +0000
committerstuconnolly <stuart02@gmail.com>2013-02-21 22:00:31 +0000
commite708cef969bb833a35615f1b5bada42a0d464fcd (patch)
treead8dee8ffb486f6ce371dd6650a2bcb7d1b40158 /Source/SPTableTriggersDelegate.m
parentc0dc27bfb033fbd94013f593f3cf242a5777a252 (diff)
downloadsequelpro-e708cef969bb833a35615f1b5bada42a0d464fcd.tar.gz
sequelpro-e708cef969bb833a35615f1b5bada42a0d464fcd.tar.bz2
sequelpro-e708cef969bb833a35615f1b5bada42a0d464fcd.zip
Move the table triggers controller delegate methods to their own category.
Diffstat (limited to 'Source/SPTableTriggersDelegate.m')
-rw-r--r--Source/SPTableTriggersDelegate.m102
1 files changed, 102 insertions, 0 deletions
diff --git a/Source/SPTableTriggersDelegate.m b/Source/SPTableTriggersDelegate.m
new file mode 100644
index 00000000..9c752cc2
--- /dev/null
+++ b/Source/SPTableTriggersDelegate.m
@@ -0,0 +1,102 @@
+//
+// $Id$
+//
+// SPTableTriggersDelegate.m
+// sequel-pro
+//
+// Created by Stuart Connolly (stuconnolly.com) on February 21, 2013.
+// Copyright (c) 2013 Stuart Connolly. All rights reserved.
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+
+#import "SPTableTriggersDelegate.h"
+#import "SPDatabaseDocument.h"
+
+@interface SPTableTriggers ()
+
+- (void)_editTriggerAtIndex:(NSInteger)index;
+- (void)_toggleConfirmAddTriggerButtonEnabled;
+
+@end
+
+@implementation SPTableTriggers (SPTableTriggersDelegate)
+
+#pragma mark -
+#pragma mark Tableview delegate methods
+
+/**
+ * Called whenever the triggers table view selection changes.
+ */
+- (void)tableViewSelectionDidChange:(NSNotification *)notification
+{
+ [removeTriggerButton setEnabled:([triggersTableView numberOfSelectedRows] > 0)];
+}
+
+/**
+ * Alter the colour of cells displaying NULL values
+ */
+- (void)tableView:(NSTableView *)tableView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)rowIndex
+{
+ if (![cell respondsToSelector:@selector(setTextColor:)]) {
+ return;
+ }
+
+ id value = [[triggerData objectAtIndex:rowIndex] objectForKey:[tableColumn identifier]];
+
+ [cell setTextColor:[value isNSNull] ? [NSColor lightGrayColor] : [NSColor blackColor]];
+}
+
+/**
+ * Double-click action on table cells - for the time being, return NO to disable editing.
+ */
+- (BOOL)tableView:(NSTableView *)tableView shouldEditTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)rowIndex
+{
+ if ([tableDocumentInstance isWorking]) return NO;
+
+ // Start Edit panel
+ if (((NSInteger)[triggerData count] > rowIndex) && [triggerData objectAtIndex:rowIndex]) {
+ [self _editTriggerAtIndex:rowIndex];
+ }
+
+ return NO;
+}
+
+/**
+ * Disable row selection while the document is working.
+ */
+- (BOOL)tableView:(NSTableView *)tableView shouldSelectRow:(NSInteger)rowIndex
+{
+ return (![tableDocumentInstance isWorking]);
+}
+
+#pragma mark -
+#pragma mark Textfield delegate methods
+
+/**
+ * Toggles the enabled state of confirm add trigger button based on the editing of the trigger's name.
+ */
+- (void)controlTextDidChange:(NSNotification *)notification
+{
+ [self _toggleConfirmAddTriggerButtonEnabled];
+}
+
+@end