//
//  KMNSearchReplaceTitleBarView.swift
//  PDF Reader Pro
//
//  Created by User-Tangchao on 2024/12/3.
//

import Cocoa
import KMComponentLibrary

class KMNSearchReplaceTitleBarView: BaseXibView {
    @IBOutlet weak var closeButton: ComponentButton!
    @IBOutlet weak var switchButton: ComponentButton!
    @IBOutlet weak var typeTabs: ComponentTabs!
    
    var type: KMNBotaSearchType = .search {
        didSet {
            self.reloadData()
        }
    }
    
    private var searchTabProperty = ComponentTabsProperty(tabsType: .underline_Fill, state: .normal, showIcon: true, title: KMLocalizedString("Search"))
    private var replaceTabProperty = ComponentTabsProperty(tabsType: .underline_Fill, state: .normal, showIcon: true, title: KMLocalizedString("Replace"))
    
    var itemClick: KMCommonClickBlock?
    
    override func setup() {
        self.updateUI()
    }
    
    func updateUI() {
        let prop = ComponentButtonProperty()
        prop.type = .text_gray
        prop.size = .xxs
        prop.onlyIcon = true
        prop.icon = NSImage(named: "KMImageNameSearchReplaceClose")
        closeButton.properties = prop
        closeButton.setTarget(self, action: #selector(closeAction))
        
        let switchButtonProperty = ComponentButtonProperty()
        switchButtonProperty.type = .text_gray
        switchButtonProperty.size = .xxs
        switchButtonProperty.onlyIcon = true
        switchButtonProperty.icon = NSImage(named: "KMImageNameSearchReplaceSwitch")
        switchButton.properties = switchButtonProperty
        switchButton.setTarget(self, action: #selector(switchAction))
        
        searchTabProperty.propertyInfo.image_nor = NSImage(named: "KMImageNameSearchReplaceClose")
        searchTabProperty.propertyInfo.image_active = NSImage(named: "KMImageNameSearchReplaceClose")
        
        replaceTabProperty.propertyInfo.image_nor = NSImage(named: "KMImageNameSearchReplaceClose")
        replaceTabProperty.propertyInfo.image_active = NSImage(named: "KMImageNameSearchReplaceClose")
        
        typeTabs.updateItemProperty([searchTabProperty, replaceTabProperty])
        typeTabs.delegate = self
        typeTabs.refreshItems()
        
        self.reloadData()
    }
    
    @objc func closeAction() {
        itemClick?(1)
    }
    
    @objc func switchAction() {
        itemClick?(2)
    }
    
    func reloadData() {
        searchTabProperty.state = .normal
        replaceTabProperty.state = .normal
        
        if type == .search {
            searchTabProperty.state = .pressed
        } else if type == .replace{
            replaceTabProperty.state = .pressed
        }
        typeTabs.refreshItems()
    }
}

//MARK: action
extension KMNSearchReplaceTitleBarView {
    
}

extension KMNSearchReplaceTitleBarView: ComponentTabsDelegate {
    func componentTabsDidSelected(_ view: ComponentTabs, _ property: ComponentTabsProperty) {
        if property == searchTabProperty {
            type = .search
            itemClick?(3)
        } else if property == replaceTabProperty {
            if KMMemberInfo.shared.isLogin == false {
                KMLoginWindowsController.shared.showWindow(nil)
                
                type = .search
                self.reloadData()
                return
            }
            type = .replace
            itemClick?(4)
        }
        self.reloadData()
    }
}