/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.plugin.ij.debugger.actions;
import com.intellij.debugger.SourcePosition;
import com.intellij.debugger.actions.JavaSmartStepIntoHandler;
import com.intellij.debugger.engine.JVMNameUtil;
import com.intellij.debugger.engine.RequestHint;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiMethod;
import gw.plugin.ij.lang.GosuLanguage;
/**
*/
public class GosuSmartStepIntoHandler extends JavaSmartStepIntoHandler {
@Override
public boolean isAvailable( final SourcePosition position ) {
final PsiFile file = position.getFile();
return file.getLanguage().isKindOf( GosuLanguage.instance() );
}
@Override
protected RequestHint.SmartStepFilter getSmartStepFilter( PsiMethod psiMethod ) {
return new RequestHint.SmartStepFilter( JVMNameUtil.getJVMQualifiedName( psiMethod.getContainingClass() ),
psiMethod.isConstructor() ? "<init>" : psiMethod.getName(),
//## todo: generate a signature that includes Goso-specific hidden arguments
//## todo: such as type vars, IExternalSymbol map for program ctors, etc.
JVMNameUtil.getJVMSignature( psiMethod ) );
}
}