diff src/name/blackcap/clipman/Menus.kt @ 35:5f8475b37e23

Got it correctly enabling and disabling menu items.
author David Barts <n5jrn@me.com>
date Thu, 30 Jan 2020 20:21:42 -0800
parents 0c6c18a733b7
children fcf82e3b7e31
line wrap: on
line diff
--- a/src/name/blackcap/clipman/Menus.kt	Thu Jan 30 19:38:59 2020 -0800
+++ b/src/name/blackcap/clipman/Menus.kt	Thu Jan 30 20:21:42 2020 -0800
@@ -3,12 +3,13 @@
  */
 package name.blackcap.clipman
 
+import java.awt.Container
 import java.awt.Toolkit
 import java.awt.event.ActionEvent
 import java.awt.event.ActionListener
 import java.awt.event.KeyEvent
-import java.util.LinkedList
 import javax.swing.*
+import kotlin.collections.HashSet
 
 /**
  * Listen to actionEvents from both menu bar and popup menu selections.
@@ -58,24 +59,30 @@
  * to work, and allow them to be enabled and disabled en masse.
  */
 class SelectionRequired {
-    private val cache = LinkedList<JMenuItem>()
+    private val controls = HashSet<JMenuItem>()
+    /* private val parents = HashSet<Container>() */
 
     fun add(item: JMenuItem): JMenuItem {
-        cache.add(item)
+        controls.add(item)
+        /* var p = item.parent
+        if (p != null) {
+            parents.add(p)
+        } */
         return item
     }
 
-    fun enable() {
-        cache.forEach {
-            it.setEnabled(true)
+    private fun setEnabled(state: Boolean) {
+        controls.forEach {
+            it.setEnabled(state)
         }
+        /* parents.forEach {
+            it.validate()
+        } */
     }
 
-    fun disable() {
-        cache.forEach {
-            it.setEnabled(false)
-        }
-    }
+    fun enable() = setEnabled(true)
+
+    fun disable() = setEnabled(false)
 }
 
 val anyRequired = SelectionRequired()