aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Interfaces/English.lproj/MainMenu.xib293
-rw-r--r--Resources/PreferenceDefaults.plist8
-rw-r--r--Source/SPConstants.h10
-rw-r--r--Source/SPConstants.m2
-rw-r--r--Source/SPPreferenceController.h21
-rw-r--r--Source/SPPreferenceController.m95
-rw-r--r--Source/TableDocument.m6
7 files changed, 422 insertions, 13 deletions
diff --git a/Interfaces/English.lproj/MainMenu.xib b/Interfaces/English.lproj/MainMenu.xib
index 0dcd0af4..a51aa337 100644
--- a/Interfaces/English.lproj/MainMenu.xib
+++ b/Interfaces/English.lproj/MainMenu.xib
@@ -12,7 +12,7 @@
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="498"/>
+ <integer value="1059"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -1209,6 +1209,73 @@
<reference key="NSOnImage" ref="625762401"/>
<reference key="NSMixedImage" ref="315854375"/>
</object>
+ <object class="NSMenuItem" id="121425259">
+ <reference key="NSMenu" ref="466354362"/>
+ <string key="NSTitle">Favorites</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="625762401"/>
+ <reference key="NSMixedImage" ref="315854375"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="65194311">
+ <string key="NSTitle">Favorites</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="467685932">
+ <reference key="NSMenu" ref="65194311"/>
+ <string key="NSTitle">Sort By Name</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="625762401"/>
+ <reference key="NSMixedImage" ref="315854375"/>
+ </object>
+ <object class="NSMenuItem" id="326070376">
+ <reference key="NSMenu" ref="65194311"/>
+ <string key="NSTitle">Sort By Host</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="625762401"/>
+ <reference key="NSMixedImage" ref="315854375"/>
+ </object>
+ <object class="NSMenuItem" id="836793492">
+ <reference key="NSMenu" ref="65194311"/>
+ <string key="NSTitle">Sort By Type</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="625762401"/>
+ <reference key="NSMixedImage" ref="315854375"/>
+ </object>
+ <object class="NSMenuItem" id="826127767">
+ <reference key="NSMenu" ref="65194311"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="625762401"/>
+ <reference key="NSMixedImage" ref="315854375"/>
+ </object>
+ <object class="NSMenuItem" id="587544115">
+ <reference key="NSMenu" ref="65194311"/>
+ <string key="NSTitle">Reverse Sort Order</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="625762401"/>
+ <reference key="NSMixedImage" ref="315854375"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="486174990">
+ <reference key="NSMenu" ref="466354362"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="625762401"/>
+ <reference key="NSMixedImage" ref="315854375"/>
+ </object>
<object class="NSMenuItem" id="358795349">
<reference key="NSMenu" ref="466354362"/>
<string key="NSTitle">Hide Toolbar</string>
@@ -2950,6 +3017,38 @@
</object>
<int key="connectionID">1051</int>
</object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">sortFavorites:</string>
+ <reference key="source" ref="63651044"/>
+ <reference key="destination" ref="467685932"/>
+ </object>
+ <int key="connectionID">1066</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">sortFavorites:</string>
+ <reference key="source" ref="63651044"/>
+ <reference key="destination" ref="326070376"/>
+ </object>
+ <int key="connectionID">1067</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">reverseFavoritesSortOrder:</string>
+ <reference key="source" ref="63651044"/>
+ <reference key="destination" ref="587544115"/>
+ </object>
+ <int key="connectionID">1068</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">sortFavorites:</string>
+ <reference key="source" ref="63651044"/>
+ <reference key="destination" ref="836793492"/>
+ </object>
+ <int key="connectionID">1070</int>
+ </object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
@@ -4274,6 +4373,8 @@
<reference ref="438779812"/>
<reference ref="388367969"/>
<reference ref="417888240"/>
+ <reference ref="121425259"/>
+ <reference ref="486174990"/>
</object>
<reference key="parent" ref="401969940"/>
</object>
@@ -4357,6 +4458,58 @@
<reference key="object" ref="417888240"/>
<reference key="parent" ref="466354362"/>
</object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1058</int>
+ <reference key="object" ref="121425259"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="65194311"/>
+ </object>
+ <reference key="parent" ref="466354362"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1059</int>
+ <reference key="object" ref="65194311"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="467685932"/>
+ <reference ref="326070376"/>
+ <reference ref="826127767"/>
+ <reference ref="587544115"/>
+ <reference ref="836793492"/>
+ </object>
+ <reference key="parent" ref="121425259"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1061</int>
+ <reference key="object" ref="486174990"/>
+ <reference key="parent" ref="466354362"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1062</int>
+ <reference key="object" ref="467685932"/>
+ <reference key="parent" ref="65194311"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1063</int>
+ <reference key="object" ref="326070376"/>
+ <reference key="parent" ref="65194311"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1064</int>
+ <reference key="object" ref="826127767"/>
+ <reference key="parent" ref="65194311"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1065</int>
+ <reference key="object" ref="587544115"/>
+ <reference key="parent" ref="65194311"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1069</int>
+ <reference key="object" ref="836793492"/>
+ <reference key="parent" ref="65194311"/>
+ </object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
@@ -4385,10 +4538,19 @@
<string>1047.IBPluginDependency</string>
<string>1048.IBPluginDependency</string>
<string>1050.IBPluginDependency</string>
+ <string>1058.IBPluginDependency</string>
+ <string>1059.IBEditorWindowLastContentRect</string>
+ <string>1059.IBPluginDependency</string>
<string>106.IBEditorWindowLastContentRect</string>
<string>106.IBPluginDependency</string>
<string>106.ImportedFromIB2</string>
<string>106.editorWindowContentRectSynchronizationRect</string>
+ <string>1061.IBPluginDependency</string>
+ <string>1062.IBPluginDependency</string>
+ <string>1063.IBPluginDependency</string>
+ <string>1064.IBPluginDependency</string>
+ <string>1065.IBPluginDependency</string>
+ <string>1069.IBPluginDependency</string>
<string>111.IBPluginDependency</string>
<string>111.ImportedFromIB2</string>
<string>129.IBPluginDependency</string>
@@ -4753,11 +4915,20 @@
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{765, 481}, {180, 93}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>{{824, 199}, {204, 153}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{561, 605}, {181, 43}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
@@ -4889,7 +5060,7 @@
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{514, 531}, {251, 293}}</string>
+ <string>{{514, 501}, {251, 323}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{698, 703}, {184, 133}}</string>
@@ -5163,7 +5334,7 @@
</object>
</object>
<nil key="sourceID"/>
- <int key="maxID">1057</int>
+ <int key="maxID">1070</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -5346,7 +5517,7 @@
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="472462125">
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="381988713">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">Source/SPQueryFavoriteManager.h</string>
</object>
@@ -5528,6 +5699,118 @@
<reference key="sourceIdentifier" ref="296977353"/>
</object>
<object class="IBPartialClassDescription">
+ <string key="className">SPPreferenceController</string>
+ <string key="superclassName">NSWindowController</string>
+ <object class="NSMutableDictionary" key="actions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>addFavorite:</string>
+ <string>changeFont:</string>
+ <string>displayAutoUpdatePreferences:</string>
+ <string>displayEditorPreferences:</string>
+ <string>displayFavoritePreferences:</string>
+ <string>displayGeneralPreferences:</string>
+ <string>displayNetworkPreferences:</string>
+ <string>displayNotificationPreferences:</string>
+ <string>displayTablePreferences:</string>
+ <string>duplicateFavorite:</string>
+ <string>favoriteTypeDidChange:</string>
+ <string>removeFavorite:</string>
+ <string>reverseFavoritesSortOrder:</string>
+ <string>setDefaultColors:</string>
+ <string>showCustomQueryFontPanel:</string>
+ <string>showGlobalResultTableFontPanel:</string>
+ <string>sortFavorites:</string>
+ <string>updateDefaultFavorite:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="outlets">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>autoUpdateView</string>
+ <string>defaultFavoritePopup</string>
+ <string>editorFontName</string>
+ <string>editorView</string>
+ <string>favoriteHostTextField</string>
+ <string>favoriteHostTextFieldSSH</string>
+ <string>favoriteNameTextField</string>
+ <string>favoriteUserTextField</string>
+ <string>favoriteUserTextFieldSSH</string>
+ <string>favoriteUserTextFieldSocket</string>
+ <string>favoritesController</string>
+ <string>favoritesTabView</string>
+ <string>favoritesTableView</string>
+ <string>favoritesView</string>
+ <string>generalView</string>
+ <string>globalResultTableFontName</string>
+ <string>networkView</string>
+ <string>notificationsView</string>
+ <string>preferencesWindow</string>
+ <string>socketPasswordField</string>
+ <string>sshPasswordField</string>
+ <string>sshSQLPasswordField</string>
+ <string>standardPasswordField</string>
+ <string>tableCell</string>
+ <string>tablesView</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSView</string>
+ <string>NSPopUpButton</string>
+ <string>NSTextField</string>
+ <string>NSView</string>
+ <string>NSTextField</string>
+ <string>NSTextField</string>
+ <string>NSTextField</string>
+ <string>NSTextField</string>
+ <string>NSTextField</string>
+ <string>NSTextField</string>
+ <string>NSArrayController</string>
+ <string>NSTabView</string>
+ <string>NSTableView</string>
+ <string>NSView</string>
+ <string>NSView</string>
+ <string>NSTextField</string>
+ <string>NSView</string>
+ <string>NSView</string>
+ <string>NSWindow</string>
+ <string>NSSecureTextField</string>
+ <string>NSSecureTextField</string>
+ <string>NSSecureTextField</string>
+ <string>NSSecureTextField</string>
+ <string>id</string>
+ <string>NSView</string>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">Source/SPPreferenceController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
<string key="className">SPProcessListController</string>
<string key="superclassName">NSWindowController</string>
<object class="NSMutableDictionary" key="actions">
@@ -5696,7 +5979,7 @@
<string>BWAnchoredButtonBar</string>
</object>
</object>
- <reference key="sourceIdentifier" ref="472462125"/>
+ <reference key="sourceIdentifier" ref="381988713"/>
</object>
<object class="IBPartialClassDescription">
<string key="className">SPServerVariablesController</string>
diff --git a/Resources/PreferenceDefaults.plist b/Resources/PreferenceDefaults.plist
index 281afa3a..1e71ad22 100644
--- a/Resources/PreferenceDefaults.plist
+++ b/Resources/PreferenceDefaults.plist
@@ -153,5 +153,13 @@
<true/>
<key>PrintWarningRowLimit</key>
<integer>1000</integer>
+ <key>ProcessListShowProcessID</key>
+ <true/>
+ <key>ProcessListShowFullProcessList</key>
+ <true/>
+ <key>FavoritesSortedBy</key>
+ <integer>0</integer>
+ <key>FavoritesSortedInReverse</key>
+ <false/>
</dict>
</plist>
diff --git a/Source/SPConstants.h b/Source/SPConstants.h
index 54bce4d1..c849c3ba 100644
--- a/Source/SPConstants.h
+++ b/Source/SPConstants.h
@@ -93,6 +93,14 @@ typedef enum
SPSSHPasswordNone = 2
} SPSSHTunnelPasswordMode;
+// Sort by constants
+typedef enum
+{
+ SPFavoritesSortNameItem = 0,
+ SPFavoritesSortHostItem = 1,
+ SPFavoritesSortTypeItem = 2
+} SPFavoritesSortItem;
+
// Long running notification time for Growl messages
extern const CGFloat SPLongRunningNotificationTime;
@@ -200,6 +208,8 @@ extern NSString *SPTableInformationPanelCollapsed;
extern NSString *SPTableColumnWidths;
extern NSString *SPProcessListShowProcessID;
extern NSString *SPProcessListShowFullProcessList;
+extern NSString *SPFavoritesSortedBy;
+extern NSString *SPFavoritesSortedInReverse;
// Hidden Prefs
extern NSString *SPPrintWarningRowLimit;
diff --git a/Source/SPConstants.m b/Source/SPConstants.m
index f0df9dac..8a2729e8 100644
--- a/Source/SPConstants.m
+++ b/Source/SPConstants.m
@@ -130,6 +130,8 @@ NSString *SPTableInformationPanelCollapsed = @"TableInformationPanelCollap
NSString *SPTableColumnWidths = @"tableColumnWidths";
NSString *SPProcessListShowProcessID = @"ProcessListShowProcessID";
NSString *SPProcessListShowFullProcessList = @"ProcessListShowFullProcessList";
+NSString *SPFavoritesSortedBy = @"FavoritesSortedBy";
+NSString *SPFavoritesSortedInReverse = @"FavoritesSortedInReverse";
// Hidden Prefs
NSString *SPPrintWarningRowLimit = @"PrintWarningRowLimit";
diff --git a/Source/SPPreferenceController.h b/Source/SPPreferenceController.h
index e8e7a50d..029993d9 100644
--- a/Source/SPPreferenceController.h
+++ b/Source/SPPreferenceController.h
@@ -25,6 +25,8 @@
#import <Cocoa/Cocoa.h>
+#import "SPConstants.h"
+
@class SPKeychain;
@interface SPPreferenceController : NSWindowController
@@ -57,15 +59,13 @@
IBOutlet NSTextField *favoriteHostTextFieldSSH;
IBOutlet id tableCell;
-
- SPKeychain *keychain;
- NSDictionary *currentFavorite;
-
+
IBOutlet NSTextField *editorFontName;
IBOutlet NSTextField *globalResultTableFontName;
- NSInteger fontChangeTarget;
-
+ SPKeychain *keychain;
+ NSDictionary *currentFavorite;
+
NSToolbar *toolbar;
NSToolbarItem *generalItem;
@@ -80,7 +80,10 @@
NSUserDefaults *prefs;
BOOL favoriteNameFieldWasTouched;
- NSInteger favoriteType;
+ NSInteger favoriteType, fontChangeTarget;
+
+ BOOL reverseFavoritesSort;
+ SPFavoritesSortItem previousSortItem, currentSortItem;
}
- (void)applyRevisionChanges;
@@ -89,10 +92,12 @@
- (IBAction)addFavorite:(id)sender;
- (IBAction)removeFavorite:(id)sender;
- (IBAction)duplicateFavorite:(id)sender;
- - (IBAction)updateDefaultFavorite:(id)sender;
+- (IBAction)updateDefaultFavorite:(id)sender;
- (IBAction)showCustomQueryFontPanel:(id)sender;
- (IBAction)showGlobalResultTableFontPanel:(id)sender;
- (IBAction)setDefaultColors:(id)sender;
+- (IBAction)sortFavorites:(id)sender;
+- (IBAction)reverseFavoritesSortOrder:(id)sender;
// Toolbar item IBAction methods
- (IBAction)displayGeneralPreferences:(id)sender;
diff --git a/Source/SPPreferenceController.m b/Source/SPPreferenceController.m
index 33cc9e81..760a48b8 100644
--- a/Source/SPPreferenceController.m
+++ b/Source/SPPreferenceController.m
@@ -34,6 +34,7 @@
@interface SPPreferenceController (PrivateAPI)
- (void)_setupToolbar;
+- (void)_sortFavorites;
- (void)_resizeWindowForContentView:(NSView *)view;
@end
@@ -57,6 +58,9 @@
favoriteNameFieldWasTouched = YES;
favoriteType = 0;
fontChangeTarget = 0;
+ reverseFavoritesSort = NO;
+
+ previousSortItem = SPFavoritesSortNameItem;
}
return self;
@@ -71,6 +75,10 @@
keychain = [[SPKeychain alloc] init];
+ // Set sort items
+ currentSortItem = [prefs integerForKey:SPFavoritesSortedBy];
+ reverseFavoritesSort = [prefs boolForKey:SPFavoritesSortedInReverse];
+
[tableCell setImage:[NSImage imageNamed:@"database"]];
// Replace column's NSTextFieldCell with custom SWProfileTextFieldCell
@@ -87,6 +95,8 @@
[self updateDefaultFavoritePopup];
[prefs synchronize];
+
+ [self _sortFavorites];
}
#pragma mark -
@@ -425,6 +435,38 @@
}
}
+/**
+ * Sorts the favorites table view based on the selected sort by item
+ */
+- (IBAction)sortFavorites:(id)sender
+{
+ previousSortItem = currentSortItem;
+ currentSortItem = [[sender menu] indexOfItem:sender];
+
+ [prefs setInteger:currentSortItem forKey:SPFavoritesSortedBy];
+
+ // Perform sorting
+ [self _sortFavorites];
+
+ [[[sender menu] itemAtIndex:previousSortItem] setState:NSOffState];
+ [[[sender menu] itemAtIndex:currentSortItem] setState:NSOnState];
+}
+
+/**
+ * Reverses the favorites table view sorting based on the selected criteria
+ */
+- (IBAction)reverseFavoritesSortOrder:(id)sender
+{
+ reverseFavoritesSort = (![sender state]);
+
+ [prefs setBool:reverseFavoritesSort forKey:SPFavoritesSortedInReverse];
+
+ // Perform re-sorting
+ [self _sortFavorites];
+
+ [sender setState:reverseFavoritesSort];
+}
+
#pragma mark -
#pragma mark Toolbar item IBAction methods
@@ -1113,6 +1155,22 @@
return ([favoritesTableView numberOfSelectedRows] > 0);
}
+ if ((action == @selector(sortFavorites:)) || (action == @selector(reverseFavoritesSortOrder:))) {
+
+ // Loop all the items in the sort by menu only checking the currently selected one
+ for (NSMenuItem *item in [[menuItem menu] itemArray])
+ {
+ [item setState:([[menuItem menu] indexOfItem:item] == currentSortItem) ? NSOnState : NSOffState];
+ }
+
+ // Check or uncheck the reverse sort item
+ if (action == @selector(reverseFavoritesSortOrder:)) {
+ [menuItem setState:reverseFavoritesSort];
+ }
+
+ return [[toolbar selectedItemIdentifier] isEqualToString:SPPreferenceToolbarFavorites];
+ }
+
return YES;
}
@@ -1219,6 +1277,43 @@
[self displayGeneralPreferences:nil];
}
+/**
+ * Sorts the connection favorites based on the selected criteria.
+ */
+- (void)_sortFavorites
+{
+ NSString *sortKey = @"";
+
+ switch (currentSortItem)
+ {
+ case SPFavoritesSortNameItem:
+ sortKey = @"name";
+ break;
+ case SPFavoritesSortHostItem:
+ sortKey = @"host";
+ break;
+ case SPFavoritesSortTypeItem:
+ sortKey = @"type";
+ break;
+ default:
+ sortKey = @"name";
+ break;
+ }
+
+ NSSortDescriptor *sortDescriptor = nil;
+
+ if (currentSortItem == SPFavoritesSortTypeItem) {
+ sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:sortKey ascending:reverseFavoritesSort] autorelease];
+ }
+ else {
+ sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:sortKey ascending:reverseFavoritesSort selector:@selector(caseInsensitiveCompare:)] autorelease];
+ }
+
+ [favoritesController setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];
+
+ [favoritesTableView reloadData];
+}
+
// -------------------------------------------------------------------------------
// _resizeWindowForContentView:
//
diff --git a/Source/TableDocument.m b/Source/TableDocument.m
index d73fa943..2a95c158 100644
--- a/Source/TableDocument.m
+++ b/Source/TableDocument.m
@@ -3148,6 +3148,12 @@
return ([[tablesListInstance valueForKeyPath:@"tables"] count] > 1);
}
+
+ // If validation for the sort favorites tableview items reaches here then the preferences window isn't
+ // open return NO.
+ if (([menuItem action] == @selector(sortFavorites:)) || ([menuItem action] == @selector(reverseFavoritesSortOrder:))) {
+ return NO;
+ }
return [super validateMenuItem:menuItem];
}