Search in sources :

Example 16 with PyEdit

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
        }
    }
}
Also used : ITreeContentProvider(org.eclipse.jface.viewers.ITreeContentProvider) NullProgressMonitor(org.eclipse.core.runtime.NullProgressMonitor) TreeViewer(org.eclipse.jface.viewers.TreeViewer) ILabelProvider(org.eclipse.jface.viewers.ILabelProvider) LaunchShortcut(org.python.pydev.debug.ui.launching.LaunchShortcut) IWorkbench(org.eclipse.ui.IWorkbench) Event(org.eclipse.swt.widgets.Event) PyEdit(org.python.pydev.editor.PyEdit) Display(org.eclipse.swt.widgets.Display)

Example 17 with PyEdit

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();
}
Also used : PyEdit(org.python.pydev.editor.PyEdit) TreeSelectionDialog(org.python.pydev.shared_ui.dialogs.TreeSelectionDialog)

Example 18 with PyEdit

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);
}
Also used : PyEdit(org.python.pydev.editor.PyEdit) IEditorInput(org.eclipse.ui.IEditorInput)

Example 19 with PyEdit

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;
}
Also used : OrderedSet(org.python.pydev.shared_core.structure.OrderedSet) AnalysisPreferences(com.python.pydev.analysis.AnalysisPreferences) IAnalysisPreferences(org.python.pydev.ast.analysis.IAnalysisPreferences) ArrayList(java.util.ArrayList) BadLocationException(org.eclipse.jface.text.BadLocationException) IAnalysisPreferences(org.python.pydev.ast.analysis.IAnalysisPreferences) ICompletionProposalHandle(org.python.pydev.shared_core.code_completion.ICompletionProposalHandle) PySourceViewer(org.python.pydev.editor.codefolding.PySourceViewer) IPyEdit(org.python.pydev.core.IPyEdit) PyEdit(org.python.pydev.editor.PyEdit) MarkerAnnotationAndPosition(org.python.pydev.editor.codefolding.MarkerAnnotationAndPosition)

Example 20 with PyEdit

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);
    }
}
Also used : DocumentRewriteSession(org.eclipse.jface.text.DocumentRewriteSession) PySelection(org.python.pydev.core.docutils.PySelection) PyEdit(org.python.pydev.editor.PyEdit) IDocument(org.eclipse.jface.text.IDocument) SyntaxErrorException(org.python.pydev.core.docutils.SyntaxErrorException) PythonNatureWithoutProjectException(org.python.pydev.core.PythonNatureWithoutProjectException) MisconfigurationException(org.python.pydev.core.MisconfigurationException)

Aggregations

PyEdit (org.python.pydev.editor.PyEdit)64 PySelection (org.python.pydev.core.docutils.PySelection)22 IFile (org.eclipse.core.resources.IFile)15 ArrayList (java.util.ArrayList)14 BadLocationException (org.eclipse.jface.text.BadLocationException)13 Path (org.eclipse.core.runtime.Path)12 IDocument (org.eclipse.jface.text.IDocument)12 MisconfigurationException (org.python.pydev.core.MisconfigurationException)9 ICompletionProposalHandle (org.python.pydev.shared_core.code_completion.ICompletionProposalHandle)9 IPythonNature (org.python.pydev.core.IPythonNature)8 File (java.io.File)7 ICallbackListener (org.python.pydev.shared_core.callbacks.ICallbackListener)7 ByteArrayInputStream (java.io.ByteArrayInputStream)5 IRegion (org.eclipse.jface.text.IRegion)5 ITextSelection (org.eclipse.jface.text.ITextSelection)5 IEditorInput (org.eclipse.ui.IEditorInput)5 SimpleNode (org.python.pydev.parser.jython.SimpleNode)5 CoreException (org.eclipse.core.runtime.CoreException)4 RefactoringRequest (org.python.pydev.ast.refactoring.RefactoringRequest)4 IInterpreterManager (org.python.pydev.core.IInterpreterManager)4