From 254c050c95bb2df8c75c275ddd65af6c99be4647 Mon Sep 17 00:00:00 2001 From: jordscream Date: Tue, 9 Oct 2018 21:23:36 -0400 Subject: [PATCH] add multiple file selection support for generating snippet --- Snippet.zip => GitlabSnippets.zip | Bin 61216 -> 61667 bytes README.md | 6 ++- Snippet.iml | 22 ---------- resources/META-INF/plugin.xml | 1 + .../gitlab/snippet/SnippetCreate.java | 40 +++++++++++++++--- 5 files changed, 40 insertions(+), 29 deletions(-) rename Snippet.zip => GitlabSnippets.zip (83%) delete mode 100644 Snippet.iml diff --git a/Snippet.zip b/GitlabSnippets.zip similarity index 83% rename from Snippet.zip rename to GitlabSnippets.zip index ca4e53cd4d5107c28aea747ed2a01fab4be30d7d..82b6a8672b95f94ddb81ec2668c47a5c33a7a5b3 100644 GIT binary patch delta 9833 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 L2uQ`%zoP#KzMP(6 delta 9379 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 diff --git a/README.md b/README.md index c86d36a..f8d310c 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,13 @@ # Gitlab Snippets A plugin for Jetbrains IDEs for creating Gitlab snippets within the IDE. +- Support Editor Selection Code Snippet +- Support Multiple Files Selection Snippet ### To Install: -Build or download the Snippet.zip file. Then file -> settings -> Plugins, choose "install plugin from disk". -Select Snippet.zip. Restart your IDE. +Build or download the GitlabSnippets.zip file. Then file -> settings -> Plugins, choose "install plugin from disk". +Select GitlabSnippets.zip. Restart your IDE. ### To Configure: diff --git a/Snippet.iml b/Snippet.iml deleted file mode 100644 index d08f814..0000000 --- a/Snippet.iml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/resources/META-INF/plugin.xml b/resources/META-INF/plugin.xml index 98fadac..e60eae6 100644 --- a/resources/META-INF/plugin.xml +++ b/resources/META-INF/plugin.xml @@ -25,6 +25,7 @@ + diff --git a/src/org/openactive/gitlab/snippet/SnippetCreate.java b/src/org/openactive/gitlab/snippet/SnippetCreate.java index 832b5c2..161fd08 100644 --- a/src/org/openactive/gitlab/snippet/SnippetCreate.java +++ b/src/org/openactive/gitlab/snippet/SnippetCreate.java @@ -1,21 +1,28 @@ package org.openactive.gitlab.snippet; +import com.intellij.ide.projectView.ProjectView; import com.intellij.ide.util.PropertiesComponent; import com.intellij.notification.*; import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.editor.Editor; +import com.intellij.openapi.fileEditor.FileEditor; import com.intellij.openapi.fileEditor.FileEditorManager; +import com.intellij.openapi.fileEditor.impl.LoadTextUtil; import com.intellij.openapi.options.Configurable; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.PsiElement; import org.apache.commons.lang.StringUtils; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; +import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.entity.ContentType; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; +import org.apache.http.ssl.SSLContextBuilder; +import org.apache.http.ssl.TrustStrategy; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.Nullable; import org.json.JSONObject; @@ -25,6 +32,8 @@ import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection; import java.io.InputStream; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; import java.util.HashMap; import java.util.Map; @@ -128,16 +137,17 @@ public void apply() throws ConfigurationException props.setValue( "org.openactive.gitlab.snippets.token", tokenField.getText().trim() ); } - private String post( String text, String fileName ) throws Exception + private String post( String text, String fileName, VirtualFile[] files) throws Exception { CloseableHttpResponse resp = null; HttpPost post = new HttpPost( getUseableUrl() ); post.addHeader( "PRIVATE-TOKEN", getToken() ); - String data = getData( fileName, text, fileName ); + String data = getData( fileName, text, fileName, files ); StringEntity ent = new StringEntity( data, ContentType.APPLICATION_JSON ); post.setEntity( ent ); + try ( CloseableHttpClient client = HttpClients.createDefault() ) { resp = client.execute( post ); @@ -163,13 +173,25 @@ private String post( String text, String fileName ) throws Exception } } - private String getData( String title, String content, String fileName ) + private String getData( String title, String content, String fileName, VirtualFile[] files ) { Map data = new HashMap<>(); data.put( "title", title ); data.put( "content", content ); data.put( "file_name", fileName ); data.put( "visibility", "internal" ); + + if (files.length > 0 && content == null) { + data.put( "title", "Code Snippet Multiple Files" ); + data.put( "content", "" ); + data.put( "file_name", "Code Snippet Multiple Files" ); + data.put( "visibility", "internal" ); + for (VirtualFile file : files) { + data.put( "content", + data.get("content") + "\n\n--------"+ file.getName() +"------------\n\n" +LoadTextUtil.loadText(file)); + } + } + return new JSONObject( data ).toString(); } @@ -178,10 +200,17 @@ public void update( AnActionEvent e ) { // only show this action if some text is selected Editor editor = FileEditorManager.getInstance( e.getProject() ).getSelectedTextEditor(); + VirtualFile[] files = e.getData(CommonDataKeys.VIRTUAL_FILE_ARRAY); String s = editor.getCaretModel().getCurrentCaret().getSelectedText(); + if ( s == null || s.length() == 0 || !isConfigured() ) { - e.getPresentation().setVisible( false ); + e.getPresentation().setVisible( false ); + } + + if (files != null && files.length > 0) + { + e.getPresentation().setVisible( true ); } } @@ -193,8 +222,9 @@ public void actionPerformed( AnActionEvent e ) Editor editor = FileEditorManager.getInstance( e.getProject() ).getSelectedTextEditor(); VirtualFile vf = e.getData( PlatformDataKeys.VIRTUAL_FILE ); String s = editor.getCaretModel().getCurrentCaret().getSelectedText(); - String url = post( s, vf != null ? vf.getName() : "unknown" ); + VirtualFile[] files = e.getData(CommonDataKeys.VIRTUAL_FILE_ARRAY); + String url = post( s, vf != null ? vf.getName() : "unknown", files); Notification note = new Notification( "Gitlab Snippet",