From e47101946e31b2522af9709fdaf076da476803bf Mon Sep 17 00:00:00 2001
From: chylex <contact@chylex.com>
Date: Thu, 5 Oct 2023 13:38:53 +0200
Subject: [PATCH] Remove actions to select previous/next item because those
 already exist in IDEA

---
 .../feature/actions/NextMenuItemAction.kt     | 17 -----
 .../feature/actions/PrevMenuItemAction.kt     | 23 ------
 .../actions/SelectMenuItemBaseAction.kt       | 74 -------------------
 src/main/resources/META-INF/plugin.xml        |  5 --
 4 files changed, 119 deletions(-)
 delete mode 100644 src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/actions/NextMenuItemAction.kt
 delete mode 100644 src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/actions/PrevMenuItemAction.kt
 delete mode 100644 src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/actions/SelectMenuItemBaseAction.kt

diff --git a/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/actions/NextMenuItemAction.kt b/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/actions/NextMenuItemAction.kt
deleted file mode 100644
index 5f1e7e3..0000000
--- a/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/actions/NextMenuItemAction.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.chylex.intellij.keyboardmaster.feature.actions
-
-import javax.swing.JList
-import javax.swing.JTree
-
-class NextMenuItemAction : SelectMenuItemBaseAction() {
-	override fun updateSelection(list: JList<*>) {
-		setSelectedIndex(list, list.selectedIndex + 1)
-	}
-	
-	override fun updateSelection(tree: JTree) {
-		val row = tree.selectionRows?.maxOrNull()
-		if (row != null) {
-			setSelectedIndex(tree, row + 1)
-		}
-	}
-}
diff --git a/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/actions/PrevMenuItemAction.kt b/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/actions/PrevMenuItemAction.kt
deleted file mode 100644
index c685ac5..0000000
--- a/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/actions/PrevMenuItemAction.kt
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.chylex.intellij.keyboardmaster.feature.actions
-
-import javax.swing.JList
-import javax.swing.JTree
-
-class PrevMenuItemAction : SelectMenuItemBaseAction() {
-	override fun updateSelection(list: JList<*>) {
-		val index = list.selectedIndex
-		if (index == -1) {
-			setSelectedIndex(list, list.model.size - 1)
-		}
-		else {
-			setSelectedIndex(list, index - 1)
-		}
-	}
-	
-	override fun updateSelection(tree: JTree) {
-		val row = tree.selectionRows?.minOrNull()
-		if (row != null) {
-			setSelectedIndex(tree, row - 1)
-		}
-	}
-}
diff --git a/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/actions/SelectMenuItemBaseAction.kt b/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/actions/SelectMenuItemBaseAction.kt
deleted file mode 100644
index 9a99618..0000000
--- a/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/actions/SelectMenuItemBaseAction.kt
+++ /dev/null
@@ -1,74 +0,0 @@
-package com.chylex.intellij.keyboardmaster.feature.actions
-
-import com.intellij.codeInsight.lookup.LookupManager
-import com.intellij.codeInsight.lookup.impl.LookupImpl
-import com.intellij.ide.actions.BigPopupUI
-import com.intellij.openapi.actionSystem.AnActionEvent
-import com.intellij.openapi.actionSystem.CommonDataKeys
-import com.intellij.openapi.project.DumbAwareAction
-import com.intellij.ui.ComponentUtil
-import java.awt.KeyboardFocusManager
-import javax.swing.JList
-import javax.swing.JTree
-
-abstract class SelectMenuItemBaseAction internal constructor(): DumbAwareAction() {
-	init {
-		isEnabledInModalContext = true
-	}
-	
-	final override fun actionPerformed(e: AnActionEvent) {
-		val editor = e.getData(CommonDataKeys.EDITOR)
-		if (editor != null) {
-			val lookup = LookupManager.getActiveLookup(editor)
-			if (lookup is LookupImpl) {
-				updateSelection(lookup.list)
-				return
-			}
-		}
-		
-		var focused = KeyboardFocusManager.getCurrentKeyboardFocusManager().focusOwner
-		while (focused != null) {
-			if (focused is JList<*>) {
-				updateSelection(focused)
-				break
-			}
-			else if (focused is JTree) {
-				updateSelection(focused)
-				break
-			}
-			else if (focused is BigPopupUI) {
-				val list = ComponentUtil.findComponentsOfType(focused, JList::class.java).singleOrNull()
-				if (list != null) {
-					updateSelection(list)
-					break
-				}
-				
-				val tree = ComponentUtil.findComponentsOfType(focused, JTree::class.java).singleOrNull()
-				if (tree != null) {
-					updateSelection(tree)
-					break
-				}
-			}
-			
-			focused = focused.parent
-		}
-	}
-	
-	protected abstract fun updateSelection(list: JList<*>)
-	
-	protected fun setSelectedIndex(list: JList<*>, newIndex: Int) {
-		if (newIndex in 0 until list.model.size) {
-			list.selectedIndex = newIndex
-			list.ensureIndexIsVisible(newIndex)
-		}
-	}
-	
-	protected abstract fun updateSelection(tree: JTree)
-	
-	protected fun setSelectedIndex(list: JTree, newIndex: Int) {
-		if (newIndex in 0 until list.rowCount) {
-			list.setSelectionRow(newIndex)
-			list.scrollRowToVisible(newIndex)
-		}
-	}
-}
diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml
index 47f7f3a..602729b 100644
--- a/src/main/resources/META-INF/plugin.xml
+++ b/src/main/resources/META-INF/plugin.xml
@@ -22,9 +22,4 @@
     <applicationConfigurable parentId="tools" instance="com.chylex.intellij.keyboardmaster.configuration.PluginConfigurable" id="com.chylex.keyboardmaster" />
     <postStartupActivity implementation="com.chylex.intellij.keyboardmaster.PluginStartup" order="last" />
   </extensions>
-  
-  <actions>
-    <action id="com.chylex.intellij.keyboardmaster.feature.actions.NextMenuItemAction" class="com.chylex.intellij.keyboardmaster.feature.actions.NextMenuItemAction" text="Next Menu Item" />
-    <action id="com.chylex.intellij.keyboardmaster.feature.actions.PrevMenuItemAction" class="com.chylex.intellij.keyboardmaster.feature.actions.PrevMenuItemAction" text="Previous Menu Item" />
-  </actions>
 </idea-plugin>