diff src/name/blackcap/clipman/Menus.kt @ 47:19d9da731c43

Recoded; cleaned up root namespace, removed race conditions.
author David Barts <n5jrn@me.com>
date Sun, 12 Apr 2020 14:31:06 -0700
parents 33fbe3a78d84
children bb80148e2cb3
line wrap: on
line diff
--- a/src/name/blackcap/clipman/Menus.kt	Mon Feb 10 16:40:09 2020 -0700
+++ b/src/name/blackcap/clipman/Menus.kt	Sun Apr 12 14:31:06 2020 -0700
@@ -18,20 +18,20 @@
     override fun actionPerformed(e: ActionEvent) {
         when (e.actionCommand) {
             "File.Quit" -> System.exit(0)
-            "File.Preferences" -> settingsDialog.setVisible(true)
+            "File.Preferences" -> Application.settingsDialog.setVisible(true)
             "Edit.Clone" -> onlyIfSelected { PasteboardItem.write(it.contents) }
-            "Edit.Coerce" -> onlyIfSelected { coerceDialog.setVisible(true) }
-            "Edit.Find" -> searchDialog.setVisible(true)
-            "Edit.FindAgain" -> searchDialog.find()
+            "Edit.Coerce" -> onlyIfSelected { Application.coerceDialog.setVisible(true) }
+            "Edit.Find" -> Application.searchDialog.setVisible(true)
+            "Edit.FindAgain" -> Application.searchDialog.find()
             "Help.About" -> showAboutDialog()
             else -> throw RuntimeException("unexpected actionCommand!")
         }
     }
 
     private fun onlyIfSelected(block: (QueueItem) -> Unit) {
-        val selected = queue.v.getSelected()
+        val selected = Application.queue.getSelected()
         if (selected == null) {
-            JOptionPane.showMessageDialog(frame.v,
+            JOptionPane.showMessageDialog(Application.frame,
                 "No item selected.",
                 "Error",
                 JOptionPane.ERROR_MESSAGE)
@@ -41,8 +41,6 @@
     }
 }
 
-val menuItemListener = MenuItemListener()
-
 /**
  * Track menu items that require something to be selected in order
  * to work, and allow them to be enabled and disabled en masse.
@@ -66,9 +64,6 @@
     fun disable() = setEnabled(false)
 }
 
-val anyRequired = SelectionRequired()
-val styledRequired = SelectionRequired()
-
 /**
  * Our menu bar. What we display depends somewhat on the system type, as
  * the Mac gives us a gratuitous menu bar entry for handling some stuff.
@@ -79,37 +74,37 @@
             add(JMenu("File").apply {
                 add(JMenuItem("Quit").apply {
                     actionCommand = "File.Quit"
-                    addActionListener(menuItemListener)
+                    addActionListener(Application.menuItemListener)
                     makeShortcut(KeyEvent.VK_Q)
                 })
                 add(JMenuItem("Preferences…").apply {
                     actionCommand = "File.Preferences"
-                    addActionListener(menuItemListener)
+                    addActionListener(Application.menuItemListener)
                     makeShortcut(KeyEvent.VK_COMMA)
                 })
             })
         }
         add(JMenu("Edit").apply {
-            add(anyRequired.add(JMenuItem("Clone").apply {
+            add(Application.anyRequired.add(JMenuItem("Clone").apply {
                 setEnabled(false)
                 actionCommand = "Edit.Clone"
-                addActionListener(menuItemListener)
+                addActionListener(Application.menuItemListener)
                 makeShortcut(KeyEvent.VK_C)
             }))
-            add(styledRequired.add(JMenuItem("Coerce…").apply {
+            add(Application.styledRequired.add(JMenuItem("Coerce…").apply {
                 setEnabled(false)
                 actionCommand = "Edit.Coerce"
-                addActionListener(menuItemListener)
+                addActionListener(Application.menuItemListener)
                 makeShortcut(KeyEvent.VK_K)
             }))
             add(JMenuItem("Find…").apply {
                 actionCommand = "Edit.Find"
-                addActionListener(menuItemListener)
+                addActionListener(Application.menuItemListener)
                 makeShortcut(KeyEvent.VK_F)
             })
             add(JMenuItem("Find Again").apply {
                 actionCommand = "Edit.FindAgain"
-                addActionListener(menuItemListener)
+                addActionListener(Application.menuItemListener)
                 makeShortcut(KeyEvent.VK_G)
             })
         })
@@ -117,7 +112,7 @@
             add(JMenu("Help").apply {
                 add(JMenuItem("About ClipMan…").apply {
                     actionCommand = "Help.About"
-                    addActionListener(menuItemListener)
+                    addActionListener(Application.menuItemListener)
                 })
             })
         }
@@ -134,32 +129,28 @@
     }
 }
 
-val menuBar = MyMenuBar()
-
 /**
  * The popup menu we display when the user requests so atop a clipboard
  * item.
  */
 class MyPopupMenu: JPopupMenu() {
     init {
-        add(anyRequired.add(JMenuItem("Clone").apply {
+        add(Application.anyRequired.add(JMenuItem("Clone").apply {
             actionCommand = "Edit.Clone"
-            addActionListener(menuItemListener)
+            addActionListener(Application.menuItemListener)
         }))
-        add(styledRequired.add(JMenuItem("Coerce…").apply {
+        add(Application.styledRequired.add(JMenuItem("Coerce…").apply {
             actionCommand = "Edit.Coerce"
-            addActionListener(menuItemListener)
+            addActionListener(Application.menuItemListener)
         }))
     }
 }
 
-val popupMenu = MyPopupMenu()
-
 /**
  * Show an About dialog.
  */
 fun showAboutDialog() {
-    JOptionPane.showMessageDialog(frame.v,
+    JOptionPane.showMessageDialog(Application.frame,
         "ClipMan, a clipboard manager.\n"
         + "© MMXX, David W. Barts",
         "About ClipMan",