fff75adfe1
Signed-off-by: Roopesh Chander <roop@roopc.net>
62 lines
2.0 KiB
Swift
62 lines
2.0 KiB
Swift
// SPDX-License-Identifier: MIT
|
|
// Copyright © 2018-2019 WireGuard LLC. All Rights Reserved.
|
|
|
|
import Cocoa
|
|
|
|
class ControlRow: NSView {
|
|
let keyLabel: NSTextField = {
|
|
let keyLabel = NSTextField()
|
|
keyLabel.isEditable = false
|
|
keyLabel.isSelectable = false
|
|
keyLabel.isBordered = false
|
|
keyLabel.alignment = .right
|
|
keyLabel.maximumNumberOfLines = 1
|
|
keyLabel.lineBreakMode = .byTruncatingTail
|
|
keyLabel.backgroundColor = .clear
|
|
return keyLabel
|
|
}()
|
|
|
|
var key: String {
|
|
get { return keyLabel.stringValue }
|
|
set(value) { keyLabel.stringValue = value }
|
|
}
|
|
|
|
override var intrinsicContentSize: NSSize {
|
|
let height = max(keyLabel.intrinsicContentSize.height, controlView.intrinsicContentSize.height)
|
|
return NSSize(width: NSView.noIntrinsicMetric, height: height)
|
|
}
|
|
|
|
let controlView: NSView
|
|
|
|
init(controlView: NSView) {
|
|
self.controlView = controlView
|
|
super.init(frame: CGRect.zero)
|
|
|
|
addSubview(keyLabel)
|
|
addSubview(controlView)
|
|
keyLabel.translatesAutoresizingMaskIntoConstraints = false
|
|
controlView.translatesAutoresizingMaskIntoConstraints = false
|
|
|
|
NSLayoutConstraint.activate([
|
|
keyLabel.centerYAnchor.constraint(equalTo: self.centerYAnchor),
|
|
self.leadingAnchor.constraint(equalTo: keyLabel.leadingAnchor),
|
|
keyLabel.trailingAnchor.constraint(equalTo: controlView.leadingAnchor, constant: -5)
|
|
])
|
|
|
|
keyLabel.setContentCompressionResistancePriority(.defaultHigh + 2, for: .horizontal)
|
|
keyLabel.setContentHuggingPriority(.defaultHigh, for: .horizontal)
|
|
|
|
let widthConstraint = keyLabel.widthAnchor.constraint(equalToConstant: 150)
|
|
widthConstraint.priority = .defaultHigh + 1
|
|
widthConstraint.isActive = true
|
|
}
|
|
|
|
required init?(coder decoder: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
|
|
override func prepareForReuse() {
|
|
key = ""
|
|
}
|
|
}
|