Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
小 白蛋
Intellij Community
Commits
c202c3da
Commit
c202c3da
authored
7 years ago
by
vadim.lomshakov
Browse files
Options
Download
Email Patches
Plain Diff
introduced ActionPopupMenu listener
parent
7c6e2280
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
platform/editor-ui-api/src/com/intellij/openapi/actionSystem/ActionPopupMenu.java
+4
-0
...rc/com/intellij/openapi/actionSystem/ActionPopupMenu.java
platform/platform-api/src/com/intellij/openapi/actionSystem/ex/ActionManagerEx.java
+3
-0
...com/intellij/openapi/actionSystem/ex/ActionManagerEx.java
platform/platform-api/src/com/intellij/openapi/actionSystem/ex/ActionPopupMenuListener.kt
+9
-0
...tellij/openapi/actionSystem/ex/ActionPopupMenuListener.kt
platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionManagerImpl.java
+24
-1
...intellij/openapi/actionSystem/impl/ActionManagerImpl.java
platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionPopupMenuImpl.java
+10
-0
...tellij/openapi/actionSystem/impl/ActionPopupMenuImpl.java
with
50 additions
and
1 deletion
+50
-1
platform/editor-ui-api/src/com/intellij/openapi/actionSystem/ActionPopupMenu.java
+
4
-
0
View file @
c202c3da
...
...
@@ -30,6 +30,10 @@ public interface ActionPopupMenu {
*/
JPopupMenu
getComponent
();
String
getPlace
();
ActionGroup
getActionGroup
();
/**
* Will be used for data-context retrieval.
*/
...
...
This diff is collapsed.
Click to expand it.
platform/platform-api/src/com/intellij/openapi/actionSystem/ex/ActionManagerEx.java
+
3
-
0
View file @
c202c3da
...
...
@@ -4,6 +4,7 @@
package
com.intellij.openapi.actionSystem.ex
;
import
com.intellij.ide.DataManager
;
import
com.intellij.openapi.Disposable
;
import
com.intellij.openapi.actionSystem.*
;
import
com.intellij.openapi.extensions.PluginId
;
import
org.jetbrains.annotations.NotNull
;
...
...
@@ -89,5 +90,7 @@ public abstract class ActionManagerEx extends ActionManager {
fireBeforeActionPerformed
(
action
,
DataManager
.
getInstance
().
getDataContext
(),
e
);
}
}
public
abstract
void
addActionPopupMenuListener
(
ActionPopupMenuListener
listener
,
Disposable
parentDisposable
);
}
This diff is collapsed.
Click to expand it.
platform/platform-api/src/com/intellij/openapi/actionSystem/ex/ActionPopupMenuListener.kt
0 → 100644
+
9
-
0
View file @
c202c3da
package
com.intellij.openapi.actionSystem.ex
import
com.intellij.openapi.actionSystem.ActionPopupMenu
interface
ActionPopupMenuListener
{
fun
onActionPopupMenuCreated
(
menu
:
ActionPopupMenu
)
{}
fun
onActionPopupMenuReleased
(
menu
:
ActionPopupMenu
)
{}
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionManagerImpl.java
+
24
-
1
View file @
c202c3da
...
...
@@ -29,6 +29,7 @@ import com.intellij.internal.statistic.customUsageCollectors.actions.ActionsColl
import
com.intellij.openapi.Disposable
;
import
com.intellij.openapi.actionSystem.*
;
import
com.intellij.openapi.actionSystem.ex.ActionManagerEx
;
import
com.intellij.openapi.actionSystem.ex.ActionPopupMenuListener
;
import
com.intellij.openapi.actionSystem.ex.ActionUtil
;
import
com.intellij.openapi.actionSystem.ex.AnActionListener
;
import
com.intellij.openapi.application.*
;
...
...
@@ -126,6 +127,7 @@ public final class ActionManagerImpl extends ActionManagerEx implements Disposab
private
final
MultiMap
<
String
,
String
>
myId2GroupId
=
new
MultiMap
<>();
private
final
List
<
String
>
myNotRegisteredInternalActionIds
=
new
ArrayList
<>();
private
final
List
<
AnActionListener
>
myActionListeners
=
ContainerUtil
.
createLockFreeCopyOnWriteList
();
private
final
List
<
ActionPopupMenuListener
>
myActionPopupMenuListeners
=
ContainerUtil
.
createLockFreeCopyOnWriteList
();
private
final
KeymapManagerEx
myKeymapManager
;
private
final
DataManager
myDataManager
;
private
final
List
<
ActionPopupMenuImpl
>
myPopups
=
new
ArrayList
<>();
...
...
@@ -1079,11 +1081,21 @@ public final class ActionManagerImpl extends ActionManagerEx implements Disposab
}
public
void
addActionPopup
(
final
ActionPopupMenuImpl
menu
)
{
myPopups
.
add
(
menu
);
boolean
added
=
myPopups
.
add
(
menu
);
if
(
added
)
{
for
(
ActionPopupMenuListener
listener
:
myActionPopupMenuListeners
)
{
listener
.
onActionPopupMenuCreated
(
menu
);
}
}
}
public
void
removeActionPopup
(
final
ActionPopupMenuImpl
menu
)
{
final
boolean
removed
=
myPopups
.
remove
(
menu
);
if
(
removed
)
{
for
(
ActionPopupMenuListener
listener
:
myActionPopupMenuListeners
)
{
listener
.
onActionPopupMenuReleased
(
menu
);
}
}
if
(
removed
&&
myPopups
.
isEmpty
())
{
flushActionPerformed
();
}
...
...
@@ -1115,6 +1127,17 @@ public final class ActionManagerImpl extends ActionManagerEx implements Disposab
return
myTransparentOnlyUpdate
;
}
@Override
public
void
addActionPopupMenuListener
(
ActionPopupMenuListener
listener
,
Disposable
parentDisposable
)
{
myActionPopupMenuListeners
.
add
(
listener
);
Disposer
.
register
(
parentDisposable
,
new
Disposable
()
{
@Override
public
void
dispose
()
{
myActionPopupMenuListeners
.
remove
(
listener
);
}
});
}
private
AnAction
replaceAction
(
@NotNull
String
actionId
,
@NotNull
AnAction
newAction
,
@Nullable
PluginId
pluginId
)
{
AnAction
oldAction
=
getActionOrStub
(
actionId
);
if
(
oldAction
!=
null
)
{
...
...
This diff is collapsed.
Click to expand it.
platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionPopupMenuImpl.java
+
10
-
0
View file @
c202c3da
...
...
@@ -66,6 +66,16 @@ public final class ActionPopupMenuImpl implements ActionPopupMenu, ApplicationAc
return
myMenu
;
}
@Override
public
String
getPlace
()
{
return
myMenu
.
myPlace
;
}
@Override
public
ActionGroup
getActionGroup
()
{
return
myMenu
.
myGroup
;
}
public
void
setDataContextProvider
(
@Nullable
Getter
<
DataContext
>
dataContextProvider
)
{
myDataContextProvider
=
dataContextProvider
;
}
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment