From bad42826d537f3e93c1d7835da36a2003b74d0b3 Mon Sep 17 00:00:00 2001 From: Waldemar Penner Date: Sun, 7 Jun 2020 09:55:29 +0200 Subject: [PATCH] add stackoverflow-plugin-gradle project --- .../stackoverflow-plugin-gradle/build.gradle | 25 +++++++++++ .../settings.gradle | 3 ++ .../AskQuestionAction.java | 12 ++++++ .../stackoverflowplugin/SearchAction.java | 41 +++++++++++++++++++ .../src/main/resources/META-INF/plugin.xml | 41 +++++++++++++++++++ 5 files changed, 122 insertions(+) create mode 100644 intelliJ/stackoverflow-plugin-gradle/build.gradle create mode 100644 intelliJ/stackoverflow-plugin-gradle/settings.gradle create mode 100644 intelliJ/stackoverflow-plugin-gradle/src/main/java/com/baeldung/intellij/stackoverflowplugin/AskQuestionAction.java create mode 100644 intelliJ/stackoverflow-plugin-gradle/src/main/java/com/baeldung/intellij/stackoverflowplugin/SearchAction.java create mode 100644 intelliJ/stackoverflow-plugin-gradle/src/main/resources/META-INF/plugin.xml diff --git a/intelliJ/stackoverflow-plugin-gradle/build.gradle b/intelliJ/stackoverflow-plugin-gradle/build.gradle new file mode 100644 index 0000000000..cd0cc258bf --- /dev/null +++ b/intelliJ/stackoverflow-plugin-gradle/build.gradle @@ -0,0 +1,25 @@ +plugins { + id 'java' + id 'org.jetbrains.intellij' version '0.4.21' +} + +group 'com.baeldung' +version '1.0-SNAPSHOT' + +repositories { + mavenCentral() +} + +dependencies { + testCompile group: 'junit', name: 'junit', version: '4.12' +} + +// See https://github.com/JetBrains/gradle-intellij-plugin/ +intellij { + version '2020.1.1' +} +patchPluginXml { + changeNotes """ + Add change notes here.
+ most HTML tags may be used""" +} \ No newline at end of file diff --git a/intelliJ/stackoverflow-plugin-gradle/settings.gradle b/intelliJ/stackoverflow-plugin-gradle/settings.gradle new file mode 100644 index 0000000000..bbbccdb823 --- /dev/null +++ b/intelliJ/stackoverflow-plugin-gradle/settings.gradle @@ -0,0 +1,3 @@ +rootProject.name = 'stackoverflow-plugin-gradle' +include 'java' + diff --git a/intelliJ/stackoverflow-plugin-gradle/src/main/java/com/baeldung/intellij/stackoverflowplugin/AskQuestionAction.java b/intelliJ/stackoverflow-plugin-gradle/src/main/java/com/baeldung/intellij/stackoverflowplugin/AskQuestionAction.java new file mode 100644 index 0000000000..2d53e7047a --- /dev/null +++ b/intelliJ/stackoverflow-plugin-gradle/src/main/java/com/baeldung/intellij/stackoverflowplugin/AskQuestionAction.java @@ -0,0 +1,12 @@ +package com.baeldung.intellij.stackoverflowplugin; + +import com.intellij.ide.BrowserUtil; +import com.intellij.openapi.actionSystem.AnAction; +import com.intellij.openapi.actionSystem.AnActionEvent; + +public class AskQuestionAction extends AnAction { + @Override + public void actionPerformed(AnActionEvent e) { + BrowserUtil.browse("https://stackoverflow.com/questions/ask"); + } +} diff --git a/intelliJ/stackoverflow-plugin-gradle/src/main/java/com/baeldung/intellij/stackoverflowplugin/SearchAction.java b/intelliJ/stackoverflow-plugin-gradle/src/main/java/com/baeldung/intellij/stackoverflowplugin/SearchAction.java new file mode 100644 index 0000000000..a73a7ec415 --- /dev/null +++ b/intelliJ/stackoverflow-plugin-gradle/src/main/java/com/baeldung/intellij/stackoverflowplugin/SearchAction.java @@ -0,0 +1,41 @@ +package com.baeldung.intellij.stackoverflowplugin; + +import com.intellij.ide.BrowserUtil; +import com.intellij.lang.Language; +import com.intellij.openapi.actionSystem.AnAction; +import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.actionSystem.CommonDataKeys; +import com.intellij.openapi.actionSystem.LangDataKeys; +import com.intellij.openapi.editor.CaretModel; +import com.intellij.openapi.editor.Editor; +import com.intellij.psi.PsiFile; +import org.jetbrains.annotations.NotNull; + +import java.util.Optional; + +public class SearchAction extends AnAction { + + @Override + public void actionPerformed(@NotNull AnActionEvent e) { + Optional psiFile = Optional.ofNullable(e.getData(LangDataKeys.PSI_FILE)); + String languageTag = psiFile + .map(PsiFile::getLanguage) + .map(Language::getDisplayName) + .map(String::toLowerCase) + .map(lang -> "[" + lang + "]") + .orElse(""); + + Editor editor = e.getRequiredData(CommonDataKeys.EDITOR); + CaretModel caretModel = editor.getCaretModel(); + String selectedText = caretModel.getCurrentCaret().getSelectedText(); + + BrowserUtil.browse("https://stackoverflow.com/search?q=" + languageTag + selectedText); + } + + @Override + public void update(AnActionEvent e) { + Editor editor = e.getRequiredData(CommonDataKeys.EDITOR); + CaretModel caretModel = editor.getCaretModel(); + e.getPresentation().setEnabledAndVisible(caretModel.getCurrentCaret().hasSelection()); + } +} diff --git a/intelliJ/stackoverflow-plugin-gradle/src/main/resources/META-INF/plugin.xml b/intelliJ/stackoverflow-plugin-gradle/src/main/resources/META-INF/plugin.xml new file mode 100644 index 0000000000..07445696c7 --- /dev/null +++ b/intelliJ/stackoverflow-plugin-gradle/src/main/resources/META-INF/plugin.xml @@ -0,0 +1,41 @@ + + com.baeldung.stackoverflow-plugin-gradle + StackOverflow + Baeldung + + + + + com.intellij.modules.platform + + + + + + + + + + + + + + + + + \ No newline at end of file