Skip to content

Commit 7c88377

Browse files
Merge pull request #1004 from doninAtwix/1002-sort-context-actions
1002: Sorting context actions.
2 parents 33e69a0 + 6dda8bc commit 7c88377

File tree

2 files changed

+59
-12
lines changed

2 files changed

+59
-12
lines changed

resources/META-INF/plugin.xml

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -56,25 +56,25 @@
5656
<add-to-group group-id="PhpGenerateGroup" anchor="last"/>
5757
</group>
5858

59-
<group id="MagentoContextBasedActionsGroup" class="com.intellij.ide.actions.NonEmptyActionGroup" text="Context Actions" popup="false" compact="true" searchable="true">
59+
<group id="MagentoContextBasedActionsGroup" class="com.magento.idea.magento2plugin.actions.groups.ContextActionsGroup" text="Context Actions" popup="false" compact="true" searchable="true">
6060
<separator/>
6161
<!-- Context dependent actions -->
62-
<action id="MagentoCreateRoutesFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewRoutesXmlAction"/>
63-
<action id="MagentoCreateDiFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewDiXmlAction"/>
64-
<action id="MagentoCreateWebapiFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewWebapiXmlAction"/>
6562
<action id="MagentoCreateAclFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewAclXmlAction"/>
6663
<action id="MagentoCreateConfigFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewConfigXmlAction"/>
67-
<action id="MagentoCreateSystemFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewSystemXmlAction"/>
64+
<action id="MagentoCreateCrontabFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewCrontabXmlAction"/>
65+
<action id="MagentoCreateDiFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewDiXmlAction"/>
66+
<action id="MagentoCreateEmailTemplatesFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewEmailTemplatesXmlAction"/>
6867
<action id="MagentoCreateExtensionAttributesFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewExtensionAttributesXmlAction"/>
69-
<action id="MagentoCreateWidgetFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewWidgetXmlAction"/>
70-
<action id="MagentoCreateMviewFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewMviewXmlAction"/>
71-
<action id="MagentoCreateIndexerFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewIndexerXmlAction"/>
72-
<action id="MagentoCreateViewFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewViewXmlAction"/>
7368
<action id="MagentoCreateFieldsetFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewFieldsetXmlAction"/>
74-
<action id="MagentoCreateSectionsFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewSectionsXmlAction"/>
75-
<action id="MagentoCreateEmailTemplatesFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewEmailTemplatesXmlAction"/>
76-
<action id="MagentoCreateCrontabFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewCrontabXmlAction"/>
69+
<action id="MagentoCreateIndexerFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewIndexerXmlAction"/>
70+
<action id="MagentoCreateMviewFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewMviewXmlAction"/>
7771
<action id="MagentoCreatePageTypesFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewPageTypesXmlAction"/>
72+
<action id="MagentoCreateRoutesFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewRoutesXmlAction"/>
73+
<action id="MagentoCreateSectionsFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewSectionsXmlAction"/>
74+
<action id="MagentoCreateSystemFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewSystemXmlAction"/>
75+
<action id="MagentoCreateViewFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewViewXmlAction"/>
76+
<action id="MagentoCreateWebapiFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewWebapiXmlAction"/>
77+
<action id="MagentoCreateWidgetFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewWidgetXmlAction"/>
7878
<!-- Context dependent actions -->
7979
<separator/>
8080
<add-to-group group-id="NewGroup" anchor="before" relative-to-action="NewXml"/>
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/*
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
6+
package com.magento.idea.magento2plugin.actions.groups;
7+
8+
import com.intellij.ide.actions.NonEmptyActionGroup;
9+
import com.intellij.openapi.actionSystem.AnAction;
10+
import com.intellij.openapi.actionSystem.AnActionEvent;
11+
import java.util.Arrays;
12+
import java.util.Comparator;
13+
import java.util.LinkedList;
14+
import java.util.List;
15+
import org.jetbrains.annotations.NotNull;
16+
17+
public class ContextActionsGroup extends NonEmptyActionGroup {
18+
19+
@Override
20+
public void update(final @NotNull AnActionEvent event) {
21+
if (getChildrenCount() > 0) {
22+
final AnAction[] actions = getChildren(event);
23+
final List<AnAction> originalActionList = new LinkedList<>(Arrays.asList(actions));
24+
final List<AnAction> sortedActionList = new LinkedList<>(Arrays.asList(actions));
25+
sortedActionList.sort(new ContextActionsComparator());
26+
27+
if (!originalActionList.equals(sortedActionList)) {
28+
removeAll();
29+
addAll(sortedActionList.toArray(new AnAction[0]));
30+
}
31+
}
32+
33+
super.update(event);
34+
}
35+
36+
private static class ContextActionsComparator implements Comparator<AnAction> {
37+
38+
@Override
39+
public int compare(final AnAction action1, final AnAction action2) {
40+
if (action1.getTemplateText() == null || action2.getTemplateText() == null) {
41+
return 0;
42+
}
43+
44+
return action1.getTemplateText().compareTo(action2.getTemplateText());
45+
}
46+
}
47+
}

0 commit comments

Comments
 (0)