replaced <code></code> with more concise {@code}
[idea/community.git] / platform / xdebugger-api / src / com / intellij / xdebugger / stepping / XSmartStepIntoHandler.java
1 /*
2  * Copyright 2000-2016 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.intellij.xdebugger.stepping;
17
18 import com.intellij.xdebugger.XSourcePosition;
19 import com.intellij.xdebugger.frame.XSuspendContext;
20 import org.jetbrains.annotations.NotNull;
21 import org.jetbrains.annotations.Nullable;
22
23 import java.util.List;
24
25 /**
26  * Implement this class and return its instance from {@link com.intellij.xdebugger.XDebugProcess#getSmartStepIntoHandler()} to support
27  * Smart Step Into action
28  *
29  * @author nik
30  */
31 public abstract class XSmartStepIntoHandler<Variant extends XSmartStepIntoVariant> {
32
33   /**
34    * @param position current position
35    * @return list of function/method calls containing in the current line
36    */
37   @NotNull
38   public abstract List<Variant> computeSmartStepVariants(@NotNull XSourcePosition position);
39
40   /**
41    * Resume execution and call {@link com.intellij.xdebugger.XDebugSession#positionReached(XSuspendContext)}
42    * when {@code variant} function/method is reached
43    * @param variant selected variant
44    */
45   public void startStepInto(@NotNull Variant variant) {
46     throw new AbstractMethodError();
47   }
48
49   public void startStepInto(@NotNull Variant variant, @Nullable XSuspendContext context) {
50     startStepInto(variant);
51   }
52
53   /**
54    * @return title for popup which will be shown to select method/function
55    * @param position current position
56    */
57   public abstract String getPopupTitle(@NotNull XSourcePosition position);
58 }