diff --git a/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/ActionGroup.java b/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/ActionGroup.java index 068b253c5fd3..3d2780a12c6d 100644 --- a/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/ActionGroup.java +++ b/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/ActionGroup.java @@ -28,6 +28,9 @@ import java.util.Set; /** * Represents a group of actions. + * + * @see com.intellij.openapi.actionSystem.DefaultActionGroup + * @see com.intellij.openapi.actionSystem.ComputableActionGroup */ public abstract class ActionGroup extends AnAction { private boolean myPopup; diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/actions/MarkRootGroup.java b/platform/lang-impl/src/com/intellij/ide/projectView/actions/MarkRootGroup.java index 2a9a881d69dd..be1f5398ba48 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/actions/MarkRootGroup.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/actions/MarkRootGroup.java @@ -15,17 +15,10 @@ */ package com.intellij.ide.projectView.actions; -import com.intellij.openapi.actionSystem.ActionGroupUtil; -import com.intellij.openapi.actionSystem.AnActionEvent; -import com.intellij.openapi.actionSystem.DefaultActionGroup; -import com.intellij.openapi.project.DumbAware; +import com.intellij.ide.actions.NonTrivialActionGroup; /** * @author yole */ -public class MarkRootGroup extends DefaultActionGroup implements DumbAware { - @Override - public void update(AnActionEvent e) { - e.getPresentation().setVisible(!ActionGroupUtil.isGroupEmpty(this, e)); - } +public class MarkRootGroup extends NonTrivialActionGroup { } diff --git a/platform/platform-api/src/com/intellij/openapi/actionSystem/DefaultActionGroup.java b/platform/platform-api/src/com/intellij/openapi/actionSystem/DefaultActionGroup.java index 147ba3ae4588..9df2e1b88788 100644 --- a/platform/platform-api/src/com/intellij/openapi/actionSystem/DefaultActionGroup.java +++ b/platform/platform-api/src/com/intellij/openapi/actionSystem/DefaultActionGroup.java @@ -35,7 +35,13 @@ import java.util.List; * to implement your own ActionGroup. * * @see Constraints - * @see ComputableActionGroup + * + * @see com.intellij.openapi.actionSystem.ComputableActionGroup + * + * @see com.intellij.ide.actions.NonEmptyActionGroup + * @see com.intellij.ide.actions.NonTrivialActionGroup + * @see com.intellij.ide.actions.SmartPopupActionGroup + * */ public class DefaultActionGroup extends ActionGroup { private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.actionSystem.DefaultActionGroup"); diff --git a/platform/platform-impl/src/com/intellij/ide/actions/NonEmptyActionGroup.java b/platform/platform-impl/src/com/intellij/ide/actions/NonEmptyActionGroup.java index fff18a346054..58fd8650c292 100644 --- a/platform/platform-impl/src/com/intellij/ide/actions/NonEmptyActionGroup.java +++ b/platform/platform-impl/src/com/intellij/ide/actions/NonEmptyActionGroup.java @@ -20,6 +20,12 @@ import com.intellij.openapi.actionSystem.DefaultActionGroup; import com.intellij.openapi.actionSystem.Presentation; import com.intellij.openapi.project.DumbAware; +/** + * This group hides itself when there's no registered children. + * + * @see com.intellij.ide.actions.SmartPopupActionGroup + * @see com.intellij.ide.actions.NonTrivialActionGroup + */ public class NonEmptyActionGroup extends DefaultActionGroup implements DumbAware { public NonEmptyActionGroup() { super(); diff --git a/platform/platform-impl/src/com/intellij/ide/actions/NonTrivialActionGroup.java b/platform/platform-impl/src/com/intellij/ide/actions/NonTrivialActionGroup.java new file mode 100644 index 000000000000..1739c25c63b6 --- /dev/null +++ b/platform/platform-impl/src/com/intellij/ide/actions/NonTrivialActionGroup.java @@ -0,0 +1,39 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.ide.actions; + +import com.intellij.openapi.actionSystem.ActionGroupUtil; +import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.actionSystem.DefaultActionGroup; +import com.intellij.openapi.project.DumbAware; + +/** + * This group hides itself when there's no enabled and visible child. + * + * @see com.intellij.ide.actions.SmartPopupActionGroup + * @see com.intellij.ide.actions.NonEmptyActionGroup + * + * @author gregsh + */ +public class NonTrivialActionGroup extends DefaultActionGroup implements DumbAware { + public NonTrivialActionGroup() { + super(); + } + + public void update(AnActionEvent e) { + e.getPresentation().setVisible(!ActionGroupUtil.isGroupEmpty(this, e)); + } +} diff --git a/platform/platform-impl/src/com/intellij/ide/actions/SmartPopupActionGroup.java b/platform/platform-impl/src/com/intellij/ide/actions/SmartPopupActionGroup.java index 04303ec1ea6b..3b38863922a6 100644 --- a/platform/platform-impl/src/com/intellij/ide/actions/SmartPopupActionGroup.java +++ b/platform/platform-impl/src/com/intellij/ide/actions/SmartPopupActionGroup.java @@ -20,6 +20,10 @@ import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.DefaultActionGroup; /** + * This group turns itself into a popup if there's more than one child. + * + * @see com.intellij.ide.actions.NonEmptyActionGroup + * @see com.intellij.ide.actions.NonTrivialActionGroup * @author yole */ public class SmartPopupActionGroup extends DefaultActionGroup {