package org.erlide.ui.debug;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.handlers.HandlerUtil;
import org.eclipse.xtext.resource.XtextResource;
import org.eclipse.xtext.ui.editor.XtextEditor;
import org.eclipse.xtext.util.concurrent.IUnitOfWork;
import org.erlide.erlang.ModelDebugExtensions;
import com.google.inject.Inject;
public class DebugPrintHandler extends AbstractHandler {
@Inject
ModelDebugExtensions debugExt;
@Override
public Object execute(final ExecutionEvent event) throws ExecutionException {
final IEditorPart activeEditor = HandlerUtil.getActiveEditor(event);
if (activeEditor instanceof XtextEditor) {
((XtextEditor) activeEditor).getDocument().readOnly(
new IUnitOfWork<Boolean, XtextResource>() {
@Override
public Boolean exec(final XtextResource state)
throws Exception {
System.out.println("-----------------------");
for (final EObject obj : state.getContents()) {
System.out.println(debugExt.debugPrint(obj));
System.out.println("-----------------------");
}
System.out.println("-----------------------");
return Boolean.TRUE;
}
});
}
return null;
}
}