use of org.python.pydev.editor.PyEdit in project Pydev by fabioz.
the class PyCodeCoverageTestWorkbench method testPyCodeCoverageView.
public void testPyCodeCoverageView() throws Exception {
final PyCodeCoverageView view = PyCodeCoverageView.getView(true);
// At this point it should have no folder selected and the option to run things in coverage should be
// set to false.
assertTrue(!PyCoveragePreferences.getAllRunsDoCoverage());
assertTrue(PyCodeCoverageView.getChosenDir() == null);
assertTrue(!view.allRunsGoThroughCoverage.getSelection());
assertTrue(!PyCoveragePreferences.getInternalAllRunsDoCoverage());
view.allRunsGoThroughCoverage.setSelection(true);
view.allRunsGoThroughCoverage.notifyListeners(SWT.Selection, new Event());
assertTrue(PyCoveragePreferences.getInternalAllRunsDoCoverage());
assertTrue(!PyCoveragePreferences.getAllRunsDoCoverage());
view.setSelectedContainer(sourceFolder);
TreeViewer treeViewer = view.getTreeViewer();
ITreeContentProvider cp = (ITreeContentProvider) treeViewer.getContentProvider();
Object[] elements = cp.getElements(treeViewer.getInput());
assertEquals(1, elements.length);
ILabelProvider labelProvider = (ILabelProvider) treeViewer.getLabelProvider();
assertEquals("pack_cov", labelProvider.getText(elements[0]));
TestCaseUtils.assertContentsEqual(getInitialCoverageText(), view.getCoverageText());
Object[] expandedElements = treeViewer.getExpandedElements();
assertEquals(0, expandedElements.length);
treeViewer.expandAll();
expandedElements = treeViewer.getExpandedElements();
assertEquals(1, expandedElements.length);
view.executeRefreshAction(new NullProgressMonitor());
expandedElements = treeViewer.getExpandedElements();
assertEquals(1, expandedElements.length);
assertTrue(PyCoveragePreferences.getAllRunsDoCoverage());
final IWorkbench workBench = PydevPlugin.getDefault().getWorkbench();
Display display = workBench.getDisplay();
// Make sure to run the UI thread.
final PyEdit modCovEditor = (PyEdit) PyOpenEditor.doOpenEditor(modCov);
try {
display.syncExec(new Runnable() {
@Override
public void run() {
LaunchShortcut launchShortcut = new LaunchShortcut();
launchShortcut.launch(modCovEditor, "run");
}
});
final String modCovCoverageText = StringUtils.replaceNewLines(getModCovCoverageText(), "\n");
// Should be enough time for the refresh to happen!
goToManual(10000, new ICallback<Boolean, Object>() {
@Override
public Boolean call(Object arg) {
return modCovCoverageText.equals(StringUtils.replaceNewLines(view.getCoverageText(), "\n"));
}
});
TestCaseUtils.assertContentsEqual(modCovCoverageText, view.getCoverageText());
// goToManual();
} finally {
try {
modCovEditor.close(false);
} catch (Exception e) {
// ignore anything here
}
}
}
use of org.python.pydev.editor.PyEdit in project Pydev by fabioz.
the class PyShowOutline method run.
@Override
public void run(IAction action) {
PyEdit pyEdit = getPyEdit();
TreeSelectionDialog dialog = new PyOutlineSelectionDialog(EditorUtils.getShell(), pyEdit);
// The dialog will take care of everything.
dialog.open();
}
use of org.python.pydev.editor.PyEdit in project Pydev by fabioz.
the class ClearAnalysisMarkersPyEditListener method onDispose.
@Override
public void onDispose(BaseEditor baseEditor, IProgressMonitor monitor) {
PyEdit edit = (PyEdit) baseEditor;
IEditorInput input = edit.getEditorInput();
// remove the markers if we want problems only in the active editor.
removeMarkersFromInput(input);
}
use of org.python.pydev.editor.PyEdit in project Pydev by fabioz.
the class AbstractAnalysisMarkersParticipants method getProps.
@Override
public List<ICompletionProposalHandle> getProps(PySelection ps, IImageCache imageCache, File f, IPythonNature nature, IPyEdit edit, int offset) throws BadLocationException {
fillParticipants();
PySourceViewer s = ((PyEdit) edit).getPySourceViewer();
int line = ps.getLineOfOffset(offset);
OrderedSet<MarkerAnnotationAndPosition> markersAtLine = new OrderedSet<MarkerAnnotationAndPosition>();
// Add it to a set to make sure that the entries are unique.
// -- i.e.: the code analysis seems to be creating 2 markers in the following case (when sys is undefined):
// sys.call1().call2()
// So, we add it to a set to make sure we'll only analyze unique markers.
// Note that it'll check equality by the marker type and text (not by position), so, if a given error
// appears twice in the same line being correct, we'll only show the options once here (which is what
// we want).
List<MarkerAnnotationAndPosition> markersAtLine2 = s.getMarkersAtLine(line, getMarkerType());
markersAtLine.addAll(markersAtLine2);
ArrayList<ICompletionProposalHandle> props = new ArrayList<ICompletionProposalHandle>();
if (markersAtLine != null) {
IAnalysisPreferences analysisPreferences = new AnalysisPreferences(edit);
String currLine = ps.getLine();
for (MarkerAnnotationAndPosition marker : markersAtLine) {
for (IAnalysisMarkersParticipant participant : participants) {
try {
participant.addProps(marker, analysisPreferences, currLine, ps, offset, nature, (PyEdit) edit, props);
} catch (Exception e) {
Log.log("Error when getting proposals.", e);
}
}
}
}
return props;
}
use of org.python.pydev.editor.PyEdit in project Pydev by fabioz.
the class PyOrganizeImports method run.
/**
* @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
*/
@Override
public void run(IAction action) {
try {
if (!canModifyEditor()) {
return;
}
PyEdit pyEdit = getPyEdit();
PySelection ps = PySelectionFromEditor.createPySelectionFromEditor(pyEdit);
final IDocument doc = ps.getDoc();
if (ps.getStartLineIndex() == ps.getEndLineIndex()) {
organizeImports(pyEdit, doc, null, ps);
} else {
DocumentRewriteSession session = TextSelectionUtils.startWrite(doc);
try {
ps.performSimpleSort(doc, ps.getStartLineIndex(), ps.getEndLineIndex());
} finally {
TextSelectionUtils.endWrite(doc, session);
}
}
} catch (Exception e) {
Log.log(e);
beep(e);
}
}
Aggregations