JAVA-14172 Rename intellij to intellij-modules (#12688)
This commit is contained in:
4
intelliJ-modules/README.md
Normal file
4
intelliJ-modules/README.md
Normal file
@@ -0,0 +1,4 @@
|
||||
### Relevant Articles:
|
||||
|
||||
- [Writing IntelliJ IDEA Plugins](https://www.baeldung.com/intellij-new-custom-plugin)
|
||||
- [Writing IntelliJ IDEA Plugins Using Gradle](https://www.baeldung.com/intellij-idea-plugins-gradle)
|
||||
25
intelliJ-modules/stackoverflow-plugin-gradle/build.gradle
Normal file
25
intelliJ-modules/stackoverflow-plugin-gradle/build.gradle
Normal file
@@ -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.<br>
|
||||
<em>most HTML tags may be used</em>"""
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
rootProject.name = 'stackoverflow-plugin-gradle'
|
||||
include '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");
|
||||
}
|
||||
}
|
||||
@@ -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> 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());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
<idea-plugin>
|
||||
<id>com.baeldung.stackoverflow-plugin-gradle</id>
|
||||
<name>StackOverflow</name>
|
||||
<vendor email="waldemar.penner91@gmail.com" url="https://baeldung.com">Baeldung</vendor>
|
||||
|
||||
<description><![CDATA[
|
||||
Ask Question or search on Stack Overflow
|
||||
]]></description>
|
||||
|
||||
<!-- please see https://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/plugin_compatibility.html
|
||||
on how to target different products -->
|
||||
<depends>com.intellij.modules.platform</depends>
|
||||
|
||||
<extensions defaultExtensionNs="com.intellij">
|
||||
<!-- Add your extensions here -->
|
||||
</extensions>
|
||||
|
||||
<actions>
|
||||
<action
|
||||
id="StackOverflow.AskQuestion.ToolsMenu"
|
||||
class="com.baeldung.intellij.stackoverflowplugin.AskQuestionAction"
|
||||
text="Ask Question on Stack Overflow"
|
||||
description="Ask a Question on Stack Overflow">
|
||||
<add-to-group group-id="ToolsMenu" anchor="last"/>
|
||||
</action>
|
||||
<action
|
||||
id="StackOverflow.Search.Editor"
|
||||
class="com.baeldung.intellij.stackoverflowplugin.SearchAction"
|
||||
text="Search on Stack Overflow"
|
||||
description="Search on Stack Overflow">
|
||||
<add-to-group group-id="EditorPopupMenu" anchor="last"/>
|
||||
</action>
|
||||
<action
|
||||
id="StackOverflow.Search.Console"
|
||||
class="com.baeldung.intellij.stackoverflowplugin.SearchAction"
|
||||
text="Search on Stack Overflow"
|
||||
description="Search on Stack Overflow">
|
||||
<add-to-group group-id="ConsoleEditorPopupMenu" anchor="last"/>
|
||||
</action>
|
||||
</actions>
|
||||
</idea-plugin>
|
||||
@@ -0,0 +1,62 @@
|
||||
<idea-plugin>
|
||||
<id>com.baeldung.intellij.stackoverflowplugin</id>
|
||||
<name>Stack Overflow Plugin for IntelliJ</name>
|
||||
<version>1.0</version>
|
||||
<vendor email="eugene@baeldung.com" url="http://www.baeldung.com">Baeldung</vendor>
|
||||
|
||||
<description><![CDATA[
|
||||
Plugin to help search Stack Overflow from inside IntelliJ
|
||||
]]></description>
|
||||
|
||||
<change-notes><![CDATA[
|
||||
<ul>
|
||||
<li>1.0 - Initial release</li>
|
||||
</ul>
|
||||
]]>
|
||||
</change-notes>
|
||||
|
||||
<!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html for description -->
|
||||
<idea-version since-build="173.0"/>
|
||||
|
||||
<!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/plugin_compatibility.html
|
||||
on how to target different products -->
|
||||
<!-- uncomment to enable plugin in all products
|
||||
<depends>com.intellij.modules.lang</depends>
|
||||
-->
|
||||
|
||||
<extensions defaultExtensionNs="com.intellij">
|
||||
<!-- Add your extensions here -->
|
||||
</extensions>
|
||||
|
||||
<actions>
|
||||
|
||||
<!-- Add Ask question action to Tools Menu -->
|
||||
<action id="StackOverflow.AskQuestion.ToolsMenu"
|
||||
class="com.baeldung.intellij.stackoverflowplugin.AskQuestionAction"
|
||||
text="Ask Question on Stack Overflow"
|
||||
icon="so-icon-16x16.png"
|
||||
description="Ask a Question on Stack Overflow">
|
||||
<add-to-group group-id="ToolsMenu" anchor="last"/>
|
||||
</action>
|
||||
|
||||
<!-- Add action to search Stack Overflow from file editor -->
|
||||
<action id="StackOverflow.Search.Editor"
|
||||
class="com.baeldung.intellij.stackoverflowplugin.SearchAction"
|
||||
text="Search on Stack Overflow"
|
||||
icon="so-icon-16x16.png"
|
||||
description="Search on Stack Overflow">
|
||||
<add-to-group group-id="EditorPopupMenu" anchor="last"/>
|
||||
</action>
|
||||
|
||||
<!-- Add action to search Stack Overflow from console editor -->
|
||||
<action id="StackOverflow.Search.Console"
|
||||
class="com.baeldung.intellij.stackoverflowplugin.SearchAction"
|
||||
text="Search on Stack Overflow"
|
||||
icon="so-icon-16x16.png"
|
||||
description="Search on Stack Overflow">
|
||||
<add-to-group group-id="ConsoleEditorPopupMenu" anchor="last"/>
|
||||
</action>
|
||||
|
||||
</actions>
|
||||
|
||||
</idea-plugin>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 454 B |
@@ -0,0 +1,14 @@
|
||||
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");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
package com.baeldung.intellij.stackoverflowplugin;
|
||||
|
||||
import com.intellij.ide.BrowserUtil;
|
||||
import com.intellij.lang.Language;
|
||||
import com.intellij.openapi.actionSystem.ActionManager;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.CommonDataKeys;
|
||||
import com.intellij.openapi.editor.CaretModel;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.psi.PsiFile;
|
||||
|
||||
public class SearchAction extends AnAction
|
||||
{
|
||||
/**
|
||||
* Convert selected text to a URL friendly string.
|
||||
* @param e
|
||||
*/
|
||||
@Override
|
||||
public void actionPerformed(AnActionEvent e)
|
||||
{
|
||||
final Editor editor = e.getRequiredData(CommonDataKeys.EDITOR);
|
||||
CaretModel caretModel = editor.getCaretModel();
|
||||
|
||||
// For searches from the editor, we should also get file type information
|
||||
// to help add scope to the search using the Stack overflow search syntax.
|
||||
//
|
||||
// https://stackoverflow.com/help/searching
|
||||
|
||||
String languageTag = "";
|
||||
PsiFile file = e.getData(CommonDataKeys.PSI_FILE);
|
||||
if(file != null)
|
||||
{
|
||||
Language lang = e.getData(CommonDataKeys.PSI_FILE).getLanguage();
|
||||
languageTag = "+[" + lang.getDisplayName().toLowerCase() + "]";
|
||||
}
|
||||
|
||||
// The update method below is only called periodically so need
|
||||
// to be careful to check for selected text
|
||||
if(caretModel.getCurrentCaret().hasSelection())
|
||||
{
|
||||
String query = caretModel.getCurrentCaret().getSelectedText().replace(' ', '+') + languageTag;
|
||||
BrowserUtil.browse("https://stackoverflow.com/search?q=" + query);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Only make this action visible when text is selected.
|
||||
* @param e
|
||||
*/
|
||||
@Override
|
||||
public void update(AnActionEvent e)
|
||||
{
|
||||
final Editor editor = e.getRequiredData(CommonDataKeys.EDITOR);
|
||||
CaretModel caretModel = editor.getCaretModel();
|
||||
e.getPresentation().setEnabledAndVisible(caretModel.getCurrentCaret().hasSelection());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user