summaryrefslogtreecommitdiff
path: root/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/UIUtil.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/UIUtil.java')
-rw-r--r--platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/UIUtil.java43
1 files changed, 17 insertions, 26 deletions
diff --git a/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/UIUtil.java b/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/UIUtil.java
index aa3ca82725b0..e2c16bfbc355 100644
--- a/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/UIUtil.java
+++ b/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/UIUtil.java
@@ -15,17 +15,14 @@ import com.intellij.openapi.editor.colors.EditorColors;
import com.intellij.openapi.editor.colors.EditorColorsManager;
import com.intellij.openapi.editor.colors.EditorColorsScheme;
import com.intellij.openapi.editor.ex.EditorEx;
-import com.intellij.openapi.fileEditor.FileEditorManager;
-import com.intellij.openapi.fileEditor.OpenFileDescriptor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.text.StringUtil;
-import com.intellij.psi.*;
import com.intellij.structuralsearch.*;
import com.intellij.structuralsearch.plugin.StructuralReplaceAction;
import com.intellij.structuralsearch.plugin.StructuralSearchAction;
import com.intellij.structuralsearch.plugin.replace.ui.ReplaceConfiguration;
-import com.intellij.structuralsearch.plugin.util.SmartPsiPointer;
+import com.intellij.ui.HintHint;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -41,6 +38,7 @@ import java.awt.*;
public class UIUtil {
static Key<SubstitutionShortInfoHandler> LISTENER_KEY = Key.create("sslistener.key");
private static final String MODIFY_EDITOR_CONTENT = SSRBundle.message("modify.editor.content.command.name");
+ private static final TooltipGroup SS_INFO_TOOLTIP_GROUP = new TooltipGroup("SS_INFO_TOOLTIP_GROUP", 0);
@NonNls private static final String SS_GROUP = "structuralsearchgroup";
@NotNull
@@ -191,18 +189,6 @@ public class UIUtil {
buf.append(str);
}
- public static void navigate(PsiElement result) {
- FileEditorManager.getInstance(result.getProject()).openTextEditor(
- new OpenFileDescriptor(result.getProject(), result.getContainingFile().getVirtualFile(), result.getTextOffset()), true);
- }
-
- public static void navigate(MatchResult result) {
- final SmartPsiPointer ref = result.getMatchRef();
-
- FileEditorManager.getInstance(ref.getProject())
- .openTextEditor(new OpenFileDescriptor(ref.getProject(), ref.getFile(), ref.getOffset()), true);
- }
-
public static void invokeAction(Configuration config, SearchContext context) {
if (config instanceof SearchConfiguration) {
StructuralSearchAction.triggerAction(config, context);
@@ -212,22 +198,27 @@ public class UIUtil {
}
}
- static void showTooltip(@NotNull Editor editor, final int start, int end, @NotNull String text, @NotNull TooltipGroup group) {
- Rectangle visibleArea = editor.getScrollingModel().getVisibleArea();
- Point top = editor.logicalPositionToXY(editor.offsetToLogicalPosition(start));
+ static void showTooltip(@NotNull Editor editor, final int start, int end, @NotNull String text) {
+ final Rectangle visibleArea = editor.getScrollingModel().getVisibleArea();
+ final Point left = editor.logicalPositionToXY(editor.offsetToLogicalPosition(start));
final int documentLength = editor.getDocument().getTextLength();
if (end >= documentLength) end = documentLength;
- Point bottom = editor.logicalPositionToXY(editor.offsetToLogicalPosition(end));
+ final Point right = editor.logicalPositionToXY(editor.offsetToLogicalPosition(end));
- Point bestPoint = new Point(top.x, bottom.y + editor.getLineHeight());
+ final Point bestPoint = new Point(left.x + (right.x - left.x) / 2, right.y + editor.getLineHeight() / 2);
- if (!visibleArea.contains(bestPoint)) {
- int defaultOffset = editor.logicalPositionToOffset(editor.xyToLogicalPosition(new Point(0, 0)));
- bestPoint = editor.logicalPositionToXY(editor.offsetToLogicalPosition(defaultOffset));
+ if (visibleArea.x > bestPoint.x) {
+ bestPoint.x = visibleArea.x;
+ }
+ else if (visibleArea.x + visibleArea.width < bestPoint.x) {
+ bestPoint.x = visibleArea.x + visibleArea.width - 5;
}
- Point p = SwingUtilities.convertPoint(editor.getContentComponent(), bestPoint, editor.getComponent().getRootPane().getLayeredPane());
- TooltipController.getInstance().showTooltip(editor, p, text, false, group);
+ final Point p = SwingUtilities.convertPoint(editor.getContentComponent(), bestPoint,
+ editor.getComponent().getRootPane().getLayeredPane());
+ final HintHint hint = new HintHint(editor, bestPoint).setAwtTooltip(true).setHighlighterType(true)
+ .setCalloutShift(editor.getLineHeight() / 2 - 1);
+ TooltipController.getInstance().showTooltip(editor, p, text, visibleArea.width, false, SS_INFO_TOOLTIP_GROUP, hint);
}
public static void updateHighlighter(Editor editor, StructuralSearchProfile profile) {