TestCaseCellView.swift 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. //
  2. // TeseCaseCell.swift
  3. // KdanAuto
  4. //
  5. // Created by 朱东勇 on 2022/11/21.
  6. //
  7. import Foundation
  8. import AppKit
  9. class TestCaseCellView : NSTableCellView {
  10. @IBOutlet var _titleLbl : NSTextField!
  11. @IBOutlet var _keyScrollView : NSScrollView!
  12. @IBOutlet var _keyContentView : NSView!
  13. @IBOutlet var _sepLine : NSView!
  14. @IBOutlet var _activityView : ActivityView!
  15. var _keyViews : NSMutableArray!
  16. var _autoTestObj : AutoTest?
  17. var _title : String!
  18. var _checkKeys : NSArray!
  19. class func shared() -> TestCaseCellView? {
  20. var objects : NSArray!
  21. Bundle.main.loadNibNamed("TestCaseCellView", owner: nil, topLevelObjects: &objects)
  22. for tView in objects {
  23. if let tv = tView as? TestCaseCellView {
  24. return tv
  25. }
  26. }
  27. return nil
  28. }
  29. override func awakeFromNib() {
  30. _sepLine.wantsLayer = true;
  31. _sepLine.layer?.backgroundColor = NSColor.lightGray.cgColor
  32. }
  33. // Setter & Getter
  34. public func setTitle(_ title:String) {
  35. _title = title;
  36. _titleLbl.stringValue = _title ?? ""
  37. }
  38. public func title() -> String? {
  39. return _title
  40. }
  41. let kTFDefaultHeight = 22.0
  42. public func setCheckKeys(_ keys:NSArray) {
  43. _checkKeys = keys;
  44. if _keyViews == nil {
  45. _keyViews = NSMutableArray()
  46. }
  47. while (_keyViews.count != _checkKeys.count) {
  48. if (_keyViews.count > _checkKeys.count) {
  49. (_keyViews.lastObject as! NSTextField).removeFromSuperview()
  50. _keyViews.removeLastObject()
  51. }else {
  52. let tf = NSTextField.init(frame: CGRectMake(0, 4, 30, kTFDefaultHeight));
  53. _keyContentView.addSubview(tf);
  54. tf.backgroundColor = .clear
  55. _keyViews.add(tf)
  56. }
  57. }
  58. var width = 0.0;
  59. for tf in _keyViews {
  60. let i = _keyViews.index(of: tf)
  61. let tfView = tf as! NSTextField
  62. tfView.stringValue = _checkKeys[i] as! String;
  63. tfView.sizeToFit()
  64. tfView.setFrameOrigin(NSPoint.init(x: width, y: 0))
  65. tfView.setFrameSize(NSSize.init(width: (tfView.frame.size.width.advanced(by: 2.0)), height: kTFDefaultHeight));
  66. tfView.autoresizingMask = .maxXMargin.union(.maxYMargin)
  67. tfView.wantsLayer = true
  68. tfView.layer?.cornerRadius = 8
  69. tfView.layer?.backgroundColor = NSColor.clear.cgColor
  70. tfView.layer?.borderColor = NSColor.lightGray.withAlphaComponent(0.6).cgColor
  71. tfView.layer?.borderWidth = 1
  72. tfView.isEditable = false
  73. width = width + tfView.frame.size.width + 3
  74. }
  75. // _keyContentView.frame = NSRect(x: 0, y: 0, width: width, height: kTFDefaultHeight)
  76. _keyContentView.setFrameSize(NSSize.init(width: width, height: kTFDefaultHeight))
  77. _keyScrollView.documentView = _keyContentView;
  78. }
  79. public func checkKeys() -> NSArray? {
  80. return _checkKeys;
  81. }
  82. public func autoTestObj() -> AutoTest? {
  83. return _autoTestObj
  84. }
  85. public func setAutoTestObj(_ obj: AutoTest?) {
  86. _autoTestObj = obj
  87. self.setAccessibilityEnabled((_autoTestObj?.isOriginFileExist() == true && _autoTestObj?.isCheckFileExist() == true))
  88. if nil != _autoTestObj {
  89. self.setTitle((_autoTestObj?.name())!)
  90. self.setCheckKeys((_autoTestObj?.selectedKeys())!)
  91. self.wantsLayer = true
  92. if _autoTestObj?.isOriginFileExist() == true && _autoTestObj?.isCheckFileExist() == true {
  93. self.layer?.opacity = 1
  94. }else {
  95. self.layer?.opacity = 0.5
  96. }
  97. }else {
  98. self.setTitle("")
  99. self.setCheckKeys([])
  100. self.wantsLayer = true
  101. self.layer?.opacity = 0.5
  102. }
  103. updateStatus()
  104. }
  105. public func updateStatus() {
  106. _activityView.setActivityStatus(ActivityStatus(rawValue: (_autoTestObj?.status())!.rawValue) ?? .Normal)
  107. }
  108. }