Class ContextSpecificAction<T>

java.lang.Object
docking.action.DockingAction
docking.action.ContextSpecificAction<T>
Type Parameters:
T - The expected ActionContext type
All Implemented Interfaces:
DockingActionIf, HelpDescriptor
Direct Known Subclasses:
FrontendProjectTreeAction, ProjectDataCollapseAction, ProjectDataExpandAction, ProjectDataNewFolderAction

public abstract class ContextSpecificAction<T> extends DockingAction
This class is used simplify DockingAction logic for actions that work with specific ActionContext. It automatically checks the ActionContext and disables/invalidates/prevent popup, if the context is not the expected type. If the context type is correct, it casts the context to the expected specific type and calls the equivalent method with the ActionContext already cast to the expected type.
  • Constructor Details

    • ContextSpecificAction

      public ContextSpecificAction(String name, String owner, Class<T> contextClass)
      Constructor
      Parameters:
      name - the name of the action.
      owner - the owner of the action.
      contextClass - the class of the expected ActionContext type.
  • Method Details

    • isEnabledForContext

      public boolean isEnabledForContext(ActionContext actionContext)
      Description copied from interface: DockingActionIf
      Method used to determine if this action should be enabled for the given context.

      This is the method implementors override to control when the action may be used.

      This method will be called by the DockingWindowManager for actions on the global menuBar and toolBar and for actions that have a keyBinding.

      This method will be called whenever one of the following events occur:

      1. when the user invokes the action via its keyBinding,
      2. the user changes focus from one component provider to another,
      3. the user moves a component to another position in the window or into another window,
      4. a component provider reports a change in it's context,
      5. any plugin or software component reports a general change in context (calls the tool.contextChanged(ComponentProvider) with a null parameter).
      The default implementation will simply return this action's enablement state.
      Specified by:
      isEnabledForContext in interface DockingActionIf
      Overrides:
      isEnabledForContext in class DockingAction
      Parameters:
      actionContext - the current ActionContext for the window.
      Returns:
      true if the action should be enabled for the context or false otherwise.
    • isValidContext

      public boolean isValidContext(ActionContext actionContext)
      Description copied from interface: DockingActionIf
      Method that actions implement to indicate if this action is valid (knows how to work with, is appropriate for) for the given context. This method is used to determine if the action should be enabled based on the either the local context or the global context. The action is first asked if it is valid for the local context and if not, then it is asked if it is valid for the global context. If a context is valid, then it will then be asked if it is enabled for that context.
      Specified by:
      isValidContext in interface DockingActionIf
      Overrides:
      isValidContext in class DockingAction
      Parameters:
      actionContext - the ActionContext from the active provider.
      Returns:
      true if this action is appropriate for the given context.
    • isAddToPopup

      public boolean isAddToPopup(ActionContext actionContext)
      Description copied from interface: DockingActionIf
      method is used to determine if this action should be displayed on the current popup. This method will only be called if the action has popup PopupMenuData set.

      Generally, actions don't need to override this method as the default implementation will defer to the DockingActionIf.isEnabledForContext(ActionContext), which will have the effect of adding the action to the popup only if it is enabled for a given context. By overriding this method, you can change this behavior so that the action will be added to the popup, even if it is disabled for the context, by having this method return true even if the DockingActionIf.isEnabledForContext(ActionContext) method will return false, resulting in the action appearing in the popup menu, but begin disabled.

      Specified by:
      isAddToPopup in interface DockingActionIf
      Overrides:
      isAddToPopup in class DockingAction
      Parameters:
      actionContext - the ActionContext from the active provider.
      Returns:
      true if this action is appropriate for the given context.
    • actionPerformed

      public void actionPerformed(ActionContext actionContext)
      Description copied from interface: DockingActionIf
      method to actually perform the action logic for this action.
      Specified by:
      actionPerformed in interface DockingActionIf
      Specified by:
      actionPerformed in class DockingAction
      Parameters:
      actionContext - the ActionContext object that provides information about where and how this action was invoked.
    • actionPerformed

      protected abstract void actionPerformed(T context)
      The actionPerformed method with a more specific ActionContext. See DockingAction.actionPerformed(ActionContext)
      Parameters:
      context - the more specific ActionContext
    • isAddToPopup

      protected boolean isAddToPopup(T context)
    • isEnabledForContext

      protected boolean isEnabledForContext(T context)
    • isValidContext

      protected boolean isValidContext(T context)