//
//  KMBatesPageInfoView.swift
//  PDF Master
//
//  Created by tangchao on 2022/12/28.
//

import Cocoa

class KMBatesPageInfoView: KMHeaderFooterAdjectiveInfoBaseView {

    var leftLabel = NSTextField(labelWithString: "")
    var leftStepper = KMWatermarkAdjectiveStepper()
    private var rigthLabel = NSTextField(labelWithString: "")
    var rightComboBox = NSComboBox()
    
    override func initSubviews() {
        super.initSubviews()
        
        self.addSubview(self.leftLabel)
        self.addSubview(self.leftStepper)
        self.addSubview(self.rigthLabel)
        self.addSubview(self.rightComboBox)
        
        self.titleLabel.isHidden = true
        self.leftLabel.stringValue = NSLocalizedString("Numbers of Digits:", comment: "")
        self.rigthLabel.stringValue = NSLocalizedString("Start Page:", comment: "")
        
        self.leftStepper.wantsLayer = true
        self.leftStepper.layer?.borderWidth = 1
        self.leftStepper.layer?.borderColor = NSColor.black.cgColor
        self.leftStepper.stepper.minValue = 1
        self.leftStepper.stepper.maxValue = 99
        self.leftStepper.valueDidChange = {
            (value: Double) in
            
            guard let callback = self.itemClick else {
                return
            }
            
            callback(1, value)
        }
        
        self.rightComboBox.isEditable = false
        self.rightComboBox.delegate = self
    }
    
    override func layout() {
        super.layout()
        
        let width: CGFloat = NSWidth(self.bounds)
        let hSpace: CGFloat = 10
        
        let leftMargin = self.contentInset.left
        let labelWidth: CGFloat = (width-leftMargin*2-hSpace)*0.5
        let labelHeight: CGFloat = 16
        self.leftLabel.frame = NSMakeRect(leftMargin, 0, labelWidth, labelHeight)
        self.rigthLabel.frame = NSMakeRect(self.rigthLabel.frame.maxX+hSpace, 0, labelWidth, labelHeight)
        
        let comboBoxY: CGFloat = self.leftLabel.frame.maxY+6
        let comboBoxSize: NSSize = NSMakeSize(labelWidth, 22)
        self.leftStepper.frame = NSMakeRect(leftMargin, comboBoxY, comboBoxSize.width, 30)
        self.rightComboBox.frame = NSMakeRect(self.leftStepper.frame.maxX+hSpace, comboBoxY, comboBoxSize.width, comboBoxSize.height)
    }
    
    override var model: KMHeaderFooterAdjectiveModel {
        get {
            super.model
        }
        set {
            super.model = newValue
        }
    }
}

extension KMBatesPageInfoView: NSComboBoxDelegate {
    func comboBoxSelectionDidChange(_ notification: Notification) {
        if (self.rightComboBox.isEqual(to: notification.object)) {
            guard let callback = self.itemClick else {
                return
            }
            
            var index: Int = self.rightComboBox.indexOfSelectedItem
            if (index < 0) {
                index = 0
            }
            
            callback(2, index)
        }
    }
}