/**
* Copyright (c) 2015 by Brainwy Software Ltda. All Rights Reserved.
* Licensed under the terms of the Eclipse Public License (EPL).
* Please see the license.txt included with this distribution for details.
* Any modifications to this file must keep this entire header intact.
*/
package org.python.pydev.debug.console;
import org.eclipse.debug.core.model.IProcess;
import org.eclipse.debug.internal.ui.views.console.ProcessConsole;
import org.eclipse.ui.console.IConsole;
import org.eclipse.ui.console.IConsolePageParticipant;
import org.eclipse.ui.internal.console.IOConsolePage;
import org.eclipse.ui.part.IPageBookViewPage;
import org.python.pydev.debug.core.Constants;
import org.python.pydev.debug.newconsole.CurrentPyStackFrameForConsole;
@SuppressWarnings("restriction")
public class PromptOverlayConsolePageParticipant implements IConsolePageParticipant {
private PromptOverlay promptOverlay;
@Override
public <T> T getAdapter(Class<T> adapter) {
return null;
}
@Override
public void init(IPageBookViewPage page, IConsole console) {
if (!(console instanceof ProcessConsole)) {
return;
}
ProcessConsole processConsole = (ProcessConsole) console;
IProcess process = processConsole.getProcess();
if (process == null) {
return;
}
String attribute = process.getAttribute(Constants.PYDEV_DEBUG_IPROCESS_ATTR);
if (!Constants.PYDEV_DEBUG_IPROCESS_ATTR_TRUE.equals(attribute)) {
//Only provide the console page
return;
}
if (page instanceof IOConsolePage) {
final CurrentPyStackFrameForConsole currentPyStackFrameForConsole = new CurrentPyStackFrameForConsole(
console);
IOConsolePage consolePage = (IOConsolePage) page;
this.promptOverlay = new PromptOverlay(consolePage, processConsole, currentPyStackFrameForConsole);
}
}
@Override
public void dispose() {
if (this.promptOverlay != null) {
this.promptOverlay.dispose();
}
this.promptOverlay = null;
}
@Override
public void activated() {
if (this.promptOverlay != null) {
this.promptOverlay.activated();
}
}
@Override
public void deactivated() {
if (this.promptOverlay != null) {
this.promptOverlay.deactivated();
}
}
}