From ba9db41273452ad21334998ac851e7812e851293 Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Thu, 16 Aug 2012 21:21:24 +0400 Subject: [PATCH] Added Delete button to EditSignatureBalloon --- .../codeInsight/EditSignatureBalloon.java | 29 +++++++++++++++++-- .../KotlinSignatureInJavaMarkerProvider.java | 4 +++ 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/codeInsight/EditSignatureBalloon.java b/idea/src/org/jetbrains/jet/plugin/codeInsight/EditSignatureBalloon.java index f1603d85417..bc090c75d7e 100644 --- a/idea/src/org/jetbrains/jet/plugin/codeInsight/EditSignatureBalloon.java +++ b/idea/src/org/jetbrains/jet/plugin/codeInsight/EditSignatureBalloon.java @@ -50,11 +50,13 @@ import java.awt.event.*; class EditSignatureBalloon { private final Editor editor; private final PsiMethod method; + private final Project project; private final String previousSignature; private final Balloon balloon; public EditSignatureBalloon(@NotNull PsiMethod method, @NotNull String previousSignature) { this.method = method; + project = method.getProject(); this.previousSignature = previousSignature; editor = createEditor(); @@ -94,7 +96,10 @@ class EditSignatureBalloon { return true; } }; + JButton deleteButton = new JButton("Delete"); + toolbar.add(saveButton); + toolbar.add(deleteButton); panel.add(toolbar, BorderLayout.SOUTH); ActionListener saveAndHideListener = new ActionListener() { @@ -112,6 +117,12 @@ class EditSignatureBalloon { }; saveButton.addActionListener(saveAndHideListener); + deleteButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + deleteAndHide(); + } + }); panel.registerKeyboardAction(saveAndHideListener, KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, SystemInfo.isMac ? InputEvent.META_DOWN_MASK : InputEvent.CTRL_DOWN_MASK), JComponent.WHEN_IN_FOCUSED_WINDOW); @@ -126,7 +137,7 @@ class EditSignatureBalloon { assert editorFactory != null; Document document = editorFactory.createDocument(this.previousSignature); - Editor editor = editorFactory.createEditor(document, this.method.getProject(), JetFileType.INSTANCE, false); + Editor editor = editorFactory.createEditor(document, project, JetFileType.INSTANCE, false); EditorSettings settings = editor.getSettings(); settings.setVirtualSpace(false); settings.setLineMarkerAreaShown(false); @@ -147,7 +158,7 @@ class EditSignatureBalloon { private int getLineY(@Nullable DataContext dataContext) { if (dataContext != null) { Editor mainEditor = PlatformDataKeys.EDITOR.getData(dataContext); - Document document = PsiDocumentManager.getInstance(method.getProject()).getDocument(method.getContainingFile()); + Document document = PsiDocumentManager.getInstance(project).getDocument(method.getContainingFile()); if (mainEditor != null && document != null) { int lineNumber = document.getLineNumber(method.getTextOffset()); return mainEditor.logicalPositionToXY(new LogicalPosition(lineNumber, 0)).y; @@ -170,10 +181,22 @@ class EditSignatureBalloon { editorFactory.releaseEditor(editor); } + private void deleteAndHide() { + new WriteCommandAction(project) { + @Override + protected void run(final Result result) throws Throwable { + ExternalAnnotationsManager.getInstance(project) + .deannotate(method, KotlinSignatureInJavaMarkerProvider.KOTLIN_SIGNATURE_ANNOTATION); + } + }.execute(); + KotlinSignatureInJavaMarkerProvider.refresh(project); + + balloon.hide(); + } + private void saveAndHide() { String newSignature = editor.getDocument().getText(); if (!previousSignature.equals(newSignature)) { - final Project project = method.getProject(); final PsiNameValuePair[] nameValuePairs = JavaPsiFacade.getElementFactory(project).createAnnotationFromText( "@" + KotlinSignatureInJavaMarkerProvider.KOTLIN_SIGNATURE_ANNOTATION + "(value=\"" + newSignature + "\")", null) .getParameterList().getAttributes(); diff --git a/idea/src/org/jetbrains/jet/plugin/codeInsight/KotlinSignatureInJavaMarkerProvider.java b/idea/src/org/jetbrains/jet/plugin/codeInsight/KotlinSignatureInJavaMarkerProvider.java index 53a3cde389d..a2d02c52dd9 100644 --- a/idea/src/org/jetbrains/jet/plugin/codeInsight/KotlinSignatureInJavaMarkerProvider.java +++ b/idea/src/org/jetbrains/jet/plugin/codeInsight/KotlinSignatureInJavaMarkerProvider.java @@ -134,6 +134,10 @@ public class KotlinSignatureInJavaMarkerProvider implements LineMarkerProvider { public static void setMarkersEnabled(@NotNull Project project, boolean value) { PropertiesComponent.getInstance(project).setValue(SHOW_MARKERS_PROPERTY, Boolean.toString(value)); + refresh(project); + } + + static void refresh(@NotNull Project project) { DaemonCodeAnalyzer.getInstance(project).restart(); } }