1
0
mirror of https://github.com/chylex/IntelliJ-AceJump.git synced 2025-04-09 17:15:43 +02:00

Performance vastly improved

This commit is contained in:
John Lindquist 2012-08-13 23:08:34 -06:00
parent 045ced780a
commit 07d33ffe4a
2 changed files with 19 additions and 53 deletions

View File

@ -1,5 +1,6 @@
package com.johnlindquist.acejump;
import com.google.common.collect.Lists;
import com.intellij.codeInsight.editorActions.SelectWordUtil;
import com.intellij.find.FindManager;
import com.intellij.find.FindModel;
@ -8,12 +9,20 @@ import com.intellij.ide.ui.UISettings;
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.actionSystem.impl.ActionManagerImpl;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.editor.*;
import com.intellij.openapi.editor.CaretModel;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.FoldRegion;
import com.intellij.openapi.editor.VisualPosition;
import com.intellij.openapi.editor.colors.EditorColorsManager;
import com.intellij.openapi.editor.colors.EditorColorsScheme;
import com.intellij.openapi.editor.impl.*;
import com.intellij.openapi.editor.impl.DocumentImpl;
import com.intellij.openapi.editor.impl.EditorImpl;
import com.intellij.openapi.editor.impl.FoldingModelImpl;
import com.intellij.openapi.editor.impl.ScrollingModelImpl;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.popup.*;
import com.intellij.openapi.ui.popup.ComponentPopupBuilder;
import com.intellij.openapi.ui.popup.JBPopup;
import com.intellij.openapi.ui.popup.JBPopupFactory;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.TextRange;
import com.intellij.openapi.vfs.VirtualFile;
@ -21,8 +30,6 @@ import com.intellij.psi.PsiDocumentManager;
import com.intellij.psi.PsiFile;
import com.intellij.ui.awt.RelativePoint;
import com.intellij.ui.popup.AbstractPopup;
import com.intellij.usageView.UsageInfo;
import com.intellij.usages.UsageInfo2UsageAdapter;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
@ -54,7 +61,7 @@ public class AceJumpAction extends AnAction {
protected AnActionEvent inputEvent;
protected CaretModel caretModel;
private CharSequence allowedCharacters = "abcdefghijklmnopqrstuvwxyz";//0123456789-=[];',./";
private CharSequence allowedCharacters = "abcdefghijklmnopqrstuvwxyz0123456789";//-=[];',./";
private Font font;
private Graphics2D aceGraphics;
private AceCanvas aceCanvas;
@ -127,8 +134,7 @@ public class AceJumpAction extends AnAction {
public RelativePoint guessBestLocation(Editor editor) {
VisualPosition logicalPosition = editor.getCaretModel().getVisualPosition();
RelativePoint pointFromVisualPosition = getPointFromVisualPosition(editor, logicalPosition);
return pointFromVisualPosition;
return getPointFromVisualPosition(editor, logicalPosition);
}
protected static RelativePoint getPointFromVisualPosition(Editor editor, VisualPosition logicalPosition) {
@ -290,12 +296,6 @@ public class AceJumpAction extends AnAction {
key = Character.getNumericValue(keyChar);
if (!searchMode) {
//Systemm.out.println("navigating" + e.getKeyChar());
// System.out.println("value: " + key + " code " + keyCode + " char " + e.getKeyChar() + " location: " + e.getKeyLocation());
// System.out.println("---------passed: " + "value: " + key + " code " + keyCode + " char " + e.getKeyChar() + " location: " + e.getKeyLocation());
Integer offset = offsetHash.get(getLowerCaseStringFromChar(keyChar));
if (offset != null) {
@ -327,7 +327,6 @@ public class AceJumpAction extends AnAction {
}
if (searchMode && getText().length() == 1) {
//System.out.println("searching " + e.getKeyChar() + "\n");
findText(getText(), false);
searchMode = false;
return;
@ -337,7 +336,7 @@ public class AceJumpAction extends AnAction {
try {
setText(getText(0, 1));
} catch (BadLocationException e1) {
e1.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
e1.printStackTrace();
}
}
@ -500,7 +499,7 @@ public class AceJumpAction extends AnAction {
aceCanvas.setFont(font);
aceCanvas.setLineHeight(editor.getLineHeight());
aceCanvas.setLineSpacing(scheme.getLineSpacing());
aceCanvas.setBallonInfos(ballonInfos);
aceCanvas.setBallonInfos(Lists.reverse(ballonInfos));
aceCanvas.setBackgroundForegroundColors(new Pair<Color, Color>(scheme.getDefaultBackground(), scheme.getDefaultForeground()));
aceCanvas.repaint();
@ -521,10 +520,10 @@ public class AceJumpAction extends AnAction {
FoldRegion[] allFoldRegions = foldingModel.getAllFoldRegions();
int resultCount = 0;
//any more than 4 result sets is probably unreasonable (96 results for now)
//any more than 10 result sets is probably unreasonable (260 results for now)
int possibleOffsets = allowedCharacters.length() * 10;
offsetWhile:
while (offset < endOffset && resultCount < possibleOffsets) {
while (offset < endOffset) {
// System.out.println("offset: " + offset + "/" + endOffset);
// System.out.println("Finding: " + findModel.getStringToFind() + " = " + offset);
@ -548,31 +547,10 @@ public class AceJumpAction extends AnAction {
}
//System.out.println("result: " + result.toString());
UsageInfo2UsageAdapter usageAdapter = new UsageInfo2UsageAdapter(new UsageInfo(psiFile, result.getStartOffset(), result.getEndOffset()));
UsageInfo info = usageAdapter.getUsageInfo();
Point point = editor.logicalPositionToXY(editor.offsetToLogicalPosition(info.getNavigationOffset(), true));
if (visibleArea.contains(point)) {
UsageInfo usageInfo = info;
int navigationOffset = usageInfo.getNavigationOffset();
if (navigationOffset != caretModel.getOffset()) {
if (!results.contains(navigationOffset)) {
//System.out.println("Adding: " + navigationOffset + "-> " + usageAdapter.getPlainText());
offsets.add(navigationOffset);
}
}
}
offsets.add(result.getStartOffset());
final int prevOffset = offset;
offset = result.getEndOffset();
if (prevOffset == offset) {
++offset;
}
resultCount++;
}

View File

@ -1,12 +0,0 @@
package com.johnlindquist.acejump;
import java.awt.event.KeyEvent;
/**
* User: John Lindquist
* Date: 9/8/11
* Time: 12:10 AM
*/
public class AceJumpSelectFromCaretAction extends AceJumpAction {
}