lvcs-impl
[idea/community.git] / platform / lang-api / src / com / intellij / psi / IntentionFilterOwner.java
1 package com.intellij.psi;
2
3 import com.intellij.codeInsight.intention.IntentionAction;
4
5 public interface IntentionFilterOwner {
6   /**
7    * Sets the intention actions filter which is used to determine which intention actions should be available in an editor.
8    *
9    * @param filter the intention actions filter instance.
10    */
11   void setIntentionActionsFilter(IntentionActionsFilter filter);
12
13   /**
14    * Sets the intention actions filter which is used to determine which intention actions should be available in an editor.
15    *
16    * @return the intention actions filter instance.
17    */
18   IntentionActionsFilter getIntentionActionsFilter();
19
20   /**
21    * Interface to control the available intention actions.
22    */
23   interface IntentionActionsFilter {
24
25     /**
26      * Checks if the intention action should be available in an editor.
27      * @param intentionAction the intention action to analyze
28      * @return Returns true if the intention action should be available, false otherwise
29      */
30     boolean isAvailable(final IntentionAction intentionAction);
31
32     /**
33      * This filter reports all intentions are available.
34      */
35     IntentionActionsFilter EVERYTHING_AVAILABLE = new IntentionActionsFilter() {
36       public boolean isAvailable(final IntentionAction intentionAction) {
37         return true;
38       }
39     };
40   }
41 }