mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
WEB-9744 Surround with Emmet dialog usability problems
This commit is contained in:
@@ -28,6 +28,7 @@ import com.intellij.codeInsight.template.emmet.tokens.TextToken;
|
||||
import com.intellij.codeInsight.template.emmet.tokens.ZenCodingToken;
|
||||
import com.intellij.codeInsight.template.impl.TemplateImpl;
|
||||
import com.intellij.codeInsight.template.impl.TemplateState;
|
||||
import com.intellij.ide.IdeEventQueue;
|
||||
import com.intellij.ide.util.PropertiesComponent;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.command.CommandProcessor;
|
||||
@@ -38,23 +39,23 @@ import com.intellij.openapi.ui.popup.Balloon;
|
||||
import com.intellij.openapi.ui.popup.JBPopupFactory;
|
||||
import com.intellij.openapi.ui.popup.JBPopupListener;
|
||||
import com.intellij.openapi.ui.popup.LightweightWindowEvent;
|
||||
import com.intellij.openapi.ui.popup.util.PopupUtil;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.wm.IdeFocusManager;
|
||||
import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.ui.DocumentAdapter;
|
||||
import com.intellij.ui.LightColors;
|
||||
import com.intellij.ui.TextFieldWithHistory;
|
||||
import com.intellij.ui.TextFieldWithStoredHistory;
|
||||
import com.intellij.ui.*;
|
||||
import com.intellij.xml.XmlBundle;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.event.DocumentEvent;
|
||||
import java.awt.*;
|
||||
import java.awt.event.ComponentEvent;
|
||||
import java.awt.event.KeyAdapter;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
@@ -286,10 +287,10 @@ public class ZenCodingTemplate implements CustomLiveTemplate {
|
||||
field.setPreferredSize(new Dimension(Math.max(160, fieldPreferredSize.width), fieldPreferredSize.height));
|
||||
field.setHistorySize(10);
|
||||
final JBPopupFactory popupFactory = JBPopupFactory.getInstance();
|
||||
final Balloon balloon = popupFactory.createDialogBalloonBuilder(field, XmlBundle.message("emmet.title"))
|
||||
final BalloonImpl balloon = (BalloonImpl)popupFactory.createDialogBalloonBuilder(field, XmlBundle.message("emmet.title"))
|
||||
.setCloseButtonEnabled(false)
|
||||
.setBlockClicksThroughBalloon(true)
|
||||
.setAnimationCycle(0)
|
||||
.setHideOnClickOutside(true)
|
||||
.setHideOnKeyOutside(true)
|
||||
.createBalloon();
|
||||
|
||||
@@ -321,6 +322,20 @@ public class ZenCodingTemplate implements CustomLiveTemplate {
|
||||
}
|
||||
});
|
||||
|
||||
IdeEventQueue.getInstance().addDispatcher(new IdeEventQueue.EventDispatcher() {
|
||||
@Override
|
||||
public boolean dispatch(AWTEvent e) {
|
||||
if (e instanceof MouseEvent) {
|
||||
if (e.getID() == MouseEvent.MOUSE_PRESSED) {
|
||||
if (!balloon.isInsideBalloon((MouseEvent)e) && !PopupUtil.isComboPopupKeyEvent((ComponentEvent)e, field)) {
|
||||
balloon.hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}, balloon);
|
||||
|
||||
balloon.addListener(new JBPopupListener.Adapter() {
|
||||
@Override
|
||||
public void beforeShown(LightweightWindowEvent event) {
|
||||
|
||||
Reference in New Issue
Block a user