| /* |
| * Copyright 2000-2014 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.impl; |
| |
| import com.intellij.openapi.actionSystem.DataContext; |
| import com.intellij.openapi.project.Project; |
| import com.intellij.xdebugger.AbstractDebuggerSession; |
| import com.intellij.xdebugger.XDebugSession; |
| import com.intellij.xdebugger.XDebuggerManager; |
| import com.intellij.xdebugger.impl.actions.*; |
| import com.intellij.xdebugger.impl.actions.handlers.*; |
| import com.intellij.xdebugger.impl.breakpoints.XBreakpointPanelProvider; |
| import com.intellij.xdebugger.impl.breakpoints.ui.BreakpointPanelProvider; |
| import com.intellij.xdebugger.impl.evaluate.quick.XQuickEvaluateHandler; |
| import com.intellij.xdebugger.impl.evaluate.quick.common.QuickEvaluateHandler; |
| import org.jetbrains.annotations.NotNull; |
| |
| /** |
| * @author nik |
| */ |
| public class XDebuggerSupport extends DebuggerSupport { |
| private final XBreakpointPanelProvider myBreakpointPanelProvider; |
| private final XToggleLineBreakpointActionHandler myToggleLineBreakpointActionHandler; |
| private final XToggleLineBreakpointActionHandler myToggleTemporaryLineBreakpointActionHandler; |
| private final XDebuggerSuspendedActionHandler myStepOverHandler; |
| private final XDebuggerSuspendedActionHandler myStepIntoHandler; |
| private final XDebuggerSuspendedActionHandler myStepOutHandler; |
| private final XDebuggerSuspendedActionHandler myForceStepOverHandler; |
| private final XDebuggerSuspendedActionHandler myForceStepIntoHandler; |
| private final XDebuggerRunToCursorActionHandler myRunToCursorHandler; |
| private final XDebuggerRunToCursorActionHandler myForceRunToCursor; |
| private final XDebuggerActionHandler myResumeHandler; |
| private final XDebuggerPauseActionHandler myPauseHandler; |
| private final XDebuggerSuspendedActionHandler myShowExecutionPointHandler; |
| private final XDebuggerEvaluateActionHandler myEvaluateHandler; |
| private final XQuickEvaluateHandler myQuickEvaluateHandler; |
| |
| private final XAddToWatchesFromEditorActionHandler myAddToWatchesActionHandler; |
| private final DebuggerActionHandler myEvaluateInConsoleActionHandler = new XEvaluateInConsoleFromEditorActionHandler(); |
| |
| private final DebuggerToggleActionHandler myMuteBreakpointsHandler; |
| private final DebuggerActionHandler mySmartStepIntoHandler; |
| private final XMarkObjectActionHandler myMarkObjectActionHandler; |
| private final EditBreakpointActionHandler myEditBreakpointActionHandler; |
| |
| public XDebuggerSupport() { |
| myBreakpointPanelProvider = new XBreakpointPanelProvider(); |
| myToggleLineBreakpointActionHandler = new XToggleLineBreakpointActionHandler(false); |
| myToggleTemporaryLineBreakpointActionHandler = new XToggleLineBreakpointActionHandler(true); |
| myAddToWatchesActionHandler = new XAddToWatchesFromEditorActionHandler(); |
| myStepOverHandler = new XDebuggerSuspendedActionHandler() { |
| @Override |
| protected void perform(@NotNull final XDebugSession session, final DataContext dataContext) { |
| session.stepOver(false); |
| } |
| }; |
| myStepIntoHandler = new XDebuggerSuspendedActionHandler() { |
| @Override |
| protected void perform(@NotNull final XDebugSession session, final DataContext dataContext) { |
| session.stepInto(); |
| } |
| }; |
| myStepOutHandler = new XDebuggerSuspendedActionHandler() { |
| @Override |
| protected void perform(@NotNull final XDebugSession session, final DataContext dataContext) { |
| session.stepOut(); |
| } |
| }; |
| myForceStepOverHandler = new XDebuggerSuspendedActionHandler() { |
| @Override |
| protected void perform(@NotNull final XDebugSession session, final DataContext dataContext) { |
| session.stepOver(true); |
| } |
| }; |
| myForceStepIntoHandler = new XDebuggerSuspendedActionHandler() { |
| @Override |
| protected void perform(@NotNull final XDebugSession session, final DataContext dataContext) { |
| session.forceStepInto(); |
| } |
| }; |
| mySmartStepIntoHandler = new XDebuggerSmartStepIntoHandler(); |
| myRunToCursorHandler = new XDebuggerRunToCursorActionHandler(false); |
| myForceRunToCursor = new XDebuggerRunToCursorActionHandler(true); |
| myResumeHandler = new XDebuggerActionHandler() { |
| @Override |
| protected boolean isEnabled(@NotNull final XDebugSession session, final DataContext dataContext) { |
| return session.isPaused(); |
| } |
| |
| @Override |
| protected void perform(@NotNull final XDebugSession session, final DataContext dataContext) { |
| session.resume(); |
| } |
| }; |
| myPauseHandler = new XDebuggerPauseActionHandler(); |
| myShowExecutionPointHandler = new XDebuggerSuspendedActionHandler() { |
| @Override |
| protected void perform(@NotNull final XDebugSession session, final DataContext dataContext) { |
| session.showExecutionPoint(); |
| } |
| }; |
| myMuteBreakpointsHandler = new XDebuggerMuteBreakpointsHandler(); |
| myEvaluateHandler = new XDebuggerEvaluateActionHandler(); |
| myQuickEvaluateHandler = new XQuickEvaluateHandler(); |
| myMarkObjectActionHandler = new XMarkObjectActionHandler(); |
| myEditBreakpointActionHandler = new XDebuggerEditBreakpointActionHandler(); |
| } |
| |
| @Override |
| @NotNull |
| public BreakpointPanelProvider<?> getBreakpointPanelProvider() { |
| return myBreakpointPanelProvider; |
| } |
| |
| @Override |
| @NotNull |
| public DebuggerActionHandler getStepOverHandler() { |
| return myStepOverHandler; |
| } |
| |
| @Override |
| @NotNull |
| public DebuggerActionHandler getStepIntoHandler() { |
| return myStepIntoHandler; |
| } |
| |
| @Override |
| @NotNull |
| public DebuggerActionHandler getSmartStepIntoHandler() { |
| return mySmartStepIntoHandler; |
| } |
| |
| @Override |
| @NotNull |
| public DebuggerActionHandler getStepOutHandler() { |
| return myStepOutHandler; |
| } |
| |
| @Override |
| @NotNull |
| public DebuggerActionHandler getForceStepOverHandler() { |
| return myForceStepOverHandler; |
| } |
| |
| @Override |
| @NotNull |
| public DebuggerActionHandler getForceStepIntoHandler() { |
| return myForceStepIntoHandler; |
| } |
| |
| @Override |
| @NotNull |
| public DebuggerActionHandler getRunToCursorHandler() { |
| return myRunToCursorHandler; |
| } |
| |
| @Override |
| @NotNull |
| public DebuggerActionHandler getForceRunToCursorHandler() { |
| return myForceRunToCursor; |
| } |
| |
| @Override |
| @NotNull |
| public DebuggerActionHandler getResumeActionHandler() { |
| return myResumeHandler; |
| } |
| |
| @Override |
| @NotNull |
| public DebuggerActionHandler getPauseHandler() { |
| return myPauseHandler; |
| } |
| |
| @Override |
| @NotNull |
| public DebuggerActionHandler getToggleLineBreakpointHandler() { |
| return myToggleLineBreakpointActionHandler; |
| } |
| |
| @NotNull |
| @Override |
| public DebuggerActionHandler getToggleTemporaryLineBreakpointHandler() { |
| return myToggleTemporaryLineBreakpointActionHandler; |
| } |
| |
| @Override |
| @NotNull |
| public DebuggerActionHandler getShowExecutionPointHandler() { |
| return myShowExecutionPointHandler; |
| } |
| |
| @Override |
| @NotNull |
| public DebuggerActionHandler getEvaluateHandler() { |
| return myEvaluateHandler; |
| } |
| |
| @Override |
| @NotNull |
| public QuickEvaluateHandler getQuickEvaluateHandler() { |
| return myQuickEvaluateHandler; |
| } |
| |
| @NotNull |
| @Override |
| public DebuggerActionHandler getAddToWatchesActionHandler() { |
| return myAddToWatchesActionHandler; |
| } |
| |
| @NotNull |
| @Override |
| public DebuggerActionHandler getEvaluateInConsoleActionHandler() { |
| return myEvaluateInConsoleActionHandler; |
| } |
| |
| @Override |
| @NotNull |
| public DebuggerToggleActionHandler getMuteBreakpointsHandler() { |
| return myMuteBreakpointsHandler; |
| } |
| |
| @NotNull |
| @Override |
| public MarkObjectActionHandler getMarkObjectHandler() { |
| return myMarkObjectActionHandler; |
| } |
| |
| @Override |
| public AbstractDebuggerSession getCurrentSession(@NotNull Project project) { |
| return XDebuggerManager.getInstance(project).getCurrentSession(); |
| } |
| |
| @NotNull |
| @Override |
| public EditBreakpointActionHandler getEditBreakpointAction() { |
| return myEditBreakpointActionHandler; |
| } |
| } |