blob: 39d5e0e891844a9bf85f4ae18b2efc99805ff6e8 [file] [log] [blame]
// 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
import FlutterMacOS
/**
The main application window.
Performs Flutter app initialization, and handles channel method calls over the
`samples.flutter.io/platform_view` channel.
*/
class MainFlutterWindow: NSWindow {
override func awakeFromNib() {
let flutterViewController = FlutterViewController.init()
let windowFrame = self.frame
self.contentViewController = flutterViewController
self.setFrame(windowFrame, display: true)
RegisterGeneratedPlugins(registry: flutterViewController)
RegisterMethodChannel(registry: flutterViewController)
super.awakeFromNib()
}
func RegisterMethodChannel(registry: FlutterPluginRegistry) {
let registrar = registry.registrar(forPlugin: "platform_view")
let channel = FlutterMethodChannel(name: "samples.flutter.io/platform_view",
binaryMessenger: registrar.messenger)
channel.setMethodCallHandler({ (call, result) in
if (call.method == "switchView") {
let count = call.arguments as! Int
let controller: NSViewController = PlatformViewController(
withCount: count,
onClose: { platformViewController in
result(platformViewController.count)
}
)
self.contentViewController?.presentAsSheet(controller)
}
})
}
}