2424
2525import Cocoa
2626
27- class MainWindowController : NSWindowController , NSTableViewDelegate , NSTableViewDataSource , NSTextFieldDelegate
27+ class MainWindowController : NSWindowController , NSTableViewDelegate , NSTableViewDataSource , NSTextFieldDelegate , NSMenuDelegate
2828{
2929 @objc private dynamic var selectedColor : ColorItem ?
3030 @objc private dynamic var hasVariant = false
31- public var url : URL ?
32- public private( set ) var colors : [ ColorItem ] = [ ]
33- private var observations : [ NSKeyValueObservation ] = [ ]
34- @IBOutlet private var arrayController : NSArrayController ?
31+
32+ public var url : URL ?
33+ public private( set ) var colors : [ ColorItem ] = [ ]
34+ private var observations : [ NSKeyValueObservation ] = [ ]
35+
36+ @IBOutlet public var tableView : NSTableView ?
37+ @IBOutlet public var arrayController : NSArrayController ?
3538
3639 convenience init ( colors: [ ColorItem ] )
3740 {
@@ -47,21 +50,28 @@ class MainWindowController: NSWindowController, NSTableViewDelegate, NSTableView
4750
4851 override func windowDidLoad( )
4952 {
50- guard let controller = self . arrayController else
53+ guard let colorView = self . window ? . contentView ? . subviewWithIdentifier ( " Color " ) as? ColorView else
5154 {
5255 return
5356 }
5457
55- guard let colorView = self . window? . contentView? . subviewWithIdentifier ( " Color " ) as? ColorView else
58+ guard let variantView = self . window? . contentView? . subviewWithIdentifier ( " Variant " ) as? ColorView else
5659 {
5760 return
5861 }
5962
60- guard let variantView = self . window ? . contentView ? . subviewWithIdentifier ( " Variant " ) as? ColorView else
63+ guard let controller = self . arrayController else
6164 {
6265 return
6366 }
6467
68+ guard let tableView = self . window? . contentView? . subviewWithIdentifier ( " TableView " ) as? NSTableView else
69+ {
70+ return
71+ }
72+
73+ self . tableView = tableView
74+
6575 for color in self . colors
6676 {
6777 controller. addObject ( color )
@@ -213,6 +223,19 @@ class MainWindowController: NSWindowController, NSTableViewDelegate, NSTableView
213223 self . arrayController? . addObject ( color )
214224 }
215225
226+ @IBAction public func removeColor( _ sender: Any ? )
227+ {
228+ guard let tableView = self . tableView else
229+ {
230+ return
231+ }
232+
233+ if ( tableView. clickedRow >= 0 )
234+ {
235+ self . arrayController? . remove ( atArrangedObjectIndex: tableView. clickedRow )
236+ }
237+ }
238+
216239 func tableView( _ tableView: NSTableView , viewFor tableColumn: NSTableColumn ? , row: Int ) -> NSView ?
217240 {
218241 guard let view = tableView. makeView ( withIdentifier: NSUserInterfaceItemIdentifier ( " Row " ) , owner: self ) as? NSTableCellView else
@@ -286,4 +309,19 @@ class MainWindowController: NSWindowController, NSTableViewDelegate, NSTableView
286309
287310 return true
288311 }
312+
313+ override func validateMenuItem( _ item: NSMenuItem ) -> Bool
314+ {
315+ guard let tableView = self . tableView else
316+ {
317+ return false
318+ }
319+
320+ if ( item. action == #selector( removeColor ( _ : ) ) )
321+ {
322+ return tableView. clickedRow >= 0
323+ }
324+
325+ return true
326+ }
289327}
0 commit comments