blob: 605589621a765ad4fe97340bfe60764228334813 [file] [log] [blame]
/*
* Copyright 2000-2009 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.
*/
package com.intellij.xdebugger;
import com.intellij.lang.Language;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiElement;
import com.intellij.util.Processor;
import com.intellij.xdebugger.breakpoints.*;
import com.intellij.xdebugger.breakpoints.ui.XBreakpointGroupingRule;
import com.intellij.xdebugger.evaluation.EvaluationMode;
import com.intellij.xdebugger.frame.XValueContainer;
import com.intellij.xdebugger.settings.XDebuggerSettings;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Comparator;
import java.util.List;
/**
* @author nik
*/
public abstract class XDebuggerUtil {
public static XDebuggerUtil getInstance() {
return ServiceManager.getService(XDebuggerUtil.class);
}
public abstract XLineBreakpointType<?>[] getLineBreakpointTypes();
public void toggleLineBreakpoint(@NotNull Project project, @NotNull VirtualFile file, int line) {
toggleLineBreakpoint(project, file, line, false);
}
public abstract void toggleLineBreakpoint(@NotNull Project project,
@NotNull VirtualFile file,
int line,
boolean temporary);
public abstract boolean canPutBreakpointAt(@NotNull Project project, @NotNull VirtualFile file, int line);
public <P extends XBreakpointProperties> void toggleLineBreakpoint(@NotNull Project project, @NotNull XLineBreakpointType<P> type,
@NotNull VirtualFile file, int line) {
toggleLineBreakpoint(project, type, file, line, false);
}
public abstract <P extends XBreakpointProperties> void toggleLineBreakpoint(@NotNull Project project,
@NotNull XLineBreakpointType<P> type,
@NotNull VirtualFile file,
int line,
boolean temporary);
public abstract void removeBreakpoint(Project project, XBreakpoint<?> breakpoint);
public abstract <B extends XBreakpoint<?>> XBreakpointType<B, ?> findBreakpointType(@NotNull Class<? extends XBreakpointType<B, ?>> typeClass);
/**
* Create {@link XSourcePosition} instance by line number
* @param file file
* @param line 0-based line number
* @return source position
*/
@Nullable
public abstract XSourcePosition createPosition(@Nullable VirtualFile file, int line);
/**
* Create {@link XSourcePosition} instance by line number
* @param file file
* @param offset offset from the beginning of file
* @return source position
*/
@Nullable
public abstract XSourcePosition createPositionByOffset(@Nullable VirtualFile file, int offset);
public abstract <B extends XLineBreakpoint<?>> XBreakpointGroupingRule<B, ?> getGroupingByFileRule();
public abstract <B extends XLineBreakpoint<?>> List<XBreakpointGroupingRule<B, ?>> getGroupingByFileRuleAsList();
public abstract <B extends XBreakpoint<?>> Comparator<B> getDefaultBreakpointComparator(XBreakpointType<B, ?> type);
public abstract <P extends XBreakpointProperties> Comparator<XLineBreakpoint<P>> getDefaultLineBreakpointComparator();
public abstract <T extends XDebuggerSettings<?>> T getDebuggerSettings(Class<T> aClass);
@Nullable
public abstract XValueContainer getValueContainer(DataContext dataContext);
/**
* Process all {@link com.intellij.psi.PsiElement}s on the specified line
* @param project project
* @param document document
* @param line 0-based line number
* @param processor processor
*/
public abstract void iterateLine(@NotNull Project project, @NotNull Document document, int line, @NotNull Processor<PsiElement> processor);
/**
* Disable value lookup in specified editor
*/
public abstract void disableValueLookup(@NotNull Editor editor);
@Nullable
public abstract PsiElement findContextElement(@NotNull VirtualFile virtualFile, int offset, @NotNull Project project, boolean checkXml);
@NotNull
public abstract XExpression createExpression(@NotNull String text, Language language, String custom, EvaluationMode mode);
}