diff --git a/RegExpSupport/src/org/intellij/lang/regexp/intention/CheckRegExpForm.form b/RegExpSupport/src/org/intellij/lang/regexp/intention/CheckRegExpForm.form index 8d372340c61c..b04addde5858 100644 --- a/RegExpSupport/src/org/intellij/lang/regexp/intention/CheckRegExpForm.form +++ b/RegExpSupport/src/org/intellij/lang/regexp/intention/CheckRegExpForm.form @@ -36,25 +36,26 @@ - - + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + diff --git a/RegExpSupport/src/org/intellij/lang/regexp/intention/CheckRegExpForm.java b/RegExpSupport/src/org/intellij/lang/regexp/intention/CheckRegExpForm.java index fb116b26dc4d..ce1047eebc5c 100644 --- a/RegExpSupport/src/org/intellij/lang/regexp/intention/CheckRegExpForm.java +++ b/RegExpSupport/src/org/intellij/lang/regexp/intention/CheckRegExpForm.java @@ -16,8 +16,11 @@ package org.intellij.lang.regexp.intention; import com.intellij.ide.util.PropertiesComponent; +import com.intellij.openapi.actionSystem.AnAction; +import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.actionSystem.CommonShortcuts; +import com.intellij.openapi.actionSystem.CustomShortcutSet; import com.intellij.openapi.editor.Document; -import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.event.DocumentAdapter; import com.intellij.openapi.editor.event.DocumentEvent; import com.intellij.openapi.fileTypes.PlainTextFileType; @@ -34,15 +37,18 @@ import com.intellij.psi.PsiFile; import com.intellij.psi.impl.source.resolve.FileContextUtil; import com.intellij.ui.BalloonImpl; import com.intellij.ui.EditorTextField; +import com.intellij.ui.Gray; import com.intellij.ui.JBColor; import com.intellij.util.Alarm; +import com.intellij.util.ui.UIUtil; import org.intellij.lang.regexp.RegExpLanguage; import org.intellij.lang.regexp.RegExpModifierProvider; import javax.swing.*; +import javax.swing.border.CompoundBorder; +import javax.swing.border.EmptyBorder; +import javax.swing.border.LineBorder; import java.awt.*; -import java.awt.event.KeyAdapter; -import java.awt.event.KeyEvent; import java.util.regex.Pattern; /** @@ -73,30 +79,46 @@ public class CheckRegExpForm { myRegExp = new EditorTextField(document, myProject, RegExpLanguage.INSTANCE.getAssociatedFileType()); final String sampleText = PropertiesComponent.getInstance(myProject).getValue(LAST_EDITED_REGEXP, "Sample Text"); mySampleText = new EditorTextField(sampleText, myProject, PlainTextFileType.INSTANCE); + mySampleText.setBorder( + new CompoundBorder(new EmptyBorder(2, 2, 2, 4), new LineBorder(UIUtil.isUnderDarcula() ? Gray._100 : UIUtil.getBorderColor()))); + mySampleText.setOneLineMode(false); + mySampleText.addDocumentListener(new DocumentAdapter() { + @Override + public void documentChanged(DocumentEvent e) { + //noinspection SSBasedInspection + SwingUtilities.invokeLater(new Runnable() { + public void run() { + myRootPanel.revalidate(); + final Balloon balloon = myRef.get(); + if (balloon != null) { + balloon.revalidate(); + } + } + }); + } + }); + myRootPanel = new JPanel(new BorderLayout()) { @Override public void addNotify() { super.addNotify(); IdeFocusManager.getGlobalInstance().requestFocus(mySampleText, true); - final KeyAdapter escaper = new KeyAdapter() { + new AnAction(){ @Override - public void keyPressed(KeyEvent e) { - if (e.getKeyCode() == KeyEvent.VK_ESCAPE) { - if (!myRef.get().isDisposed()) { - myRef.get().hide(); - } - } + public void actionPerformed(AnActionEvent e) { + IdeFocusManager.findInstance().requestFocus(myRegExp.getFocusTarget(), true); + } + }.registerCustomShortcutSet(CustomShortcutSet.fromString("shift TAB"), mySampleText, myRef.get()); + final AnAction escaper = new AnAction() { + @Override + public void actionPerformed(AnActionEvent e) { + myRef.get().hide(); } }; + escaper.registerCustomShortcutSet(CommonShortcuts.ESCAPE, myRegExp.getFocusTarget(), myRef.get()); + escaper.registerCustomShortcutSet(CommonShortcuts.ESCAPE, mySampleText.getFocusTarget(), myRef.get()); - final Editor fieldEditor = myRegExp.getEditor(); - final Editor textEditor = mySampleText.getEditor(); - - assert fieldEditor != null && textEditor != null; - - fieldEditor.getContentComponent().addKeyListener(escaper); - textEditor.getContentComponent().addKeyListener(escaper); myRef.get().addListener(new JBPopupAdapter() { @Override