diff options
Diffstat (limited to 'platform/structuralsearch/source/com/intellij/structuralsearch/plugin/StructuralSearchAction.java')
-rw-r--r-- | platform/structuralsearch/source/com/intellij/structuralsearch/plugin/StructuralSearchAction.java | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/StructuralSearchAction.java b/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/StructuralSearchAction.java new file mode 100644 index 000000000000..fdfccb951361 --- /dev/null +++ b/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/StructuralSearchAction.java @@ -0,0 +1,49 @@ +package com.intellij.structuralsearch.plugin; + +import com.intellij.openapi.actionSystem.*; +import com.intellij.openapi.project.Project; +import com.intellij.structuralsearch.plugin.ui.Configuration; +import com.intellij.structuralsearch.plugin.ui.SearchContext; +import com.intellij.structuralsearch.plugin.ui.SearchDialog; + +public class StructuralSearchAction extends AnAction { + + /** Handles IDEA action event + * @param event the event of action + */ + public void actionPerformed(AnActionEvent event) { + triggerAction(null, SearchContext.buildFromDataContext(event.getDataContext())); + } + + public static void triggerAction(Configuration config, SearchContext searchContext) { + //StructuralSearchPlugin.getInstance(searchContext.getProject()); + final SearchDialog searchDialog = new SearchDialog(searchContext); + + if (config!=null) { + searchDialog.setUseLastConfiguration(true); + searchDialog.setValuesFromConfig(config); + } + + searchDialog.show(); + } + + /** Updates the state of the action + * @param event the action event + */ + public void update(AnActionEvent event) { + final Presentation presentation = event.getPresentation(); + final DataContext context = event.getDataContext(); + final Project project = CommonDataKeys.PROJECT.getData(context); + final StructuralSearchPlugin plugin = project==null ? null:StructuralSearchPlugin.getInstance( project ); + + if (plugin == null || plugin.isSearchInProgress() || plugin.isDialogVisible()) { + presentation.setEnabled( false ); + } else { + presentation.setEnabled( true ); + } + + super.update(event); + } + +} + |