Console: correctly navigate to sources using the corresponding scopes

This commit is contained in:
Anton Makeev
2010-03-11 17:28:59 +03:00
parent 549170b049
commit b425c54e96
10 changed files with 92 additions and 7 deletions
@@ -21,10 +21,15 @@
package com.intellij.execution.filters;
import com.intellij.openapi.project.Project;
import com.intellij.psi.search.GlobalSearchScope;
import org.jetbrains.annotations.NotNull;
public class DefaultConsoleFiltersProvider implements ConsoleFilterProvider{
public class DefaultConsoleFiltersProvider implements ConsoleFilterProviderEx {
public Filter[] getDefaultFilters(@NotNull Project project) {
return new Filter[]{new ExceptionFilter(project), new YourkitFilter(project)};
}
public Filter[] getDefaultFilters(@NotNull Project project, @NotNull GlobalSearchScope scope) {
return new Filter[]{new ExceptionFilter(scope), new YourkitFilter(project)};
}
}
@@ -0,0 +1,29 @@
/*
* Copyright 2000-2010 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* User: anna
* Date: 20-Aug-2007
*/
package com.intellij.execution.filters;
import com.intellij.openapi.project.Project;
import com.intellij.psi.search.GlobalSearchScope;
import org.jetbrains.annotations.NotNull;
public interface ConsoleFilterProviderEx extends ConsoleFilterProvider {
Filter[] getDefaultFilters(@NotNull Project project, @NotNull GlobalSearchScope scope);
}
@@ -24,6 +24,7 @@ package com.intellij.execution.filters;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.project.Project;
import com.intellij.psi.search.GlobalSearchScope;
/**
* @author dyoma
@@ -31,6 +32,8 @@ import com.intellij.openapi.project.Project;
public abstract class TextConsoleBuilderFactory {
public abstract TextConsoleBuilder createBuilder(Project project);
public abstract TextConsoleBuilder createBuilder(Project project, GlobalSearchScope scope);
public static TextConsoleBuilderFactory getInstance() {
return ServiceManager.getService(TextConsoleBuilderFactory.class);
}
@@ -23,6 +23,7 @@
package com.intellij.execution.filters;
import com.intellij.openapi.project.Project;
import com.intellij.psi.search.GlobalSearchScope;
/**
* @author dyoma
@@ -32,4 +33,8 @@ public class TextConsoleBuilderFactoryImpl extends TextConsoleBuilderFactory {
return new TextConsoleBuilderImpl(project);
}
@Override
public TextConsoleBuilder createBuilder(Project project, GlobalSearchScope scope) {
return new TextConsoleBuilderImpl(project, scope);
}
}
@@ -19,6 +19,7 @@ package com.intellij.execution.filters;
import com.intellij.execution.impl.ConsoleViewImpl;
import com.intellij.execution.ui.ConsoleView;
import com.intellij.openapi.project.Project;
import com.intellij.psi.search.GlobalSearchScope;
import java.util.ArrayList;
@@ -27,11 +28,17 @@ import java.util.ArrayList;
*/
public class TextConsoleBuilderImpl extends TextConsoleBuilder {
private final Project myProject;
private final GlobalSearchScope myScope;
private final ArrayList<Filter> myFilters = new ArrayList<Filter>();
private boolean myViewer;
public TextConsoleBuilderImpl(final Project project) {
this(project, GlobalSearchScope.allScope(project));
}
public TextConsoleBuilderImpl(final Project project, GlobalSearchScope scope) {
myProject = project;
myScope = scope;
}
public ConsoleView getConsole() {
@@ -43,7 +50,7 @@ public class TextConsoleBuilderImpl extends TextConsoleBuilder {
}
protected ConsoleViewImpl createConsole() {
return new ConsoleViewImpl(myProject, myViewer);
return new ConsoleViewImpl(myProject, myScope, myViewer, null);
}
public void addFilter(final Filter filter) {
@@ -68,6 +68,7 @@ import com.intellij.pom.Navigatable;
import com.intellij.psi.PsiDocumentManager;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiFileFactory;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.tree.IElementType;
import com.intellij.util.Alarm;
import com.intellij.util.EditorPopupHandler;
@@ -237,6 +238,11 @@ public class ConsoleViewImpl extends JPanel implements ConsoleView, ObservableCo
}
public ConsoleViewImpl(final Project project, boolean viewer, FileType fileType) {
this(project, GlobalSearchScope.allScope(project), viewer, fileType);
}
public ConsoleViewImpl(final Project project, GlobalSearchScope searchScope, boolean viewer, FileType fileType) {
super(new BorderLayout());
isViewer = viewer;
myPsiDisposedCheck = new DisposedPsiManagerCheck(project);
@@ -245,8 +251,11 @@ public class ConsoleViewImpl extends JPanel implements ConsoleView, ObservableCo
myCustomFilter = new CompositeFilter(project);
myPredefinedMessageFilter = new CompositeFilter(project);
for (ConsoleFilterProvider filterProvider : Extensions.getExtensions(ConsoleFilterProvider.FILTER_PROVIDERS)) {
for (Filter filter : filterProvider.getDefaultFilters(project)) {
for (ConsoleFilterProvider eachProvider : Extensions.getExtensions(ConsoleFilterProvider.FILTER_PROVIDERS)) {
Filter[] filters = eachProvider instanceof ConsoleFilterProviderEx
? ((ConsoleFilterProviderEx)eachProvider).getDefaultFilters(project, searchScope)
: eachProvider.getDefaultFilters(project);
for (Filter filter : filters) {
myPredefinedMessageFilter.addFilter(filter);
}
}
@@ -25,7 +25,9 @@ import com.intellij.execution.ui.ConsoleView;
import com.intellij.execution.ui.ExecutionConsole;
import com.intellij.execution.util.StoringPropertyContainer;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.project.Project;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.util.config.AbstractProperty;
import com.intellij.util.config.BooleanProperty;
import com.intellij.util.config.Storage;
@@ -46,14 +48,28 @@ public abstract class TestConsoleProperties extends StoringPropertyContainer imp
private final Project myProject;
private ConsoleView myConsole;
protected final HashMap<AbstractProperty, ArrayList<TestFrameworkPropertyListener>> myListeners = new HashMap<AbstractProperty, ArrayList<TestFrameworkPropertyListener>>();
protected final HashMap<AbstractProperty, ArrayList<TestFrameworkPropertyListener>> myListeners =
new HashMap<AbstractProperty, ArrayList<TestFrameworkPropertyListener>>();
public TestConsoleProperties(final Storage storage, Project project) {
super(storage);
myProject = project;
}
public Project getProject() { return myProject; }
public Project getProject() {
return myProject;
}
public GlobalSearchScope getScope() {
Module[] modules = getConfiguration().getModules();
if (modules.length == 0) return GlobalSearchScope.allScope(myProject);
GlobalSearchScope scope = GlobalSearchScope.EMPTY_SCOPE;
for (Module each : modules) {
scope = scope.uniteWith(GlobalSearchScope.moduleRuntimeScope(each, true));
}
return scope;
}
public <T> void addListener(final AbstractProperty<T> property, final TestFrameworkPropertyListener<T> listener) {
ArrayList<TestFrameworkPropertyListener> listeners = myListeners.get(property);
@@ -40,7 +40,7 @@ public abstract class BaseTestsOutputConsoleView implements ConsoleView, Observa
public BaseTestsOutputConsoleView(final TestConsoleProperties properties) {
myProperties = properties;
myConsole = TextConsoleBuilderFactory.getInstance().createBuilder(properties.getProject()).getConsole();
myConsole = TextConsoleBuilderFactory.getInstance().createBuilder(properties.getProject(), myProperties.getScope()).getConsole();
myPrinter = new TestsOutputConsolePrinter(myConsole, properties);
myProperties.setConsole(this);
@@ -19,6 +19,7 @@ package com.intellij.execution.junit2.ui.properties;
import com.intellij.execution.junit.JUnitConfiguration;
import com.intellij.execution.testframework.JavaAwareTestConsoleProperties;
import com.intellij.ide.util.PropertiesComponent;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.util.config.Storage;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
@@ -39,4 +40,8 @@ public class JUnitConsoleProperties extends JavaAwareTestConsoleProperties {
public JUnitConfiguration getConfiguration() { return myConfiguration; }
@Override
public GlobalSearchScope getScope() {
return myConfiguration.getPersistentData().getScope().getSourceScope(myConfiguration).getLibrariesScope();
}
}
@@ -17,6 +17,7 @@ package com.theoryinpractice.testng.model;
import com.intellij.execution.testframework.JavaAwareTestConsoleProperties;
import com.intellij.ide.util.PropertiesComponent;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.util.config.Storage;
import com.theoryinpractice.testng.configuration.TestNGConfiguration;
import org.jetbrains.annotations.NonNls;
@@ -35,4 +36,9 @@ public class TestNGConsoleProperties extends JavaAwareTestConsoleProperties {
{
return myConfiguration;
}
@Override
public GlobalSearchScope getScope() {
return myConfiguration.getPersistantData().getScope().getSourceScope(myConfiguration).getLibrariesScope();
}
}