use of flash.tools.debugger.SourceFile in project intellij-plugins by JetBrains.
the class DebugCLI method doCF.
/* Display or change current file */
void doCF() {
try {
int module = propertyGet(LIST_MODULE);
int currentLine = propertyGet(LIST_LINE);
if (hasMoreTokens()) {
String arg = nextToken();
module = parseFileArg(module, arg);
currentLine = 1;
setListingPosition(module, currentLine);
}
SourceFile sourceFile = m_fileInfo.getFile(module);
StringBuilder sb = new StringBuilder();
sb.append(sourceFile.getName());
sb.append('#');
sb.append(sourceFile.getId());
sb.append(':');
sb.append(currentLine);
out(sb.toString());
} catch (NullPointerException npe) {
//$NON-NLS-1$
err(getLocalizationManager().getLocalizedTextString("noFilesFound"));
} catch (ParseException pe) {
err(pe.getMessage());
} catch (AmbiguousException ae) {
err(ae.getMessage());
} catch (NoMatchException nme) {
err(nme.getMessage());
}
}
use of flash.tools.debugger.SourceFile in project intellij-plugins by JetBrains.
the class DebugCLI method isCurrentLocation.
// see if this module, line combo is the current location
boolean isCurrentLocation(int module, int line) {
boolean yes = false;
Location l = getCurrentLocation();
if (l != null) {
SourceFile file = l.getFile();
if (file != null && file.getId() == module && l.getLine() == line)
yes = true;
}
return yes;
}
use of flash.tools.debugger.SourceFile in project intellij-plugins by JetBrains.
the class DebugCLI method dumpBreakLine.
void dumpBreakLine(boolean postStep, StringBuilder sb) throws NotConnectedException {
int bp = -1;
//$NON-NLS-1$
String name = getLocalizationManager().getLocalizedTextString("unknownFilename");
int line = -1;
// clear our current frame display
propertyPut(DISPLAY_FRAME_NUMBER, 0);
/* dump a context line to the console */
Location l = getCurrentLocation();
// figure out why we stopped
int reason = SuspendReason.Unknown;
try {
reason = m_session.suspendReason();
} catch (PlayerDebugException pde) {
}
// then see if it because of a swfloaded event
if (reason == SuspendReason.ScriptLoaded) {
// since the player takes a long time to provide swf/swd, try 80 * 250ms = ~20s
if (propertyGet(METADATA_ATTEMPTS) > 0)
try {
waitForMetaData(80);
} catch (InProgressException ipe) {
}
m_fileInfo.setDirty();
processEvents();
propagateBreakpoints();
//$NON-NLS-1$
sb.append(getLocalizationManager().getLocalizedTextString("additionalCodeLoaded"));
sb.append(m_newline);
if (resolveBreakpoints(sb))
//$NON-NLS-1$
sb.append(getLocalizationManager().getLocalizedTextString("setAdditionalBreakpoints") + m_newline);
else
//$NON-NLS-1$
sb.append(getLocalizationManager().getLocalizedTextString("fixBreakpoints") + m_newline);
} else if (l == null || l.getFile() == null) {
// no idea where we are ?!?
propertyPut(LAST_FRAME_DEPTH, 0);
//$NON-NLS-1$
sb.append(getLocalizationManager().getLocalizedTextString("executionHalted"));
sb.append(' ');
/** disable this line (and enable the one after) if implementation Extensions are not provided */
appendBreakInfo(sb);
//sb.append("unknown location");
} else {
SourceFile file = l.getFile();
name = file.getName();
line = l.getLine();
String funcName = file.getFunctionNameForLine(m_session, line);
// where were we last time
int lastModule = propertyGet(LIST_MODULE);
int lastDepth = propertyGet(LAST_FRAME_DEPTH);
int thisModule = file.getId();
// triggered via getCurrentLocation()
int thisDepth = propertyGet(CURRENT_FRAME_DEPTH);
// mark where we stopped
propertyPut(LAST_FRAME_DEPTH, thisDepth);
// if we have changed our context or we are not spitting out source then dump our location
if (!postStep || lastModule != thisModule || lastDepth != thisDepth) {
// is it a fault?
String reasonForHalting;
if (reason == SuspendReason.Fault || reason == SuspendReason.StopRequest) {
StringBuilder s = new StringBuilder();
appendReason(s, reason);
reasonForHalting = s.toString();
} else // if its a breakpoint add that information
if ((bp = enabledBreakpointIndexOf(l)) > -1) {
Map<String, Object> args = new HashMap<String, Object>();
//$NON-NLS-1$
args.put("breakpointNumber", Integer.toString(breakpointAt(bp).getId()));
//$NON-NLS-1$
reasonForHalting = getLocalizationManager().getLocalizedTextString("hitBreakpoint", args);
} else {
//$NON-NLS-1$
reasonForHalting = getLocalizationManager().getLocalizedTextString("executionHalted");
}
Map<String, Object> args = new HashMap<String, Object>();
//$NON-NLS-1$
args.put("reasonForHalting", reasonForHalting);
//$NON-NLS-1$
args.put("fileAndLine", name + ':' + line);
String formatString;
if (funcName != null) {
//$NON-NLS-1$
args.put("functionName", funcName);
//$NON-NLS-1$
formatString = "haltedInFunction";
} else {
//$NON-NLS-1$
formatString = "haltedInFile";
}
sb.append(getLocalizationManager().getLocalizedTextString(formatString, args));
if (!m_fullnameOption)
sb.append(m_newline);
}
// set current listing poistion and emit emacs trigger
setListingPosition(thisModule, line);
// dump our source line if not in emacs mode
if (!m_fullnameOption)
appendSource(sb, file.getId(), line, file.getLine(line), false);
}
}
use of flash.tools.debugger.SourceFile in project intellij-plugins by JetBrains.
the class DebugCLI method setListingPosition.
// Set teh listing position to change to the given module and line number
// also triggers emacs to move to this position if enabled
void setListingPosition(int module, int line) {
propertyPut(LIST_MODULE, module);
propertyPut(LIST_LINE, line);
// if we are running under emacs then dump out our new location
if (m_fullnameOption) {
SourceFile f = m_fileInfo.getFile(module);
if (f != null) {
StringBuilder sb = new StringBuilder();
appendFullnamePosition(sb, f, line);
// not sure why this is needed but it seems to address some emacs bugs
sb.append('\n');
out(sb.toString());
}
}
}
use of flash.tools.debugger.SourceFile in project intellij-plugins by JetBrains.
the class DebugCLI method addBreakpoint.
/**
* Attempt to create new breakpoint at the given file and line. It will be set
* @param fileId source file identifier
* @param line line number
* @return object associated with breakpoint
*/
BreakAction addBreakpoint(int fileId, int line) throws NotConnectedException, NullPointerException {
// use fileId SourceFile to denote the name of file in which we wish to set a breakpoint
SourceFile f = m_fileInfo.getFile(fileId);
LocationCollection col = enableBreak(f, line);
// throws NullPointerException if collection is null
BreakAction b = new BreakAction(col);
b.setEnabled(true);
b.setSingleSwf(m_fileInfo.isSwfFilterOn());
breakpointAdd(b);
return b;
}
Aggregations