mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
+30
-17
@@ -24,11 +24,14 @@ import com.intellij.openapi.progress.ProcessCanceledException;
|
||||
import com.intellij.openapi.progress.ProgressIndicator;
|
||||
import com.intellij.openapi.progress.ProgressManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.ProjectFileIndex;
|
||||
import com.intellij.openapi.roots.ProjectRootManager;
|
||||
import com.intellij.openapi.util.Computable;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiManager;
|
||||
import com.intellij.psi.PsiRecursiveElementVisitor;
|
||||
import com.intellij.util.Processor;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.HashSet;
|
||||
@@ -85,35 +88,45 @@ public class BackwardDependenciesBuilder extends DependenciesBuilder {
|
||||
psiManager.startBatchFilesProcessingMode();
|
||||
try {
|
||||
final int fileCount = getScope().getFileCount();
|
||||
getScope().accept(new PsiRecursiveElementVisitor() {
|
||||
@Override public void visitFile(final PsiFile file) {
|
||||
final boolean includeTestSource = getScope().isIncludeTestSource();
|
||||
final ProjectFileIndex fileIndex = ProjectRootManager.getInstance(getProject()).getFileIndex();
|
||||
getScope().accept(new Processor<VirtualFile>() {
|
||||
@Override
|
||||
public boolean process(final VirtualFile virtualFile) {
|
||||
if (!includeTestSource && fileIndex.isInTestSourceContent(virtualFile)) {
|
||||
return true;
|
||||
}
|
||||
ProgressIndicator indicator = ProgressManager.getInstance().getProgressIndicator();
|
||||
if (indicator != null) {
|
||||
if (indicator.isCanceled()) {
|
||||
throw new ProcessCanceledException();
|
||||
}
|
||||
indicator.setText(AnalysisScopeBundle.message("package.dependencies.progress.text"));
|
||||
final VirtualFile virtualFile = file.getVirtualFile();
|
||||
if (virtualFile != null) {
|
||||
indicator.setText2(getRelativeToProjectPath(virtualFile));
|
||||
}
|
||||
indicator.setText2(getRelativeToProjectPath(virtualFile));
|
||||
if (fileCount > 0) {
|
||||
indicator.setFraction(((double)++myFileCount) / myTotalFileCount);
|
||||
}
|
||||
}
|
||||
final Map<PsiFile, Set<PsiFile>> dependencies = builder.getDependencies();
|
||||
for (final PsiFile psiFile : dependencies.keySet()) {
|
||||
if (dependencies.get(psiFile).contains(file)) {
|
||||
Set<PsiFile> fileDeps = getDependencies().get(file);
|
||||
if (fileDeps == null) {
|
||||
fileDeps = new HashSet<PsiFile>();
|
||||
getDependencies().put(file, fileDeps);
|
||||
ApplicationManager.getApplication().runReadAction(new Runnable() {
|
||||
public void run() {
|
||||
final PsiFile file = psiManager.findFile(virtualFile);
|
||||
if (file != null) {
|
||||
final Map<PsiFile, Set<PsiFile>> dependencies = builder.getDependencies();
|
||||
for (final PsiFile psiFile : dependencies.keySet()) {
|
||||
if (dependencies.get(psiFile).contains(file)) {
|
||||
Set<PsiFile> fileDeps = getDependencies().get(file);
|
||||
if (fileDeps == null) {
|
||||
fileDeps = new HashSet<PsiFile>();
|
||||
getDependencies().put(file, fileDeps);
|
||||
}
|
||||
fileDeps.add(psiFile);
|
||||
}
|
||||
}
|
||||
psiManager.dropResolveCaches();
|
||||
}
|
||||
fileDeps.add(psiFile);
|
||||
}
|
||||
}
|
||||
psiManager.dropResolveCaches();
|
||||
InjectedLanguageManager.getInstance(file.getProject()).dropFileCaches(file);
|
||||
});
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
+2
-1
@@ -138,7 +138,8 @@ public class ForwardDependenciesBuilder extends DependenciesBuilder {
|
||||
(fileIndex.isInContent(virtualFile) ||
|
||||
fileIndex.isInLibraryClasses(virtualFile) ||
|
||||
fileIndex.isInLibrarySource(virtualFile))) {
|
||||
found.add(dependencyFile);
|
||||
final PsiElement navigationElement = dependencyFile.getNavigationElement();
|
||||
found.add(navigationElement instanceof PsiFile ? (PsiFile)navigationElement : dependencyFile);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -99,6 +99,12 @@ public class FindDependencyUtil {
|
||||
@Override
|
||||
public void process(PsiElement place, PsiElement dependency) {
|
||||
PsiFile dependencyFile = dependency.getContainingFile();
|
||||
if (dependencyFile != null) {
|
||||
final PsiElement navigationElement = dependencyFile.getNavigationElement();
|
||||
if (navigationElement instanceof PsiFile) {
|
||||
dependencyFile = (PsiFile)navigationElement;
|
||||
}
|
||||
}
|
||||
if (searchFor.contains(dependencyFile)) {
|
||||
usages.add(new UsageInfo(place));
|
||||
}
|
||||
|
||||
@@ -135,8 +135,9 @@ public class EditorHyperlinkSupport {
|
||||
@Override
|
||||
public void run() {
|
||||
if (hyperlinkInfo instanceof HyperlinkInfoBase) {
|
||||
RelativePoint point = new RelativePoint(myEditor.getContentComponent(), myEditor.logicalPositionToXY(logical));
|
||||
((HyperlinkInfoBase)hyperlinkInfo).navigate(myProject, point);
|
||||
final Point point = myEditor.logicalPositionToXY(logical);
|
||||
final MouseEvent event = new MouseEvent(myEditor.getContentComponent(), 0, 0, 0, point.x, point.y, 1, false);
|
||||
((HyperlinkInfoBase)hyperlinkInfo).navigate(myProject, new RelativePoint(event));
|
||||
}
|
||||
else {
|
||||
hyperlinkInfo.navigate(myProject);
|
||||
|
||||
@@ -37,7 +37,7 @@ public class ColorProgressBar extends JComponent {
|
||||
private static final Dimension PREFERRED_SIZE = new Dimension(146, 17);
|
||||
|
||||
public static final Color GREEN = new JBColor(new Color(0x6cad74), new Color(0x4a8c53));
|
||||
public static final Color RED = new JBColor(new Color(0xd67b76), new Color(0xb25050));
|
||||
public static final Color RED = new JBColor(new Color(0xd67b76), new Color(0xe55757));
|
||||
public static final Color BLUE = new JBColor(new Color(1, 68, 208), JBColor.blue);
|
||||
public static final Color YELLOW = new JBColor(new Color(0xa67a21), new Color(0x91703a));
|
||||
private static final Color SHADOW1 = new JBColor(Gray._190, UIUtil.getBorderColor()) ;
|
||||
|
||||
+11
-3
@@ -22,6 +22,7 @@ package com.intellij.execution.testframework.stacktrace;
|
||||
|
||||
import com.intellij.execution.ExecutionBundle;
|
||||
import com.intellij.execution.filters.HyperlinkInfo;
|
||||
import com.intellij.execution.filters.HyperlinkInfoBase;
|
||||
import com.intellij.execution.testframework.AbstractTestProxy;
|
||||
import com.intellij.execution.testframework.Printable;
|
||||
import com.intellij.execution.testframework.Printer;
|
||||
@@ -31,6 +32,9 @@ import com.intellij.ide.DataManager;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.ui.awt.RelativePoint;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
@@ -135,9 +139,13 @@ public class DiffHyperlink implements Printable {
|
||||
return result;
|
||||
}
|
||||
|
||||
public class DiffHyperlinkInfo implements HyperlinkInfo {
|
||||
public void navigate(final Project project) {
|
||||
ViewAssertEqualsDiffAction.openDiff(DataManager.getInstance().getDataContext(), DiffHyperlink.this);
|
||||
public class DiffHyperlinkInfo extends HyperlinkInfoBase {
|
||||
@Override
|
||||
public void navigate(@NotNull Project project, @Nullable RelativePoint hyperlinkLocationPoint) {
|
||||
final DataManager dataManager = DataManager.getInstance();
|
||||
final DataContext dataContext = hyperlinkLocationPoint != null ?
|
||||
dataManager.getDataContext(hyperlinkLocationPoint.getOriginalComponent()) : dataManager.getDataContext();
|
||||
ViewAssertEqualsDiffAction.openDiff(dataContext, DiffHyperlink.this);
|
||||
}
|
||||
|
||||
public DiffHyperlink getPrintable() {
|
||||
|
||||
@@ -24,15 +24,22 @@ import com.intellij.openapi.application.WriteAction;
|
||||
import com.intellij.openapi.editor.Caret;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.editor.colors.EditorColorsManager;
|
||||
import com.intellij.openapi.editor.colors.EditorColorsScheme;
|
||||
import com.intellij.openapi.editor.markup.HighlighterTargetArea;
|
||||
import com.intellij.openapi.editor.markup.RangeHighlighter;
|
||||
import com.intellij.openapi.editor.markup.TextAttributes;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.openapi.fileEditor.FileEditorManager;
|
||||
import com.intellij.openapi.fileEditor.OpenFileDescriptor;
|
||||
import com.intellij.openapi.fileTypes.StdFileTypes;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.popup.JBPopupFactory;
|
||||
import com.intellij.openapi.ui.popup.ListPopup;
|
||||
import com.intellij.openapi.ui.popup.PopupStep;
|
||||
import com.intellij.openapi.ui.popup.util.BaseListPopupStep;
|
||||
import com.intellij.openapi.util.AsyncResult;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.*;
|
||||
@@ -57,13 +64,17 @@ import com.intellij.xdebugger.impl.breakpoints.XLineBreakpointVariantsProvider;
|
||||
import com.intellij.xdebugger.impl.breakpoints.ui.grouping.XBreakpointFileGroupingRule;
|
||||
import com.intellij.xdebugger.impl.evaluate.quick.common.ValueLookupManager;
|
||||
import com.intellij.xdebugger.impl.settings.XDebuggerSettingsManager;
|
||||
import com.intellij.xdebugger.impl.ui.DebuggerUIUtil;
|
||||
import com.intellij.xdebugger.impl.ui.tree.actions.XDebuggerTreeActionBase;
|
||||
import com.intellij.xdebugger.settings.XDebuggerSettings;
|
||||
import com.intellij.xdebugger.ui.DebuggerColors;
|
||||
import gnu.trove.THashMap;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.event.ListSelectionEvent;
|
||||
import javax.swing.event.ListSelectionListener;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
@@ -71,7 +82,7 @@ import java.util.*;
|
||||
*/
|
||||
public class XDebuggerUtilImpl extends XDebuggerUtil {
|
||||
private XLineBreakpointType<?>[] myLineBreakpointTypes;
|
||||
private Map<Class<? extends XBreakpointType>, XBreakpointType<?,?>> myBreakpointTypeByClass;
|
||||
private Map<Class<? extends XBreakpointType>, XBreakpointType<?, ?>> myBreakpointTypeByClass;
|
||||
|
||||
@Override
|
||||
public XLineBreakpointType<?>[] getLineBreakpointTypes() {
|
||||
@@ -125,10 +136,10 @@ public class XDebuggerUtilImpl extends XDebuggerUtil {
|
||||
|
||||
@NotNull
|
||||
public static <P extends XBreakpointProperties> AsyncResult<XLineBreakpoint> toggleAndReturnLineBreakpoint(@NotNull final Project project,
|
||||
@NotNull final XLineBreakpointType<P> type,
|
||||
@NotNull final XSourcePosition position,
|
||||
final boolean temporary,
|
||||
final RelativePoint relativePoint) {
|
||||
@NotNull final XLineBreakpointType<P> type,
|
||||
@NotNull final XSourcePosition position,
|
||||
final boolean temporary,
|
||||
@Nullable final Editor editor) {
|
||||
return new WriteAction<AsyncResult<XLineBreakpoint>>() {
|
||||
@Override
|
||||
protected void run(@NotNull Result<AsyncResult<XLineBreakpoint>> result) throws Throwable {
|
||||
@@ -144,10 +155,47 @@ public class XDebuggerUtilImpl extends XDebuggerUtil {
|
||||
final XLineBreakpointVariantsProvider<XLineBreakpointVariant> provider =
|
||||
(XLineBreakpointVariantsProvider<XLineBreakpointVariant>)type;
|
||||
List<XLineBreakpointVariant> variants = provider.computeLineBreakpointVariants(project, position);
|
||||
if (!variants.isEmpty()) {
|
||||
if (!variants.isEmpty() && editor != null) {
|
||||
RelativePoint relativePoint = DebuggerUIUtil.calcPopupLocation(editor, line);
|
||||
if (variants.size() > 1 && relativePoint != null) {
|
||||
final AsyncResult<XLineBreakpoint> res = new AsyncResult<XLineBreakpoint>();
|
||||
JBPopupFactory.getInstance().createListPopup(
|
||||
class MySelectionListener implements ListSelectionListener {
|
||||
RangeHighlighter myHighlighter = null;
|
||||
|
||||
@Override
|
||||
public void valueChanged(ListSelectionEvent e) {
|
||||
if (!e.getValueIsAdjusting()) {
|
||||
clearHighlighter();
|
||||
Object value = ((JList)e.getSource()).getSelectedValue();
|
||||
if (value instanceof XLineBreakpointVariant) {
|
||||
TextRange range = ((XLineBreakpointVariant)value).getHighlightRange();
|
||||
TextRange lineRange =
|
||||
TextRange.create(editor.getDocument().getLineStartOffset(line), editor.getDocument().getLineEndOffset(line));
|
||||
if (range != null) {
|
||||
range = range.intersection(lineRange);
|
||||
}
|
||||
else {
|
||||
range = lineRange;
|
||||
}
|
||||
if (range != null && !range.isEmpty()) {
|
||||
EditorColorsScheme scheme = EditorColorsManager.getInstance().getGlobalScheme();
|
||||
TextAttributes attributes = scheme.getAttributes(DebuggerColors.BREAKPOINT_ATTRIBUTES);
|
||||
myHighlighter = editor.getMarkupModel().addRangeHighlighter(
|
||||
range.getStartOffset(), range.getEndOffset(), DebuggerColors.BREAKPOINT_HIGHLIGHTER_LAYER, attributes,
|
||||
HighlighterTargetArea.EXACT_RANGE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void clearHighlighter() {
|
||||
if (myHighlighter != null) {
|
||||
myHighlighter.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
final MySelectionListener selectionListener = new MySelectionListener();
|
||||
ListPopup popup = JBPopupFactory.getInstance().createListPopup(
|
||||
new BaseListPopupStep<XLineBreakpointVariant>("Create breakpoint for", variants) {
|
||||
@NotNull
|
||||
@Override
|
||||
@@ -160,8 +208,14 @@ public class XDebuggerUtilImpl extends XDebuggerUtil {
|
||||
return value.getIcon();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void canceled() {
|
||||
selectionListener.clearHighlighter();
|
||||
}
|
||||
|
||||
@Override
|
||||
public PopupStep onChosen(final XLineBreakpointVariant selectedValue, boolean finalChoice) {
|
||||
selectionListener.clearHighlighter();
|
||||
ApplicationManager.getApplication().runWriteAction(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
@@ -171,7 +225,9 @@ public class XDebuggerUtilImpl extends XDebuggerUtil {
|
||||
});
|
||||
return FINAL_CHOICE;
|
||||
}
|
||||
}).show(relativePoint);
|
||||
});
|
||||
popup.addListSelectionListener(selectionListener);
|
||||
popup.show(relativePoint);
|
||||
result.setResult(res);
|
||||
return;
|
||||
}
|
||||
@@ -206,7 +262,7 @@ public class XDebuggerUtilImpl extends XDebuggerUtil {
|
||||
@Override
|
||||
public <B extends XBreakpoint<?>> XBreakpointType<B, ?> findBreakpointType(@NotNull Class<? extends XBreakpointType<B, ?>> typeClass) {
|
||||
if (myBreakpointTypeByClass == null) {
|
||||
myBreakpointTypeByClass = new THashMap<Class<? extends XBreakpointType>, XBreakpointType<?,?>>();
|
||||
myBreakpointTypeByClass = new THashMap<Class<? extends XBreakpointType>, XBreakpointType<?, ?>>();
|
||||
for (XBreakpointType<?, ?> breakpointType : XBreakpointUtil.getBreakpointTypes()) {
|
||||
myBreakpointTypeByClass.put(breakpointType.getClass(), breakpointType);
|
||||
}
|
||||
@@ -275,7 +331,7 @@ public class XDebuggerUtilImpl extends XDebuggerUtil {
|
||||
@Nullable
|
||||
private static Editor getEditor(@NotNull Project project, DataContext context) {
|
||||
Editor editor = CommonDataKeys.EDITOR.getData(context);
|
||||
if(editor == null) {
|
||||
if (editor == null) {
|
||||
return FileEditorManager.getInstance(project).getSelectedTextEditor();
|
||||
}
|
||||
return editor;
|
||||
|
||||
+3
-5
@@ -26,7 +26,6 @@ import com.intellij.openapi.util.AsyncResult;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.ui.awt.RelativePoint;
|
||||
import com.intellij.xdebugger.XDebuggerManager;
|
||||
import com.intellij.xdebugger.XDebuggerUtil;
|
||||
import com.intellij.xdebugger.XSourcePosition;
|
||||
@@ -36,7 +35,6 @@ import com.intellij.xdebugger.impl.XDebuggerUtilImpl;
|
||||
import com.intellij.xdebugger.impl.XSourcePositionImpl;
|
||||
import com.intellij.xdebugger.impl.breakpoints.ui.BreakpointItem;
|
||||
import com.intellij.xdebugger.impl.breakpoints.ui.BreakpointPanelProvider;
|
||||
import com.intellij.xdebugger.impl.ui.DebuggerUIUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -123,8 +121,9 @@ public class XBreakpointUtil {
|
||||
List<BreakpointItem> items = new ArrayList<BreakpointItem>();
|
||||
for (DebuggerSupport support : debuggerSupports) {
|
||||
support.getBreakpointPanelProvider().provideBreakpointItems(project, items);
|
||||
if (items.contains(breakpointItem))
|
||||
if (items.contains(breakpointItem)) {
|
||||
return support;
|
||||
}
|
||||
items.clear();
|
||||
}
|
||||
return null;
|
||||
@@ -180,9 +179,8 @@ public class XBreakpointUtil {
|
||||
if (typeWinner != null) {
|
||||
XSourcePosition winPosition = (lineStart == lineWinner) ? position : XSourcePositionImpl.create(file, lineWinner);
|
||||
if (winPosition != null) {
|
||||
RelativePoint point = editor != null ? DebuggerUIUtil.calcPopupLocation(editor, lineWinner) : null;
|
||||
AsyncResult<XLineBreakpoint> res =
|
||||
XDebuggerUtilImpl.toggleAndReturnLineBreakpoint(project, typeWinner, winPosition, temporary, point);
|
||||
XDebuggerUtilImpl.toggleAndReturnLineBreakpoint(project, typeWinner, winPosition, temporary, editor);
|
||||
|
||||
if (editor != null && lineStart != lineWinner) {
|
||||
int offset = editor.getDocument().getLineStartOffset(lineWinner);
|
||||
|
||||
@@ -200,6 +200,9 @@ def getVariable(thread_id, frame_id, scope, attrs):
|
||||
else:
|
||||
attrList = []
|
||||
|
||||
for attr in attrList:
|
||||
attr.replace("@_@TAB_CHAR@_@", '\t')
|
||||
|
||||
if scope == 'EXPRESSION':
|
||||
for count in xrange(len(attrList)):
|
||||
if count == 0:
|
||||
|
||||
@@ -26,7 +26,7 @@ public class GetVariableCommand extends GetFrameCommand {
|
||||
sb.insert(0, BY_ID).insert(0, '\t').insert(0, p.getId());
|
||||
break;
|
||||
} else {
|
||||
sb.insert(0, p.getTempName());
|
||||
sb.insert(0, p.getTempName().replaceAll("\t", TAB_CHAR));
|
||||
}
|
||||
p = p.getParent();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user