//
//  KMRedactBaseWindowController.swift
//  Cisdem PDFMaster
//
//  Created by tangchao on 2023/1/17.
//

import Cocoa

typealias KMRedactBaseWindowItemClick = (_ index: Int, _ value: Any?) -> ()
class KMRedactBaseWindowController: NSWindowController {
    
    @IBOutlet weak var titleLabel: NSTextField!
    @IBOutlet weak var topLine: NSBox!
    @IBOutlet weak var contentBox: NSBox!
    @IBOutlet weak var funcButton: NSButton!
    @IBOutlet weak var cancelButton: NSButton!
    
    @IBOutlet weak var contentWidthConst: NSLayoutConstraint!
    @IBOutlet weak var contentHeightConst: NSLayoutConstraint!
    
    var contentView: KMRedactContentBaseView!
    var pageCount: Int = 0
    
    var annotation: CPDFRedactAnnotation?
//    class func init(_ annotation: CPDFRedactAnnotation?) {
//        self.init(windowNibName: "KMRedactBaseWindowController")
//        self.annotation = annotation
//    }
//    func initWithWindowNibName
    
    
    var itemClick: KMRedactBaseWindowItemClick!
    
    override func windowDidLoad() {
        super.windowDidLoad()

        cancelButton.title = NSLocalizedString("Cancel", comment: "")
        cancelButton.isBordered = false
        cancelButton.wantsLayer = true
        cancelButton.layer?.borderWidth = 1
        cancelButton.layer?.borderColor = NSColor.black.cgColor
        cancelButton.layer?.cornerRadius = 4
        cancelButton.target = self
        cancelButton.action = #selector(cancelButtonAction)
        
        funcButton.isBordered = false
        funcButton.wantsLayer = true
        funcButton.layer?.cornerRadius = 4
        funcButton.target = self
        funcButton.action = #selector(funcButtonAction)
    }
    
    // MARK: Private Methods
    
    @objc private func cancelButtonAction() {
        guard let callback = self.itemClick else {
            return
        }
        
        callback(1, nil)
    }
    
    @objc private func funcButtonAction() {
        guard let callback = self.itemClick else {
            return
        }
        
        callback(2, nil)
    }
    
    // Mark: Publick Methods
    
    public func setContentSize(_ size: NSSize) {
        self.contentWidthConst.constant = size.width
        self.contentHeightConst.constant = size.height - 44 - 60
    }
    
    public func topLineIsShow(_ show: Bool) {
        self.topLine.isHidden = !show
    }
    
}