Search in sources :

Example 1 with WorkbenchMarkerResolution

use of org.eclipse.ui.views.markers.WorkbenchMarkerResolution in project xtext-eclipse by eclipse.

the class XtextGrammarQuickfixProviderTest method assertAndApplyAllResolutions.

private void assertAndApplyAllResolutions(XtextEditor xtextEditor, String issueCode, int issueDataCount, int issueCount, String resolutionLabel) throws CoreException {
    final Injector injector = createInjector();
    InternalBuilderTest.setAutoBuild(true);
    if (xtextEditor.isDirty()) {
        xtextEditor.doSave(new NullProgressMonitor());
    }
    InternalBuilderTest.fullBuild();
    IXtextDocument document = xtextEditor.getDocument();
    validateInEditor(document);
    List<Issue> issues = getIssues(document);
    assertFalse("Document has no issues, but should.", issues.isEmpty());
    issues.iterator().forEachRemaining((issue) -> {
        assertEquals(issueCode, issue.getCode());
        assertNotNull(issue.getData());
        assertEquals(issueDataCount, issue.getData().length);
    });
    IResource resource = xtextEditor.getResource();
    IMarker[] problems = resource.findMarkers(MarkerTypes.FAST_VALIDATION, true, IResource.DEPTH_INFINITE);
    assertEquals("Resource should have " + issueCount + " error marker.", issueCount, problems.length);
    validateInEditor(document);
    MarkerResolutionGenerator instance = injector.getInstance(MarkerResolutionGenerator.class);
    List<IMarkerResolution> resolutions = Lists.newArrayList(instance.getResolutions(problems[0]));
    assertEquals(1, resolutions.size());
    IMarkerResolution resolution = resolutions.iterator().next();
    assertTrue(resolution instanceof WorkbenchMarkerResolution);
    WorkbenchMarkerResolution workbenchResolution = (WorkbenchMarkerResolution) resolution;
    IMarker primaryMarker = problems[0];
    List<IMarker> others = Lists.newArrayList(workbenchResolution.findOtherMarkers(problems));
    assertFalse(others.contains(primaryMarker));
    assertEquals(problems.length - 1, others.size());
    others.add(primaryMarker);
    workbenchResolution.run(others.toArray(new IMarker[others.size()]), new NullProgressMonitor());
    if (xtextEditor.isDirty()) {
        xtextEditor.doSave(null);
    }
    InternalBuilderTest.cleanBuild();
    problems = resource.findMarkers(MarkerTypes.FAST_VALIDATION, true, IResource.DEPTH_INFINITE);
    assertEquals("Resource should have no error marker.", 0, problems.length);
}
Also used : NullProgressMonitor(org.eclipse.core.runtime.NullProgressMonitor) Issue(org.eclipse.xtext.validation.Issue) MarkerResolutionGenerator(org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator) WorkbenchMarkerResolution(org.eclipse.ui.views.markers.WorkbenchMarkerResolution) IMarkerResolution(org.eclipse.ui.IMarkerResolution) Injector(com.google.inject.Injector) IMarker(org.eclipse.core.resources.IMarker) IResource(org.eclipse.core.resources.IResource) IXtextDocument(org.eclipse.xtext.ui.editor.model.IXtextDocument)

Aggregations

Injector (com.google.inject.Injector)1 IMarker (org.eclipse.core.resources.IMarker)1 IResource (org.eclipse.core.resources.IResource)1 NullProgressMonitor (org.eclipse.core.runtime.NullProgressMonitor)1 IMarkerResolution (org.eclipse.ui.IMarkerResolution)1 WorkbenchMarkerResolution (org.eclipse.ui.views.markers.WorkbenchMarkerResolution)1 IXtextDocument (org.eclipse.xtext.ui.editor.model.IXtextDocument)1 MarkerResolutionGenerator (org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator)1 Issue (org.eclipse.xtext.validation.Issue)1