Skip to content

Commit b58602a

Browse files
authored
Merge pull request #34 from dteoh/move-search-to-toolbar
Move search to toolbar
2 parents 0276df3 + d0c63dc commit b58602a

File tree

6 files changed

+41
-190
lines changed

6 files changed

+41
-190
lines changed

DevDocs.xcodeproj/project.pbxproj

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@
2121
06B5A73621D36637007823B2 /* DefaultsKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 06B5A73421D36637007823B2 /* DefaultsKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
2222
06B5A73921D3665C007823B2 /* DefaultsKit.framework.dSYM in CopyFiles */ = {isa = PBXBuildFile; fileRef = 06B5A73821D3665C007823B2 /* DefaultsKit.framework.dSYM */; };
2323
06B5A73B21D36680007823B2 /* Storage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06B5A73A21D36680007823B2 /* Storage.swift */; };
24-
06CAA19D230D11EA00BBC1DE /* SearchControlView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 06CAA19C230D11EA00BBC1DE /* SearchControlView.xib */; };
25-
06CAA19F230D15B800BBC1DE /* SearchControlViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06CAA19E230D15B800BBC1DE /* SearchControlViewController.swift */; };
2624
06CAA897223E6ACB00B296AC /* URLEventHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06CAA896223E6ACB00B296AC /* URLEventHandler.swift */; };
2725
06EAE7ED21D0CB3D00F7C921 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06EAE7EC21D0CB3D00F7C921 /* AppDelegate.swift */; };
2826
06EAE7EF21D0CB3E00F7C921 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 06EAE7EE21D0CB3E00F7C921 /* Assets.xcassets */; };
@@ -72,8 +70,6 @@
7270
06B5A73421D36637007823B2 /* DefaultsKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DefaultsKit.framework; path = Carthage/Build/Mac/DefaultsKit.framework; sourceTree = "<group>"; };
7371
06B5A73821D3665C007823B2 /* DefaultsKit.framework.dSYM */ = {isa = PBXFileReference; lastKnownFileType = wrapper.dsym; name = DefaultsKit.framework.dSYM; path = Carthage/Build/Mac/DefaultsKit.framework.dSYM; sourceTree = "<group>"; };
7472
06B5A73A21D36680007823B2 /* Storage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Storage.swift; sourceTree = "<group>"; };
75-
06CAA19C230D11EA00BBC1DE /* SearchControlView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SearchControlView.xib; sourceTree = "<group>"; };
76-
06CAA19E230D15B800BBC1DE /* SearchControlViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchControlViewController.swift; sourceTree = "<group>"; };
7773
06CAA896223E6ACB00B296AC /* URLEventHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = URLEventHandler.swift; sourceTree = "<group>"; };
7874
06EAE7E921D0CB3D00F7C921 /* DevDocs.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DevDocs.app; sourceTree = BUILT_PRODUCTS_DIR; };
7975
06EAE7EC21D0CB3D00F7C921 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
@@ -144,8 +140,6 @@
144140
06EAE7F021D0CB3E00F7C921 /* MainMenu.xib */,
145141
06996D3A223DEF54001507AD /* PreferencesWindowController.swift */,
146142
06996D3B223DEF54001507AD /* PreferencesWindowController.xib */,
147-
06CAA19C230D11EA00BBC1DE /* SearchControlView.xib */,
148-
06CAA19E230D15B800BBC1DE /* SearchControlViewController.swift */,
149143
06B5A73A21D36680007823B2 /* Storage.swift */,
150144
06996D2C223DDBEB001507AD /* Summoner.swift */,
151145
06CAA896223E6ACB00B296AC /* URLEventHandler.swift */,
@@ -222,7 +216,6 @@
222216
6F4E7DD5223DBDB70074E6F1 /* MASShortcut.framework.dSYM in Resources */,
223217
06B5A71A21D2013D007823B2 /* user-scripts in Resources */,
224218
06EAE7F221D0CB3E00F7C921 /* MainMenu.xib in Resources */,
225-
06CAA19D230D11EA00BBC1DE /* SearchControlView.xib in Resources */,
226219
);
227220
runOnlyForDeploymentPostprocessing = 0;
228221
};
@@ -233,7 +226,6 @@
233226
isa = PBXSourcesBuildPhase;
234227
buildActionMask = 2147483647;
235228
files = (
236-
06CAA19F230D15B800BBC1DE /* SearchControlViewController.swift in Sources */,
237229
06996D2D223DDBEB001507AD /* Summoner.swift in Sources */,
238230
06EAE7FF21D0FA4000F7C921 /* DocumentationViewController.swift in Sources */,
239231
06996D3C223DEF54001507AD /* PreferencesWindowController.swift in Sources */,

devdocs-macos/DocumentationViewController.swift

Lines changed: 7 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ class DocumentationViewController: NSViewController {
2020

2121
weak var delegate: DocumentationViewDelegate?
2222
private var webView: WKWebView!
23-
private var searchCVC: SearchControlViewController?
2423

2524
private(set) var documentTitle: String? {
2625
didSet {
@@ -42,7 +41,6 @@ class DocumentationViewController: NSViewController {
4241
super.viewDidLoad()
4342
self.viewerState = .initializing
4443
setupWebView()
45-
setupSearchControlView()
4644
loadWebsite()
4745
}
4846

@@ -85,42 +83,17 @@ class DocumentationViewController: NSViewController {
8583
])
8684
}
8785

88-
private func setupSearchControlView() {
89-
// Need to store strong ref to the VC, or IBActions don't work
90-
let searchCVC = SearchControlViewController()
91-
searchCVC.delegate = self
92-
93-
let searchView = searchCVC.view
94-
searchView.translatesAutoresizingMaskIntoConstraints = false
95-
searchView.isHidden = true
96-
97-
webView.addSubview(searchView);
98-
NSLayoutConstraint.activate([
99-
searchView.widthAnchor.constraint(equalToConstant: 270),
100-
searchView.rightAnchor.constraint(equalTo: webView.rightAnchor)
101-
])
102-
103-
self.searchCVC = searchCVC
104-
}
105-
10686
private func loadWebsite() {
10787
let request = URLRequest(url: documentURL!)
10888
webView.load(request)
10989
}
11090

11191
// MARK:- Page search
11292

113-
func showSearchControl() {
114-
if viewerState != .ready {
115-
return
116-
}
117-
guard let vc = searchCVC else { return }
118-
vc.activate()
119-
}
120-
121-
func hideSearchControl() {
122-
guard let vc = searchCVC else { return }
123-
vc.dismissSearch(self)
93+
@IBAction func searchPageContents(_ sender: NSSearchField) {
94+
let argsBytes = try! JSONSerialization.data(withJSONObject: ["term": sender.stringValue])
95+
let args = NSString(data: argsBytes, encoding: String.Encoding.utf8.rawValue)! as String
96+
webView.evaluateJavaScript("search( (\(args))[\"term\"] );")
12497
}
12598

12699
// MARK:- JS integration
@@ -192,7 +165,6 @@ class DocumentationViewController: NSViewController {
192165
return
193166
}
194167
self.documentURL = URL(string: location)
195-
hideSearchControl()
196168
}
197169

198170
private func handleAppReboot() {
@@ -292,15 +264,9 @@ extension DocumentationViewController: WKScriptMessageHandler {
292264
}
293265
}
294266

295-
// MARK:- SearchControlDelegate
296-
extension DocumentationViewController: SearchControlDelegate {
297-
func search(term: String) {
298-
let argsBytes = try! JSONSerialization.data(withJSONObject: ["term": term])
299-
let args = NSString(data: argsBytes, encoding: String.Encoding.utf8.rawValue)! as String
300-
webView.evaluateJavaScript("search( (\(args))[\"term\"] );")
301-
}
302-
303-
func dismiss() {
267+
// MARK:- NSSearchFieldDelegate
268+
extension DocumentationViewController: NSSearchFieldDelegate {
269+
func searchFieldDidEndSearching(_ sender: NSSearchField) {
304270
webView.evaluateJavaScript("resetSearch();")
305271
}
306272
}

devdocs-macos/DocumentationWindow.xib

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
2+
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17506" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
33
<dependencies>
4-
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
4+
<deployment identifier="macosx"/>
5+
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17506"/>
6+
<capability name="Search Toolbar Item" minToolsVersion="12.0" minSystemVersion="11.0"/>
57
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
68
</dependencies>
79
<objects>
810
<customObject id="-2" userLabel="File's Owner" customClass="DocumentationWindowController" customModule="DevDocs" customModuleProvider="target">
911
<connections>
12+
<outlet property="contentSearchField" destination="nuW-bv-dAc" id="VBO-Nb-W9g"/>
1013
<outlet property="documentationViewController" destination="f61-KY-zVD" id="SGK-n1-U1U"/>
1114
<outlet property="window" destination="QvC-M9-y7g" id="LfB-8c-kAm"/>
1215
</connections>
@@ -17,11 +20,37 @@
1720
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
1821
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
1922
<rect key="contentRect" x="196" y="240" width="800" height="600"/>
20-
<rect key="screenRect" x="0.0" y="0.0" width="1280" height="777"/>
23+
<rect key="screenRect" x="0.0" y="0.0" width="1440" height="875"/>
2124
<view key="contentView" wantsLayer="YES" id="EiT-Mj-1SZ">
2225
<rect key="frame" x="0.0" y="0.0" width="800" height="600"/>
2326
<autoresizingMask key="autoresizingMask"/>
2427
</view>
28+
<toolbar key="toolbar" implicitIdentifier="3EDBA340-82E0-4F6D-A2E5-B64C00F706AB" autosavesConfiguration="NO" displayMode="iconOnly" sizeMode="regular" id="RPh-lZ-I7q">
29+
<allowedToolbarItems>
30+
<toolbarItem implicitItemIdentifier="NSToolbarSpaceItem" id="djD-j7-CRO"/>
31+
<toolbarItem implicitItemIdentifier="NSToolbarFlexibleSpaceItem" id="C4V-Bf-4rP"/>
32+
<searchToolbarItem implicitItemIdentifier="199BC3E6-5F40-416D-9966-397495A3A2D8" label="Search" paletteLabel="Search" visibilityPriority="1001" id="6OC-fj-Lhe">
33+
<nil key="toolTip"/>
34+
<searchField key="view" verticalHuggingPriority="750" textCompletion="NO" id="nuW-bv-dAc">
35+
<rect key="frame" x="0.0" y="0.0" width="100" height="21"/>
36+
<autoresizingMask key="autoresizingMask"/>
37+
<searchFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" borderStyle="bezel" usesSingleLineMode="YES" bezelStyle="round" recentsAutosaveName="content-search-term" id="elf-l7-B2W">
38+
<font key="font" usesAppearanceFont="YES"/>
39+
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
40+
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
41+
</searchFieldCell>
42+
<connections>
43+
<action selector="searchPageContents:" target="f61-KY-zVD" id="ZAe-5r-fMu"/>
44+
<outlet property="delegate" destination="f61-KY-zVD" id="6cm-hv-cR5"/>
45+
</connections>
46+
</searchField>
47+
</searchToolbarItem>
48+
</allowedToolbarItems>
49+
<defaultToolbarItems>
50+
<toolbarItem reference="C4V-Bf-4rP"/>
51+
<searchToolbarItem reference="6OC-fj-Lhe"/>
52+
</defaultToolbarItems>
53+
</toolbar>
2554
<point key="canvasLocation" x="-106" y="107"/>
2655
</window>
2756
<customObject id="f61-KY-zVD" customClass="DocumentationViewController" customModule="DevDocs" customModuleProvider="target">

devdocs-macos/DocumentationWindowController.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import WebKit
33

44
class DocumentationWindowController: NSWindowController {
55

6+
@IBOutlet weak var contentSearchField: NSSearchField?
67
@IBOutlet weak var documentationViewController: DocumentationViewController?
78

89
var documentation: Documentation!
@@ -75,8 +76,7 @@ class DocumentationWindowController: NSWindowController {
7576
return
7677
}
7778

78-
guard let dvc = documentationViewController else { return }
79-
dvc.showSearchControl()
79+
window .makeFirstResponder(contentSearchField)
8080
}
8181
}
8282

devdocs-macos/SearchControlView.xib

Lines changed: 0 additions & 72 deletions
This file was deleted.

devdocs-macos/SearchControlViewController.swift

Lines changed: 0 additions & 64 deletions
This file was deleted.

0 commit comments

Comments
 (0)