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