func tableView()

in SasquatchMac/SasquatchMac/ViewControllers/TransmissionViewController.swift [222:350]


  func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
    
    // Target properties section
    if(tableView.tag == Section.TargetProperties.rawValue) {
      guard let identifier = tableColumn?.identifier else {
        return nil
      }
      let view = tableView.makeView(withIdentifier: identifier, owner: nil)
      if (identifier.rawValue == "value") {
        let eventProperties = arrayController.content as! [EventProperty]
        updateValue(property: eventProperties[row], cell: view as! NSTableCellView)
      }
      return view
    }

    tableView.headerView = nil

    // Common schema properties section
    if(tableView.tag == Section.CommonSchemaProperties.rawValue) {
      if let cell = tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "property"), owner: nil) as? NSTableCellView {
        let property = propertyAtRow(row: row)
        switch (row) {
        case kDeviceIdRow:
          let key: NSTextField = cell.subviews[cellSubviews.key.rawValue] as! NSTextField
          key.stringValue = property.key
          let value: NSButton = cell.subviews[cellSubviews.valueCheck.rawValue] as! NSButton
          let selectedTarget = selectedTransmissionTarget(commonSelector)
          value.state = collectDeviceIdStates[selectedTarget!]! ? .on : .off
          value.isEnabled = !((value.state as NSNumber).boolValue)
          value.target = self
          value.action = #selector(collectDeviceIdSwitchCellEnabled)
          cell.subviews[cellSubviews.valueCheck.rawValue].isHidden = false
          cell.subviews[cellSubviews.valueText.rawValue].isHidden = true
          return cell   
        case kAppNameRow:
          let key: NSTextField = cell.subviews[cellSubviews.key.rawValue] as! NSTextField
          key.stringValue = property.key
          let value: NSTextField = cell.subviews[cellSubviews.valueText.rawValue] as! NSTextField
          value.stringValue = property.value
          value.delegate = self
          cell.subviews[cellSubviews.valueCheck.rawValue].isHidden = true
          cell.subviews[cellSubviews.valueText.rawValue].isHidden = false
          return cell
        case kAppVersionRow:
          let key: NSTextField = cell.subviews[cellSubviews.key.rawValue] as! NSTextField
          key.stringValue = property.key
          let value: NSTextField = cell.subviews[cellSubviews.valueText.rawValue] as! NSTextField
          value.stringValue = property.value
          value.delegate = self
          cell.subviews[cellSubviews.valueCheck.rawValue].isHidden = true
          cell.subviews[cellSubviews.valueText.rawValue].isHidden = false
          return cell
        case kAppLocaleRow:
          let key: NSTextField = cell.subviews[cellSubviews.key.rawValue] as! NSTextField
          key.stringValue = property.key
          let value: NSTextField = cell.subviews[cellSubviews.valueText.rawValue] as! NSTextField
          value.stringValue = property.value
          value.delegate = self
          cell.subviews[cellSubviews.valueCheck.rawValue].isHidden = true
          cell.subviews[cellSubviews.valueText.rawValue].isHidden = false
          return cell
        case kUserIdRow:
          let key: NSTextField = cell.subviews[cellSubviews.key.rawValue] as! NSTextField
          key.stringValue = property.key
          let value: NSTextField = cell.subviews[cellSubviews.valueText.rawValue] as! NSTextField
          value.stringValue = property.value
          value.delegate = self
          cell.subviews[cellSubviews.valueCheck.rawValue].isHidden = true
          cell.subviews[cellSubviews.valueText.rawValue].isHidden = false
          return cell
        default:
           return nil
        }
      }
      return nil
    }

    // Transmission target section
    if let cell = tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "target"), owner: nil) as? NSTableCellView {
      for subview in cell.subviews {
        subview.isHidden = true
      }
      let section = transmissionTargetSections![tableView.tag]
      switch (row) {
      case kEnabledCellRowIndex:
        let key: NSTextField = cell.subviews[cellSubviews.key.rawValue] as! NSTextField
        key.isHidden = false
        key.stringValue = "Set Enabled"
        let value: NSButton = cell.subviews[cellSubviews.valueCheck.rawValue] as! NSButton
        value.isHidden = false
        value.state = section.isTransmissionTargetEnabled() ? .on : .off
        value.isEnabled = tableView.tag != Section.Default.rawValue
        value.target = self
        value.action = #selector(targetEnabledSwitchValueChanged)
        return cell     
      case kAnalyticsCellRowIndex:
        let key: NSTextField = cell.subviews[cellSubviews.key.rawValue] as! NSTextField
        key.isHidden = false
        key.stringValue = "Analytics Events"
        let value: NSButton = cell.subviews[cellSubviews.valueCheck.rawValue] as! NSButton
        value.isHidden = false
        value.state = section.shouldSendAnalytics() ? .on : .off
        value.target = self
        value.action = #selector(targetShouldSendAnalyticsSwitchValueChanged)
        return cell
      case kTokenCellRowIndex:
        let key: NSTextField = cell.subviews[cellSubviews.key.rawValue] as! NSTextField
        key.isHidden = false
        key.stringValue = "Token"
        let value: NSTextField = cell.subviews[cellSubviews.valueText.rawValue] as! NSTextField
        value.isHidden = false
        value.stringValue = section.token!
        return cell
      case kPauseCellRowIndex:
        let pause: NSButton = cell.subviews[cellSubviews.pause.rawValue] as! NSButton
        pause.isHidden = false
        pause.target = self
        pause.action = #selector(TransmissionViewController.pause)
        let resume: NSButton = cell.subviews[cellSubviews.resume.rawValue] as! NSButton
        resume.isHidden = false
        resume.target = self
        resume.action = #selector(TransmissionViewController.resume)
        return cell
      default:
        return nil
      }
    }
    return nil
  }