KMNSearchReplaceItemView.swift 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. //
  2. // KMNSearchReplaceItemView.swift
  3. // PDF Reader Pro
  4. //
  5. // Created by User-Tangchao on 2024/12/2.
  6. //
  7. import Cocoa
  8. import KMComponentLibrary
  9. class KMNSearchReplacePopItemView: KMNSearchReplaceItemView {
  10. override func initSubviews() {
  11. addSubview(input)
  12. addSubview(replaceAllButton)
  13. addSubview(replaceButton)
  14. input.km_add_leading_constraint(constant: 12)
  15. input.km_add_top_constraint(constant: 0)
  16. input.km_add_trailing_constraint(constant: -12)
  17. input.km_add_height_constraint(constant: 32)
  18. replaceButton.km_add_height_constraint(constant: 32)
  19. replaceButton.km_add_trailing_constraint(constant: -12)
  20. replaceButton.km_add_bottom_constraint()
  21. replaceButton.km_add_width_constraint(constant: replaceButton.properties.propertyInfo.viewWidth)
  22. replaceAllButton.km_add_height_constraint(constant: 32)
  23. replaceAllButton.km_add_trailing_constraint(equalTo: replaceButton, attribute: .leading, constant: -8)
  24. replaceAllButton.km_add_bottom_constraint()
  25. replaceAllButton.km_add_width_constraint(constant: replaceAllButton.properties.propertyInfo.viewWidth)
  26. }
  27. }
  28. class KMNSearchReplaceItemView: NSView {
  29. private lazy var input_: ComponentInput = {
  30. let view = ComponentInput()
  31. let prop = ComponentInputProperty()
  32. prop.size = .s
  33. prop.showPrefix = true
  34. prop.placeholder = KMLocalizedString("Replace with...")
  35. view.properties = prop
  36. view.delegate = self
  37. return view
  38. }()
  39. private lazy var replaceAllButton_: ComponentButton = {
  40. let view = ComponentButton()
  41. let prop = ComponentButtonProperty()
  42. prop.type = .default_tertiary
  43. prop.size = .xxs
  44. prop.buttonText = KMLocalizedString("Replace All")
  45. view.properties = prop
  46. view.setTarget(self, action: #selector(replaceAllAction))
  47. return view
  48. }()
  49. private lazy var replaceButton_: ComponentButton = {
  50. let view = ComponentButton()
  51. let prop = ComponentButtonProperty()
  52. prop.type = .primary
  53. prop.size = .xxs
  54. prop.buttonText = KMLocalizedString("Replace")
  55. view.properties = prop
  56. view.setTarget(self, action: #selector(replaceAction))
  57. return view
  58. }()
  59. var input: ComponentInput {
  60. get {
  61. return input_
  62. }
  63. }
  64. var replaceAllButton: ComponentButton {
  65. get {
  66. return replaceAllButton_
  67. }
  68. }
  69. var replaceButton: ComponentButton {
  70. get {
  71. return replaceButton_
  72. }
  73. }
  74. var inputValue: String {
  75. get {
  76. return input.properties.text
  77. }
  78. set {
  79. input.properties.text = newValue
  80. input.reloadData()
  81. }
  82. }
  83. var itemClick: KMCommonClickBlock?
  84. var valueDidChange: KMValueDidChangeBlock?
  85. var inputDidEditBlock: KMEmptyBlock?
  86. convenience init() {
  87. self.init(frame: .init(x: 0, y: 0, width: 300, height: 60))
  88. initSubviews()
  89. }
  90. override func awakeFromNib() {
  91. super.awakeFromNib()
  92. initSubviews()
  93. }
  94. func initSubviews() {
  95. addSubview(input_)
  96. addSubview(replaceAllButton_)
  97. addSubview(replaceButton_)
  98. input_.km_add_leading_constraint(constant: 12)
  99. input_.km_add_top_constraint(constant: 8)
  100. input_.km_add_trailing_constraint(constant: -12)
  101. input_.km_add_height_constraint(constant: 32)
  102. replaceButton_.km_add_height_constraint(constant: 24)
  103. replaceButton_.km_add_trailing_constraint(constant: -12)
  104. replaceButton_.km_add_bottom_constraint()
  105. replaceButton_.km_add_width_constraint(constant: replaceButton_.properties.propertyInfo.viewWidth)
  106. replaceAllButton_.km_add_height_constraint(constant: 24)
  107. replaceAllButton_.km_add_trailing_constraint(equalTo: replaceButton_, attribute: .leading, constant: -8)
  108. replaceAllButton_.km_add_bottom_constraint()
  109. replaceAllButton_.km_add_width_constraint(constant: replaceAllButton_.properties.propertyInfo.viewWidth)
  110. }
  111. @objc func replaceAllAction() {
  112. itemClick?(1)
  113. }
  114. @objc func replaceAction() {
  115. itemClick?(2)
  116. }
  117. }
  118. extension KMNSearchReplaceItemView: ComponentInputDelegate {
  119. func componentInputDidChanged(inputView: ComponentInput) {
  120. valueDidChange?(inputView.properties.text, nil)
  121. }
  122. func componentInputDidEndEditing(inputView: ComponentInput) {
  123. inputDidEditBlock?()
  124. }
  125. }