| // Copyright 2014 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import Cocoa |
| |
| /** |
| `ViewControllers` in the xib can inherit from this class to communicate with |
| the flutter view for this application. ViewControllers that inherit from this |
| class should be displayed as a popover or modal, with a button that binds to |
| the IBAction `pop()`. |
| |
| To get the value of the popover during close, pass a callback function as |
| the `dispose` parameter. The callback passed will have access to the |
| `PlatformViewController` and all of it's properties at close so that the `count` |
| can be passed back through the message channel if needed. |
| */ |
| class PlatformViewController: NSViewController { |
| var count: Int = 0 |
| |
| var dispose: ((PlatformViewController)->())? |
| |
| @IBOutlet weak var label: NSTextField! |
| |
| var labelText: String { |
| get { |
| return "Button tapped \(self.count) time\(self.count != 1 ? "s" : "")." |
| } |
| } |
| |
| override func viewDidLoad() { |
| super.viewDidLoad() |
| self.label.stringValue = labelText |
| } |
| |
| public required init?(coder aDecoder: NSCoder) { |
| self.count = 0 |
| self.dispose = nil |
| super.init(coder: aDecoder) |
| } |
| |
| init(withCount count: Int, onClose dispose: ((PlatformViewController)->())?) { |
| self.count = count |
| self.dispose = dispose |
| super.init(nibName: nil, bundle: nil) |
| } |
| |
| @IBAction func pop(_ sender: Any) { |
| self.dispose?(self) |
| dismiss(self) |
| } |
| |
| @IBAction func increment(_ sender: Any) { |
| self.count += 1 |
| self.label.stringValue = labelText |
| } |
| } |