From f6c82ba9359532b30683dccde3df0151ba8bbc92 Mon Sep 17 00:00:00 2001 From: thsaravana Date: Thu, 14 May 2020 21:27:05 +0530 Subject: [PATCH] ToolWindow settings to turn on/off validation --- .../dagger/actions/ValidationSwitchAction.kt | 24 +++++++++++++++++++ .../madrapps/dagger/services/DaggerService.kt | 1 + .../dagger/toolwindow/DaggerToolWindow.kt | 15 +++++++++++- .../dagger/validation/ValidationAnnotator.kt | 12 ++++++---- src/main/resources/META-INF/plugin.xml | 3 +++ 5 files changed, 49 insertions(+), 6 deletions(-) create mode 100644 src/main/kotlin/com/madrapps/dagger/actions/ValidationSwitchAction.kt diff --git a/src/main/kotlin/com/madrapps/dagger/actions/ValidationSwitchAction.kt b/src/main/kotlin/com/madrapps/dagger/actions/ValidationSwitchAction.kt new file mode 100644 index 0000000..184b53c --- /dev/null +++ b/src/main/kotlin/com/madrapps/dagger/actions/ValidationSwitchAction.kt @@ -0,0 +1,24 @@ +package com.madrapps.dagger.actions + +import com.intellij.openapi.actionSystem.AnActionEvent +import com.intellij.openapi.actionSystem.ToggleAction +import com.madrapps.dagger.services.service + +class ValidationSwitchAction : ToggleAction() { + + companion object { + const val ID = "com.madrapps.dagger.actions.ValidationSwitchAction" + } + + override fun isSelected(e: AnActionEvent): Boolean { + val project = e.project ?: return false + return project.service.settings.isValidationsEnabled + } + + override fun setSelected(e: AnActionEvent, state: Boolean) { + val project = e.project + if (project != null) { + project.service.settings.isValidationsEnabled = state + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/com/madrapps/dagger/services/DaggerService.kt b/src/main/kotlin/com/madrapps/dagger/services/DaggerService.kt index 16e0706..6953b3b 100644 --- a/src/main/kotlin/com/madrapps/dagger/services/DaggerService.kt +++ b/src/main/kotlin/com/madrapps/dagger/services/DaggerService.kt @@ -40,6 +40,7 @@ interface DaggerService { class Storage { var isAutoScrollToSource = false var shouldCalculateAfterEveryBuild = false + var isValidationsEnabled = true } } diff --git a/src/main/kotlin/com/madrapps/dagger/toolwindow/DaggerToolWindow.kt b/src/main/kotlin/com/madrapps/dagger/toolwindow/DaggerToolWindow.kt index d2a3f22..5c5a096 100644 --- a/src/main/kotlin/com/madrapps/dagger/toolwindow/DaggerToolWindow.kt +++ b/src/main/kotlin/com/madrapps/dagger/toolwindow/DaggerToolWindow.kt @@ -7,6 +7,7 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.ui.SimpleToolWindowPanel import com.intellij.openapi.wm.ToolWindow import com.intellij.openapi.wm.ToolWindowFactory +import com.intellij.openapi.wm.ex.ToolWindowEx import com.intellij.ui.AutoScrollToSourceHandler import com.intellij.ui.PopupHandler import com.intellij.ui.components.JBPanel @@ -35,7 +36,8 @@ class DaggerToolWindow : ToolWindowFactory { } } -class MyPanel(toolWindow: ToolWindow, project: Project) : SimpleToolWindowPanel(true, true), DaggerWindowPanel { +class MyPanel(private val toolWindow: ToolWindow, project: Project) : SimpleToolWindowPanel(true, true), + DaggerWindowPanel { override val tree: DaggerTree = DaggerTree(project.service.treeModel) private val autoScrollHandler: AutoScrollToSourceHandler @@ -69,6 +71,7 @@ class MyPanel(toolWindow: ToolWindow, project: Project) : SimpleToolWindowPanel( val toolbar = JPanel(BorderLayout()) initToolbar(toolbar) + initSettingsOptions() tree.isRootVisible = false tree.toggleClickCount = 3 @@ -93,6 +96,16 @@ class MyPanel(toolWindow: ToolWindow, project: Project) : SimpleToolWindowPanel( return panel } + private fun initSettingsOptions() { + val manager = ActionManager.getInstance() + val validationSwitchAction = manager.getAction(ValidationSwitchAction.ID) + + val toolbarActionGroup = DefaultActionGroup().apply { + add(validationSwitchAction) + } + (toolWindow as? ToolWindowEx)?.setAdditionalGearActions(toolbarActionGroup) + } + private fun initToolbar(toolbar: JPanel) { val manager = ActionManager.getInstance() val refreshAction = manager.getAction(RefreshAction.ID) diff --git a/src/main/kotlin/com/madrapps/dagger/validation/ValidationAnnotator.kt b/src/main/kotlin/com/madrapps/dagger/validation/ValidationAnnotator.kt index b3ad09c..490cfc7 100644 --- a/src/main/kotlin/com/madrapps/dagger/validation/ValidationAnnotator.kt +++ b/src/main/kotlin/com/madrapps/dagger/validation/ValidationAnnotator.kt @@ -2,8 +2,8 @@ package com.madrapps.dagger.validation import com.intellij.lang.annotation.AnnotationHolder import com.intellij.lang.annotation.Annotator -import com.intellij.lang.annotation.HighlightSeverity.ERROR import com.intellij.psi.PsiElement +import com.madrapps.dagger.services.service import com.madrapps.dagger.validation.component.InterfaceOrAbstract import com.madrapps.dagger.validation.component.MultipleBuilderOrFactory import com.madrapps.dagger.validation.component.NoModuleAnnotation @@ -21,13 +21,15 @@ class ValidationAnnotator : Annotator { ) override fun annotate(element: PsiElement, holder: AnnotationHolder) { - problems.forEach { - val errors = it.isError(element) - errors.forEach { (range, message) -> - holder.createErrorAnnotation(range, message) + if (element.project.service.settings.isValidationsEnabled) { + problems.forEach { + val errors = it.isError(element) + errors.forEach { (range, message) -> + holder.createErrorAnnotation(range, message) // holder.newAnnotation(ERROR, message) // .range(range) // .create() + } } } } diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index e914889..e8b00dc 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -72,5 +72,8 @@ class="com.madrapps.dagger.actions.GenerateGraphEveryBuildAction" icon="AllIcons.Toolwindows.ToolWindowBuild" text="Generate Graph on Every Build"/> + \ No newline at end of file