TestCaseCellView.swift 4.1 KB

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