diff options
-rw-r--r-- | Interfaces/English.lproj/DBView.xib | 1442 | ||||
-rw-r--r-- | Source/SPTableContent.h | 18 | ||||
-rw-r--r-- | Source/SPTableContent.m | 571 |
3 files changed, 1705 insertions, 326 deletions
diff --git a/Interfaces/English.lproj/DBView.xib b/Interfaces/English.lproj/DBView.xib index c05d72c9..d4219db2 100644 --- a/Interfaces/English.lproj/DBView.xib +++ b/Interfaces/English.lproj/DBView.xib @@ -23,15 +23,14 @@ </object> <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> <bool key="EncodedWithXMLCoder">YES</bool> - <integer value="6557"/> - <integer value="5999"/> <integer value="27"/> + <integer value="5999"/> </object> <object class="NSArray" key="IBDocument.PluginDependencies"> <bool key="EncodedWithXMLCoder">YES</bool> <string>com.brandonwalkin.BWToolkit</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.WebKitIBPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> </object> <object class="NSMutableDictionary" key="IBDocument.Metadata"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -229,7 +228,7 @@ <string key="NSColorName">controlColor</string> <object class="NSColor" key="NSColor" id="1001122760"> <int key="NSColorSpace">3</int> - <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes> + <bytes key="NSWhite">MC42NjY2NjY2ODY1AA</bytes> </object> </object> <reference key="NSTextColor" ref="454249633"/> @@ -274,7 +273,6 @@ </object> <string key="NSFrame">{{1, 1}, {218, 38}}</string> <reference key="NSSuperview" ref="607475905"/> - <reference key="NSNextKeyView" ref="970881282"/> <reference key="NSDocView" ref="970881282"/> <object class="NSColor" key="NSBGColor" id="1024678221"> <int key="NSColorSpace">6</int> @@ -306,7 +304,6 @@ </object> <string key="NSFrame">{{-1, -13}, {220, 40}}</string> <reference key="NSSuperview" ref="801427893"/> - <reference key="NSNextKeyView" ref="494991824"/> <int key="NSsFlags">2</int> <reference key="NSVScroller" ref="196112633"/> <reference key="NSHScroller" ref="142487484"/> @@ -404,7 +401,6 @@ </object> <string key="NSFrameSize">{214, 354}</string> <reference key="NSSuperview" ref="233472824"/> - <reference key="NSNextKeyView" ref="251040077"/> <reference key="NSDocView" ref="251040077"/> <reference key="NSBGColor" ref="1024678221"/> <int key="NScvFlags">4</int> @@ -432,7 +428,6 @@ </object> <string key="NSFrameSize">{214, 354}</string> <reference key="NSSuperview" ref="1017775084"/> - <reference key="NSNextKeyView" ref="73685676"/> <int key="NSsFlags">528</int> <reference key="NSVScroller" ref="693168867"/> <reference key="NSHScroller" ref="656188692"/> @@ -568,7 +563,6 @@ </object> <string key="NSFrameSize">{214, 145}</string> <reference key="NSSuperview" ref="298226231"/> - <reference key="NSNextKeyView" ref="347093764"/> <reference key="NSDocView" ref="347093764"/> <reference key="NSBGColor" ref="1024678221"/> <int key="NScvFlags">6</int> @@ -596,7 +590,6 @@ </object> <string key="NSFrameSize">{214, 145}</string> <reference key="NSSuperview" ref="192579410"/> - <reference key="NSNextKeyView" ref="685057119"/> <int key="NSsFlags">512</int> <reference key="NSVScroller" ref="245346414"/> <reference key="NSHScroller" ref="353686052"/> @@ -2405,7 +2398,6 @@ </object> <string key="NSFrame">{{1, 17}, {694, 450}}</string> <reference key="NSSuperview" ref="33038697"/> - <reference key="NSNextKeyView" ref="22576329"/> <reference key="NSDocView" ref="22576329"/> <reference key="NSBGColor" ref="1024678221"/> <int key="NScvFlags">2</int> @@ -2439,7 +2431,6 @@ </object> <string key="NSFrame">{{1, 0}, {694, 17}}</string> <reference key="NSSuperview" ref="33038697"/> - <reference key="NSNextKeyView" ref="457166030"/> <reference key="NSDocView" ref="457166030"/> <reference key="NSBGColor" ref="1024678221"/> <int key="NScvFlags">4</int> @@ -2448,7 +2439,6 @@ </object> <string key="NSFrame">{{6, 33}, {696, 468}}</string> <reference key="NSSuperview" ref="1013108064"/> - <reference key="NSNextKeyView" ref="545438501"/> <int key="NSsFlags">562</int> <reference key="NSVScroller" ref="398797698"/> <reference key="NSHScroller" ref="178353583"/> @@ -3064,6 +3054,30 @@ <int key="NSPeriodicInterval">75</int> </object> </object> + <object class="NSButton" id="873734510"> + <reference key="NSNextResponder" ref="1013108064"/> + <int key="NSvFlags">265</int> + <string key="NSFrame">{{734, 507}, {160, 16}}</string> + <reference key="NSSuperview" ref="1013108064"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="212274460"> + <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags2">134479872</int> + <string key="NSContents">ShowFilterTable_Dummy_Button</string> + <object class="NSFont" key="NSSupport"> + <string key="NSName">LucidaGrande</string> + <double key="NSSize">9</double> + <int key="NSfFlags">3614</int> + </object> + <reference key="NSControlView" ref="873734510"/> + <int key="NSButtonFlags">-2038284033</int> + <int key="NSButtonFlags2">268435585</int> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent">f</string> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> </object> <string key="NSFrame">{{10, 7}, {706, 544}}</string> <reference key="NSSuperview" ref="714795046"/> @@ -6787,7 +6801,7 @@ <object class="NSMutableString" key="NSViewClass"> <characters key="NS.bytes">View</characters> </object> - <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string> + <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string> <string key="NSWindowContentMinSize">{213, 107}</string> <object class="NSView" key="NSWindowView" id="234287744"> <nil key="NSNextResponder"/> @@ -6943,7 +6957,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> </object> <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string> <string key="NSMinSize">{213, 129}</string> - <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string> + <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string> </object> <object class="NSWindowTemplate" id="423199625"> <int key="NSWindowStyleMask">7</int> @@ -6953,7 +6967,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> <string key="NSWindowTitle">Reset Auto Increment</string> <string key="NSWindowClass">NSWindow</string> <nil key="NSViewClass"/> - <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string> + <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string> <string key="NSWindowContentMinSize">{255, 95}</string> <object class="NSView" key="NSWindowView" id="748618982"> <nil key="NSNextResponder"/> @@ -7116,7 +7130,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> </object> <string key="NSScreenRect">{{0, 0}, {1280, 1002}}</string> <string key="NSMinSize">{255, 117}</string> - <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string> + <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string> </object> <object class="NSWindowTemplate" id="787219800"> <int key="NSWindowStyleMask">1</int> @@ -7126,7 +7140,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> <string key="NSWindowTitle">New Relation</string> <string key="NSWindowClass">NSPanel</string> <nil key="NSViewClass"/> - <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string> + <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string> <object class="NSView" key="NSWindowView" id="842408319"> <nil key="NSNextResponder"/> <int key="NSvFlags">256</int> @@ -7727,7 +7741,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> <string key="NSFrameSize">{302, 307}</string> </object> <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string> - <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string> + <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string> </object> <object class="NSWindowTemplate" id="437271354"> <int key="NSWindowStyleMask">9</int> @@ -7737,7 +7751,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> <string key="NSWindowTitle">New Trigger</string> <string key="NSWindowClass">NSPanel</string> <nil key="NSViewClass"/> - <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string> + <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string> <string key="NSWindowContentMinSize">{360, 348}</string> <object class="NSView" key="NSWindowView" id="729080358"> <nil key="NSNextResponder"/> @@ -8144,7 +8158,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> </object> <string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string> <string key="NSMinSize">{360, 370}</string> - <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string> + <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string> </object> <object class="NSWindowTemplate" id="1066802919"> <int key="NSWindowStyleMask">3</int> @@ -8156,7 +8170,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> <object class="NSMutableString" key="NSViewClass"> <characters key="NS.bytes">View</characters> </object> - <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string> + <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string> <string key="NSWindowContentMinSize">{213, 50}</string> <object class="NSView" key="NSWindowView" id="525490268"> <nil key="NSNextResponder"/> @@ -8276,7 +8290,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> </object> <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string> <string key="NSMinSize">{213, 72}</string> - <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string> + <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string> </object> <object class="NSWindowTemplate" id="553728448"> <int key="NSWindowStyleMask">9</int> @@ -8288,7 +8302,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> <object class="NSMutableString" key="NSViewClass"> <characters key="NS.bytes">View</characters> </object> - <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string> + <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string> <string key="NSWindowContentMinSize">{213, 107}</string> <object class="NSView" key="NSWindowView" id="1052076676"> <nil key="NSNextResponder"/> @@ -8423,7 +8437,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> </object> <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string> <string key="NSMinSize">{213, 129}</string> - <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string> + <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string> </object> <object class="NSWindowTemplate" id="828950706"> <int key="NSWindowStyleMask">15</int> @@ -8435,10 +8449,10 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> <object class="NSMutableString" key="NSViewClass"> <characters key="NS.bytes">View</characters> </object> - <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string> + <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string> <string key="NSWindowContentMinSize">{350, 200}</string> <object class="NSView" key="NSWindowView" id="749598685"> - <reference key="NSNextResponder"/> + <nil key="NSNextResponder"/> <int key="NSvFlags">256</int> <object class="NSMutableArray" key="NSSubviews"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -8596,7 +8610,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> </object> <string key="NSFrame">{{1, 1}, {411, 264}}</string> <reference key="NSSuperview" ref="666283614"/> - <reference key="NSNextKeyView" ref="843242867"/> <reference key="NSDocView" ref="843242867"/> <reference key="NSBGColor" ref="449903125"/> <reference key="NSCursor" ref="32917531"/> @@ -8626,7 +8639,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> </object> <string key="NSFrame">{{-1, 42}, {413, 266}}</string> <reference key="NSSuperview" ref="749598685"/> - <reference key="NSNextKeyView" ref="789153540"/> <int key="NSsFlags">514</int> <reference key="NSVScroller" ref="497829974"/> <reference key="NSHScroller" ref="246464134"/> @@ -8655,11 +8667,10 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> </object> </object> <string key="NSFrameSize">{411, 341}</string> - <reference key="NSSuperview"/> </object> <string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string> <string key="NSMinSize">{350, 222}</string> - <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string> + <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string> <string key="NSFrameAutosaveName">SPCreateSyntaxSheet</string> </object> <object class="NSWindowTemplate" id="466147946"> @@ -8672,7 +8683,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> <object class="NSMutableString" key="NSViewClass"> <characters key="NS.bytes">View</characters> </object> - <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string> + <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string> <string key="NSWindowContentMinSize">{213, 107}</string> <object class="NSView" key="NSWindowView" id="860968037"> <nil key="NSNextResponder"/> @@ -8842,7 +8853,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> </object> <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string> <string key="NSMinSize">{213, 129}</string> - <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string> + <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string> </object> <object class="NSWindowTemplate" id="78186995"> <int key="NSWindowStyleMask">31</int> @@ -8852,7 +8863,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> <string key="NSWindowTitle">MySQL Help</string> <string key="NSWindowClass">NSPanel</string> <nil key="NSViewClass"/> - <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string> + <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string> <string key="NSWindowContentMinSize">{351, 120}</string> <object class="NSView" key="NSWindowView" id="539508428"> <nil key="NSNextResponder"/> @@ -9250,9 +9261,508 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> </object> <string key="NSScreenRect">{{0, 0}, {1280, 1002}}</string> <string key="NSMinSize">{351, 136}</string> - <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string> + <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string> <string key="NSFrameAutosaveName">MYSQL_HELP_WINDOW</string> </object> + <object class="NSWindowTemplate" id="633448481"> + <int key="NSWindowStyleMask">8347</int> + <int key="NSWindowBacking">2</int> + <string key="NSWindowRect">{{131, 159}, {480, 270}}</string> + <int key="NSWTFlags">1685585920</int> + <string key="NSWindowTitle">Filter</string> + <string key="NSWindowClass">NSPanel</string> + <nil key="NSViewClass"/> + <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string> + <string key="NSWindowContentMinSize">{240, 170}</string> + <object class="NSView" key="NSWindowView" id="257361103"> + <reference key="NSNextResponder"/> + <int key="NSvFlags">256</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="BWTransparentScrollView" id="875855507"> + <reference key="NSNextResponder" ref="257361103"/> + <int key="NSvFlags">4364</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSClipView" id="1007856342"> + <reference key="NSNextResponder" ref="875855507"/> + <int key="NSvFlags">2304</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="BWTransparentTableView" id="485242232"> + <reference key="NSNextResponder" ref="1007856342"/> + <int key="NSvFlags">4352</int> + <string key="NSFrameSize">{478, 215}</string> + <reference key="NSSuperview" ref="1007856342"/> + <reference key="NSWindow"/> + <bool key="NSEnabled">YES</bool> + <object class="_NSCornerView" key="NSCornerView"> + <nil key="NSNextResponder"/> + <int key="NSvFlags">-2147483392</int> + <string key="NSFrame">{{-26, 0}, {16, 17}}</string> + </object> + <object class="NSMutableArray" key="NSTableColumns"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <double key="NSIntercellSpacingWidth">3</double> + <double key="NSIntercellSpacingHeight">2</double> + <object class="NSColor" key="NSBackgroundColor" id="530106442"> + <int key="NSColorSpace">4</int> + <bytes key="NSWhite">MSAwLjE0MDAwMDAwMDYAA</bytes> + </object> + <reference key="NSGridColor" ref="864903678"/> + <double key="NSRowHeight">20</double> + <int key="NSTvFlags">-692060160</int> + <reference key="NSDelegate"/> + <reference key="NSDataSource"/> + <int key="NSColumnAutoresizingStyle">4</int> + <int key="NSDraggingSourceMaskForLocal">15</int> + <int key="NSDraggingSourceMaskForNonLocal">0</int> + <bool key="NSAllowsTypeSelect">YES</bool> + <int key="NSTableViewDraggingDestinationStyle">0</int> + </object> + </object> + <string key="NSFrameSize">{478, 215}</string> + <reference key="NSSuperview" ref="875855507"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="485242232"/> + <reference key="NSDocView" ref="485242232"/> + <reference key="NSBGColor" ref="530106442"/> + <int key="NScvFlags">4</int> + </object> + <object class="BWTransparentScroller" id="67901648"> + <reference key="NSNextResponder" ref="875855507"/> + <int key="NSvFlags">-2147483392</int> + <string key="NSFrame">{{-100, -100}, {15, 120}}</string> + <reference key="NSSuperview" ref="875855507"/> + <reference key="NSWindow"/> + <int key="NSArrowsLoc">2</int> + <reference key="NSTarget" ref="875855507"/> + <string key="NSAction">_doScroller:</string> + <double key="NSPercent">0.99253731966018677</double> + </object> + <object class="NSScroller" id="874241200"> + <reference key="NSNextResponder" ref="875855507"/> + <int key="NSvFlags">-2147483392</int> + <string key="NSFrame">{{-100, -100}, {225, 15}}</string> + <reference key="NSSuperview" ref="875855507"/> + <reference key="NSWindow"/> + <int key="NSsFlags">1</int> + <reference key="NSTarget" ref="875855507"/> + <string key="NSAction">_doScroller:</string> + <double key="NSPercent">0.57142859697341919</double> + </object> + </object> + <string key="NSFrame">{{1, 55}, {478, 215}}</string> + <reference key="NSSuperview" ref="257361103"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="1007856342"/> + <int key="NSsFlags">560</int> + <reference key="NSVScroller" ref="67901648"/> + <reference key="NSHScroller" ref="874241200"/> + <reference key="NSContentView" ref="1007856342"/> + <bytes key="NSScrollAmts">QSAAAEEgAABBsAAAQbAAAA</bytes> + </object> + <object class="BWTransparentButton" id="389089658"> + <reference key="NSNextResponder" ref="257361103"/> + <int key="NSvFlags">289</int> + <string key="NSFrame">{{380, 10}, {81, 28}}</string> + <reference key="NSSuperview" ref="257361103"/> + <reference key="NSWindow"/> + <bool key="NSEnabled">YES</bool> + <object class="BWTransparentButtonCell" key="NSCell" id="800774053"> + <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags2">134348800</int> + <string key="NSContents">Filter</string> + <reference key="NSSupport" ref="26"/> + <reference key="NSControlView" ref="389089658"/> + <int key="NSButtonFlags">-2038284033</int> + <int key="NSButtonFlags2">268435585</int> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent">f</string> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + <object class="BWTransparentButton" id="672293521"> + <reference key="NSNextResponder" ref="257361103"/> + <int key="NSvFlags">289</int> + <string key="NSFrame">{{293, 10}, {81, 28}}</string> + <reference key="NSSuperview" ref="257361103"/> + <reference key="NSWindow"/> + <bool key="NSEnabled">YES</bool> + <object class="BWTransparentButtonCell" key="NSCell" id="1073467237"> + <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags2">134348800</int> + <string key="NSContents">Clear</string> + <reference key="NSSupport" ref="26"/> + <reference key="NSControlView" ref="672293521"/> + <int key="NSButtonFlags">-2038284033</int> + <int key="NSButtonFlags2">268435585</int> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"></string> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + <object class="BWSplitView" id="80390753"> + <reference key="NSNextResponder" ref="257361103"/> + <int key="NSvFlags">274</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="BWCustomView" id="40644394"> + <reference key="NSNextResponder" ref="80390753"/> + <int key="NSvFlags">272</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSScrollView" id="332689220"> + <reference key="NSNextResponder" ref="40644394"/> + <int key="NSvFlags">274</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSClipView" id="824010218"> + <reference key="NSNextResponder" ref="332689220"/> + <int key="NSvFlags">2304</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSTableView" id="233010382"> + <reference key="NSNextResponder" ref="824010218"/> + <int key="NSvFlags">274</int> + <string key="NSFrameSize">{478, 87}</string> + <reference key="NSSuperview" ref="824010218"/> + <reference key="NSWindow"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTableHeaderView" key="NSHeaderView" id="493190585"> + <reference key="NSNextResponder" ref="970708568"/> + <int key="NSvFlags">256</int> + <string key="NSFrameSize">{478, 17}</string> + <reference key="NSSuperview" ref="970708568"/> + <reference key="NSWindow"/> + <reference key="NSTableView" ref="233010382"/> + </object> + <object class="_NSCornerView" key="NSCornerView" id="651821776"> + <reference key="NSNextResponder" ref="332689220"/> + <int key="NSvFlags">-2147483392</int> + <string key="NSFrame">{{224, 0}, {16, 17}}</string> + <reference key="NSSuperview" ref="332689220"/> + <reference key="NSWindow"/> + </object> + <object class="NSMutableArray" key="NSTableColumns"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSTableColumn" id="435560165"> + <double key="NSWidth">242</double> + <double key="NSMinWidth">40</double> + <double key="NSMaxWidth">1000</double> + <object class="NSTableHeaderCell" key="NSHeaderCell"> + <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags2">2048</int> + <string key="NSContents"/> + <reference key="NSSupport" ref="26"/> + <object class="NSColor" key="NSBackgroundColor"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MC4zMzMzMzI5ODU2AA</bytes> + </object> + <reference key="NSTextColor" ref="222976159"/> + </object> + <object class="NSTextFieldCell" key="NSDataCell" id="1007581754"> + <int key="NSCellFlags">337772096</int> + <int key="NSCellFlags2">133120</int> + <string key="NSContents">Text Cell</string> + <reference key="NSSupport" ref="26"/> + <reference key="NSControlView" ref="233010382"/> + <reference key="NSBackgroundColor" ref="1024678221"/> + <reference key="NSTextColor" ref="454249633"/> + </object> + <int key="NSResizingMask">3</int> + <bool key="NSIsResizeable">YES</bool> + <bool key="NSIsEditable">YES</bool> + <reference key="NSTableView" ref="233010382"/> + </object> + </object> + <double key="NSIntercellSpacingWidth">3</double> + <double key="NSIntercellSpacingHeight">2</double> + <object class="NSColor" key="NSBackgroundColor"> + <int key="NSColorSpace">4</int> + <bytes key="NSWhite">MQA</bytes> + </object> + <reference key="NSGridColor" ref="864903678"/> + <double key="NSRowHeight">14</double> + <int key="NSTvFlags">-624918528</int> + <reference key="NSDelegate"/> + <reference key="NSDataSource"/> + <int key="NSColumnAutoresizingStyle">1</int> + <int key="NSDraggingSourceMaskForLocal">15</int> + <int key="NSDraggingSourceMaskForNonLocal">0</int> + <bool key="NSAllowsTypeSelect">YES</bool> + <int key="NSTableViewSelectionHighlightStyle">1</int> + <int key="NSTableViewDraggingDestinationStyle">1</int> + </object> + </object> + <string key="NSFrame">{{1, 17}, {478, 87}}</string> + <reference key="NSSuperview" ref="332689220"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="233010382"/> + <reference key="NSDocView" ref="233010382"/> + <object class="NSColor" key="NSBGColor"> + <int key="NSColorSpace">4</int> + <bytes key="NSWhite">MQA</bytes> + </object> + <int key="NScvFlags">4</int> + </object> + <object class="NSScroller" id="281953763"> + <reference key="NSNextResponder" ref="332689220"/> + <int key="NSvFlags">-2147483392</int> + <string key="NSFrame">{{224, 17}, {15, 102}}</string> + <reference key="NSSuperview" ref="332689220"/> + <reference key="NSWindow"/> + <reference key="NSTarget" ref="332689220"/> + <string key="NSAction">_doScroller:</string> + <double key="NSPercent">0.98275864124298096</double> + </object> + <object class="NSScroller" id="784489290"> + <reference key="NSNextResponder" ref="332689220"/> + <int key="NSvFlags">-2147483392</int> + <string key="NSFrame">{{1, 119}, {223, 15}}</string> + <reference key="NSSuperview" ref="332689220"/> + <reference key="NSWindow"/> + <int key="NSsFlags">1</int> + <reference key="NSTarget" ref="332689220"/> + <string key="NSAction">_doScroller:</string> + <double key="NSPercent">0.99382716417312622</double> + </object> + <object class="NSClipView" id="970708568"> + <reference key="NSNextResponder" ref="332689220"/> + <int key="NSvFlags">2304</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="493190585"/> + </object> + <string key="NSFrame">{{1, 0}, {478, 17}}</string> + <reference key="NSSuperview" ref="332689220"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="493190585"/> + <reference key="NSDocView" ref="493190585"/> + <reference key="NSBGColor" ref="1024678221"/> + <int key="NScvFlags">4</int> + </object> + <reference ref="651821776"/> + </object> + <string key="NSFrameSize">{480, 105}</string> + <reference key="NSSuperview" ref="40644394"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="824010218"/> + <int key="NSsFlags">562</int> + <reference key="NSVScroller" ref="281953763"/> + <reference key="NSHScroller" ref="784489290"/> + <reference key="NSContentView" ref="824010218"/> + <reference key="NSHeaderClipView" ref="970708568"/> + <reference key="NSCornerView" ref="651821776"/> + <bytes key="NSScrollAmts">QSAAAEEgAABBgAAAQYAAAA</bytes> + </object> + </object> + <string key="NSFrameSize">{480, 106}</string> + <reference key="NSSuperview" ref="80390753"/> + <reference key="NSWindow"/> + <string key="NSClassName">NSView</string> + </object> + <object class="BWCustomView" id="317678649"> + <reference key="NSNextResponder" ref="80390753"/> + <int key="NSvFlags">272</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSScrollView" id="81944450"> + <reference key="NSNextResponder" ref="317678649"/> + <int key="NSvFlags">274</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSClipView" id="673776733"> + <reference key="NSNextResponder" ref="81944450"/> + <int key="NSvFlags">2304</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSTextView" id="378021102"> + <reference key="NSNextResponder" ref="673776733"/> + <int key="NSvFlags">2322</int> + <object class="NSMutableSet" key="NSDragTypes"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="set.sortedObjects"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>Apple HTML pasteboard type</string> + <string>Apple PDF pasteboard type</string> + <string>Apple PICT pasteboard type</string> + <string>Apple PNG pasteboard type</string> + <string>Apple URL pasteboard type</string> + <string>CorePasteboardFlavorType 0x6D6F6F76</string> + <string>NSColor pasteboard type</string> + <string>NSFilenamesPboardType</string> + <string>NSStringPboardType</string> + <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string> + <string>NeXT RTFD pasteboard type</string> + <string>NeXT Rich Text Format v1.0 pasteboard type</string> + <string>NeXT TIFF v4.0 pasteboard type</string> + <string>NeXT font pasteboard type</string> + <string>NeXT ruler pasteboard type</string> + <string>WebURLsWithTitlesPboardType</string> + <string>public.url</string> + </object> + </object> + <string key="NSFrameSize">{478, 14}</string> + <reference key="NSSuperview" ref="673776733"/> + <reference key="NSWindow"/> + <object class="NSTextContainer" key="NSTextContainer" id="310042793"> + <object class="NSLayoutManager" key="NSLayoutManager"> + <object class="NSTextStorage" key="NSTextStorage"> + <object class="NSMutableString" key="NSString"> + <characters key="NS.bytes"/> + </object> + <nil key="NSDelegate"/> + </object> + <object class="NSMutableArray" key="NSTextContainers"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="310042793"/> + </object> + <int key="NSLMFlags">134</int> + <nil key="NSDelegate"/> + </object> + <reference key="NSTextView" ref="378021102"/> + <double key="NSWidth">478</double> + <int key="NSTCFlags">1</int> + </object> + <object class="NSTextViewSharedData" key="NSSharedData"> + <int key="NSFlags">12263</int> + <int key="NSTextCheckingTypes">0</int> + <nil key="NSMarkedAttributes"/> + <reference key="NSBackgroundColor" ref="449903125"/> + <object class="NSDictionary" key="NSSelectedAttributes"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSBackgroundColor</string> + <string>NSColor</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="905060551"/> + <reference ref="63182758"/> + </object> + </object> + <reference key="NSInsertionColor" ref="304829493"/> + <object class="NSDictionary" key="NSLinkAttributes"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSColor</string> + <string>NSCursor</string> + <string>NSUnderline</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="114422645"/> + <object class="NSCursor"> + <string key="NSHotSpot">{8, -8}</string> + <int key="NSCursorType">13</int> + </object> + <integer value="1"/> + </object> + </object> + <nil key="NSDefaultParagraphStyle"/> + </object> + <int key="NSTVFlags">6</int> + <string key="NSMaxSize">{478, 1e+07}</string> + <string key="NSMinize">{197, 4}</string> + <nil key="NSDelegate"/> + </object> + </object> + <string key="NSFrame">{{1, 1}, {478, 106}}</string> + <reference key="NSSuperview" ref="81944450"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="378021102"/> + <reference key="NSDocView" ref="378021102"/> + <reference key="NSBGColor" ref="449903125"/> + <reference key="NSCursor" ref="32917531"/> + <int key="NScvFlags">4</int> + </object> + <object class="NSScroller" id="617167031"> + <reference key="NSNextResponder" ref="81944450"/> + <int key="NSvFlags">-2147483392</int> + <string key="NSFrame">{{464, 1}, {15, 91}}</string> + <reference key="NSSuperview" ref="81944450"/> + <reference key="NSWindow"/> + <reference key="NSTarget" ref="81944450"/> + <string key="NSAction">_doScroller:</string> + <double key="NSCurValue">1</double> + <double key="NSPercent">0.85256409645080566</double> + </object> + <object class="NSScroller" id="28009727"> + <reference key="NSNextResponder" ref="81944450"/> + <int key="NSvFlags">-2147483392</int> + <string key="NSFrame">{{1, 92}, {463, 15}}</string> + <reference key="NSSuperview" ref="81944450"/> + <reference key="NSWindow"/> + <int key="NSsFlags">1</int> + <reference key="NSTarget" ref="81944450"/> + <string key="NSAction">_doScroller:</string> + <double key="NSCurValue">1</double> + <double key="NSPercent">0.94565218687057495</double> + </object> + </object> + <string key="NSFrameSize">{480, 108}</string> + <reference key="NSSuperview" ref="317678649"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="673776733"/> + <int key="NSsFlags">562</int> + <reference key="NSVScroller" ref="617167031"/> + <reference key="NSHScroller" ref="28009727"/> + <reference key="NSContentView" ref="673776733"/> + </object> + </object> + <string key="NSFrame">{{0, 107}, {480, 108}}</string> + <reference key="NSSuperview" ref="80390753"/> + <reference key="NSWindow"/> + <string key="NSClassName">NSView</string> + </object> + </object> + <string key="NSFrame">{{0, 55}, {480, 215}}</string> + <reference key="NSSuperview" ref="257361103"/> + <reference key="NSWindow"/> + <int key="NSDividerStyle">2</int> + <reference key="BWSVColor" ref="304829493"/> + <bool key="BWSVColorIsEnabled">NO</bool> + <object class="NSMutableDictionary" key="BWSVMinValues"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference key="dict.sortedKeys" ref="0"/> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + </object> + <object class="NSMutableDictionary" key="BWSVMaxValues"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference key="dict.sortedKeys" ref="0"/> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + </object> + <object class="NSMutableDictionary" key="BWSVMinUnits"> + <integer value="0" key="NS.key.0"/> + <integer value="0" key="NS.object.0"/> + </object> + <object class="NSMutableDictionary" key="BWSVMaxUnits"> + <integer value="0" key="NS.key.0"/> + <integer value="0" key="NS.object.0"/> + </object> + <int key="BWSVCollapsiblePopupSelection">0</int> + <bool key="BWSVDividerCanCollapse">NO</bool> + </object> + </object> + <string key="NSFrameSize">{480, 270}</string> + <reference key="NSSuperview"/> + <reference key="NSWindow"/> + </object> + <string key="NSScreenRect">{{0, 0}, {1280, 778}}</string> + <string key="NSMinSize">{240, 189}</string> + <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string> + <string key="NSFrameAutosaveName">SPTableFilterPanel</string> + </object> <object class="NSWindowTemplate" id="434046103"> <int key="NSWindowStyleMask">9</int> <int key="NSWindowBacking">2</int> @@ -9384,7 +9894,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> <string key="NSWindowTitle">Secure Text Input Sheet</string> <string key="NSWindowClass">NSPanel</string> <nil key="NSViewClass"/> - <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string> + <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string> <object class="NSView" key="NSWindowView" id="978976687"> <nil key="NSNextResponder"/> <int key="NSvFlags">256</int> @@ -9488,7 +9998,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> <string key="NSFrameSize">{338, 150}</string> </object> <string key="NSScreenRect">{{0, 0}, {1280, 778}}</string> - <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string> + <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string> </object> <object class="NSCustomView" id="884983195"> <nil key="NSNextResponder"/> @@ -9671,7 +10181,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> <string key="NSColorName">disabledControlTextColor</string> <object class="NSColor" key="NSColor"> <int key="NSColorSpace">3</int> - <bytes key="NSWhite">MC4zMzMzMzMzMzMzAA</bytes> + <bytes key="NSWhite">MC4zMzMzMzMzNDMzAA</bytes> </object> </object> </object> @@ -9975,6 +10485,79 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> <string key="NSFrameSize">{217, 20}</string> <string key="NSClassName">NSView</string> </object> + <object class="NSCustomView" id="456635389"> + <nil key="NSNextResponder"/> + <int key="NSvFlags">4364</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSSearchField" id="388856443"> + <reference key="NSNextResponder" ref="456635389"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{20, 1}, {176, 19}}</string> + <reference key="NSSuperview" ref="456635389"/> + <bool key="NSEnabled">YES</bool> + <object class="NSSearchFieldCell" key="NSCell" id="292622292"> + <int key="NSCellFlags">343014976</int> + <int key="NSCellFlags2">272794624</int> + <string key="NSContents"/> + <reference key="NSSupport" ref="26"/> + <string key="NSPlaceholderString">Filter</string> + <reference key="NSControlView" ref="388856443"/> + <bool key="NSDrawsBackground">YES</bool> + <int key="NSTextBezelStyle">1</int> + <reference key="NSBackgroundColor" ref="480189472"/> + <reference key="NSTextColor" ref="454249633"/> + <object class="NSButtonCell" key="NSSearchButtonCell"> + <int key="NSCellFlags">130560</int> + <int key="NSCellFlags2">0</int> + <string key="NSContents">search</string> + <reference key="NSControlView" ref="388856443"/> + <string key="NSAction">_searchFieldSearch:</string> + <reference key="NSTarget" ref="292622292"/> + <int key="NSButtonFlags">138690815</int> + <int key="NSButtonFlags2">0</int> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">400</int> + <int key="NSPeriodicInterval">75</int> + </object> + <object class="NSButtonCell" key="NSCancelButtonCell"> + <int key="NSCellFlags">130560</int> + <int key="NSCellFlags2">0</int> + <string key="NSContents">clear</string> + <object class="NSMutableArray" key="NSAccessibilityOverriddenAttributes"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMutableDictionary"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>AXDescription</string> + <string>NSAccessibilityEncodedAttributesValueType</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>cancel</string> + <integer value="1"/> + </object> + </object> + </object> + <reference key="NSControlView" ref="388856443"/> + <string key="NSAction">_searchFieldCancel:</string> + <reference key="NSTarget" ref="292622292"/> + <int key="NSButtonFlags">138690815</int> + <int key="NSButtonFlags2">0</int> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">400</int> + <int key="NSPeriodicInterval">75</int> + </object> + <string key="NSRecentsAutosaveName">SPQueryHistorySearchField</string> + <int key="NSMaximumRecents">10</int> + <bytes key="NSSearchFieldFlags">CAAAAA</bytes> + </object> + </object> + </object> + <string key="NSFrameSize">{217, 20}</string> + <string key="NSClassName">NSView</string> + </object> <object class="NSUserDefaultsController" id="461189245"> <bool key="NSSharedInstance">YES</bool> </object> @@ -10350,79 +10933,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> </object> </object> </object> - <object class="NSCustomView" id="456635389"> - <nil key="NSNextResponder"/> - <int key="NSvFlags">4364</int> - <object class="NSMutableArray" key="NSSubviews"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSSearchField" id="388856443"> - <reference key="NSNextResponder" ref="456635389"/> - <int key="NSvFlags">268</int> - <string key="NSFrame">{{20, 1}, {176, 19}}</string> - <reference key="NSSuperview" ref="456635389"/> - <bool key="NSEnabled">YES</bool> - <object class="NSSearchFieldCell" key="NSCell" id="292622292"> - <int key="NSCellFlags">343014976</int> - <int key="NSCellFlags2">272794624</int> - <string key="NSContents"/> - <reference key="NSSupport" ref="26"/> - <string key="NSPlaceholderString">Filter</string> - <reference key="NSControlView" ref="388856443"/> - <bool key="NSDrawsBackground">YES</bool> - <int key="NSTextBezelStyle">1</int> - <reference key="NSBackgroundColor" ref="480189472"/> - <reference key="NSTextColor" ref="454249633"/> - <object class="NSButtonCell" key="NSSearchButtonCell"> - <int key="NSCellFlags">130560</int> - <int key="NSCellFlags2">0</int> - <string key="NSContents">search</string> - <reference key="NSControlView" ref="388856443"/> - <string key="NSAction">_searchFieldSearch:</string> - <reference key="NSTarget" ref="292622292"/> - <int key="NSButtonFlags">138690815</int> - <int key="NSButtonFlags2">0</int> - <string key="NSKeyEquivalent"/> - <int key="NSPeriodicDelay">400</int> - <int key="NSPeriodicInterval">75</int> - </object> - <object class="NSButtonCell" key="NSCancelButtonCell"> - <int key="NSCellFlags">130560</int> - <int key="NSCellFlags2">0</int> - <string key="NSContents">clear</string> - <object class="NSMutableArray" key="NSAccessibilityOverriddenAttributes"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSMutableDictionary"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>AXDescription</string> - <string>NSAccessibilityEncodedAttributesValueType</string> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>cancel</string> - <integer value="1"/> - </object> - </object> - </object> - <reference key="NSControlView" ref="388856443"/> - <string key="NSAction">_searchFieldCancel:</string> - <reference key="NSTarget" ref="292622292"/> - <int key="NSButtonFlags">138690815</int> - <int key="NSButtonFlags2">0</int> - <string key="NSKeyEquivalent"/> - <int key="NSPeriodicDelay">400</int> - <int key="NSPeriodicInterval">75</int> - </object> - <string key="NSRecentsAutosaveName">SPQueryHistorySearchField</string> - <int key="NSMaximumRecents">10</int> - <bytes key="NSSearchFieldFlags">CAAAAA</bytes> - </object> - </object> - </object> - <string key="NSFrameSize">{217, 20}</string> - <string key="NSClassName">NSView</string> - </object> </object> <object class="IBObjectContainer" key="IBDocument.Objects"> <object class="NSMutableArray" key="connectionRecords"> @@ -14764,6 +15274,70 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> </object> <int key="connectionID">7501</int> </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">tableFilterClear:</string> + <reference key="source" ref="392169872"/> + <reference key="destination" ref="672293521"/> + </object> + <int key="connectionID">7526</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">tableFilterExecute:</string> + <reference key="source" ref="392169872"/> + <reference key="destination" ref="389089658"/> + </object> + <int key="connectionID">7527</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">filterTableWindow</string> + <reference key="source" ref="392169872"/> + <reference key="destination" ref="633448481"/> + </object> + <int key="connectionID">7528</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">filterTableWhereClause</string> + <reference key="source" ref="392169872"/> + <reference key="destination" ref="378021102"/> + </object> + <int key="connectionID">7529</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">dataSource</string> + <reference key="source" ref="233010382"/> + <reference key="destination" ref="392169872"/> + </object> + <int key="connectionID">7530</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">delegate</string> + <reference key="source" ref="233010382"/> + <reference key="destination" ref="392169872"/> + </object> + <int key="connectionID">7531</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">filterTableView</string> + <reference key="source" ref="392169872"/> + <reference key="destination" ref="233010382"/> + </object> + <int key="connectionID">7532</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">showTableFilter:</string> + <reference key="source" ref="392169872"/> + <reference key="destination" ref="873734510"/> + </object> + <int key="connectionID">7535</int> + </object> </object> <object class="IBMutableOrderedSet" key="objectRecords"> <object class="NSArray" key="orderedObjects"> @@ -17897,6 +18471,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> <reference ref="262235013"/> <reference ref="393139604"/> <reference ref="196265983"/> + <reference ref="873734510"/> </object> <reference key="parent" ref="624106058"/> </object> @@ -20791,6 +21366,200 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> <reference key="object" ref="182964528"/> <reference key="parent" ref="752657505"/> </object> + <object class="IBObjectRecord"> + <int key="objectID">7502</int> + <reference key="object" ref="633448481"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="257361103"/> + </object> + <reference key="parent" ref="0"/> + <string key="objectName">Filter Table Window</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">7503</int> + <reference key="object" ref="257361103"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="80390753"/> + <reference ref="672293521"/> + <reference ref="389089658"/> + <reference ref="875855507"/> + </object> + <reference key="parent" ref="633448481"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">7504</int> + <reference key="object" ref="80390753"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="317678649"/> + <reference ref="40644394"/> + </object> + <reference key="parent" ref="257361103"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">7505</int> + <reference key="object" ref="672293521"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="1073467237"/> + </object> + <reference key="parent" ref="257361103"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">7506</int> + <reference key="object" ref="389089658"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="800774053"/> + </object> + <reference key="parent" ref="257361103"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">7507</int> + <reference key="object" ref="875855507"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="485242232"/> + <reference ref="874241200"/> + <reference ref="67901648"/> + </object> + <reference key="parent" ref="257361103"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">7508</int> + <reference key="object" ref="485242232"/> + <reference key="parent" ref="875855507"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">7509</int> + <reference key="object" ref="874241200"/> + <reference key="parent" ref="875855507"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">7510</int> + <reference key="object" ref="67901648"/> + <reference key="parent" ref="875855507"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">7511</int> + <reference key="object" ref="800774053"/> + <reference key="parent" ref="389089658"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">7512</int> + <reference key="object" ref="1073467237"/> + <reference key="parent" ref="672293521"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">7513</int> + <reference key="object" ref="317678649"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="81944450"/> + </object> + <reference key="parent" ref="80390753"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">7514</int> + <reference key="object" ref="40644394"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="332689220"/> + </object> + <reference key="parent" ref="80390753"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">7515</int> + <reference key="object" ref="332689220"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="281953763"/> + <reference ref="784489290"/> + <reference ref="233010382"/> + <reference ref="493190585"/> + </object> + <reference key="parent" ref="40644394"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">7516</int> + <reference key="object" ref="281953763"/> + <reference key="parent" ref="332689220"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">7517</int> + <reference key="object" ref="784489290"/> + <reference key="parent" ref="332689220"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">7518</int> + <reference key="object" ref="233010382"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="435560165"/> + </object> + <reference key="parent" ref="332689220"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">7519</int> + <reference key="object" ref="493190585"/> + <reference key="parent" ref="332689220"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">7520</int> + <reference key="object" ref="435560165"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="1007581754"/> + </object> + <reference key="parent" ref="233010382"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">7521</int> + <reference key="object" ref="1007581754"/> + <reference key="parent" ref="435560165"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">7522</int> + <reference key="object" ref="81944450"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="378021102"/> + <reference ref="28009727"/> + <reference ref="617167031"/> + </object> + <reference key="parent" ref="317678649"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">7523</int> + <reference key="object" ref="378021102"/> + <reference key="parent" ref="81944450"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">7524</int> + <reference key="object" ref="28009727"/> + <reference key="parent" ref="81944450"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">7525</int> + <reference key="object" ref="617167031"/> + <reference key="parent" ref="81944450"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">7533</int> + <reference key="object" ref="873734510"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="212274460"/> + </object> + <reference key="parent" ref="1013108064"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">7534</int> + <reference key="object" ref="212274460"/> + <reference key="parent" ref="873734510"/> + </object> </object> </object> <object class="NSMutableDictionary" key="flattenedProperties"> @@ -22004,6 +22773,39 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> <string>7494.IBPluginDependency</string> <string>7499.IBPluginDependency</string> <string>7500.IBPluginDependency</string> + <string>7502.IBEditorWindowLastContentRect</string> + <string>7502.IBPluginDependency</string> + <string>7502.IBWindowTemplateEditedContentRect</string> + <string>7502.NSWindowTemplate.visibleAtLaunch</string> + <string>7502.windowTemplate.hasMinSize</string> + <string>7502.windowTemplate.minSize</string> + <string>7503.IBPluginDependency</string> + <string>7504.IBPluginDependency</string> + <string>7505.IBPluginDependency</string> + <string>7506.IBPluginDependency</string> + <string>7507.IBPluginDependency</string> + <string>7508.IBPluginDependency</string> + <string>7509.IBPluginDependency</string> + <string>7510.IBPluginDependency</string> + <string>7511.IBPluginDependency</string> + <string>7512.IBPluginDependency</string> + <string>7513.IBPluginDependency</string> + <string>7514.IBPluginDependency</string> + <string>7515.IBPluginDependency</string> + <string>7516.IBPluginDependency</string> + <string>7517.IBPluginDependency</string> + <string>7518.CustomClassName</string> + <string>7518.IBPluginDependency</string> + <string>7519.IBPluginDependency</string> + <string>7520.IBPluginDependency</string> + <string>7521.IBPluginDependency</string> + <string>7522.IBPluginDependency</string> + <string>7523.CustomClassName</string> + <string>7523.IBPluginDependency</string> + <string>7524.IBPluginDependency</string> + <string>7525.IBPluginDependency</string> + <string>7533.IBPluginDependency</string> + <string>7534.IBPluginDependency</string> <string>858.IBPluginDependency</string> <string>858.ImportedFromIB2</string> <string>959.IBEditorWindowLastContentRect</string> @@ -23651,6 +24453,39 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{{153, 361}, {480, 270}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{{153, 361}, {480, 270}}</string> + <boolean value="NO"/> + <boolean value="YES"/> + <string>{240, 170}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.brandonwalkin.BWToolkit</string> + <string>com.brandonwalkin.BWToolkit</string> + <string>com.brandonwalkin.BWToolkit</string> + <string>com.brandonwalkin.BWToolkit</string> + <string>com.brandonwalkin.BWToolkit</string> + <string>com.brandonwalkin.BWToolkit</string> + <string>com.brandonwalkin.BWToolkit</string> + <string>com.brandonwalkin.BWToolkit</string> + <string>com.brandonwalkin.BWToolkit</string> + <string>com.brandonwalkin.BWToolkit</string> + <string>com.brandonwalkin.BWToolkit</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>SPCopyTable</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>SPTextView</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>{{265, 489}, {405, 267}}</string> @@ -23689,7 +24524,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> </object> </object> <nil key="sourceID"/> - <int key="maxID">7501</int> + <int key="maxID">7535</int> </object> <object class="IBClassDescriber" key="IBDocument.Classes"> <object class="NSMutableArray" key="referencedPartialClassDescriptions"> @@ -28990,6 +29825,389 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> </object> </object> </object> + <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.1+"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBPartialClassDescription"> + <string key="className">SPTableContent</string> + <string key="superclassName">NSObject</string> + <object class="NSMutableDictionary" key="actions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>addRow:</string> + <string>copyRow:</string> + <string>filterTable:</string> + <string>navigatePaginationFromButton:</string> + <string>reloadTable:</string> + <string>removeRow:</string> + <string>setCompareTypes:</string> + <string>showTableFilter:</string> + <string>tableFilterClear:</string> + <string>tableFilterExecute:</string> + <string>toggleFilterField:</string> + <string>togglePagination:</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> + </object> + </object> + <object class="NSMutableDictionary" key="actionInfosByName"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>addRow:</string> + <string>copyRow:</string> + <string>filterTable:</string> + <string>navigatePaginationFromButton:</string> + <string>reloadTable:</string> + <string>removeRow:</string> + <string>setCompareTypes:</string> + <string>showTableFilter:</string> + <string>tableFilterClear:</string> + <string>tableFilterExecute:</string> + <string>toggleFilterField:</string> + <string>togglePagination:</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBActionInfo"> + <string key="name">addRow:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">copyRow:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">filterTable:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">navigatePaginationFromButton:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">reloadTable:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">removeRow:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">setCompareTypes:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">showTableFilter:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">tableFilterClear:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">tableFilterExecute:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">toggleFilterField:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">togglePagination:</string> + <string key="candidateClassName">id</string> + </object> + </object> + </object> + <object class="NSMutableDictionary" key="outlets"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>addButton</string> + <string>argumentField</string> + <string>betweenTextField</string> + <string>compareField</string> + <string>contentFilterManager</string> + <string>contentViewPane</string> + <string>copyButton</string> + <string>countText</string> + <string>fieldField</string> + <string>filterButton</string> + <string>filterTableClearButton</string> + <string>filterTableFilterButton</string> + <string>filterTableView</string> + <string>filterTableWhereClause</string> + <string>filterTableWindow</string> + <string>firstBetweenField</string> + <string>limitRowsButton</string> + <string>limitRowsField</string> + <string>limitRowsStepper</string> + <string>multipleLineEditingButton</string> + <string>paginationButton</string> + <string>paginationNextButton</string> + <string>paginationPageField</string> + <string>paginationPageStepper</string> + <string>paginationPreviousButton</string> + <string>paginationView</string> + <string>reloadButton</string> + <string>removeButton</string> + <string>secondBetweenField</string> + <string>spHistoryControllerInstance</string> + <string>tableContentView</string> + <string>tableDataInstance</string> + <string>tableDocumentInstance</string> + <string>tableInfoInstance</string> + <string>tableSourceInstance</string> + <string>tablesListInstance</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>NSView</string> + <string>id</string> + <string>id</string> + <string>NSPopUpButton</string> + <string>id</string> + <string>NSButton</string> + <string>NSButton</string> + <string>SPCopyTable</string> + <string>SPTextView</string> + <string>NSPanel</string> + <string>id</string> + <string>id</string> + <string>id</string> + <string>id</string> + <string>id</string> + <string>NSButton</string> + <string>NSButton</string> + <string>NSTextField</string> + <string>NSStepper</string> + <string>NSButton</string> + <string>NSView</string> + <string>id</string> + <string>id</string> + <string>id</string> + <string>SPHistoryController</string> + <string>SPCopyTable</string> + <string>id</string> + <string>id</string> + <string>SPTableInfo</string> + <string>id</string> + <string>id</string> + </object> + </object> + <object class="NSMutableDictionary" key="toOneOutletInfosByName"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>addButton</string> + <string>argumentField</string> + <string>betweenTextField</string> + <string>compareField</string> + <string>contentFilterManager</string> + <string>contentViewPane</string> + <string>copyButton</string> + <string>countText</string> + <string>fieldField</string> + <string>filterButton</string> + <string>filterTableClearButton</string> + <string>filterTableFilterButton</string> + <string>filterTableView</string> + <string>filterTableWhereClause</string> + <string>filterTableWindow</string> + <string>firstBetweenField</string> + <string>limitRowsButton</string> + <string>limitRowsField</string> + <string>limitRowsStepper</string> + <string>multipleLineEditingButton</string> + <string>paginationButton</string> + <string>paginationNextButton</string> + <string>paginationPageField</string> + <string>paginationPageStepper</string> + <string>paginationPreviousButton</string> + <string>paginationView</string> + <string>reloadButton</string> + <string>removeButton</string> + <string>secondBetweenField</string> + <string>spHistoryControllerInstance</string> + <string>tableContentView</string> + <string>tableDataInstance</string> + <string>tableDocumentInstance</string> + <string>tableInfoInstance</string> + <string>tableSourceInstance</string> + <string>tablesListInstance</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBToOneOutletInfo"> + <string key="name">addButton</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">argumentField</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">betweenTextField</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">compareField</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">contentFilterManager</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">contentViewPane</string> + <string key="candidateClassName">NSView</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">copyButton</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">countText</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">fieldField</string> + <string key="candidateClassName">NSPopUpButton</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">filterButton</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">filterTableClearButton</string> + <string key="candidateClassName">NSButton</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">filterTableFilterButton</string> + <string key="candidateClassName">NSButton</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">filterTableView</string> + <string key="candidateClassName">SPCopyTable</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">filterTableWhereClause</string> + <string key="candidateClassName">SPTextView</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">filterTableWindow</string> + <string key="candidateClassName">NSPanel</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">firstBetweenField</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">limitRowsButton</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">limitRowsField</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">limitRowsStepper</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">multipleLineEditingButton</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">paginationButton</string> + <string key="candidateClassName">NSButton</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">paginationNextButton</string> + <string key="candidateClassName">NSButton</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">paginationPageField</string> + <string key="candidateClassName">NSTextField</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">paginationPageStepper</string> + <string key="candidateClassName">NSStepper</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">paginationPreviousButton</string> + <string key="candidateClassName">NSButton</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">paginationView</string> + <string key="candidateClassName">NSView</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">reloadButton</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">removeButton</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">secondBetweenField</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">spHistoryControllerInstance</string> + <string key="candidateClassName">SPHistoryController</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">tableContentView</string> + <string key="candidateClassName">SPCopyTable</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">tableDataInstance</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">tableDocumentInstance</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">tableInfoInstance</string> + <string key="candidateClassName">SPTableInfo</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">tableSourceInstance</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">tablesListInstance</string> + <string key="candidateClassName">id</string> + </object> + </object> + </object> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBDocumentRelativeSource</string> + <string key="minorKey">../../Source/SPTableContent.h</string> + </object> + </object> + </object> <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+"> <bool key="EncodedWithXMLCoder">YES</bool> <object class="IBPartialClassDescription"> diff --git a/Source/SPTableContent.h b/Source/SPTableContent.h index f88d6fe9..13ca3d92 100644 --- a/Source/SPTableContent.h +++ b/Source/SPTableContent.h @@ -28,7 +28,7 @@ #import <Cocoa/Cocoa.h> #import <MCPKit/MCPKit.h> -@class SPCopyTable, SPTextAndLinkCell, SPHistoryController, SPTableInfo, SPDataStorage; +@class SPCopyTable, SPTextAndLinkCell, SPHistoryController, SPTableInfo, SPDataStorage, SPTextView; @interface SPTableContent : NSObject { @@ -65,7 +65,13 @@ IBOutlet NSView *paginationView; IBOutlet NSTextField *paginationPageField; IBOutlet NSStepper *paginationPageStepper; - + + IBOutlet SPCopyTable *filterTableView; + IBOutlet NSPanel *filterTableWindow; + IBOutlet NSButton *filterTableFilterButton; + IBOutlet NSButton *filterTableClearButton; + IBOutlet SPTextView *filterTableWhereClause; + MCPConnection *mySQLConnection; BOOL _mainNibLoaded; @@ -76,6 +82,7 @@ NSString *selectedTable, *usedQuery; SPDataStorage *tableValues; NSMutableArray *dataColumns, *keys, *oldRow; + NSMutableDictionary *filterTableData; NSUInteger tableRowsCount, previousTableRowsCount; NSString *compareType; NSNumber *sortCol; @@ -143,6 +150,11 @@ - (IBAction)copyRow:(id)sender; - (IBAction)removeRow:(id)sender; +// Filter Table +- (IBAction)tableFilterExecute:(id)sender; +- (IBAction)tableFilterClear:(id)sender; +- (IBAction)showTableFilter:(id)sender; + // Getter methods - (NSArray *)currentResult; - (NSArray *)currentDataResult; @@ -191,4 +203,6 @@ - (NSArray*)fieldEditStatusForRow:(NSInteger)rowIndex andColumn:(NSInteger)columnIndex; +- (void)updateFilterTableClause; + @end diff --git a/Source/SPTableContent.m b/Source/SPTableContent.m index 59a9e8c4..b7bcd0f9 100644 --- a/Source/SPTableContent.m +++ b/Source/SPTableContent.m @@ -68,8 +68,9 @@ tableValues = [[SPDataStorage alloc] init]; tableRowsCount = 0; previousTableRowsCount = 0; - dataColumns = [[NSMutableArray alloc] init]; - oldRow = [[NSMutableArray alloc] init]; + dataColumns = [[NSMutableArray alloc] init]; + oldRow = [[NSMutableArray alloc] init]; + filterTableData = [[NSMutableDictionary alloc] initWithCapacity:1]; selectedTable = nil; sortCol = nil; @@ -265,7 +266,7 @@ NSNumber *colWidth, *sortColumnNumberToRestore = nil; NSArray *columnNames; NSDictionary *columnDefinition; - NSTableColumn *theCol; + NSTableColumn *theCol, *filterCol; BOOL enableInteraction = ![[tableDocumentInstance selectedToolbarItemIdentifier] isEqualToString:SPMainToolbarTableContent] || ![tableDocumentInstance isWorking]; if (!tableDetails) { @@ -368,6 +369,10 @@ while ([[tableContentView tableColumns] count]) { [tableContentView removeTableColumn:NSArrayObjectAtIndex([tableContentView tableColumns], 0)]; } + while ([[filterTableView tableColumns] count]) { + [filterTableView removeTableColumn:NSArrayObjectAtIndex([filterTableView tableColumns], 0)]; + } + [filterTableData removeAllObjects]; // Retrieve the field names and types for this table from the data cache. This is used when requesting all data as part // of the fieldListForQuery method, and also to decide whether or not to preserve the current filter/sort settings. @@ -398,7 +403,7 @@ NSFont *tableFont = [NSUnarchiver unarchiveObjectWithData:[prefs dataForKey:SPGlobalResultTableFont]]; [tableContentView setRowHeight:2.0f+NSSizeToCGSize([[NSString stringWithString:@"{ǞṶḹÜ∑zgyf"] sizeWithAttributes:[NSDictionary dictionaryWithObject:tableFont forKey:NSFontAttributeName]]).height]; - // Add the new columns to the table + // Add the new columns to the table and filterTable for ( i = 0 ; i < [dataColumns count] ; i++ ) { columnDefinition = NSArrayObjectAtIndex(dataColumns, i); @@ -407,6 +412,22 @@ [[theCol headerCell] setStringValue:[columnDefinition objectForKey:@"name"]]; [theCol setEditable:YES]; + // Set up column for filterTable + filterCol = [[NSTableColumn alloc] initWithIdentifier:[columnDefinition objectForKey:@"datacolumnindex"]]; + [[filterCol headerCell] setStringValue:[columnDefinition objectForKey:@"name"]]; + [filterCol setEditable:YES]; + SPTextAndLinkCell *filterDataCell = [[[SPTextAndLinkCell alloc] initTextCell:@""] autorelease]; + [filterDataCell setEditable:YES]; + [filterCol setDataCell:filterDataCell]; + [filterTableView addTableColumn:filterCol]; + [filterCol release]; + + [filterTableData setObject:[NSMutableDictionary dictionaryWithObjectsAndKeys: + [columnDefinition objectForKey:@"name"], @"name", + [columnDefinition objectForKey:@"typegrouping"], @"typegrouping", + [NSMutableArray arrayWithObjects:@"", @"", @"", @"", @"", @"", @"", @"", @"", @"", nil], @"filter", + nil] forKey:[columnDefinition objectForKey:@"datacolumnindex"]]; + // Set up the data cell depending on the column type id dataCell; if ([[columnDefinition objectForKey:@"typegrouping"] isEqualToString:@"enum"]) { @@ -466,6 +487,9 @@ [theCol release]; } + [filterTableView setDelegate:self]; + [filterTableView setDataSource:self]; + // If the table has been reloaded and the previously selected sort column is still present, reselect it. if (sortColumnNumberToRestore) { theCol = [tableContentView tableColumnWithIdentifier:sortColumnNumberToRestore]; @@ -542,6 +566,7 @@ if (!previousTableRowsCount) { [self clearTableValues]; } + [filterTableView reloadData]; } @@ -2773,6 +2798,31 @@ } #pragma mark - +#pragma mark Filter Table + +- (IBAction)tableFilterExecute:(id)sender +{ + +} + +- (IBAction)tableFilterClear:(id)sender +{ + + for(NSNumber *col in [filterTableData allKeys]) + [[filterTableData objectForKey:col] setObject:[NSMutableArray arrayWithObjects:@"", @"", @"", @"", @"", @"", @"", @"", @"", @"", nil] forKey:@"filter"]; + + [filterTableView reloadData]; + [filterTableView selectRowIndexes:[NSIndexSet indexSetWithIndex:0] byExtendingSelection:NO]; + [filterTableWhereClause setString:@""]; + +} + +- (IBAction)showTableFilter:(id)sender +{ + [filterTableWindow makeKeyAndOrderFront:nil]; +} + +#pragma mark - #pragma mark Retrieving and setting table state /** @@ -3069,82 +3119,100 @@ - (NSString *)tableView:(NSTableView *)aTableView toolTipForCell:(SPTextAndLinkCell *)aCell rect:(NSRectPointer)rect tableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)row mouseLocation:(NSPoint)mouseLocation { - if([[aCell stringValue] length] < 2 || [tableDocumentInstance isWorking]) return nil; + if(aTableView == filterTableView) { + return nil; + } + else if(aTableView == tableContentView) { - NSImage *image; + if([[aCell stringValue] length] < 2 || [tableDocumentInstance isWorking]) return nil; - NSPoint pos = [NSEvent mouseLocation]; - pos.y -= 20; + NSImage *image; - // Try to get the original data. If not possible return nil. - // @try clause is used due to the multifarious cases of - // possible exceptions (eg for reloading tables etc.) - id theValue; - @try{ - theValue = [tableValues cellDataAtRow:row column:[[aTableColumn identifier] integerValue]]; - } - @catch(id ae) { - return nil; - } + NSPoint pos = [NSEvent mouseLocation]; + pos.y -= 20; - // Get the original data for trying to display the blob data as an image - if ([theValue isKindOfClass:[NSData class]]) { - image = [[[NSImage alloc] initWithData:theValue] autorelease]; - if(image) { - [SPTooltip showWithObject:image atLocation:pos ofType:@"image"]; + // Try to get the original data. If not possible return nil. + // @try clause is used due to the multifarious cases of + // possible exceptions (eg for reloading tables etc.) + id theValue; + @try{ + theValue = [tableValues cellDataAtRow:row column:[[aTableColumn identifier] integerValue]]; + } + @catch(id ae) { return nil; } - } - // Show the cell string value as tooltip (including line breaks and tabs) - // by using the cell's font - [SPTooltip showWithObject:[aCell stringValue] - atLocation:pos - ofType:@"text" - displayOptions:[NSDictionary dictionaryWithObjectsAndKeys: - [[aCell font] familyName], @"fontname", - [NSString stringWithFormat:@"%f",[[aCell font] pointSize]], @"fontsize", - nil]]; + // Get the original data for trying to display the blob data as an image + if ([theValue isKindOfClass:[NSData class]]) { + image = [[[NSImage alloc] initWithData:theValue] autorelease]; + if(image) { + [SPTooltip showWithObject:image atLocation:pos ofType:@"image"]; + return nil; + } + } + + // Show the cell string value as tooltip (including line breaks and tabs) + // by using the cell's font + [SPTooltip showWithObject:[aCell stringValue] + atLocation:pos + ofType:@"text" + displayOptions:[NSDictionary dictionaryWithObjectsAndKeys: + [[aCell font] familyName], @"fontname", + [NSString stringWithFormat:@"%f",[[aCell font] pointSize]], @"fontsize", + nil]]; - return nil; + return nil; + } } -- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView +- (NSInteger)numberOfRowsInTableView:(SPCopyTable *)aTableView { - return tableRowsCount; + if(aTableView == filterTableView) { + return [[[filterTableData objectForKey:[NSNumber numberWithInteger:0]] objectForKey:@"filter"] count]; + } + else if(aTableView == tableContentView) { + return tableRowsCount; + } } - (id)tableView:(SPCopyTable *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex { - NSUInteger columnIndex = [[aTableColumn identifier] integerValue]; - id theValue = nil; - - // While the table is being loaded, additional validation is required - data - // locks must be used to avoid crashes, and indexes higher than the available - // rows or columns may be requested. Return "..." to indicate loading in these - // cases. - if (isWorking) { - pthread_mutex_lock(&tableValuesLock); - if (rowIndex < tableRowsCount && columnIndex < [tableValues columnCount]) { - theValue = [[SPDataStorageObjectAtRowAndColumn(tableValues, rowIndex, columnIndex) copy] autorelease]; - } - pthread_mutex_unlock(&tableValuesLock); - if (!theValue) return @"..."; - } else { - theValue = SPDataStorageObjectAtRowAndColumn(tableValues, rowIndex, columnIndex); + if(aTableView == filterTableView) { + return NSArrayObjectAtIndex([[filterTableData objectForKey:[aTableColumn identifier]] objectForKey:@"filter"], rowIndex); } + else if(aTableView == tableContentView) { + + NSUInteger columnIndex = [[aTableColumn identifier] integerValue]; + id theValue = nil; + + // While the table is being loaded, additional validation is required - data + // locks must be used to avoid crashes, and indexes higher than the available + // rows or columns may be requested. Return "..." to indicate loading in these + // cases. + if (isWorking) { + pthread_mutex_lock(&tableValuesLock); + if (rowIndex < tableRowsCount && columnIndex < [tableValues columnCount]) { + theValue = [[SPDataStorageObjectAtRowAndColumn(tableValues, rowIndex, columnIndex) copy] autorelease]; + } + pthread_mutex_unlock(&tableValuesLock); + + if (!theValue) return @"..."; + } else { + theValue = SPDataStorageObjectAtRowAndColumn(tableValues, rowIndex, columnIndex); + } - if ([theValue isNSNull]) - return [prefs objectForKey:SPNullValue]; + if ([theValue isNSNull]) + return [prefs objectForKey:SPNullValue]; - if ([theValue isKindOfClass:[NSData class]]) - return [theValue shortStringRepresentationUsingEncoding:[mySQLConnection stringEncoding]]; + if ([theValue isKindOfClass:[NSData class]]) + return [theValue shortStringRepresentationUsingEncoding:[mySQLConnection stringEncoding]]; - if ([theValue isSPNotLoaded]) - return NSLocalizedString(@"(not loaded)", @"value shown for hidden blob and text fields"); + if ([theValue isSPNotLoaded]) + return NSLocalizedString(@"(not loaded)", @"value shown for hidden blob and text fields"); - return theValue; + return theValue; + } } /** @@ -3152,199 +3220,212 @@ */ - (void)tableView:(SPCopyTable *)aTableView willDisplayCell:(id)cell forTableColumn:(NSTableColumn*)aTableColumn row:(NSInteger)rowIndex { - if (![cell respondsToSelector:@selector(setTextColor:)]) return; - NSUInteger columnIndex = [[aTableColumn identifier] integerValue]; - id theValue = nil; + if(aTableView == filterTableView) { + return; + } + else if(aTableView == tableContentView) { - // While the table is being loaded, additional validation is required - data - // locks must be used to avoid crashes, and indexes higher than the available - // rows or columns may be requested. Use gray to indicate loading in these cases. - if (isWorking) { - pthread_mutex_lock(&tableValuesLock); - if (rowIndex < tableRowsCount && columnIndex < [tableValues columnCount]) { + if (![cell respondsToSelector:@selector(setTextColor:)]) return; + + NSUInteger columnIndex = [[aTableColumn identifier] integerValue]; + id theValue = nil; + + // While the table is being loaded, additional validation is required - data + // locks must be used to avoid crashes, and indexes higher than the available + // rows or columns may be requested. Use gray to indicate loading in these cases. + if (isWorking) { + pthread_mutex_lock(&tableValuesLock); + if (rowIndex < tableRowsCount && columnIndex < [tableValues columnCount]) { + theValue = SPDataStorageObjectAtRowAndColumn(tableValues, rowIndex, columnIndex); + } + pthread_mutex_unlock(&tableValuesLock); + + if (!theValue) { + [cell setTextColor:[NSColor lightGrayColor]]; + return; + } + } else { theValue = SPDataStorageObjectAtRowAndColumn(tableValues, rowIndex, columnIndex); } - pthread_mutex_unlock(&tableValuesLock); - if (!theValue) { - [cell setTextColor:[NSColor lightGrayColor]]; + // If user wants to edit 'cell' set text color to black and return to avoid + // writing in gray if value was NULL + if ([aTableView editedColumn] != -1 + && [aTableView editedRow] == rowIndex + && [[NSArrayObjectAtIndex([aTableView tableColumns], [aTableView editedColumn]) identifier] integerValue] == columnIndex) { + [cell setTextColor:[NSColor blackColor]]; return; } - } else { - theValue = SPDataStorageObjectAtRowAndColumn(tableValues, rowIndex, columnIndex); - } - - // If user wants to edit 'cell' set text color to black and return to avoid - // writing in gray if value was NULL - if ([aTableView editedColumn] != -1 - && [aTableView editedRow] == rowIndex - && [[NSArrayObjectAtIndex([aTableView tableColumns], [aTableView editedColumn]) identifier] integerValue] == columnIndex) { - [cell setTextColor:[NSColor blackColor]]; - return; - } - // For null cells and not loaded cells, display the contents in gray. - if ([theValue isNSNull] || [theValue isSPNotLoaded]) { - [cell setTextColor:[NSColor lightGrayColor]]; + // For null cells and not loaded cells, display the contents in gray. + if ([theValue isNSNull] || [theValue isSPNotLoaded]) { + [cell setTextColor:[NSColor lightGrayColor]]; - // Otherwise, set the color to black - required as NSTableView reuses NSCells. - } else { - [cell setTextColor:[NSColor blackColor]]; + // Otherwise, set the color to black - required as NSTableView reuses NSCells. + } else { + [cell setTextColor:[NSColor blackColor]]; + } } } - (void)tableView:(NSTableView *)aTableView setObjectValue:(id)anObject forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex { + if(aTableView == filterTableView) { + [[[filterTableData objectForKey:[aTableColumn identifier]] objectForKey:@"filter"] replaceObjectAtIndex:rowIndex withObject:(NSString*)anObject]; + [self updateFilterTableClause]; + return; + } + else if(aTableView == tableContentView) { + // If table data come from a view + if([tablesListInstance tableType] == SPTableTypeView) { - // If table data come from a view - if([tablesListInstance tableType] == SPTableTypeView) { - - // Field editing - // if (fieldIDQueryString == nil) return; - NSDictionary *columnDefinition; + // Field editing + // if (fieldIDQueryString == nil) return; + NSDictionary *columnDefinition; - // Retrieve the column defintion - for(id c in cqColumnDefinition) { - if([[c objectForKey:@"datacolumnindex"] isEqualToNumber:[aTableColumn identifier]]) { - columnDefinition = [NSDictionary dictionaryWithDictionary:c]; - break; + // Retrieve the column defintion + for(id c in cqColumnDefinition) { + if([[c objectForKey:@"datacolumnindex"] isEqualToNumber:[aTableColumn identifier]]) { + columnDefinition = [NSDictionary dictionaryWithDictionary:c]; + break; + } } - } - // Resolve the original table name for current column if AS was used - NSString *tableForColumn = [columnDefinition objectForKey:@"org_table"]; + // Resolve the original table name for current column if AS was used + NSString *tableForColumn = [columnDefinition objectForKey:@"org_table"]; - if(!tableForColumn || ![tableForColumn length]) { - NSPoint pos = [NSEvent mouseLocation]; - pos.y -= 20; - [SPTooltip showWithObject:NSLocalizedString(@"Field is not editable. Field has no or multiple table or database origin(s).",@"field is not editable due to no table/database") - atLocation:pos - ofType:@"text"]; - NSBeep(); - return; - } + if(!tableForColumn || ![tableForColumn length]) { + NSPoint pos = [NSEvent mouseLocation]; + pos.y -= 20; + [SPTooltip showWithObject:NSLocalizedString(@"Field is not editable. Field has no or multiple table or database origin(s).",@"field is not editable due to no table/database") + atLocation:pos + ofType:@"text"]; + NSBeep(); + return; + } - // Resolve the original column name if AS was used - NSString *columnName = [columnDefinition objectForKey:@"org_name"]; + // Resolve the original column name if AS was used + NSString *columnName = [columnDefinition objectForKey:@"org_name"]; - [tableDocumentInstance startTaskWithDescription:NSLocalizedString(@"Updating field data...", @"updating field task description")]; - [[NSNotificationCenter defaultCenter] postNotificationName:@"SMySQLQueryWillBePerformed" object:tableDocumentInstance]; + [tableDocumentInstance startTaskWithDescription:NSLocalizedString(@"Updating field data...", @"updating field task description")]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"SMySQLQueryWillBePerformed" object:tableDocumentInstance]; - [self storeCurrentDetailsForRestoration]; + [self storeCurrentDetailsForRestoration]; - // Check if the IDstring identifies the current field bijectively and get the WHERE clause - NSArray *editStatus = [self fieldEditStatusForRow:rowIndex andColumn:[aTableColumn identifier]]; - NSString *fieldIDQueryStr = [editStatus objectAtIndex:1]; - NSInteger numberOfPossibleUpdateRows = [[editStatus objectAtIndex:0] integerValue]; + // Check if the IDstring identifies the current field bijectively and get the WHERE clause + NSArray *editStatus = [self fieldEditStatusForRow:rowIndex andColumn:[aTableColumn identifier]]; + NSString *fieldIDQueryStr = [editStatus objectAtIndex:1]; + NSInteger numberOfPossibleUpdateRows = [[editStatus objectAtIndex:0] integerValue]; - if(numberOfPossibleUpdateRows == 1) { + if(numberOfPossibleUpdateRows == 1) { - NSString *newObject = nil; - if ( [anObject isKindOfClass:[NSCalendarDate class]] ) { - newObject = [NSString stringWithFormat:@"'%@'", [mySQLConnection prepareString:[anObject description]]]; - } else if ( [anObject isKindOfClass:[NSNumber class]] ) { - newObject = [anObject stringValue]; - } else if ( [anObject isKindOfClass:[NSData class]] ) { - newObject = [NSString stringWithFormat:@"X'%@'", [mySQLConnection prepareBinaryData:anObject]]; - } else { - if ( [[anObject description] isEqualToString:@"CURRENT_TIMESTAMP"] ) { - newObject = @"CURRENT_TIMESTAMP"; - } else if([anObject isEqualToString:[prefs stringForKey:SPNullValue]]) { - newObject = @"NULL"; - } else if ([[columnDefinition objectForKey:@"typegrouping"] isEqualToString:@"bit"]) { - newObject = [NSString stringWithFormat:@"b'%@'", ((![[anObject description] length] || [[anObject description] isEqualToString:@"0"]) ? @"0" : [anObject description])]; - } else if ([[columnDefinition objectForKey:@"typegrouping"] isEqualToString:@"date"] - && [[anObject description] isEqualToString:@"NOW()"]) { - newObject = @"NOW()"; - } else { + NSString *newObject = nil; + if ( [anObject isKindOfClass:[NSCalendarDate class]] ) { newObject = [NSString stringWithFormat:@"'%@'", [mySQLConnection prepareString:[anObject description]]]; + } else if ( [anObject isKindOfClass:[NSNumber class]] ) { + newObject = [anObject stringValue]; + } else if ( [anObject isKindOfClass:[NSData class]] ) { + newObject = [NSString stringWithFormat:@"X'%@'", [mySQLConnection prepareBinaryData:anObject]]; + } else { + if ( [[anObject description] isEqualToString:@"CURRENT_TIMESTAMP"] ) { + newObject = @"CURRENT_TIMESTAMP"; + } else if([anObject isEqualToString:[prefs stringForKey:SPNullValue]]) { + newObject = @"NULL"; + } else if ([[columnDefinition objectForKey:@"typegrouping"] isEqualToString:@"bit"]) { + newObject = [NSString stringWithFormat:@"b'%@'", ((![[anObject description] length] || [[anObject description] isEqualToString:@"0"]) ? @"0" : [anObject description])]; + } else if ([[columnDefinition objectForKey:@"typegrouping"] isEqualToString:@"date"] + && [[anObject description] isEqualToString:@"NOW()"]) { + newObject = @"NOW()"; + } else { + newObject = [NSString stringWithFormat:@"'%@'", [mySQLConnection prepareString:[anObject description]]]; + } } - } - [mySQLConnection queryString: - [NSString stringWithFormat:@"UPDATE %@.%@ SET %@.%@.%@ = %@ %@ LIMIT 1", - [[columnDefinition objectForKey:@"db"] backtickQuotedString], [tableForColumn backtickQuotedString], - [[columnDefinition objectForKey:@"db"] backtickQuotedString], [tableForColumn backtickQuotedString], [columnName backtickQuotedString], newObject, fieldIDQueryStr]]; + [mySQLConnection queryString: + [NSString stringWithFormat:@"UPDATE %@.%@ SET %@.%@.%@ = %@ %@ LIMIT 1", + [[columnDefinition objectForKey:@"db"] backtickQuotedString], [tableForColumn backtickQuotedString], + [[columnDefinition objectForKey:@"db"] backtickQuotedString], [tableForColumn backtickQuotedString], [columnName backtickQuotedString], newObject, fieldIDQueryStr]]; - // Check for errors while UPDATE - if ([mySQLConnection queryErrored]) { - SPBeginAlertSheet(NSLocalizedString(@"Error", @"error"), NSLocalizedString(@"OK", @"OK button"), NSLocalizedString(@"Cancel", @"cancel button"), nil, [tableDocumentInstance parentWindow], self, nil, nil, - [NSString stringWithFormat:NSLocalizedString(@"Couldn't write field.\nMySQL said: %@", @"message of panel when error while updating field to db"), [mySQLConnection getLastErrorMessage]]); + // Check for errors while UPDATE + if ([mySQLConnection queryErrored]) { + SPBeginAlertSheet(NSLocalizedString(@"Error", @"error"), NSLocalizedString(@"OK", @"OK button"), NSLocalizedString(@"Cancel", @"cancel button"), nil, [tableDocumentInstance parentWindow], self, nil, nil, + [NSString stringWithFormat:NSLocalizedString(@"Couldn't write field.\nMySQL said: %@", @"message of panel when error while updating field to db"), [mySQLConnection getLastErrorMessage]]); - [tableDocumentInstance endTask]; - [[NSNotificationCenter defaultCenter] postNotificationName:@"SMySQLQueryHasBeenPerformed" object:tableDocumentInstance]; - return; - } + [tableDocumentInstance endTask]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"SMySQLQueryHasBeenPerformed" object:tableDocumentInstance]; + return; + } - // This shouldn't happen – for safety reasons - if ( ![mySQLConnection affectedRows] ) { - if ( [prefs boolForKey:SPShowNoAffectedRowsError] ) { - SPBeginAlertSheet(NSLocalizedString(@"Warning", @"warning"), NSLocalizedString(@"OK", @"OK button"), nil, nil, [tableDocumentInstance parentWindow], self, nil, nil, - NSLocalizedString(@"The row was not written to the MySQL database. You probably haven't changed anything.\nReload the table to be sure that the row exists and use a primary key for your table.\n(This error can be turned off in the preferences.)", @"message of panel when no rows have been affected after writing to the db")); - } else { - NSBeep(); + // This shouldn't happen – for safety reasons + if ( ![mySQLConnection affectedRows] ) { + if ( [prefs boolForKey:SPShowNoAffectedRowsError] ) { + SPBeginAlertSheet(NSLocalizedString(@"Warning", @"warning"), NSLocalizedString(@"OK", @"OK button"), nil, nil, [tableDocumentInstance parentWindow], self, nil, nil, + NSLocalizedString(@"The row was not written to the MySQL database. You probably haven't changed anything.\nReload the table to be sure that the row exists and use a primary key for your table.\n(This error can be turned off in the preferences.)", @"message of panel when no rows have been affected after writing to the db")); + } else { + NSBeep(); + } + [tableDocumentInstance endTask]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"SMySQLQueryHasBeenPerformed" object:tableDocumentInstance]; + return; } - [tableDocumentInstance endTask]; + + } else { + SPBeginAlertSheet(NSLocalizedString(@"Error", @"error"), NSLocalizedString(@"OK", @"OK button"), nil, nil, [tableDocumentInstance parentWindow], self, nil, nil, + [NSString stringWithFormat:NSLocalizedString(@"Updating field content failed. Couldn't identify field origin unambiguously (%ld match%@). It's very likely that while editing this field the table `%@` was changed by an other user.", @"message of panel when error while updating field to db after enabling it"), + (long)numberOfPossibleUpdateRows, (numberOfPossibleUpdateRows>1)?@"es":@"", tableForColumn]); + [[NSNotificationCenter defaultCenter] postNotificationName:@"SMySQLQueryHasBeenPerformed" object:tableDocumentInstance]; + [tableDocumentInstance endTask]; return; + } - } else { - SPBeginAlertSheet(NSLocalizedString(@"Error", @"error"), NSLocalizedString(@"OK", @"OK button"), nil, nil, [tableDocumentInstance parentWindow], self, nil, nil, - [NSString stringWithFormat:NSLocalizedString(@"Updating field content failed. Couldn't identify field origin unambiguously (%ld match%@). It's very likely that while editing this field the table `%@` was changed by an other user.", @"message of panel when error while updating field to db after enabling it"), - (long)numberOfPossibleUpdateRows, (numberOfPossibleUpdateRows>1)?@"es":@"", tableForColumn]); + // Reload table after each editing due to complex declarations + if(isFirstChangeInView) { + // Set up the table details for the new table, and trigger an interface update + // if the view was modified for the very first time + NSDictionary *tableDetails = [NSDictionary dictionaryWithObjectsAndKeys: + tableForColumn, @"name", + [tableDataInstance columns], @"columns", + [tableDataInstance columnNames], @"columnNames", + [tableDataInstance getConstraints], @"constraints", + nil]; + [self performSelectorOnMainThread:@selector(setTableDetails:) withObject:tableDetails waitUntilDone:YES]; + isFirstChangeInView = NO; + } [[NSNotificationCenter defaultCenter] postNotificationName:@"SMySQLQueryHasBeenPerformed" object:tableDocumentInstance]; [tableDocumentInstance endTask]; - return; - } + [self loadTableValues]; + return; - // Reload table after each editing due to complex declarations - if(isFirstChangeInView) { - // Set up the table details for the new table, and trigger an interface update - // if the view was modified for the very first time - NSDictionary *tableDetails = [NSDictionary dictionaryWithObjectsAndKeys: - tableForColumn, @"name", - [tableDataInstance columns], @"columns", - [tableDataInstance columnNames], @"columnNames", - [tableDataInstance getConstraints], @"constraints", - nil]; - [self performSelectorOnMainThread:@selector(setTableDetails:) withObject:tableDetails waitUntilDone:YES]; - isFirstChangeInView = NO; } - [[NSNotificationCenter defaultCenter] postNotificationName:@"SMySQLQueryHasBeenPerformed" object:tableDocumentInstance]; - [tableDocumentInstance endTask]; - - [self loadTableValues]; - - return; - - } - // Catch editing events in the row and if the row isn't currently being edited, - // start an edit. This allows edits including enum changes to save correctly. - if ( !isEditingRow ) { - [oldRow setArray:[tableValues rowContentsAtIndex:rowIndex]]; - isEditingRow = YES; - currentlyEditingRow = rowIndex; - } + // Catch editing events in the row and if the row isn't currently being edited, + // start an edit. This allows edits including enum changes to save correctly. + if ( !isEditingRow ) { + [oldRow setArray:[tableValues rowContentsAtIndex:rowIndex]]; + isEditingRow = YES; + currentlyEditingRow = rowIndex; + } - NSDictionary *column = NSArrayObjectAtIndex(dataColumns, [[aTableColumn identifier] integerValue]); + NSDictionary *column = NSArrayObjectAtIndex(dataColumns, [[aTableColumn identifier] integerValue]); - if (anObject) { + if (anObject) { - // Restore NULLs if necessary - if ([anObject isEqualToString:[prefs objectForKey:SPNullValue]] && [[column objectForKey:@"null"] boolValue]) - anObject = [NSNull null]; + // Restore NULLs if necessary + if ([anObject isEqualToString:[prefs objectForKey:SPNullValue]] && [[column objectForKey:@"null"] boolValue]) + anObject = [NSNull null]; - [tableValues replaceObjectInRow:rowIndex column:[[aTableColumn identifier] integerValue] withObject:anObject]; - } else { - [tableValues replaceObjectInRow:rowIndex column:[[aTableColumn identifier] integerValue] withObject:@""]; + [tableValues replaceObjectInRow:rowIndex column:[[aTableColumn identifier] integerValue] withObject:anObject]; + } else { + [tableValues replaceObjectInRow:rowIndex column:[[aTableColumn identifier] integerValue] withObject:@""]; + } } } @@ -3359,7 +3440,7 @@ - (void)tableView:(NSTableView*)tableView didClickTableColumn:(NSTableColumn *)tableColumn { - if ( [selectedTable isEqualToString:@""] || !selectedTable ) + if ( [selectedTable isEqualToString:@""] || !selectedTable || tableView != tableContentView ) return; // Prevent sorting while the table is still loading @@ -3373,6 +3454,7 @@ [self sortTableTaskWithColumn:tableColumn]; } } + - (void)sortTableTaskWithColumn:(NSTableColumn *)tableColumn { NSAutoreleasePool *sortPool = [[NSAutoreleasePool alloc] init]; @@ -3434,14 +3516,14 @@ - (void)tableViewSelectionDidChange:(NSNotification *)aNotification { - isFirstChangeInView = YES; + // Check our notification object is our table content view + if ([aNotification object] != tableContentView) return; - [addButton setEnabled:([tablesListInstance tableType] == SPTableTypeTable)]; + isFirstChangeInView = YES; - // Check our notification object is our table content view - if ([aNotification object] != tableContentView) return; + [addButton setEnabled:([tablesListInstance tableType] == SPTableTypeTable)]; // If we are editing a row, attempt to save that row - if saving failed, reselect the edit row. if (isEditingRow && [tableContentView selectedRow] != currentlyEditingRow && ![self saveRowOnDeselect]) return; @@ -3467,11 +3549,15 @@ [self updateCountText]; } -- (void)tableViewColumnDidResize:(NSNotification *)aNotification /** saves the new column size in the preferences */ +- (void)tableViewColumnDidResize:(NSNotification *)aNotification { + + // Check our notification object is our table content view + if ([aNotification object] != tableContentView) return; + // sometimes the column has no identifier. I can't figure out what is causing it, so we just skip over this item if (![[[aNotification userInfo] objectForKey:@"NSTableColumn"] identifier]) return; @@ -3666,7 +3752,14 @@ */ - (BOOL)tableView:(NSTableView *)aTableView shouldSelectRow:(NSInteger)rowIndex { - return tableRowsSelectable; + + if(aTableView == filterTableView) + return YES; + else if(aTableView == tableContentView) + return tableRowsSelectable; + else + return YES; + } /** @@ -3674,6 +3767,7 @@ */ - (CGFloat)tableView:(NSTableView *)tableView sizeToFitWidthOfColumn:(NSInteger)columnIndex { + NSTableColumn *theColumn = [[tableView tableColumns] objectAtIndex:columnIndex]; NSDictionary *columnDefinition = [dataColumns objectAtIndex:[[theColumn identifier] integerValue]]; @@ -3779,6 +3873,12 @@ #pragma mark - #pragma mark Other methods +- (void)controlTextDidChange:(NSNotification *)notification +{ + if ([notification object] == filterTableView) { + [self updateFilterTableClause]; + } +} /** * If user selected a table cell which is a blob field and tried to edit it * cancel the fieldEditor, display the field editor sheet instead for editing @@ -3787,6 +3887,8 @@ - (BOOL)control:(NSControl *)control textShouldBeginEditing:(NSText *)fieldEditor { + if(control != tableContentView) return YES; + NSUInteger row, column; BOOL shouldBeginEditing = YES; @@ -3859,18 +3961,19 @@ { // Check firstly if SPCopyTable can handle command - if([tableContentView control:control textView:textView doCommandBySelector:(SEL)command]) + if([control control:control textView:textView doCommandBySelector:(SEL)command]) return YES; // Trap the escape key if ( [[control window] methodForSelector:command] == [[control window] methodForSelector:@selector(cancelOperation:)] ) { - NSUInteger row = [tableContentView editedRow]; + NSUInteger row = [control editedRow]; // Abort editing [control abortEditing]; - [self cancelRowEditing]; + if(control == tableContentView) + [self cancelRowEditing]; return TRUE; } @@ -3917,6 +4020,49 @@ } /** + * Update WHERE clause in Filter Table Window - TODO not yet finished - initial approach only by HansJB + */ +- (void)updateFilterTableClause +{ + NSMutableString *clause = [NSMutableString string]; + NSInteger numberOfRows = [self numberOfRowsInTableView:filterTableView]; + NSInteger numberOfCols = [[filterTableView tableColumns] count]; + NSInteger numberOfValues = 0; + NSRange opRange; + for(NSInteger i=0; i<numberOfRows; i++) { + numberOfValues = 0; + for(NSInteger index=0; index<numberOfCols; index++) { + NSString *filterCell; + NSDictionary *filterCellData = [NSDictionary dictionaryWithDictionary:[filterTableData objectForKey:[NSNumber numberWithInteger:index]]]; + if([filterCell = [[filterCellData objectForKey:@"filter"] objectAtIndex:i] length]) { + if(numberOfValues) + [clause appendString:@" AND "]; + opRange = [filterCell rangeOfString:@" "]; + if(opRange.length) { + NSString *op = [[filterCell substringToIndex:opRange.location] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; + NSString *pattern = [[filterCell substringFromIndex:NSMaxRange(opRange)] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; + if([op isEqualToString:@">"] || + [op isEqualToString:@"<"] || + [op isEqualToString:@"="]) { + [clause appendFormat:@"%@ %@ %@", [[filterCellData objectForKey:@"name"] backtickQuotedString], op, pattern]; + } + + } else { + [clause appendFormat:@"%@ LIKE '%%%@%%'", [[filterCellData objectForKey:@"name"] backtickQuotedString], filterCell]; + } + numberOfValues++; + } + } + if(numberOfValues) + [clause appendString:@"\nOR\n"]; + } + [filterTableWhereClause setString:[clause substringToIndex:([clause length]-4)]]; + [filterTableWhereClause insertText:@""]; + [filterTableWhereClause didChangeText]; + [filterTableWhereClause scrollRangeToVisible:NSMakeRange(0, 0)]; +} + +/** * Makes the content filter field have focus by making it the first responder. */ - (void)makeContentFilterHaveFocus @@ -3956,6 +4102,7 @@ pthread_mutex_destroy(&tableValuesLock); [dataColumns release]; [oldRow release]; + [filterTableData release]; if (selectedTable) [selectedTable release]; if (contentFilters) [contentFilters release]; if (numberOfDefaultFilters) [numberOfDefaultFilters release]; |