// // KMBatesPrefixInfoView.swift // PDF Reader Pro // // Created by tangchao on 2022/12/28. // import Cocoa class KMBatesPrefixInfoView: KMHeaderFooterAdjectiveInfoBaseView { var preFixBox = NSView() var preFixTextField = NSTextField() var sufFixLabel = NSTextField(labelWithString: "") var sufFixBox = NSView() var sufFixTextField = NSTextField() override func initSubviews() { super.initSubviews() self.addSubview(self.preFixBox) self.addSubview(self.preFixTextField) self.addSubview(self.sufFixLabel) self.addSubview(self.sufFixBox) self.addSubview(self.sufFixTextField) self.titleLabel.stringValue = NSLocalizedString("Prefix:", comment: "") self.sufFixLabel.stringValue = NSLocalizedString("Suffix:", comment: "") for box in [self.preFixBox, self.sufFixBox] { box.wantsLayer = true box.layer?.borderWidth = 1 box.layer?.borderColor = NSColor.black.cgColor } for textField in [self.preFixTextField, self.sufFixTextField] { textField.focusRingType = .none textField.backgroundColor = NSColor.clear textField.cell?.isBordered = false textField.delegate = self } } override func layout() { super.layout() let leftMargin: CGFloat = self.contentInset.left let contentWidth: CGFloat = NSWidth(self.bounds)-leftMargin-self.contentInset.right let boxH: CGFloat = 30 let textFieldH: CGFloat = 20 self.preFixBox.frame = NSMakeRect(leftMargin, self.titleLabel.frame.maxY+2, contentWidth, boxH) self.preFixTextField.frame = NSMakeRect(leftMargin+4, self.preFixBox.frame.minY+5, contentWidth, textFieldH) self.sufFixLabel.frame = NSMakeRect(leftMargin, self.preFixBox.frame.maxY+12, contentWidth, 18) self.sufFixBox.frame = NSMakeRect(leftMargin, self.sufFixLabel.frame.maxY+2, contentWidth, boxH) self.sufFixTextField.frame = NSMakeRect(leftMargin+4, self.sufFixBox.frame.minY+5, contentWidth, textFieldH) } override var model: KMHeaderFooterAdjectiveModel { get { return super.model } set { super.model = newValue let myModel: KMHeaderFooterObject = newValue as! KMHeaderFooterObject self.preFixTextField.stringValue = myModel.batesPrefixString self.sufFixTextField.stringValue = myModel.batesSuffixString } } } extension KMBatesPrefixInfoView: NSTextFieldDelegate { func controlTextDidChange(_ obj: Notification) { if (self.preFixTextField.isEqual(to:obj.object ) || self.sufFixTextField.isEqual(to: obj.object)) { guard let callback = self.itemClick else { return } var index: Int = 1 var sender = self.preFixTextField if (self.sufFixTextField.isEqual(to: obj.object)) { index = 2 sender = self.sufFixTextField } callback(index, sender.stringValue) } } }